miercuri, 22 decembrie 2010

Celule solare ieftine pe e-bay

Am găsit chiar azi o ofertă foarte bună de celule solare: kit de 200 celule cu catodul lipit la 170.77 dolari.

200 Short Tabbed 3x6 Solar Cells Diy Panel Kit w/Wire (US $170.77)

sau

http://cgi.ebay.com/200-Short-Tabbed-3x6-Solar-Cells-Diy-Panel-Kit-w-Wire-/130437355310?pt=LH_DefaultDomain_0&hash=item1e5eac172e

La preţul ăsta se mai adaugă 49.95 dolari pentru transport. Se ajunge la un total de 220.72 dolari. Asta ar însemna cam 1.1 dolari / celulă, sau 0.86 euro / celulă. Eu zic că asta e o ofertă destul de bună, mai ales că e vorba de celule fără fisuri (deci nu e vorba de celule grade B).

Trebuie să verificaţi atent preţul transportului, pentru că acesta poate varia destul de mult de la un vânzător (seller) la altul.

Un alt lucru la care trebuie să fiţi atenţi e că dacă valoarea pachetului cumpărat depăşeşte 45 euro, se plăteşte o taxă la vamă. Dar, în cazul în care, pe pachetul primit este menţionat că e vorba de un cadou (gift), sau dacă pe pachet este trecută o altă valoare (de exemplu: 45 dolari), nu se mai percepe nici o taxă la vamă. De obicei vânzătorii sunt înţelegători când vine vorba de aşa ceva, şi ţin cont de eventualele rugăminţi legate de ce să fie scris pe pachet. Pentru a putea trimite un mesaj vânzătorului, cel mai sigur e să faceţi asta chiar în momentul în care face-ţi comanda:

Motivul pentru care am scris acest foarte scurt articol a fost din cauză că am fost întrebat de multe ori despre cum am achiziţionat celulele solare şi de preţul acestora. Din experienţă pot spune că ofertele cele mai bune apar în preajma sărbătorilor sau în lunile de vară, când e perioada concediilor.

Oferta de mai sus expiră în 6 zile, adică ultima zi în care se va mai putea face comandă va fi pe 27 Decembrie 2010. Oricum, nu e grabă pentru că astfel de oferte vor mai fi cu siguranţă, trebuie doar răbdare.

joi, 2 decembrie 2010

Lampă ambientală cu LED-uri RGB


Încă din facultate mă gândeam să fac un montaj cu led-uri RGB, dar întotdeauna s-a găsit altceva mai bun de făcut. Acum în schimb, aveam nevoie de o lampă de pus pe noptieră şi cum vroiam ceva făcut de mine m-am hotărât să încerc să mă joc puţin cu led-urile RGB. Pentru început mi-am făcut un plan sumar. Vroiam o modalitate cât mai simplă de a schimba culoarea şi intensitatea luminii. Nu am vrut ca lampa să-şi schimbe culoarea singură, după o secvenţă prestabilită sau aleatoare, aşa că am decis să folosesc două potenţiometre pentru controlul culorii şi al intensităţii. După ce îmi era cât de cât clar ce anume vroiam să fac, am început să mă gândesc la schema electronică. Pentru a fi uşor de depanat în caz de probleme, am ales o schemă simplă, cu cât mai puţine piese.
Am avut nevoie de următoarele componente:

  • un microcontroller ATtiny13A
  • 3 LED-uri RGB de putere (HPB8F-4K3RGB/W)
  • 3 tranzistoare BC337
  • 2 potenţiometre de 4.7 K Ω
  • o sursă stabilizatoare 7805
  • o sursă stabilizatoare 7812
  • un condensator 1000 uF/25V
  • 3 rezistenţe de 470 Ω
  • 1 rezistenţă de 1K Ω
  • 4 rezistenţe de 10 Ω
  • un alimentator de 12V/1A
  • un radiator de CPU
  • o lampă (nefolosită)

  • În cele din urmă, a ieşit schema următoare:

    Partea de alimentare, ce nu e prezentă în schemă, e un alimentator de 12V / 1A, cumpărat din piaţă. După ce am făcut nişte măsurători, am văzut că la un curent de aproximativ 200 mA, alimentatorul scoate 14V, iar la un curent de 1A, scoate cam 11V.
    Rolul stabilizatorului 7812 este de a asigura o tensiune de alimentare pentru leduri cât de cât constantă. Dacă tensiunea care cade pe rezistenţa ce limitează curentul prin LED-uri, nu variază în sus, nici curentul nu va varia în sus. Ştiind că tensiunea de alimetare pentru LED-uri nu o să depăşească 12V, am putut face şi calculele mai uşor. Am folosit un mic radiator pentru 7812, deoarece prin acesta trece la un moment dat un curent de aproximativ 1A. Folosirea unui 7812 nu e cea mai bună abordare pentru cazul în care tensiunea dată de alimentator e sub 13V. În acest caz stabilizatorul nu-şi mai poate face treaba şi ajunge să scoată o tensiune mai mică de 12V. Soluţia asta asigură, cel puţin, că ledul roşu va fi protejat de un curent prea mare.

    Limitarea curentului a fost făcută folosind rezistenţe de valori diferite în funcţie de culoarea LED-urilor. Motivul este că tensiunile de deschidere / funcţionare ale LED-urilor diferă în funcţie de culorile acestora. Astfel pentru un LED-urile verzi şi albastre, tensiunea de funcţionare e de 3.6V pe când pentru roşu e de 2.3V la un curent continuu de 350 mA. Valorile rezistenţelor au fost pe jumătate calculate, pe jumătate încercate (atunci când calculele mele au dat greş). Astfel, pentru rezistenţa de pe linia de roşu cu R7 = 20 Ω, curentul ce va trece prin LED-uri va fi de aproximativ 200 mA, iar pentru verde R6 şi albastru R5 am ales rezistenţe de 10 Ω. Din cauză că pe rezistenţa R7 se disipă aproximativ 1W, am ales să pun două rezistenţe de câte 10 Ω / 0.5W în serie.

    Montajul e alimentat la 12V cu ajutorul sursei. Tensiunea de 5V necesară funcţionării microcontroller-ului este dată de 7805. Rolul condensatorului electrolitic este de a filtra tensiunea de alimentare. Din tensiunea de 5V se alimentează şi potenţiometrele care au pinul cursor legat la câte o intrare a ATtiny13-ului. ATtiny13 va comanda cele trei tranzistoare, care la rândul lor vor comanda LED-urile. Fiecare tranzistor va controla câte o culoare din cele trei de bază (Roşu, Verde, Albastru). LED-urile sunt legate în serie pentru a avea un consum de curent mai mic şi pentru că tensiunea de 12V permite o astfel de configuraţie.
    Piesele au fost lipite pe o plăcuţă de test, folosind fie cabluri, fie cositor în exces, aşa că nu am un cablaj (făcut în Eagle) la montajul ăsta, pe care să-l pot prezenta.
    Partea "mecanică"
    Am început prin a fixa led-urile de un radiator de CPU. Între fiecare placuţă de aluminiu a led-urilor şi radiator am pus o picătură de pastă termoconductoare, pentru a îmbunătăţi transferul termic. Curentul total ce trece prin led-uri e destul de mare, aşa că prezenţa radiatorului e binevenită. Funcţionarea la temperatură ridicată scurtează foarte mult durata de viaţă led-urilor, aşa că e indicată folosirea unui radiator (de orice fel) pentru disiparea căldurii.


    Cu un mic burghiu am făcut puţin loc pentru un şurub care fixează "piciorul" radiatorului. De aceelaşi şurub am prins şi placuţa cu toată electronica montajului. Între placă şi radiator am pus o piuliţă ca să mă asigur că spatele cablajului nu o să atingă radiatorul.

    "Piciorul" radiatorului e folosit pentru a prinde ledurile de corpul lămpii, printr-un şurub.

    De pe placuţă ies opt cabluri: câte trei cabluri (+5V, cursor şi GND) pentru fiecare potenţiometru şi două cabluri ce merg la alimentator (+14V şi GND). Potenţiometrele sunt prinse de corpul lămpii cu ajutorul a două bucăţi de carton alb decupat, înfăşurate la ambele capete ale barei de jos a lămpii.

    Fiecare potenţiometru e conectat la placă prin 3 cabluri: firul roşu (+5V), firul negru (GND) şi cel maro (cursorul potenţiometrului). În această configuraţie, potenţiometru va juca rolul unui divizor de tensiune reglabil. Astfel voi putea controla tensiunea ce va ajunge la microcontroller, în limitele 0 - 5 V.

    Între cablul de alimentare ce iese de pe plăcuţă şi cablul ce vine de la alimentator am pus un întrerupător. Întrerupătorul e confecţionat din vechiul cablu al lămpii, pe care l-am scurtat puţin, şi i-am adăugat nişte mufe mamă-tată care să se potrivească cu mufele lămpii şi a alimentatorului.
    Şi cu asta lampa e terminată, numai bună de pus pe noptieră...

    Modul de funcţionare
    Microcontroller-ul citeşte valorile celor două potenţiometre şi obţine nivelul intensităţii luminii şi culoarea aleasă. În funcţie de culoarea aleasă, microcontroller-ul va genera trei semnale modulate în lăţime de impuls (PWM) pentru cele trei culori ale LED-urilor, astfel încât din combinaţia de Roşu, Verde şi Albastru să se obţină culoarea dorită şi intensitatea dorită. Frecvenţa PWM-ului este de aproximativ 300 Hz.

    video video
    În cele două filme se poate vedea cum se reglează culoarea şi intensitatea luminii. Din cauză că rezistenţa de limitare pentru ledul roşu e puţin mai mică decât echivalentul pentru verde şi albastru, culoarea roşie e dominantă. De aceea lumina albă are o tentă rozalie. Din aceelaşi motiv, la intensitate minimă culoarea tinde spre roz. Programul va ţine toate cele trei culori de bază la un minim diferit de zero, dar, cum roşu e dominant, lumina va fi tinde spre un roşu (sau roz) şters.

    Algoritmul este prezentat mai în detaliu aici.
    Fişierele *.c şi *.hex se găsesc aici...
    Programatorul de microcontrolere
    Pentru a putea programa microcontroller-ul m-am folosit de interfaţa pentru portul paralel de la PonyProg, împreună cu un mic montaj pentru testare, iar pentru a scrie codul am folosit AVRStudio. Foarte util pentru a găsi greşeli în algoritm mi s-a părut simulatorul oferit de AVRStudio.

    Am ales să nu montez pinii de programare direct pe placa ce vine montată în lampă, pentru a nu încărca prea mult placa cu cabluri (am folosit cabluri în loc de trasee). Se poate observa din pozele de mai jos că nu prea mi-am dat silinţa să fac ceva elegant. Am ales să fac ceva rapid şi care să meargă. Din moment ce pe plăcuţa asta sunt montate un led şi un potenţiometru, se poate spune că e vorba de o placă rudimentară de dezvoltare (glumesc, desigur) :P...

    Interfaţa PonyProg, pentru portul paralel, am împrumutat-o de la cineva care se pricepe să facă cablaje frumoase :P. Schema interfeţei se poate găsi pe net pentru cine vrea să-şi facă aşa ceva, în cazul în care are port paralel la PC. Oricum se găsesc multe scheme şi pentru interfaţa serială, trebuie doar căutat.

    Ce probleme am avut?
    1. Microcontroller-ul nu făcea mai nimic din ce trebuia să facă... LED-urile pâlpâiau în continuu, iar potenţiometrele nu aveau nici un efect.
    Problema a fost că nu am declarat "static volatile" nişte variabile globale.
    2. Puteam regla culoarea din potenţiometre, dar lumina pâlpâia puternic.
    Problema a fost că oscilatorul intern era setat pe 1.2 MHz, adică oscilatorul de 9.6 MHz avea selectat prescalerul CLK8 (divizorul de frecvenţă setat pe 8).
    3. Când m-am apucat de montaj am ales să nu lipesc şi condensatorul de filtraj, deoarece am considerat (greşit) că stabilizatorul 7805 o să-şi facă treaba să ţină tensiunea fix la 5V. Rezultatul a fost că aveam un tremur uşor al culorii care se accentua pe măsură ce scădeam luminozitatea, cauzat probabil de semnalul PWM care are aproximativ 300 Hz.
    Problema a fost rezolvată adaugând condensatorul de filtraj la ieşirea din 7805. Pentru siguranţă, am adaugat şi în cod o măsură de protecţie la bruiaj. Înainte de a schimba valoarea PWM-ului, fac 50 de măsurători la fiecare potenţiometru, iar media măsurătorilor va fi valoarea nouă pentru PWM. În felul ăsta se vor filtra şi eventualele erori de conversie.
    4. Tot la început nu aveam montat stabilizatorul 7812 între alimentare şi leduri, aşa că tensiunea pe rezistenţele de limitare şi implicit curentul prin leduri varia destul de mult. În cazul în care o culoare era predominantă, prin ledul corespondent trecea un curent mai mare decât cel normal, iar rezistenţa de limitare se înfierbânta. Tensiunea dată de alimentator era puţin mai mare de 14 V în gol şi scădea pe măsură ce creştea curentul în circuit. Astfel, cu toate ledurile aprinse, tensiunea scădea până pe la 11V, când curentul se apropia de 1A.
    Soluţia mea a fost să adaug stabilizatorul 7812 pentru a nu mai fi în situaţia de a avea 14V la alimentare cu un singur led aprins, ce are o rezistenţă de limitare calculată pentru 12V. Asta face ca tensiunea de alimentare să fie mai mică de 12V mai tot timpul, dar mai bine aşa decît să se strice ledurile.
    5. Dacă potenţiometrul de culoare era dat la maxim, lumina (albă) începea să pâlâie pentru scurt timp, după care scădea în intensitate. Asta se întâmpla doar dacă potenţiometrul de culoare era rotit spre punctul de maxim.
    Problema era cauzată de felul în care se făcea media conversiilor precedente. Când se calcula noua medie, în loc să se pornească de la zero, se pornea de la valoarea mediei precedent calculate. Din cauza asta suma celor 50 de conversii depăşea valoarea maximă ce se poate stoca pe 16 biţi, iar asta cauza pâlpâitul. Soluţia a fost să consider prima conversie din seria celor 50 de conversii ca fiind media calculată precedent.
    Au mai fost şi probabil că încă mai sunt probleme, fie la partea electronică, fie la programare, dar deocamdată se pare că totul merge bine.