Upload
nguyendien
View
258
Download
2
Embed Size (px)
Citation preview
Universitatea Politehnica Bucureşti
Facultatea de Automatică şi Calculatoare
Departamentul de Automatică şi Ingineria Sistemelor
LUCRARE DE LICENŢĂ
Concentrator solar
cu receptor fotovoltaic
Absolvent
Oniga Mihai Andrei
Coordonator
Conf.dr.ing. Cătălin Petrescu
Bucureşti, 2014
1
CUPRINS
1. Introducere
2
2. Radiatia solara
2.1. Distributia pe glob
2.2. Elevatia Soarelui si spectrul radiatiei solare
2.3. Masurarea radiantei solare
3 3 4 5
3. Celula solara si efectul fotovoltaic 3.1. Notiuni introductive
3.2. Parametrii masurabili si curba I-U
3.3. Eficienta celulelor fotovoltaice
3.4. Sensibilitatea spectrala si celulele multi-jonctiune
7 7 9 11 13
4. Concentratoarele fotovoltaice 4.1. Notiuni introductive
4.2. Tipuri de concentratoare
4.2.1. Tipuri de dispozitive optice
4.2.2. Coeficientul de concentrare
4.2.3. Tipuri de mecanisme active de urmarire a Soarelui
15 15 17 17 19 20
5. Realizarea practica a unui concentrator cu receptor fotovoltaic 5.1. Introducere
5.2. Subsisteme
5.2.1. Modulul de comanda
5.2.2. Mecanismul de pozitionare
5.2.3. Achizitia de date prin senzori
23 23 23 24 28 30
6. Concluzii
31
7. Anexa A. Program pentru modulul de comanda
32
8. Bibliografie 48
2
1. INTRODUCERE
Lucrarea de fata reprezinta un studiu asupra eficientizarii producerii de
energie electrica prin efect fotovoltaic, utilizand dispozitive de focalizare a
radiatiei solare directe in celule cu randament de conversie ridicat.
Drept urmare a epuizarii accelerate a surselor de combustibili fosili, a
degradarii mediului ce rezulta din consumul lor si a cresterii continue a cererii la
nivel mondial, cerere care creeaza adevarate dezastre in plan geopolitic, o totala
si cat mai rapida migrare catre surse de energie regenerabile este obligatorie.
Dincolo de importanta pe care efectul fotovoltaic il are, plecand de la
aceasta necesitate a abandonarii surselor de energie conventionale, utilitatea
instalatiilor de focalizare a radiatiei solare, in mod deosebit, deriva din
necesitatea optimizarii costurilor de productie a energiei. Intrucat in componenta
panourilor solare intra un numar ridicat de celule fotovoltaice, utilizarea in
productia de serie a celulelor cu eficienta mai mare de 20% este, in cele mai
multe cazuri, nefezabila. Prin comparatie, concentratoarele permit utilizarea unei
singure celule multi-jonctiune cu eficienta de conversie ridicata (30%+),
termorezistenta si de dimensiuni mici (ex. 2x2mm), ca receptor in punctul focal,
precum si a unor materiale ieftine pentru intreaga instalatie. Spre exemplu:
policarbonat, sticla, metal etc.
Prin contrast cu acest avantaj major pe care il ofera fata de panourile
conventionale, concentratoarele au insa si doua dezavantaje ce nu pot fi
neglijate: limitarea utilizarii radiatiei la cea directa (cea difuza nu poate fi
focalizata) si nevoia racirii pasive a receptorului pentru a evita consumul de
energie sau scaderea drastica a randamentului in caz contrar. Insa, in zone cu un
numar ridicat de zile cu soare pe parcursul unui an, ele pot fi o foarte buna
alternativa la instalatiile de panouri fotovoltaice conventionale, dat fiind faptul ca
se poate mari semnificativ factorul de conversie foto-electrica pentru aceasi
suprafata iradiata. Atfel spus, un panou solar cu suprafata de 1m2 ce utilizeaza
celule conventionale are un randament mai scazut decat un concentrator cu
suprafata de colectare identica (1m2), ce utilizeaza o singura celula de mare
eficienta.
Acest document trateaza intr-un intreg capitol, realizarea practica a unui
concentrator fotovoltaic de uz didactic. Constructia unei astfel de instalatii face
posibila studierea pe cale directa a fenomenelor electrice si termice aferente
suprairadierii unei celule fotovoltaice, precum si modificarea eficientei acesteia,
suprairadierea avand ca scop optimizarea producerii de energie electrica.
3
2. Radiatia solara
2.1. Distributia pe glob
Forma eliptica a orbitei Pamantului in jurul Soarelui si deplasarea acestuia
spre un capat al elipsei fac ca distanta pe care radiatia solara o parcurge pana la
Pamant sa varieze de-a lungul unui an. Astfel, intensitatea radiatiei ajunse la noi
variaza, in primul rand, in functie de acest factor. Ea variaza intre un minim de
cca. 1.471 x 108 km la periheliu (punctul in care suntem cel mai aproape de
Soare), ce are loc in intervalul 2 - 5 ianuarie, si 1.521 x 108 km la afeliu (punctul
in care ne situam cel mai departe de Soare), in intervalul 3 - 5 iulie.
La extremitatea atmosferei, densitatea de putere a radiatiei fluctueaza
intre 1325 W/m2 si 1412 W/m2. Valoarea medie globala a acesteia se numeste
constanta solara si are valoarea:
E0 = 1367 W/m2
Odata ce patrunde in straturile atmosferei, radiatia directa scade in
intensitate si mai mult, ca urmare a fenomenelor de reflexie, absorbtie si
dispersie. La nivelul solului, la amiaza, intr-o zi cu cer senin, intensitatea radiatiei
directe poate atinge 1000W/m2.
Energia radiatiei solare difera foarte mult de la zona la zona. Conform
http://solargis.info, distributia acesteia pe glob in 2013 este prezentata in
urmatoarea imagine:
Figura 2.1. Distributia radiatiei solare directe pe glob
Sursa: http://sollargis.info
4
2.2. Elevatia Soarelui si spectrul radiatiei solare
Insolatia la suprafata Pamantului depinde, in mod direct, si de elevatia
aparenta a Soarelui in raport cu un observator terestru. Intrucat atmosfera
planetei afecteaza radiatia solara prin absorbtie, reflexie si difuzie, un unghi
apropiat de zenit (unghiul format de planul orizontal in punctul de observatie si
verticala pe acest plan, care trece prin centrul Soarelui) inseamna ca aceasta va
avea de parcurs o traiectorie mai scurta prin atmosfera si implicit, o cantitate
mai mare de energie va ajunge la suprafata Terrei. De asemenea, un unghi
apropiat de orizontala presupune ca radiatia va penetra un strat mai gros din
atmosfera, ceea ce determina un flux radiativ atenuat.
Figura 2.2. Distributia radiatiei solare directe pe glob
Sursa: http://greenrhinoenergy.com
Indicele de masa a atmosferei (abbr. engl. AM - air mass) indica, in
esenta, raportul dintre grosimea totala a stratului atmosferic penetrat de lumina
Soarelui la o anumita elevatie a acestuia si grosimea stratului cand Soarele este
la zenit, punct in care coeficientul se considera a fi 1. De asemenea, la
extremitatea exterioara a atmosferei, acelasi indice are valoarea 0.
Expresia indicelui de masa este:
𝐴𝑀 = 1
𝑠𝑖𝑛𝛾 (2.1)
unde unghiul γ este elevatia Soarelui in punctul de observatie.
5
Atmosfera terestra afecteaza nu doar intensitatea si implicit, energia
radiatiei solare in ansamblu, ci mai mult decat atat, afecteaza spectrul acesteia
prin elementele sale constituente. Spre exemplu, stratul de ozon filtreaza cea
mai mare parte a frecventelor de mare energie (e.g. UV, X, gamma etc. etc.).
Cu cat parcursul prin straturile atmosferice este mai lung, cum se intampla
la apus sau la rasarit, cu atat spectrul radiatiei pierde o parte mai mare din
benzile de mica lungime de unda, ramanand in componenta ei banda de
frecvente infrarosii, de energie scazuta.
Figura de mai jos ilustreaza diferentele dintre distributiile spectrale ale
radiatiei solare directe la nivelul marii si la limita exterioara a atmosferei
Pamantului:
Figura 2.3. Spectrul radiatiei solare directe la nivelul marii
si la limita exterioara a atmosferei terestre
Sursa: http:// ice-age-ahead-iaa.ca
2.3. Masurarea radiantei solare
Radianta solara se masoara fie direct, utilizand piranometre sau senzori
fotovoltaici, fie indirect, prin analiza imaginilor din sateliti. Piranometrele sunt
senzori de mare precizie care masoara radiatia solara pe o suprafata plana. In
esenta, ele sunt compuse din doua cupole semisferice de sticla, o placa metalica
neagra hiper-absorbanta, elementele termo-sensibile pozitionate sub aceasta si o
carcasa metalica alba.
6
Figura 2.4. Piranometru Kipp & Zonen CM21/CM22
Sursa: http://badc.nerc.ac.uk
Razele solare trec prin cupolele de sticla si cad perpendicular pe suprafata
absorbanta, incalzind-o. Intrucat incalzirea depinde in mod direct de gradul de
iradiere, diferenta de temperatura intre placuta absorbanta si mediul exterior,
mai precis a carcasei albe, face posibila determinarea intensitatii radiatiei solare
(Planning and Installing Photovoltaic Systems, 2006).
O alternativa la piranometre, mult mai ieftina, insa si mult mai putin
precisa, o reprezinta senzorii fotovoltaici. Precizia lor scazuta prin comparatie cu
cea a piranometrelor, deriva din sensibilitatea lor specrala.
Figura 2.5. Senzor fotovoltaic pentru
masurarea intensitatii radiatiei solare
Sursa: http://domat-int.com
7
Un astfel de senzor contine o celula fotovoltaica ce genereaza un curent
electric, a carui intensitate este direct proportionala cu intensitatea radiatiei
incidente. Insa, sensibilitatea limitata a celulei, care nu este afectata de lungimi
de unda din gama infrarosu, face ca acuratetea acestora sa poate atinge, cu o
buna calibrare, cca. 4-5% in decursul unui an.
3. Celula solara si efectul fotovoltaic
3.1. Notiuni introductive
Efectul fotovoltaic a fost pentru prima data observat in 1839 de catre
fizicianul francez Alexandre-Edmond Becquerel. Fenomenul consta in aparitia
unei tensiuni electrice sau a unui curent electric in anumite materiale, in
momentul in care acestea erau expuse la razele solare.
Becquerel si-a explicat descoperirea in revista stiintifica „Les Comptes
Rendus de l'Academie des Sciences” drept “aparitia unui curent electric cand
doua placi de platina sau aur, imersate intr-o solutie acida, neutra sau alcalina,
sunt expuse la radiatia solara in mod inegal.” (Wikipedia.org).
Progresul mecanicii cuantice a atras dupa sine o mai buna explicatie a
efectului fotovoltaic. Plecand de la notiunea de foton, fenomenul a fost descris
drept efectul de desprindere a electronilor din banda de valenta si intrarea lor in
banda de conductie, in urma absorbtiei energiei fotonilor de catre anumite
materiale.
Figura 3.1. Benzile energetice la metale, semiconductoare si dielectrice
Sursa: http://butane.chem.uiuc.edu
La materialele semiconductoare, spre deosebire de metale sau cele
izolatoare electrice, exista o diferenta energetica intre benzile de valenta de cea
8
de conductie, suficient de mica incat absorbtia unui foton sa poata disloca un
electron si sa il plaseze in banda de conductie.
In constructia de celule fotovoltaice pentru aplicatii terestre (celulele
necesita o compatibilitate cu spectrul radiatiei, care difera intre suprafata
planetei si limita exterioara a atmosferei), materialul cel mai raspandit este
siliciul, in forma mono sau poli-cristalina. Siliciul pur are, insa, putini electroni
liberi, insuficienti pentru a genera un curent electric util. Astfel, in mod deliberat,
acesta se dopeaza cu materiale din grupele III sau V din tabelul periodic,
substante care au cu 1 electron de valenta mai mult sau mai putin decat siliciul,
precum borul sau fosforul, pentru a-i spori conductivitatea electrica.
In cazul fosforului, intrucat doar 4 din cei 5 electroni disponibili creeaza
legaturi stabilie cu atomii de siliciu adiacenti, legatura slaba a celui de-al cincilea
poate fi usor rupta, ducand acel electron in stratul de conductie. Acest tip de
dopaj se numeste dopaj-n (negativ), din cauza ca adauga un exces de electroni,
de sarcina negativa.
Analog, in cazul materialelor din grupa III, precum borul, care au cu un
electron de valenta mai putin, apare un gol in legaturile atomice. Acest lucru
permite migrarea electronului liber de la atomul de siliciu adiacent celui de bor si
umplerea acelui gol. Efectul este aparitia unui alt gol, fenomen care se propaga si
duce la aparitia unui „curent de goluri”. Acest tip de dopaj se numeste dopaj-p
(pozitiv), intrucat creeaza un exces de sarcina pozitiva.
Figura 3.2. Structura atomica a siliciului dopat cu impuritati
Sursa: http://badc.nerc.ac.uk
9
O celula fotovoltaica este, in esenta, o jonctiune p-n formata prin
suprapunerea a doua straturi de material semiconductor, unul dopat-p iar celelalt dopat-n. Aceasta juxtapunere genereaza o zona de contact pe care sarcinile de
tip n o traverseaza pentru a umple golurile din stratul dopat-p, creand perechi electroni-gol. Absorbtia fotonilor de catre o astfel de pereche duce la ruperea ei,
ceea ce formeaza purtatori de sarcina liberi, in acest mod formandu-se un curent electric.
Figura 3.3. Celula fotovoltaica - principiu de functionare
Sursa: http://volker-quaschning.de
3.2. Parametri masurabili si curba I-U
Eficienta de conversie fotoelectrica a celulelor este limitata de multipli
factori, precum reflexia razelor pe suprafata celulei, eficienta termodinamica,
distributia spectrala, eficienta in separarea perechilor de purtatori de sarcina sau
conductia materialului din care este construita. De asemenea, orice defect de
structura a materialului se reflecta asupra eficientei.
Din cauza ca aceste marimi sunt dificil de masurat in mod direct, se
utilizeaza substitute pentru a caracteriza celulele, cum ar fi punctul de putere
maxima (abbr. engl. MPP - Maximum Power Point), caracteristica curent-tensiune
(curba I-U), tensiunea la borne in circuit deschis (abbr. Voc), curentul de scurt-
circuit sau factorul de umplere.
In esenta, curba I-U este caracterizata de urmatoarele 3 marimi:
1. Punctul de putere maxima - desemnata drept puterea nominala a unei
celule fotovoltaice, MPP reprezinta punctul pe curba curent-tensiune in care
aceasta functioneaza la putere maxima. Pentru MPP se specifica atat curentul
nominal (IMPP), cat si tensiunea nominala (UMPP).
2. Curentul de scurt-circuit (ISC) - in general, ISC se situeaza cu 5 - 15
procente sub valoarea curentului in punctul MPP. ISC variaza, in primul rand, in
functie de tehnologia folosita pentru constructia celulei, pentru celulele
10
monocristaline situandu-se in jurul valorii de 3A. O caracteristica importanta a
curentului de scurt-circuit pentru sistemele CPV este faptul ca este liniar-
dependent de iradianta. Astfel, daca iradianta se tripleaza, curentul de asemenea
isi tripleaza valoarea.
3. Tensiunea in circuit deschis (UCD) - reprezinta tensiunea intre bornele
metalice ale celulei cand aceasta nu are o sarcina. Precum ISC, si UCD este
dependenta de materialul din care este fabricata celula, in cazul celor din siliciu
cristalin ajungand la cca. 0.5 - 0.6 V, iar in cazul celor din siliciu amorf variind
intre 0.6 - 0.9 V.
Figura 3.4. Curba I-U generica a unei celule fotovoltaice
Sursa: http://solarprofessional.com
Factorul de umplere (abbr. engl. FF - fill factor) este o marime calitativa
utilizata pentru caracterizarea celulelor solare. In ipoteza unei curbe I-U ideale,
de forma dreptunghiulara, in care punctul de maxima putere se obtine inmultind
valorile curentului de scurt-circuit si a tensiunii de circuit deschis, factorul de
umplere reprezinta abaterea caracteristicii reale de la cea ideala.
Din punct de vedere geometric, factorul de umplere reprezinta raportul
dintre suprafetele formate de cele doua caracteristici in sistemul de axe
ortogonale. Valorea pentru FF este intotdeauna un numar intre 0 si 1 si are
urmatoarea formula de calcul:
FF =PMPP
UCD × ISC=
UMPP × IMPP
UCD × ISC (3.1)
11
Figura 3.5. Reprezentarea factorului de umplere la
Sursa: http://advanced-energy.com
3.3. Eficienta celulelor fotovoltaice
Eficienta de conversie a celulelor fotovoltaice reprezinta debitul de energie
electrica al acestora in raport cu energia absorbita din radiatia solara incidenta.
Altfel spus, eficienta unei celule reprezinta, in termeni simplisti, proportia de
energie solara din totalul absorbit de catre o celula, ce a fost convertita in
energie electrica. Aceasta se calculeaza impartind puterea electrica de varf a
celulei (exprimata in W) la densitatea de putere a radiatiei incidente in momentul
in care puterea maxima este atinsa (exprimata in W/m2) si la suprafata celulei
(exprimata in m2):
𝜂 = 𝑃𝑚
𝐸 × 𝐴𝑐 (3.2)
In productia de celule fotovoltaice, data fiind dependenta caracteristicilor
electrice ale acestora de temperatura si spectrul radiatiei, eficienta de conversie
este determinata conform unor conditii standardizate de testare (abbr. engl. STC
– Standard Test Conditions). Acestea presupun o temperatura de 25°C cu o
toleranta de ± 2°C, iradianta incidenta de 1000W/m2 si distributia spectrala a
radiatiei aferenta unui indice de masa a aerului AM 1.5.
STC corespund unei zile senine in care Soarele are un unghi de elevatie de
41.81° iar celula este orientata spre acesta, sub un unghi de 37°. In aceste
12
conditii, o celula cu suprafata de 100cm2 si eficienta de conversie cotata la 20%
va avea o putere electrica de 2W.
Figura 3.6. Eficienta de conversie a celor mai bune celule fotovoltaice
produse la nivel mondial intre 1976 si 2014
Sursa: Greg Wilson and Keith Emery - National Renewable Energy Laboratory (NREL),
Golden, CO
In practica, conditiile enuntate in STC sunt rar intalnite, insa eficienta de
conversie din documentatia tehnica a celulelor este intotdeauna indicata in relatie
cu condiitile standard de test si reprezinta eficienta nominala:
𝜂𝑁𝑂𝑀 = 𝑃𝑀𝑃𝑃 (𝑆𝑇𝐶 )
𝐴 × 1000 𝑊/𝑚2 (3.3)
unde A reprezinta aria celulei.
In plus fata de dependenta de iradianta, eficienta celulelor cristaline este
inver proportionala cu cresterea temperaturii. Astfel, elementele fotovoltaice au
maxima eficienta la temperaturi scazute. Coeficientul de temperatura este
dependent de materialul utilizat, iar in cazul siliciului cristalin, acesta se situeaza
in jurul valorii de -0.0045 (-0.45%) per °C. Considerand densitatea de putere a
radiatiei incidente, precum si distributia spectrala a acesteia, constante, variatia
eficientei celulelor capata urmatoarea forma:
𝛥𝜂 ≅ −0.0045 × (𝑇𝑁𝑂𝑀(𝑆𝑇𝐶) − 𝑇) × 𝜂𝑁𝑂𝑀(𝑆𝑇𝐶) (3.4)
13
Figura 3.7. Dependenta de temperatura a caracteristicii I-U a celulelor fotovoltaice
Sursa: http://wikimedia.org
Spre exemplu, daca puterea nominala in conditii standard de iradianta si
distributie spectrala a unei celule este de 200W iar temperatura ei este ridicata la
45°C, puterea efectiva atinge 182W. Invers, daca temperatura celulei ar fi
fortata sa scada pana la 5°C, puterea electrica efectiva ar atinge 218W.
3.4. Sensibilitatea spectrala si celulele multi-jonctiune
In functie de materialele constituente si tehnologia de productie folosita,
celulele solare au o eficienta de conversie diferita in functie de culorile din
spectrul vizibil al radiatiei solare absorbite. Sensibilitatea spectrala descrie gama
de lungimi de unda in care o celula are o functionare eficienta.
In timp ce celulele fotovoltaice din siliciu cristalin sunt in mod deosebit
sensibile la lungimi de unda mari, modulele cu film subtire amorf au o absorbtie
optima pentru lungimi de unda medii din spectrul vizibil. Celulele din siliciu
amorf, pe de alta parte, absorb radiatia de frecventa mare mai bine.
In celulele multi-jonctiune (sau multi-strat), mai multe elemente
fotosensibile cu sensibilitati spectrale diferite sunt stivuite pentru a produce un
modul ce acopera o plaja mai larga de lungimi de unda, obtinand o eficienta
sporita in absorbtia radiatiei. In general, aceste celule multi-strat sunt construite
folosind filme subtiri amorfe.
14
Figura 3.8. Sensibilitatea spectrala a diferitelor materiale
folosite la constructia celulelor fotovoltaice
Sursa: http://greenrhinoenergy.com
Figura 3.9. Sensibilitatea spectrala a unei celule cu 3 straturi
Sursa: Ncouniot - Fraunhofer Institute for Solar Energy Systems
15
Daca in cazul celulelor cu o singura jonctiune p-n, limita teoretica de
eficienta a conversiei foto-electrice este de 34%, utilizand un numar infinit de
jonctiuni, eficienta de conversie a unui modul fotovoltaic multi-strat poate atinge
87% in conditii de suprairadiere.
La ora actuala, cele mai bune celule experimentale mono-jonctiune din
siliciu cristalin ating eficiente de 25% in conditii STC. In paralel, limita eficientei
pentru celule multi-jonctiune experimentale s-a apropiat de 45%. Insa, un
asemenea randament de conversie atrage dupa sine nu doar o complexitate
extrem de mare si un proces de productie laborios, ci si un cost foarte ridicat
pentru o suprafata de ordinul mm2, ceea ce face astfel de celule imposibil de
produs la scara larga deocamdata.
Totusi, exista si modele de celule comerciale cu doua straturi ce ating
eficiente de cca. 30% in conditii standard de testare, si cca. 40% in conditii de
suprairadiere. Insa pretul ridicat si complexitatea le limiteaza aplicabilitatea la
industrii precum cea aerospatiala, unde raportul dintre eficienta si masa este
deosebit de important.
In cazul aplicatiilor terestre, aceste module sunt utilizate ca receptori in
diverse sisteme fotovoltaice bazate pe concentrarea radiatiei, ceea ce face, de
altfel, chiar subiectul acestei lucrari.
4. Concetratoarele fotovoltaice
4.1. Notiuni introductive
Asa-numitele semicoductoare compuse III-V, materiale bazate pe
elemente din grupele III si V ale tabelului periodic, precum arseniurile de galiu si
indiu, ori fosfurile de galiu si indiu, permit productia celulelor fotovoltaice multi-
jonctiune cu randament de conversie foarte ridicat, mentionate in capitolul
precedent. Dat fiind costul de productie foarte ridicat al acestui tip de module,
ele sunt folosite in sisteme care colecteaza radiatia solara de pe suprafete mari
folsind fie lentile, fie oglinzi, pe care o concentreaza in celule eficiente mici, care
uneori ating suprafete de ordinul milimetrilor patrati, insa in acelasi timp pot
atinge eficiente de peste 30%.
Scopul concentratoarelor solare fotovoltaice este de a reduce semnificativ
costurile de productie ale energiei electrice, inlocuind suprafete intinse de
panouri solare conventionale cu suprafete colectoare bazate pe materiale optice
mult mai ieftine si permitand chiar si un singur element convertor fotoelectric.
In ciuda faptului ca se bazeaza pe un concept simplu si ca a fost subiect de
cercetare inca de la inceputurile industriei fotovoltaice terestre, este surprinzator
de dificil de pus in practica. Cercetarea si dezvoltarea in acest sens s-au orientat,
in mare masura, spre elementele fotosensibile, care la ora actuala au o
16
raspandire foarte larga si disponibilitate comerciala. Obstacolele tehnice ramase
acum deriva din necesitatea de a controla fluxul puternic de caldura si densitatea
de curent in astfel de sisteme. In plus, exista si obstacole de natura financiara
cauzate de nevoia de mecanisme de urmarire a Soarelui fiabile si rentabile, in
conditiile in care doar radiatia directa poate fi colectata si concentrata.
Figura 4.1. Concentratoare solare (sistem pilot pentru instalatie de 2MW), Mildura Solar
Sursa: http://clean-tech.com.au
Pana de curand, principalele blocaje in piata energiei din surse
regenerabile au fost ca urmare a incompatibilitatii intre costurile de productie si
bugetele consumatorilor. Sistemele de concetrare, care in marea lor majoritate
necesita un astfel de mecanism de urmarire a Soarelui, nu erau adaptate la
nevoile acestei piete, care se adresa, preponderent, consumatorilor din zone
izolate, cu nevoi de consum reduse. Concentratoarele au fost initial menite sa
furnizeze cantitati masive de energie intr-o maniera nepoluanta, regenerabila.
Insa costurile lor ridicate nu puteau concura cu utilizarea de combustibili fosili si
nici macar cu costurile de productie cu generatoare eoliene.
Din fericire, pe masura ce tehnologia a avansat, costurile combustibililor
fosili a crescut iar ingrijorarea referitoare la emisiile de gaze cu efect de sera si a
poluantilor de asemenea, piata fotovoltaicelor a inceput sa se adreseze productiei
de instalatii de mare putere, de uz comunitar sau chiar national, nu doar
utilizatorilor "casnici". Astfel, costul de productie a energiei electrice a scazut
semnificativ in ultimii ani. Daca in 2012 costul per watt in privinta sistemelor cu
mare putere de concentrare (ebbr. engl. HCPV - High Concentration
Photovoltaics) era $3.54, in 2013 acesta a pierdut 25.8%, ajungand la $2.62 pe
watt. In plus, costul productiei de energie folosind asfel de sisteme se
preconizeaza ca va ajunge la $1.59/watt pana la sfarsitul anului 2017.
17
Figura 4.2. Proiecte CPV in folosinta, constructie si dezvoltare in anul 2011
Sursa: http://greentechmedia.com
4.2. Tipuri de concentratoare
Concentratoarele pot fi impartite in diferite categorii, in functie de
dispozitivul optic folosit pentru a colecta si focaliza radiatia, numarul de axe
pentru mecanismul de orientare dupa Soare, tipul acestuia s.a.m.d.
4.2.1. Tipuri de dispozitive optice
Majoritatea concentratoarelor utilizeaza fie lentile refractive, fie oglinzi
parabolice ori jgheaburi reflectorizante. Lentilele conventionale de peste 5 cm
diametru ar fie prea groase si costisitor de produs. Prin urmare, lentilele Fresnel
sunt de obicei utilizate.
Lentila Fresnel poate fi considerata a fi o lentila standard convexa a carei
curbura a fost "rupta" in diferite puncte, toate elementele rezultate fiind
convertite intr-o lentila cu un profil mult mai subtire. Astfel de lentile pot avea fie
o focalizare punctiforma, caz in care simetria lor este una circulara, fie focalizare
liniara, caz in care lentila are o sectiune transversala identica de-a lungul axei.
18
Figura 4.3. Descompunerea unei lentile clasice intr-o lentila Fresnel
Sursa: http://wikimedia.org
Concentratoarele care utilizeaza lentile Fresnel cu focalizare punctiforma
au, de obicei, cate o celula fotovoltaica in spatele fiecarei lentile, pe cand cele cu
lentile liniare au pe axa focala o serie de celule.
Materialul utilizat de obicei pentru astfel de lentile este plasticul acrilic
(polimetilmetacrilat, abbr. PMMA), care s-a dovedit ca poate fi usor modelat si
este, de asemenea, rezistent la intemperii. Totusi, data fiind durabilitatea relativ
limitata a PMMA, se incearca si productia unor variante din sticla 100% sau
atasarea lentilei de PMMA la un strat de sticla, pentru o mai buna rezistenta in
timp.
Figura 4.4. Lentila Fresnel fabricata din polimetilmetacrilat (PMMA)
Sursa: http://ucr.edu (University of California Riverside)
19
Dispozitivele concentratoare care utilizeaza lentilele Fresnel circulare sunt
de obicei constituite din multiple module independente de dimensiuni mici, care
contin o celula fotovoltaica si o lentila. Aceste module pot fi apoi compuse in
panouri de mari dimensiuni, precum in figura urmatoare:
Figura 4.5. Principiul de functionare pentru sistemele FLATCON® (FRAUNHOFER):
O lentilă Fresnel concentrează lumina soarelui pe o celulă solara mică de înaltă eficiență.
Sursa: http://fraunhofer.de
O alternativa la lentilele refractive sunt oglinzile parabolice. Dupa cum bine
se cunoaste, o suprafata reflectorizanta de forma unei parabole va focaliza toate
razele incidente paralele cu axa de simetrie a parabolei, intr-un punct focal.
Precum lentilele, oglinzile pot avea fie o focalizare punctiforma, caz in care
simetria lor este una circulara, fie focalizare liniara, caz in care lentila are o
sectiune transversala identica de-a lungul axei.
4.2.2. Coeficientul de concentrare
Coeficientul de concentrare este o notiune vaga, drept urmare ea are
multiple definitii la ora actuala, in functie de uz. Cea mai des intalnita este de
coeficient de concentrare geometrica. Acesta reprezinta raportul dintre suprafata
colectoare, fie oglinda reflectorizanta, fie lentila refractiva, si suprafata activa a
celulei fotovoltaice, adica suprafata care trebuie iluminata. O alta masura de
calcul al coeficientului utilizata este intensitatea radiatiei concentrata, sau
numarul de sori. Luand in calcul faptul ca densitatea medie de putere a radiatiei
solare, conform STC, este de 0.1W/cm2, numarul de sori reprezinta raportul
dintre valoarea densitatii radiatiei focalizate pe suprafata activa a celulei si
20
0.1W/cm2. Spre exemplu, daca densitatea de putere a radiatiei focalizate de o
oglinda cu suprafata de 200cm2 pe suprafata activa a unei celule cu suprafata de
2cm2 este de 10W/m2, atunci coeficientul de concentrare geometrica este de
100, iar amplificarea in intensitate este de 50 de sori.
In functie de coeficientul de concentrare in intensitate, exista 3 categorii
principale de concentratoare.
Sistemele pv cu concentrare redusa (abbr. engl. LCPV - Low Concentration
Photovoltaics) sunt sisteme cu un coeficient de concentrare intre 2 si 100 de sori.
Din ratiuni economice, la acest tip de instalatii se folosesc in general module
fotovoltaice conventionale, din siliciu cristalin. De asemenea, la o astfel de
amplificare, fluxul de caldura este suficient de scazut incat sa nu fie nevoie de o
racire activa a receptorului. In plus, dat fiind faptul ca dispozitivele optice cu
coeficient mic de concentrare au un unghi de aceptanta mare pentru radiatia
incidenta, in multe cazuri astfel de sisteme nici nu necesita o urmarire activa a
Soarelui.
Sistemele cu amplificare medie (abbr. engl. MCPV - Medium Concentration
Photovoltaics) se situeaza la valori ale concentrarii de 100-300 sori. In acest caz,
spre deosebire de precedentul tip, este nevoie de o urmarire activa a Soarelui,
precum si de racirea receptorului pentru a preveni distrugerea, ceea ce le creste
semnificativ complexitatea.
Concentratoarele cu coeficient de concentrare mare (abbr. engl. HCPV -
High Concentration Photovoltaics) folosesc dispozitive optice ce forteaza
intensitatea radiatiei la nivelul receptorului pana la 1000 de sori si peste. In acest
caz, celulele au nevoie de disipatoare de caldura de mare complexitate, pentru a
preveni scaderea performantelor electrice, scaderea drastica a duratei de viata si
chiar distrugerea. Insa mecanismul de racire trebuie sa fie unul pasiv, pentru a
nu diminua si mai mult eficienta acestor sisteme si a le face nerentabil din punct
de vedere financiar. Celulele multi-strat sunt preferate in dauna celor cu o
singura jonctiune p-n, intrucat au o eficienta intrinseca mult mai ridicata si un
coeficient de temperatura mai mic, ceea ce face randamentul de conversie sa
scada mai greu odata cu cresterea temperaturii.
4.2.3. Tipuri de mecanisme active de urmarire a Soarelui
Concentratoarele ce utilizeaza unitati optice de colectare cu punct de
focalizare necesita, in general, ca urmarirea Soarelui sa aiba loc pe doua axe. Din
punct de vedere mecanic, urmarirea pe doua axe este mai complexa decat cea
pe o singura axa. Dar avantajul dat de faptul ca acest tip de sisteme sunt
capabile sa atinga coeficienti de amplificare foarte mari, implica un cost mai
redus pentru receptorul fotovoltaic.
Jgheaburile reflectorizante au nevoie de urmarire pe o singura axa, astfel
incat lumina sa fie focalizata de-a lungul liniei de focalizare. In particular
concentratoarele cu lentile liniare Fresnel sufera de defect al imaginii pronuntat
cand razele Soarelui nu cad perpendicular pe axa longitudinala a acestora. In
21
esenta, distanta focala descreste mult pe masura ce unghiul de incidenta al
razelor se indeparteaza de normala pe planul lentilei, ceea ce limiteaza utilizarea
lentilelor Fresnel la sisteme cu urmarire pe doua axe.
Exista 3 tipuri de trackere cu 2 axe des intalnite.
Modelul cu piedestal este in general utilizat la concentratoarele plane, insa
nu numai. Piedestalul incorporeaza o transmisie mecanica ce permite urmarirea
Soarelui de-a lungul unei axe verticale (elevatia) si a uneia orizontale (azimutul).
Avantajul major al acestui tip de mecanism consta in simplitatea instalarii, care
presupune saparea unei singure gropi inguste, montarea piedestalului si
umplerea gropii cu ciment. Pe de alta parte, dezavantajul in aceste cazuri este
faptul ca vantul cauzeaza cupluri mecanice mari ce se transmit integral la
unitatea de transmisie, facand necesara utilizarea unei transmisii de mare
rezistenta. Exemple de astfel de sisteme in figura urmatoare si in figura 4.1.
Figura 4.6. Sisteme concentratoare FLATCON® (FRAUNHOFER)
cu mecanism de urmarire biaxiala pe piedestal
Sursa: http://fraunhofer.de
Un alt tip de model este cel cu inclinare si rasucire, in care forta exercitata
de vant asupra angrenajelor este considerabil diminuata fata de modelul cu
piedestal. Dezavantajul in cazul acestui tip, insa, conta in numarul ridicat de
elemente rotative si de legatura. Obtinerea rigiditatii necesare de-a lungul axei
de rotatie poate necesita un suport orizontal cu suprafata mare. De asemenea,
structura are nevoie de multiple fundatii ce trebuie aliniate, ceea ce complica
instalarea. Axa de rotatie se aliniaza in mod obisnuit cu axa nord-sud, pentru a
minimiza umbrirea cauzata de sistemele adiacente de-a lungul axelor de rotatie.
Trackerele mono-axa sunt concepute fie cu o axa de rotatie orizontala, fie
cu o axa polara de rotatie, precum sistemul din figura 4.8. Cele cu axa orizontala
asigura o suprafata crescuta per unitate, prin comparatie cu cele cu axa de
rotatie polara, dat fiind fenomenul de umbrire. De cele mai multe ori, aceste
mecanisme de urmarire se utilizeaza la concentratoare cu jgheaburi
reflectorizante. Dezavantajul in aceste cazuri este ca radiatia incidenta poate
cadea sub un unghi mic, indeosebi iarna pentru cele ce au o orientare N-S pentru
22
axa de rotatie, ceea ce cauzeaza deplasarea imaginii de-a lungul liniei focale si
implicit, pierderi de energie. Sistemele cu axa polara acopera aceste neajunsuri,
insa cu costul unei complexitati mai mari si a reducerii suprafetei colectoare, in
conditiile in care acestea pot umbri unitatile adiacente. Din aceasta cauza,
sistemele cu axa orizontala sunt in general preferate.
Figura 4.7. Concentratoare solare cu mecanism de urmarire
mono-axa cu axa de rotatie orizontala
Sursa: http://greentechmedia.com
Figura 4.8. Concentratoare solare termice cu mecanism de urmarire
mono-axa cu axa polara
Sursa: http://volker-quaschning.de
23
5. Realizarea practica a unui concetrator cu receptor
fotovoltaic
5.1. Introducere
Capitolul curent trateaza constructia unui concentrator fotovoltaic cu
coeficient de concentrare redus, de uz didactic. Acesta utilizeaza un mecanism
activ de urmarire a Soarelui pe doua axe si o lentila refractiva Fresnel cu punct
focal in calitate de colector. Utilizarea unei lentile Fresnel, spre deosebire de
oglinda parabobilca, implica o complexitate redusa a dispozitivului din punct de
vedere mecanic, ceea ce faciliteaza implementarea. Receptorul este o celula
monocristalina conventionala, cu o singura jonctiune p-n.
Scopul principal este de a realiza o instalatie ce permite monitorizarea si
analiza comparativa a fenomenelor termo-electrice ce au loc atat in conditii de
suprairadiere a unei celule fotovoltaice, cat si in conditii de iradiere normale. Cu
alte cuvinte, sistemul trebuie sa includa 2 celule independente, expuse la radiatie
solara focalizata si respectiv nefocalizata, a caror caracteristici electrice si
termice sa fie urmarite simultan, pentru a putea determina modificarile de
performanta in cazul celei suprairadiate.
Obiectivul secundar al acestei lucrari a fost acela de a identifica, proiecta si
implementa toate subsistemele mecanice si electronice necesare pentru un astfel
de dispozitiv, atat la nivel hardware cat si la nivel software.
5.2. Subsisteme
Luand in considerare multitudinea de functii pe care sistemul trebuie sa le
indeplineasca pentru a-si atinge scopul mentionat, o separare a acestora in
module independente este necesara. Astfel, fiecare modul functional poate fi usor
proiectat, implementat si programat, fiind bazat pe un singur microcontroller. In
acest sens, date fiind caracteristicile tehnice, simplitatea, rentabilitatea si
adaptabilitatea lor (a se vedea raspandirea lor in aplicatii de electronica digitala),
optiunea a fost pentru controllere Atmel ATmega16 si ATmega32, in capsula DIP.
Alegerea unui model sau al altuia se bazeaza pe necesarul de memorie de
program al fiecarui subsistem.
Utilizarea acestor tipuri de microcontrollere faciliteaza transferul de date
intre subsistemele concentratorului, avand in vedere ca amandoua integrate au
implementat un protocol de comunicare seriala simplu, prin 2 fire (abbr. engl.
TWI - Two Wire Serial Interface). Transferul se face de maniera master-slave,
comunicarea putand fi initiata de catre oricare dintre integratele conectate la
magistrale. Astfel, este posibil ca in caz de urgenta, comenzile sa poata fi initiate
de oricare modul ce sesizeaza o eroare sau potentiala avarie si sa transmita o
comanda direct catre modulul care poate solutiona problema. Spre exemplu, in
situatia in care citirea de la senzorul de temperatura ce monitorizeaza celula
24
suprairadiata depaseste o valoare de alerta, controllerul specializat in achizitia de
date poate comanda in mod direct controllerul motoarelor, care la randul sau va
muta lentila dinspre Soare, pentru a evita distrugerea celulei.
Figura 5.1. Schema bloc a microcontrollerelor ATmega16 si ATmega32 in capsula DIP
Sursa: http://atmel.com
5.2.1. Modulul de comanda
Acest modul are multiple roluri, insa in masura egala importante pentru
buna functionare a instalatiei.
In primul rand, el are functia de interfata cu operatorul uman, la
microcontrollerul de pe placa de circuit fiind conectate o tastatura cu matrice 4x4
si un display. Acestea permit introducerea datelor initiale pe baza carora
concentratorul se initializeaza - pozitia geografica, fusul orar, data si ora (vezi
figura 5.4) - precum si rularea de comenzi in timpul functionarii, prin coduri pre-
definite, comenzi care fie pot altera functionarea dispozitivului, fie pot fi folosite
pentru a afisa in timp real date referitoare la aceasta, cum ar fi ora curenta sau
valori citite de la senzori. Exemple de comenzi pentru alterarea functionarii
sistemului pot fi:
- reorientare fortata spre pozitia de referinta (0° elevatie, 180° azimut)
- reinitializare
- oprire fortata
- activare transmisie date prin UART (inactiva implicit)
25
Figura 5.2. Modulul de comanda al concentratorului
Figura 5.3. Modulul de comanda al concentratorului (spate)
In al doilea rand, modulul de comanda are rolul de a agrega si stoca date
despre intreg sistemul, la microcontroller fiind conectat un card de memorie MMC
(poate fi usor substituit cu unul SD, cu minime modificari la nivel de cod). Datele
sunt stocate pe card sub forma unor seturi in format unic, cu o frecventa cat mai
ridicata pentru a putea fi utilizate ulterior pentru generare de grafice. Spre
exemplu, pentru relevanta, un set nou poate fi stocat la fiecare 3-5 secunde.
Seturile de date contin atat citirile de la senzorii termici si fotosensibili ai
26
concentratorului, cat si valorile parametrilor electrici (ex. U, ISC) ai celor doua
celule in functionare, pozitia aparenta a Soarelui la momentul curent (elevatie si
azimut), pozitia pe glob, data si momentul zilei.
Figura 5.4. Initializarea concentratorului
Mentinerea unitatii optice in permanenta aliniere cu Soarele pentru
concentratoarele fotovoltaice se poate face in doua moduri, unul dintre ele
bazandu-se pe utilizarea unei matrici de senzori fotosensibili. Insa, data fiind
precizia potential mica a pozitionarii facuta astfel si a instabilitatii sistemului in
caz de cer partial acoperit, o optiune preferata este utilizarea unui algoritm de
calcul direct al pozitiei Soarelui.
Pozitia aparenta a Soarelui reprezinta o pereche de unghiuri, ambele fiind
relative la pozitia pe Pamant a observatorului, ori in cazul de fata, a
concentratorului fotovoltaic (vezi figura 5.5), precum si a datei din an si a
momentului zilei. Elevatia, ale carei valori sunt in intervalul 0°-90° (valorile
negative semnifica faptul ca Soarele este sub orizont), reprezinta unghiul dintre
planul orizontal si verticala pe acest plan, denumita zenit. In conditiile in care
orizontul reprezinta, din punct de vedere geometric, un cerc in in planul orizontal
in care nordul geografic se situeaza la 0°/360°, estul la 90°, sudul la 180° iar
vestul la 270°, azimutul reprezinta unghiul format intre originea acestui cercu,
nordul geografic si segmentul de dreapta dintre origine si centrul Soarelui.
27
Figura 5.5. Reprezentare grafica a pozitiei Soarelui pe cer
Sursa: http://beckhoff.com
Rularea programului bazat pe un astfel de algoritm revine, de asemenea,
modulului de comanda. Acesta utilizeaza datele initial introduse de operatorul
uman pentru a calcula, odata la 30 de secunde, o noua pereche de valori pe care
o transmite modulului de pozitionare.
Ecuatiile ce compun algoritmul de pozitionare implementat in modulul de
comanda sunt elaborate de Keith Burnett (http://stargazing.net/kepler/sun.html)
si se bazeaza pe Almanahul Astronomic publicat de United States Naval
Observatory (USNO) in 1996, coordonatele rezultate avand o precizie de cca.
0.01° in intervalul 1950-2050, ceea ce este suficient pentru majoritatea
aplicatiilor terestre fotovoltaice ce necesita un sistem de urmarire activa a
Soarelui.
Dincolo de cele 3 functii de baza, modulul de comanda beneficiaza de
alimentare din dubla sursa (USB - 5V stabilizata - si mufa adaptor, cu regulator
de tensiune), si are 4 seturi de conectori prin care pot fi alimentate direct
celelalte subsisteme ale concentratorului.
De asemenea, controllerul poate utiliza 2 interfete de
programare/comunicare, una prin port paralel si alta USB. Interfata de
comunicare paralela, din cauza vitezei extrem de reduse de transfer, este
utilizata in general o singura data, pentru a incarca un bootloader ce
implementeaza in protocol de transfer USB si permite ca programarile ulterioare
sa se efectueze prin aceasta interfata seriala.
Pentru comunicare intre concentratorul solar si calculator, placa de circuit
incorporeaza si o interfata de comunicare seriala baza pe protocolul RS232, ce
permite crearea de diverse aplicatii de monitorizare in timp real. Spre exemplu,
utilizand MATLAB, se pot genera grafice pe care se pot urmari in paralel valorile
citite de la senzorii termici si fotorezistori, precum si pozitia curenta a Soarelui.
28
5.2.2. Mecanismul de pozitionare
Intrucat doar radiatia directa poate fi focalizata asupra receptorului
fotovoltaic, mentinerea in permanenta aliniere cu Soarele a acesteia este
necesara. Astfel, instalatia utilizeaza un sistem de pozitionare bi-axial. Pentru
precizia pozitionarii si pentru a evita un mecanism de reglare activa, solutia
tehnica adoptata sunt 2 motoare pas-cu-pas bipolare. Spre deosebire de
motoarele unipolare, acestea pot debita un cuplu de forte mai mare, ceea ce le
face utile si pentru eventualitatea in care lentila refractiva ar fi inlocuita de o
oglinda parabolica.
Din cauza masei foarte reduse (sunt produse din plastic) a lentitelor
Fresnel, implementarea mecanica a sistemului de orientare poate fi mult redus in
complexitate. Astfel, un disc de lemn fixat prin intermediul unui rulment pe un ax
metalic, angrenat de catre unul dintre motoare printr-o curea de cauciuc si un
colier dintat montat pe axu motorului, este suficient pentru orientarea la azimut
a concentratorului. Pentru urmarirea pe verticala poate fi utilizat un mecanism
hibrid intre cel utilizat pentru miscarea pe orizontala si o parghie.
Rapoartele de transmisie pot fi calculate geometric in cel mai simplu caz,
impartind diametrul axului motoarelor la diametrele celor doua discuri din
angrenaje, insa pentru o mai buna precizie, se pot face teste de rotatie si
masurate deplasarile unghiulare pentru aceleasi doua discuri, la un numar de
roatii complete ale celor doua motoare. Astfel, se determina numarul de pasi pe
care fiecare motor trebuie sa le efectueze pentru a deplasa lentila cu 1° pe
fiecare axa. Pentru usurinta, respectivele constante sunt apoi direct incarcate in
programul pentru acest modul si reprezinta valorile implicite, insa modulul de
control poate permite si introducerea lor de la tastatura, la initializare.
Figura 5.6. Motoarele pas-cu-pas utilizate pentru sistemul de pozitionare
dupa Soare (QSH-4218-35-10-027, Trinamic)
Sursa: http://octopart.com
29
Complexitatea controlului din punct de vedere electric al motoarelor pas-
cu-pas bipolare face necesara utilizarea unor drivere integrate special concepute
pentru asa ceva, ce utilizeaza punti H de tranzistoare. O alegere buna in acest
sens poate fi modelul L6208N (capsula DIP) de la STMicroelectronics, ce
incorporeaza toate circuitele necesare conducerii. Driverele se conecteaza la
microcontrollerul de pe placa de circuit a modulului, care furnizeaza semnale
logice pentru controlul sensului de rotatie, vitezei si puterii. Schema de aplicatie
tipica pentru un astfel de controller, utilizata, de altfe, si in cazul acestui
concentrator, este in figura 5.7:
Figura 5.7. Aplicatie tipica de control pentru motor pas-cu-pas
bipolar utilizand driver L6208N (STMicroelectronics)
Sursa: http L6208N datasheet
Pentru determinarea pozitiei de referinta (i.e. elevatie 0°, azimut 0°),
modulului ii sunt atasate (fizic) doua intrerupatoare simple, care la instalarea
dispozitivului trebuie aliniate cu nordul geografic (azimut 0°) si respectiv
orizontul (elevatie 0°). In etapa initializarii, motoarele efectueaza rotatii continue
pana cand starea logica a celor doua intrerupatoare se schimba din 0 in 1, iar
pozitia respectiva se inregistreaza drept pozitie de referinta.
La un interval de 30-60 de secunda, modulului pentru pozitionare ii sunt
furnizate, de catre modulul de control, un set de valori reprezentand variatiile
elevatiei si azimutului Soarelui (ex: -0.184°, +0.398°). Pe baza acestora si a
raporturilor de transmisie se determina numarul de pasi pe care fiecare motor
trebuie sa ii efectueze pentru alinere, valori care apoi apoi afecteaza semnalele
logice ce trebuie generate de microcontroller si transmise driverelor motoarelor.
30
Singura situatie in care transmisia de valori nu este luata in calcul
intervine cand senzorul de temperatura atasat receptorului fotovoltaic indica
depasirea pragului critic. In acest caz, sistemul se redirectioneaza spre pozitia de
referinta, in care ramane pana la coborarea temperaturii sub un prag inferior
celui critic, pentru a preveni distrugerea celulei. Pana cand acest eveniment are
loc, concentratorul nu isi schimba pozitia, chiar daca modulul de comanda
continua sa furnizeze noi seturi de valori la intervale regulate.
5.2.3. Achizitia de date prin senzori
Modulul pentru achizitii de date este specializat in colectarea de date
referitoate la functionarea concentratorului prin intermediul senzorilor termici si
fotosensibili.
Senzorii termici sunt 3 la numar, ei avand rol in urmarirea temperaturii
celor doua celule si a temperaturii aerului la umbra. Valorile furnizate de catre cel
care monitorizeaza celula ce functioneaza in regim normal (fara supraradiere) si
de catre cel care monitorizeaza aerul au rol pur didactic. Pe de alta parte,
senzorul care monitorizeaza celula suprairadiata o functie secundara vitala
pentru buna functionare a sistemului. Valorile citite de la acesta, in conditiile in
care anumite praguri de siguranta sunt depasite, determina modulul curent sa
comande pornirea sau oprirea ventilatorului atasat la disipatorul de caldura al
receptorului, iar in cazul extrem in care pragul critic este dapasit, sa comande
chiar o reorientare de urgenta spre pozitia de referinta. Astfel, prin oprirea
iradierii se previn usoare deteriorari si implicit, scaderea performantelor celulei,
sau chiar distrugerea completa, precum in imaginea urmatoare:
Figura 5.5. Celula fotovoltaica distrusa prin supraincalzire
Sursa: http://youtube.com
Senzorii fotosensibili sunt 2 la numar. Unul dintre ei, fiind indreptat catre
Soare, masoara intensitatea radiatiei directe. Al doilea, atasat de disipatorul de
caldura al receptorului fotovoltaic, masoara intensitatea radiatiei concentrate pe
suprafata activa a acestuia. De mentionat este ca acest tip de fotorezistori este
31
susceptibil la doar o mica parte a spectrului la care celulele sunt sensibile. Totusi,
din cauza ca intensitatea radiatiei pentru toate lungimile de unda
creste/descreste proportional cu modificarea elevatiei aparente a Soarelui, ei
sunt suficienti pentru analiza dependintei parametrilor celulelor, de factori
precum intensitatea radiatiei concentrate sau neconcentrare, sau temperatura.
Cu 8 intrari pentru semnale analogice, un singur microcontroller
ATmega16 este suficient pentru monitoriza toti cei 5 senzori utilizati. Periodic,
acest modul primeste o cerere pentru un pachet de date reprezentand ultimele
valori citite, de la modulul de comanda.
Pentru usurinta, acest modul poate implementa, de asemenea, controlul
pentru ventilatorul atasat disipatorului de caldura de pe receptor. Intrucat
senzorul de temperatura poate indica cel putin 2 praguri de siguranta inferioare
celui critic, care atins determina repozitionarea sistemului, viteza ventilatorului
trebuie de asemenea sa aiba multiple valori care sa corespunda acestor praguri
de siguranta. Ea este modificata in functie de valoarea temperaturii citite.
6. CONCLUZII
Odata cu avansul tehnologiei in sfera modulelor fotovoltaice, a dezvoltarii
unor celule cu randamente de conversie ce vor atinge, si posibil chiar depasi
pragul de 50%, utilizarea concentratoarelor in instalatii de mare putere poate
deveni curand alternativa principala la combustibilii fosili pentru productia de
energie electrica de uz casnic si industrial deopotriva.
In conditiile in care la nivelul intregului glob erau in functiune sau in
decurs de proiectare si constructie instalatii concentratoare cu o putere totala de
359MW, costurile de productie sunt in continuare singurul factor ce determina
cresterea vitezei cu care acest tip de sistem se raspandesc.
Pentru constructia unui astfel de dizpozitiv de uz didactic in care
fenomenele de reflexie, refractie, absorbtie sau deviere ale radiatiei solare nu
sunt o poblema decisiva pentru alegerea intre lentile refractive sau oglinzi
parabolice, recomandata este intotdeauna lentila refractiva, intrucat masa redusa
si rezistenta o fac usor de integrat intr-un mecanism de urmarire a Soarelui.
De asemenea, in conditiile in care precizia in optimizarea puterii debitate
de o celula fotovoltaica folosita ca receptor nu constituie un scop in sine, iar
tensiunea electrica mica (cca. 0.55V) e asemenea, celulele mono-jonctiune din
siliciu cristalin sunt o solutie buna, intrucat au o eficienta de conversie ridicata.
Daca, insa, o tensiune mai ridicata este de preferat, celulele din siliciu amorf sunt
o solutie mai buna, intrucat in circuit deschis, tensiunea la bornele acestora
poate atinge 0.9V. Suprairadiate, tensiunea creste mai vizibil decat in cazul
celulelor din siliciu cristalin.
32
7. ANEXA A. Program modul de comanda
Codul din prezenta anexa face posibila utilizarea tastaturii si a display-ului
din modulul de comanda, pentru a introduce datele initiale cu privire la pozitia pe
glob a concentratorului, a datei si a momentului zilei. Odata initializat, sistemul
calculeaza pozitia aparenta a Soarelui la interval de o secunda si debiteaza cele
doua unghiuri pe display, conform figurii 5.4.
// #define UART_BAUD_RATE 9600
// #define UART_BAUD_CALC ((F_OSC/16/UART_BAUD_RATE)-1)
#define F_CPU 16000000 // 16 MHz; must be defined for use with the _delay_ms()
function
#define nop() __asm__ __volatile__("nop")
#include <stdlib.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <math.h>
#include <util/delay.h>
/**
* LCD signal lines definitions (see "LCD Specifications with Instructions
Table.pdf" for details)
*/
#define LCD_DATA_PORT PORTA
#define LCD_CTRL_PORT PORTD
#define LCD_DATA_DDR DDRA
#define LCD_CTRL_DDR DDRD
#define LCD_RS PORTD4 // "Register Select" signal line
#define LCD_RW PORTD5 // "Read/Write" signal line
#define LCD_EN PORTD6 // "Enable" signal line
/**
* LCD commands definitions (see "LCD Specifications with Instructions
Table.pdf" for details)
*/
#define LCD_ON_1 0x0C // (0b00001100) Turn on power to display: No
cursor, No blink
#define LCD_ON_2 0x0E // (0b00001110) Turn on power to display: With
cursor, No blink
#define LCD_ON_3 0x0F // (0b00001111) Turn on power to display: With
cursor, With blink
#define LCD_SETUP 0x38 // (0b00111000) Set to 2 character lines, 8
bith data length mode, font type 5x8
#define LCD_CLEAR 0x01 // (0b00000001) Clear entire display
#define LCD_WRITE_TO_LINE1 0x80 // (0b10000000) Write to display line 1
#define LCD_WRITE_TO_LINE2 0xC0 // (0b11000000) Write to display line 2
#define LCD_CURSOR_LEFT 0x10 // (0b00010000) Move cursor to the left by 1
position
33
#define LCD_CURSOR_RIGHT 0x14 // (0b00010100) Move cursor to the right by 1
position
#define LCD_CURSOR_RETURN 0x02 // (0b00000010) Return the cursor to its
original position
/**
* << KeyPad to uController connections >>
*
* KeyPad column pins are set up as outputs, while row pins
* are inputs and are used to read the state of the keys.
* Pull-Up resistors on the input pins MUST be enabled.
*
* COLUMN 1 - PORTB0
* COLUMN 2 - PORTB1
* COLUMN 3 - PORTB2
* COLUMN 4 - PORTB3
*
* ROW 1 - PORTC4
* ROW 2 - PORTC5
* ROW 3 - PORTC6
* ROW 4 - PORTC7
*/
// Keypad functional keys definitions
#define NO_KEY ' '
#define KEY_INSERT '*'
#define KEY_BKSP 'A'
#define KEY_PLUS '+' // B
#define KEY_MINUS '-' // C
#define KEY_ENTER 'D'
#define KEY_DOT '.' // '#'
// System states
#define SYS_IDLE 0x00
#define SYS_ACCEPT_LAT 0x01
#define SYS_ACCEPT_LNG 0x02
#define SYS_ACCEPT_TZ 0x03
#define SYS_ACCEPT_YEAR 0x04
#define SYS_ACCEPT_MONTH 0x05
#define SYS_ACCEPT_DAY 0x06
#define SYS_ACCEPT_HOUR 0x07
#define SYS_ACCEPT_MINUTE 0x08
#define SYS_ACCEPT_SECOND 0x09
#define SYS_RUNNING 0x0A
// Misc
#define INPUT_BUFFER_MAX_LEN 12 // the maximum length allowed for the
keypad input string
#define CALC_INTERVAL 3 // frequency with which to update the
Sun's position (expressed in seconds)
// Global variables declaration
char lastKey = NO_KEY; // the last key that was pressed on the
keypad
char sysState = 0x00; // current system state; default: IDLE
(code 0x00);
34
char inputBuffer[12]; // keypad input buffer, accepts max
length of 12 characters (for lat/lng)
int8_t inputBufferPointer = -1;
uint16_t year;
uint8_t month;
uint8_t day;
uint8_t hour;
uint8_t minute;
uint8_t second;
uint8_t tz; // time zone (+-1 hour for each 15 degrees
longitude, relative to GMT); Romania is GMT+2
double lat;
double lng;
double elevation;
double azimuth;
volatile uint16_t timerCounter = 0;
uint16_t timerCounterLimit = 61 * CALC_INTERVAL; // ~61 cycles per second;
61*30 means once every 30 seconds
// Functions declaration
void initTimer();
void ledInit();
void ledOn();
void ledOff();
void ledBlink(int);
void lcdInit(char);
void lcdClear();
void lcdPutCommand(char);
void lcdPutChar(char);
void lcdWriteString(char, char, char *);
void lcdWriteSystemStateHeader(char);
void lcdWriteFloat(char, char, double);
void lcdGoToXY(char, char);
void keypadInit ();
char getPressedKey();
bool isStableKeyInput(char, char);
bool isKeyPressed();
bool isNumberComponent(char);
//void concat(char *a, char *b, char *res);
void delay_ms(uint16_t);
void readKeypadInput();
void storeInputBufferValue(char);
bool endOfMonth();
void updateTime();
void setSunPosition();
void outputSunPosition();
/**
* Timer counter overflow - interrupt sequence routine
*/
ISR(TIMER0_OVF_vect) {
timerCounter++;
if (timerCounter == timerCounterLimit) {
PORTD ^= (1<<PORTD7);
35
timerCounter = 0;
updateTime();
setSunPosition();
outputSunPosition();
}
}
// Main function body
int main(void) {
ledInit();
lcdInit(LCD_ON_3);
keypadInit();
// Clear the display and show a default message
lcdWriteSystemStateHeader(SYS_IDLE);
sei();
while(1) {
if (isKeyPressed()) {
lastKey = getPressedKey();
// System is IDLE and is awaiting the "INSERT" command
if (sysState == SYS_IDLE) {
if (lastKey == KEY_INSERT) {
sysState = 0x01;
lcdWriteSystemStateHeader(sysState);
}
}
// System state indicates accepting input params
else if (sysState == SYS_ACCEPT_LAT || sysState == SYS_ACCEPT_LNG
|| sysState == SYS_ACCEPT_TZ || sysState == SYS_ACCEPT_YEAR || sysState ==
SYS_ACCEPT_MONTH || sysState == SYS_ACCEPT_DAY || sysState == SYS_ACCEPT_HOUR
|| sysState == SYS_ACCEPT_MINUTE || sysState == SYS_ACCEPT_SECOND) {
if (lastKey == KEY_ENTER) {
storeInputBufferValue(sysState);
} else {
readKeypadInput();
}
}
// else if (sysState == SYS_RUNNING) {
// }
}
}
return 0;
}
void initTimer() {
36
// Clock prescaler = F_OSC / 1024
TCCR0 |= (1 << CS02) | (1 << CS00); // Timer clock signal, hence timer
counter increment is now set to 15.625 Hz
// Enable interrupt on timer counter overflow event
TIMSK |= (1 << TOIE0); // Timer counter will overflow approx. 15625/
256 = 61.03515625 times per second
// Initialize counter registry
TCNT0 = 0x00; // max values is 255
}
/**
* Disable timer counter overflow interrupt
*/
void stopTimer() {
TIMSK |= (0 << TOIE0);
}
/**
* Sets the DDR bit associated with the LED to "high" in order to set the
* LED as an output device. Leaves the remaining bits of DDRD unchanged.
*/
void ledInit () {
DDRD |= (1<<DDD7);
ledOff();
}
/**
* Sets the PORT register bit associated with the LED to "low", in order to
turn off the LED.
*/
void ledOff () {
PORTD &= ~(1<<PORTD7);
}
/**
* Sets the PORT register bit associated with the LED to "high", in order to
turn off the LED.
*/
void ledOn () {
PORTD |= (1<<PORTD7);
}
void ledBlink(int duration) {
ledOn();
delay_ms(duration);
ledOff();
}
/**
* Extends the '_delay_ms()' function by allowing time delays longer than
4194.24 ms.
37
* The maximal possible delay with '_delay_ms()' is 262.14 ms / F_CPU in MHz
* (F_CPU == 16 MHz, defined in the program header)
*
* @param uint16_t ms The time period by which to delay code execution,
expressed in miliseconds
*/
void delay_ms (uint16_t ms) {
/*uint16_t maxDelay = 4000; // rounded from 4194.24 for code
simplification reasons
char delayCycles = ms / maxDelay;
if (ms <= maxDelay) {
_delay_ms(ms);
}
else {
ms = ms - (delayCycles * maxDelay);
do {
_delay_ms(maxDelay);
delayCycles--;
} while (delayCycles > 0);
_delay_ms(ms);
}*/
while (ms) {
_delay_ms(1);
ms--;
}
}
/**
* Concatenates two strings into one
*
* @param pointer Pointer to start of first string
* @param pointer Pointer to start of first string
* @param pointer Pointer to start of resulting string
*/
// void concat (char *a, char *b, char *res) {
// sprintf(res, "%s%s", a, b);
//}
/**
* Initialize LCD
*/
void lcdInit (char startupCommand) {
LCD_DATA_DDR = 0xFF; // Set LCD data lines as outputs from corresponding
DDR
LCD_DATA_PORT = 0x00;
LCD_CTRL_DDR |= 0x70; // Set LCD control lines as outputs from
corresponding DDR
LCD_CTRL_PORT = (LCD_CTRL_PORT & 0x8F) | 0x50; // LCD_EN = 1, LCD_RW = 0,
LCD_RS = 1
_delay_ms(1);
lcdPutCommand(startupCommand); // Power up the display
lcdPutCommand(LCD_SETUP); // Set up the data transfer mode (4/8 bit),
# of character lines (1/2) and font size (5x8/5x11)
lcdPutCommand(LCD_CLEAR); // Clear the display
38
_delay_ms(1);
}
/**
* Clears the display
*/
void lcdClear() {
lcdPutCommand(LCD_CLEAR);
_delay_ms(1);
}
/**
* Send 8 bits of data to the LCD
* @param {Char} c Data to send to LCD
*/
void lcdPutChar (char c) {
LCD_CTRL_PORT |= (1<<LCD_EN);
_delay_ms(1);
LCD_DATA_PORT = c;
_delay_ms(1);
LCD_CTRL_PORT &= ~(1<<LCD_EN);
}
/**
* Sends a command to the LCD.
* @param {Char} command The command code for the LCD
*/
void lcdPutCommand (char command) {
LCD_CTRL_PORT &= ~(1<<LCD_RS);
_delay_ms(1);
lcdPutChar(command);
_delay_ms(1);
LCD_CTRL_PORT |= (1<<LCD_RS);
}
/**
* Puts the cursor on the position on the display
* @param {Char} x The display line; possible values: 1/2
* @param {Char} y The display column; possible values: 1-16
*/
void lcdGoToXY(char x, char y) {
char address = ((x==1) ? 0x80 : 0xC0);
address += (y-1);
lcdPutCommand(address);
}
/**
* Write a string of characters to the position on the display specified by
first two arguments
* @param x The line of the display (1/2)
39
* @param y The column of the display (1-16)
* @param str A pointer to the starting address of the string
*/
void lcdWriteString(char x, char y, char *str) {
lcdGoToXY(x,y);
while (*str) {
lcdPutChar(*str);
str++;
}
}
void lcdWriteSystemStateHeader(char state) {
lcdClear();
switch (state) {
case SYS_IDLE:
lcdWriteString(1, 1, "Idle");
break;
case SYS_ACCEPT_LAT:
lcdWriteString(1, 1, "Lat");
break;
case SYS_ACCEPT_LNG:
lcdWriteString(1, 1, "Lng");
break;
case SYS_ACCEPT_TZ:
lcdWriteString(1, 1, "TZ");
break;
case SYS_ACCEPT_YEAR:
lcdWriteString(1, 1, "Year");
break;
case SYS_ACCEPT_MONTH:
lcdWriteString(1, 1, "Month");
break;
case SYS_ACCEPT_DAY:
lcdWriteString(1, 1, "Day");
break;
case SYS_ACCEPT_HOUR:
lcdWriteString(1, 1, "Hour");
break;
case SYS_ACCEPT_MINUTE:
lcdWriteString(1, 1, "Minute");
break;
case SYS_ACCEPT_SECOND:
lcdWriteString(1, 1, "Second");
break;
}
//lcdWriteString(2,1,"> ");
//lcdGoToXY(2, 3);
lcdGoToXY(2, 1);
return;
}
/**
* Outputs a floating number as a string, on the LCD
40
* @param x LCD line
* @param y LCD column
* @param number The value that needs to be output
*/
void lcdWriteFloat(char x, char y, double number) {
char str[12];
unsigned char strLength = 11;
unsigned char precision = 6;
dtostrf(number, strLength, precision, str);
lcdWriteString(x, y, str);
}
/**
* Initiate the keypad on the board.
*/
void keypadInit () {
// Set columns as outputs
DDRB |= 0x0F;
PORTB &= 0xF0;
// Set keypad rows as inputs and enable the pull-up resistors on the
associated port pins
DDRC &= 0x0F;
PORTC |= 0xF0;
}
/**
* Reads in the currently pressed key on the keypad, without debouncing.
* For key debouncing, see "isStableKeyInput" function.
*/
char getPressedKey() {
unsigned char keys[4][4] = {{ '1', '2', '3', KEY_BKSP },
{ '4', '5', '6', '+' },
{ '7', '8', '9', '-' },
{ KEY_INSERT, '0', '.', KEY_ENTER }};
unsigned char PORTB_masks[4] = { 0b11111110, 0b11111101, 0b11111011,
0b11110111};
unsigned char PINC_masks[4] = { 0b00010000, 0b00100000, 0b01000000,
0b10000000 };
unsigned char i, j;
// One by one, pull the columns to GND (PORT value associated with the
selected
// column is 0, while the others are set to 1) and read the PIN values for
the rows
for (i=0; i<4; i++) {
PORTB |= 0b00001111; // Pull all pins associated with the
Keypad's columns to VCC (=1)
PORTB &= PORTB_masks[i]; // link column [i+1] to GND
nop();
for (j=0; j<4; j++) {
41
if ((PINC & PINC_masks[j]) == 0x00) { // check if key
`keys[j][i]` is pressed
return keys[j][i];
}
}
}
return NO_KEY;
}
/**
* Determines if a key pressed has stabilized after the
* switch bounce, by simple consecutive readings of the key.
* @param {char} key The key to verify if stable
* @param {char} iterations The number of iterations for the stability
check
* @return {boolean}
*/
bool isStableKeyInput (char key, char iterations){
for (char i=1; i<=iterations; i++) {
if (key != getPressedKey()) {
return false;
}
}
return true;
}
/**
* Detects if a NEW key was pressed on the keypad
* @return {boolean}
*/
bool isKeyPressed() {
char currentKey;
// Get the current key
currentKey = getPressedKey();
// Check for key input stability (switch bounce effect)
if (!isStableKeyInput(currentKey, 15)) {
return false;
}
// Determine of a key was pressed
if (currentKey != lastKey) {
lastKey = currentKey;
if (currentKey != NO_KEY) {
return true;
}
}
return false;
}
/**
42
* Determines whether the input character can be part of a number
* @param key
* @return {boolean}
*/
bool isNumberComponent(char key) {
return (isdigit(key) || key == KEY_MINUS || key == KEY_DOT);
}
/**
* Resets the keypad input buffer and brings its associated pointer to its
default value
*/
void clearInputBuffer() {
inputBufferPointer = -1;
memset(&inputBuffer[0], 0, sizeof(inputBuffer));
}
/**
* Attempts to store the input value from the keypad into its corresponding
variable (lat, lng, tz, ...)
* @param {Char} param The code identifying the variable which needs to receive
the input value
*/
void storeInputBufferValue(char param) {
switch (param) {
case SYS_ACCEPT_LAT:
lat = atof(inputBuffer);
sysState = SYS_ACCEPT_LNG;
break;
case SYS_ACCEPT_LNG:
lng = atof(inputBuffer);
sysState = SYS_ACCEPT_TZ;
break;
case SYS_ACCEPT_TZ:
tz = atoi(inputBuffer);
sysState = SYS_ACCEPT_YEAR;
break;
case SYS_ACCEPT_YEAR:
year = atoi(inputBuffer);
sysState = SYS_ACCEPT_MONTH;
break;
case SYS_ACCEPT_MONTH:
month = atoi(inputBuffer);
sysState = SYS_ACCEPT_DAY;
break;
case SYS_ACCEPT_DAY:
day = atoi(inputBuffer);
sysState = SYS_ACCEPT_HOUR;
break;
case SYS_ACCEPT_HOUR:
hour = atoi(inputBuffer);
sysState = SYS_ACCEPT_MINUTE;
break;
case SYS_ACCEPT_MINUTE:
minute = atoi(inputBuffer);
43
sysState = SYS_ACCEPT_SECOND;
break;
case SYS_ACCEPT_SECOND:
second = atoi(inputBuffer);
sysState = SYS_RUNNING;
initTimer();
break;
}
clearInputBuffer();
lcdWriteSystemStateHeader(sysState);
}
/**
* Reads in the keypad input and processes it
*/
void readKeypadInput() {
if (isNumberComponent(lastKey)) {
if (inputBufferPointer < INPUT_BUFFER_MAX_LEN) {
inputBufferPointer++;
inputBuffer[inputBufferPointer] = lastKey;
lcdGoToXY(2, inputBufferPointer + 1);
lcdPutChar(lastKey);
return;
}
}
if (lastKey == KEY_BKSP) {
if (inputBufferPointer > -1) {
inputBuffer[inputBufferPointer] = NO_KEY;
lcdGoToXY(2, inputBufferPointer + 1);
inputBufferPointer--;
lcdPutChar(NO_KEY);
lcdPutCommand(LCD_CURSOR_LEFT);
return;
}
}
return;
}
/**
* Checks if the current day is the last year of the month. *
* @return bool True if the day is the last day of the month, false
otherwise;
*/
bool endOfMonth() {
if ((month==1 || month==3 || month==5 || month==7 || month==8 || month==10
|| month==12) && day==31) {
return true;
}
if ((month==4 || month==6 || month==9 || month==11) && day==30) {
return true;
}
44
if (month==2) {
if (year%4==0) {
if (day==29) {
return true;
}
}
else {
if (day==28) {
return true;
}
}
}
return false;
}
void updateTime() {
second += CALC_INTERVAL;
if (second == 60) {
second = 0;
minute++;
if (minute == 60) {
minute = 0;
hour++;
if (hour == 24) {
hour = 0;
day++;
if (endOfMonth()) {
day = 1;
month++;
if (month == 13) {
year++;
month = 1;
}
}
}
}
}
}
/**
* Normalizes an angle to the 0-360 degree interval
*/
float normalizeAngle(float angle) {
return fmod(angle,360);
}
/**
* Converts angle from degrees to radians
*/
float deg2rad(float angle) {
45
return angle * M_PI / 180;
}
/**
* Converts angle from radians to degrees (not normalized to 0-360 interval)
*/
float rad2deg(float angle) {
return (180 * angle) / M_PI;
}
/**
* Determine the Sun's position on the sky as a pair of values constituting its
elevation and azimuth.
* The values are stored in global variables 'elevation' and 'azimuth'.
*/
void setSunPosition () {
char _month = month;
int _year = year;
float _lat = deg2rad(lat);
float b, c, jd, L, g, l, e, delta, a, X, Y, ha;
// 1. Determine the Julian Date for the current moment
// The Julian Date (jd) of any instant is the Julian day number for the
preceding noon
// plus the fraction of the day since that instant.
// Julian Dates are expressed as a Julian day number with a decimal
fraction added.
// The Julian Date for 06:37, 10 August 2013 (UTC) is 2456514.775787.
if (_month <= 2) {
_month += 12;
_year -= 1;
}
c = 2 - floor(_year/100.0) + floor(_year/400.0);
b = day + (hour - tz)/24.0 + minute/1440.0 + second/86400.0;
jd = (floor(365.25 * (_year + 4716)) + floor(30.6001 * (_month + 1)) -
2453069.5) + b + c;
// 2. Determine the Mean Longitude (L) and Mean Anomaly (g) of the Sun (in
degrees)
L = normalizeAngle(280.461 + 0.9856474 * jd);
g = normalizeAngle(357.528 + 0.9856003 * jd);
// 3. Determine the Ecliptic Longitude (l) of the Sun (in degrees)
// Note that the `sin(g)` and `sin(2*g)` terms constitute an approximation
// to the 'equation of centre' for the orbit of the Sun
g = deg2rad(g);
l = L + 1.915 * sin(g) + 0.02 * sin(2*g);
// 4. Determine the obliquity of the ecliptic plane (e, in degrees)
e = 23.439 - 0.0000004 * jd;
// 5. Determine the Right Ascension (a) and Declination (delta) of the Sun
e = deg2rad(e);
l = deg2rad(l);
Y = cos(e) * sin(l);
46
X = cos(l);
a = rad2deg(atan(Y/X));
delta = asin(sin(e)*sin(l));
if (X < 0) {
a += 180;
}
if (X > 0 && Y < 0) {
a += 360;
}
// 6. Determine the Local Sidereal Time (lst) and then the Hour Angle (ha)
of the Sun.
// lst = normalizeAngle(280.46061837 + 360.98564736629 * jd + lng);
ha = normalizeAngle(280.46061837 + 360.98564736629 * jd + lng) - a;
// 7. Determine the Sun's azimuth and elevation
ha = deg2rad(ha);
c = sin(_lat);
b = cos(_lat);
a = sin(delta);
e = cos(delta);
elevation = asin(a*c + e*b*cos(ha));
Y = -e*b*sin(ha);
X = a - c*sin(elevation);
elevation = rad2deg(elevation);
azimuth = rad2deg(atan(Y/X));
if (X < 0) {
azimuth += 180;
}
if (X > 0 && Y < 0) {
azimuth += 360;
}
}
/**
* Outputs the Sun's position to the LCD, each of the two values on a separate
line and with a header preceding it
*/
void outputSunPosition() {
char sAzimuth[9];
char sElevation[9];
char line1[14] = "elv: ";
char line2[14] = "azm: ";
// Convert the azimuth and elevation values to strings
(void)dtostrf(elevation, 8, 3, sElevation);
(void)dtostrf(azimuth, 8, 3, sAzimuth);
// Concatenate the two angles as strings, with their corresponding line
headers (also strings)
47
strcat(line1, sElevation);
strcat(line2, sAzimuth);
// Write elevation and azimuth to LCD
lcdPutCommand(LCD_CLEAR);
lcdWriteString(1, 1, line1);
lcdWriteString(2, 1, line2);
return;
}
48
8. BIBLIOGRAFIE
Deutsche Gesellschaft Für Sonnenenergie (Dgs), 2006. Planning and
Installing Photovoltaic Systems: A guide for installers, architects and engineers
(second edition). Earthscan, UK
Antonio Luque, Steven Hegedus, 2003. Handbook of Photovoltaic Science
and Engineering. Wiley, England
A. Goetzberger, V.U. Hoffmann, 2005. Photovoltaic solar energy
generation. Springer, Berlin
Tom Markvart , Luis Castañer, 2003. Practical Handbook of Photovoltaics:
Fundamentals and Applications. Elsevier, New York, NY
Roger A. Messenger, Jerry Ventre, 2005. Photovoltaic Systems Engineering
SECOND EDITION. CRC Press, Florida
Keith Burnett, 1997. Position of the Sun.
http://stargazing.net/kepler/sun.html, accesat ultima data in anul 2014
Thomas Fischl, 1998. AVRUSBBoot - USB bootloader for Atmel AVR
controllers. http://www.fischl.de/avrusbboot/, accesat ultima data in 2014
Răzvan Tătăroiu. AVR USB Bootloader: Programare microcontroler pe USB.
https://sites.google.com/site/razvan784/avrusbbootloader, accesat ultima data
la 15.09.2014
STMicroelectronics, 2014. DMOS driver for bipolar stepper motor
(datasheet).
http://www.st.com/web/en/resource/technical/document/datasheet/CD0000229
4.pdf, accesat ultima data in anul 20014
Atmel, 2010. 8-bit Microcontroller with 16K Bytes In-System
Programmable Flash (datasheet). http://www.atmel.com/Images/doc2466.pdf,
accesat ultima data in anul 2014