Aplicaţii pentru sistemul de viziune compact [311169]

[anonimizat] –

[anonimizat]

(DETIE)

Lucrare de disertație

în cadrul

Facultății de Inginerie Electrică

Universitatea VALAHIA din Târgoviște

Autor

Francisc Dan N. BĂLĂNICĂ

Data: 31.03.2011

SUPERVIZATĂ DE: Florian ION

Reproducerea se poate face doar cu permisiune din partea autorului

Francisc Dan N. BĂLĂNICĂ

AUTORI LUCRARE / AUTHORS OF THESIS

Master of Science (M.Sc.)

GRAD / DEGREE

Inginerie Electronică și Telecomunicații

DOMENIU / [anonimizat] –

TITLUL PROIECTULUI / TITLE OF PROJECT

Florian ION

SUPERVIZOR PROIECT / PROJECT’S SUPERVISOR

[semnatura]

CO-SUPERVIZOR PROIECT / PROJECT’S CO-SUPERVISOR

[semnatura]

EVALUATORI PROIECT / PROJECT EVALUATORS

Dinu COLȚUC

[semnatura]

Henri-George COANDĂ

[semnatura]

Gabriel PREDUȘCĂ

[semnatura]

Radu DOBRESCU

[semnatura]

Florian ION

[semnatura]

Dan-Constantin PUCHIANU

[semnatura]

Elena Otilia VIRJOGHE

DIRECTOR STUDII DE MASTERAT / MASTER STUDY DIRECTOR

[semnatura]

[anonimizat] –

Francisc Dan N. Bălănică

[anonimizat]

B.Sc. obținut la Universitatea Titu Maiorescu din București

Specializarea Informatică în 2009

Abstract

Energia solară avansează rapid ca o sursă de energie regenerabilă. Se știe faptul că mai multă energie este produsă atunci când panoul solar rămâne aliniat la un anumit unghi cu razele solare. Acest proiect descrie în detaliu construcția unui sistem de urmărire a traiectoriei solare care detectează intensitatea luminoasă folosind un fotorezistor. Controlul circuitului pentru dispozitivul de urmărire al traiectului solar este bazat pe microprocesorul PIC16F877. [anonimizat] a poziționa panoul solar în așa fel încât acesta să poată recepționa cât mai multă lumină.

Cuvinte cheie: PIC, urmărire, fotocelulă, sistem de mișcare.

Solar path tracker

Abstract

Solar energy is rapidly advancing as an important means of renewable energy resource. More energy is produced by tracking the solar panel to remain aligned to the sun at a right angle to the rays of light. [anonimizat]. The control circuit for the solar tracker is based on a PIC16F877 microcontroller. This is programmed to detect the sunlight through the photocells and then actuate the motor to position the solar panel where it can receive maximum sunlight.

Keywords: PIC, tracking, photocell, motion system

Thesis Supervisor: [anonimizat].D. Eng.,

Electronic, Telecommunication and Power Energy Department

Electrical Engineering Faculty

University VALAHIA of Targoviste

Listă figuri

Listă tabele

Abrevieri

Cuprins

CAPITOLUL 1

Introducere în urmărirea traiectului solar

1.1. [anonimizat] a stăpâni această sursă de energie. Sunt cunoscuți anumiți factori ce determină eficiența colectării unei energii din ce în ce mai mare. [anonimizat] ultimul rând, tehnica de înmagazinare a energiei colectate. Materialele folosite în fabricarea celulelor solare limitează eficiența acesteia. Acest lucru face destul de dificilă îmbunătățirea celulei solare, astfel micsorându-se procesul de colectare a energiei. Totuși, cea mai la îndemână metodă folosită pentru a îmbunătăți colectarea puterii solare, este aceea de a crește intensitatea de recepției a sursei de energie. Există 3 posibilități de a maximiza puterea de extracție în sisteme la scară medie și mare. Acestea sunt: urmărirea traiectului solar, urmărirea punctului de putere maximă (Maximum Power Point MPP), sau ambele.

1.2. Ideea de urmărirea traiectului solar

În fiecare zi, soarele răsare la Est, se deplasează pe cer, și apune la Vest. Soarele ne luminează și trimite energie către noi. Putem simți căldura de la soare, și putem observa obiectele luminate de soare. Astfel, dacă luăm o celulă solară și o mișcăm în așa fel încât aceasta să fie poziționată cât mai mult către soare, atunci am putea recepționa cea mai mare cantitate de energie posibilă și o putem converti în energie utilă, în electricitate.

Dacă am locui la Tropice, putem observa cum soarele urmează o cale direct pe deasupra capetelor noastre. Astfel, pentru locații aflate la sud sau nord de Tropice (latitudini mai mari sau mai mici de 23.5 grade), soarele nu va ajunge nicioadată într-o poziție direct deasupra capetelor noastre. Contrar, acesta urmează o traiectorie în partea de sud sau de nord a cerului.

1.3. Obiectul lucrării

Dacă am putea configura o celulă solară în așa fel încât aceasta să stea continuu cu fața către soare, în timp ce acesta se deplasează pe cer de la est la vest, am putea obține cea mai mare cantitate de energie electrică posibilă pe care o putem lua de la soare. O modalitate de a face acest lucru este, bineânteles, cu mâna. Totuși, tinând celula solara îndreptată cu fața către soare pe tot parcursul zilei nu este chiar eficient din punct de vedere al timpului liber al unei persoane. Ieșind la celula solara și mutând-o cu mâna din oră în oră, ar fi o soluție, dar totuși nu este cea mai eficientă metodă. Pentru a putea controla urmărirea traiectului solar putem folosi un sistem de urmărire. De exemplu, dacă sistemul de urmărirea traiectului solar nu este aliniat cu razele solare, atunci ar porni un motor care ar reface alinierea. Senzorul de lumină este un fotorezistor care este montat pe același suport cu celula solară. Atâta timp cât fotorezistorul este aliniat cu razele solare, nu se întamplă nimic. Totuși, atunci când soarele se deplasează pe cer și nu se află aliniat cu fotorezistorul, motorul mișcă rama până ce senzorul este perfect aliniat cu soarele. Așadar avem nevoie de un sistem de urmărire, care în mod automat poziționează panoul solar cu fața către soare pe parcursul întregii zile. Vom construi un sistem automat ce va conține un singur motor. Montajul va contine un cadru pe care vom monta panoul solar. Motorul este legat la cadru, se poate porni sau opri, ca răspuns la mișcarea soarelui pe cer.

1.4. Energia solară

Una dintre cele mai importante probleme cu care se confruntă lumea în zilele noastre este cea a energiei. Această problemă rezultă din creșterea nevoii de energie electrică și costul mărit al combustibilului. Soluția este aceea de a găsi o alta formă de energie regenerabilă precum cea a energiei soarelui, cea produsă de vânt, etc. Mai nou, energia solară este din ce în ce mai mult folosită în viața de zi cu zi, și se așteaptă să crească în anii ce vin.

Energia solară are numeroase avantaje:

nu necesită consum de combustibil;

nu are părti ce se misca de care sa avem grijă;

nu poluează;

adaptabil oriunde se dorește instalarea;

ușor de întreținut;

poate fi integrat cu orice alt sistem de energie regenerabilă;

simplu și eficient.

Sistemele de urmărirea traiectului solar încearcă să colecteze cât mai mult din radiația solară și să o convertească apoi în energie electrică și să stocheze această energie în baterii pentru diferite aplicații. Sistemul de urmărirea traiectului solar poate colecta mai multă energie decât un sistem fix.

1.5. Introducere în urmărirea traiectului solar

Figura 1.1. Panou solar SOL6N

Sistemul de urmărirea traiectului solar este un dispozitiv ce orientează un panou fotovoltaic, sau care concentrează reflectorul sau lentilele solare către soare. Poziția soarelui pe cer variază odată cu elevația și cu timpul de peste zi al soarelui în timp ce soarele se deplasează pe cer. Echipamentul solar functionează cel mai bine atunci când este poziționat direct sau în aporpierea razelor solare, așadar sistemul de urmărirea traiectului solar este mai eficient decât oricare ar fi pozițiile unui echipament fix, cu costul unui dispozitiv mai complex. Există multe sisteme de urmărirea traiectului solar, variind prin cost, complexitate și performanță. Un sistem de urmărirea traiectului solar bine cunoscut este heliostatul, acesta, printr-o oglindă rotativă, reflectă razele solare către o poziție fixă, și alte aplicații sunt folosite la fel de bine.

Acuratețea unui sistem de urmărirea traiectului solar depinde de aplicația folosită. Concentratoarele, în special în aplicațiile cu celule fotovoltaice, au nevoie de un grad mare de precizie pentru a se asigura ca razele solare sunt direcționate către dispozitivul de putere, care se află aproape de centrul focal al reflectorului sau lentilelor. De obicei sistemele concentrator nu funcționează la maxim fără să nu urmeze traiectoria solară, așadar este nevoie de cel puțin o axă pe care se va face urmărirea.

Aplicațiile care nu concentrează lumina nu au nevoie de acuratețe și multe din acestea funcționează fără a urmări vreo traiectorie. Totuși, urmărind calea pe care soarele o parcurge pe cer în timpul zilei, se obține un aport considerabil în ceea ce privește puterea ce se poate obține de către acest sistem. Folosirea traiectoriilor sunt aplicații ce nu necesită concentrări ale razelor solare, ci reprezintă soluții electronice bazate pe economie. Comparându-le cu sistemele fotovoltaice, trakerii pot fi relativ ieftini. Acest lucru le face destul de eficiente pentru sistemele fotovoltaice.

La aplicațiile solare termale, pentru temepraturi scăzute, trakerii nu sunt folositi, din cauza costului relativ mare al dispozitivului de urmărire, având nevoie de multe arii de colectare și de multe unghiuri solare restrictive necesare pentru performațe pe timpul iernii, care influențează capacitatea medie pe parcursul întregului an. Anumite sisteme de urmărire pot opera eficient prin ajustarea poziționării ținând cont de sezon, și majoritatea au nevoie de inspecție periodică anuală.

1.6. Tehnici de urmărire

Sunt cunoscute mai multe tehnici de urmărire: majoritatea variind în funcție de metoda de implementare a aplicației. Cele două forme de urmărire folosite sunt definite prin algoritmi ficși de control, și urmărire dinamică. Diferența dintre cele două este dată de metoda prin care este determinată traiectoria solară. În sistemele ce au la bază algoritmul de control fix, traiectoria pe care o are soarele este determinată de un algoritm de referință care calculează poziția soarelui pentru fiecare perioadă de timp. Astfel, controlul sistemului nu este dat de modul în care caută într-un mod activ poziția soarelui pe cer, ci funcționează totuși printr-un algoritm ce are ca operanzi, ora, ziua, luna și anul. Sistemul dinamic de detrminare a traiectului solar, pe de altă parte, caută într-un mod activ poziția soarelui în orice minut pe timpul zilei (sau nopții). În mod obișnuit, ambele forme de urmărire reprezintă controlul sistemului. Controlul directiei al acestor sisteme este determinat de motoare DC, motoare pas cu pas, servo-motoare, care sunt direcționate prin circuite digitale sau analogice.

1.7. Relevanța sistemelor de urmărirea traiectului solar

Pentru oamenii care locuiesc în comunități retrase, de obicei în tările din lumea a treia, accesul la rețeaua electrică nu este întotdeauna posibilă. De obicei, cel mai apropiat punct de conectare la rețea este foarte departe de casă și costul dezvoltării infrastructurii ce ar permite accesul la rețea este foarte mare. Comunitățile retrase din tările din lumea a treia, nu sunt, bineânțeles, singurele care suferă de această problemă. Australia, de exemplu, este o țară mare cu multe ferme și comunități de oameni care se află la mare distanță de rețeaua electrică, și în aceste cazuri este nevoie de a obține surse alternative de energie electrică.

1.8. Circuitul echivalent al unei celule solare

Figura 1.2. Circuitul echivalent al unei celule solare

Figura 1.3. Simbolul unei celule solare

Pentru a înțelege comportamentul electronic al unei celule solare, este necesar să creăm un model care este echivalent din punct de vedere electric și este bazat pe componente electrice discrete al căror comportament îl cunoaștem. O celulă solară ideală poate fi reprezentată printr-o sursă de curent în paralel cu o diodă. În practică nu se poate obține o celulă solară ideală, astfel, o rezistență de șunt și o rezistență serie sunt adăugate montajului. Rezultatul este „circuitul echivalent al unei celule solare”, așa cum este prezentat mai sus. Cealaltă figură reprezintă simbolul celulei, folosit în circuitele schematice.

1.9. Materialele și eficiența

Diferite materiale au fost încercate pentru fabricarea celulei solare. Se cunosc două mari criterii – eficiența și costul. Eficiența reprezintă raportul dintre tensiunea de intrare și tensiunea de ieșire. Ideal, aproape de Ecuator, la amiază, pe cer senin, radiația solară este de aproximativ 1000W/m2. Asadar, un modul cu 10% eficiență pe 1 metru pătrat poate porni un bec de 100W. Costurile și eficiența materialelor variază mult. De departe, cel mai întâlnit material din care se confecționează celula solară (și toți ceilalți semiconductori) este cristalul de siliciu. Celulele solare din cristal de siliciu se împart în următoarele trei categorii principale:

Cristalul unic sau tabletele monocristaline. Cele mai vândute celule monocristalin au eficineța de 14%; celulele solare ating cea mai înalta eficiență aproape de 20%. Monocristalele tind să fie cele mai scumpe, iar pentru că acestea sunt tăiate din lingouri cilindrice, nu pot acoperi complet un modul fără o pierdere substanțială de siliciu. Majoritatea panourilor cu monocristale au porțiuni neacoperite la colțurile a patru celule.

Poli sau multi cristalele fabricate din lingouri turnate – discuri mari de siliciu topit răcit și solidificat. Aceste celule sunt mai ieftine decât monocristalele, dar totuși mai puțin eficiente. Acestea pot fi organizate usor într-o formă dreptunghiulară, astfel acoperind o mare parte din panou, în acest mod compensându-se eficiența lor scăzută.

Panglica de siliciu este fabricată prin desenarea unui film subțire din siliciu topit și are o structură multicristalină. Aceste celule sunt cele mai puțin eficiente dar există o reducere a costurilor, datorită faptului că nu se mai pierde siliciu și pentru că în această abordare este nevoie de tăierea din lingouri.

Aceste tehnologii sunt fabricații bazate pe plachetă. Cu alte cuvinte, pentru fiecare abordare de mai sus, placuțele singulare de aproximativ 300 microni grosime sunt fabricate și apoi lipite între ele pentru a forma un modul.

Abordările prin film subțire sunt bazate pe modul. Întregul substrat al modulului este învelit cu straturile dorite, apoi un laser este folosit pentru a delimita celulele individuale. Două dintre cele mai cunoscute materiale sunt siliciul amorf și CIS:

Filmele din siliciu amorf sunt fabricate prin folosirea unei tehnici de depozitare prin vapori, de obicei, îmbunătățite cu plasmă (PE-CVD). Aceste celule au o eficiență scazută de aproximativ 8%.

CIS vine de la film chalcogenide de Cu. Eficiența acestor celule ajunge la 11%, totuși costul este destul de mare.

1.10. Celulele fotovoltaice

Un modul solar (de asemenea cunoscut ca „panou solar”) este alcătuit din mai multe celule PV care sunt legate între ele în așa fel încat să se obțină voltajul dorit. Firele subțiri din fața modulului atrag electronii liberi de pe celula PV.

Figura 1.4. Celula fotovoltaică

O celulă solară sau o celulă fotovoltaică, convertește lumina direct în electricitate la nivel de atom prin absorbția luminii și eliberării electronilor. Aceasta metodă este o demonstrare a efectului fotoelectric, o proprietate a anumitor materiale care produc curent electric atunci când acestea sunt expuse la lumină.

O celulă solară tipică are două straturi usor diferite de siliciu. Atunci când soarele luminează aceste straturi, face ca electronii să se miște în jurul joncțiunilor dintre straturi, creând un curent electric.

Stratul de siliciu de la suprafață într-o celulă solară este foarte subțire. Include într-o formă deliberată de impuritate anumiți atomi ai unui element ce are mai mulți electroni decât siliciul, precum fosforul. Acești atomi se numesc donori, deoarece ei pot dona sau elibera surplusul de electroni în stratul de siliciu ca electroni liberi.

Stratul de siliciu de la nivelul cel mai de jos dintr-o celulă solară este mult mai gros decât stratul de la suprafață. Are ca impuritate anumiți atomi ai unui element precum boronium care are mai puțini electroni decât atomii de siliciu. Acești atomi se numesc acceptori, deoarece spre deosebire de atomii de siliciu au „găuri” unde electronii pot fi acceptați.

La nivelul joncțiunii unde aceste două straturi se întâlnesc, donorii care sunt aproape de joncțiune își eliberează electronii, care apoi migrează prin joncțiune și ajung la acceptorii adiacenți. Acest lucru oferă nivelului superior care are donori o încărcare pozitivă (deoarece își cedează electronii în exces), iar nivelului inferior o încărcare negativă (deoarece acceptorii au „găurile” pline cu electronii în exces).

Atunci când soarele luminează peste aceste straturi, atomii de pe nivelul inferior, absoarb lumina și eliberează electronii în concordanță cu efectul fotovoltaic. Acești electroni, apoi, migrează către nivelul încărcat pozitiv. Această mișcare de electroni crează curentul electric într-o celulă solară care trece prin circuitul ce are contacte pe cele două straturi.

Pe timpul amiezii, curentul de ieșire al celulei solare ajunge la maxim, deoarece lumina cade perpendicular pe modul. La începutul sau la sfârsitul zilei, curentul de ieșire scade deoarece orientarea soarelui iese din raza celulei solare.

Pe timpul zilei, celula solară dezvoltă un curent aproape constant. Totuși, cu cât intensitatea soarelui care cade pe celula solară este mai mare, cu atât mai mult curent electric va fi produs.

1.11. Modulul fotovoltaic

Modulele fotovoltaice sunt dispozitive care convertesc lumina în curent electric și oferă o soluție practică la problema generării de putere pentru zonele retrase. Ele sunt utile mai ales în situațiile în care cererea de energie electrică este relativ scăzută și pot fi satisfăcute prin folosirea unui numar scăzut de panouri. Dacă este aprinsă lumina, sau funcționează un frigider, sau un televizor într-o casă micuță, sau alimentarea unei pompe de apă într-o fermă retrasă, toate acestea sunt exemple pe care un număr mic de panouri solare le-ar face față. Costul acestor panouri este destul de ridicat, astfel numărul acestora trebuie ținut la minimum, ținând cont de faptul că panourile trebuie să aibă un randament mare în timp ce acestea sunt expuse la soare.

Sistemul de urmărire a traiectului solar care a fost proiectat și construit în acest proiect optimizează tensiunea de ieșire a modulelor fotovoltaice asigurându-se că acestea sunt îndreptate către soare pe durata întregii zile. Tracker-ul poate fi implementat în orice situație în care sunt folosite module solare. Ar fi eficient în special în situațiile în care doar un număr mic de module ar fi folosite. Analizele au demonstrat că prin acest sistem de urmărire, eficiența crește cu aproximativ 8% față de sistemele fixe tradiționale.

1.12. Bazele sistemului de urmărirea traiectului solar

Un sistem de urmărirea traiectului solar este un dispozitiv care este folosit pentru a alinia un singur modul fotovoltaic sau o serie de module solare. Chiar dacă dispozitivele de urmărire nu sunt parte integrantă a sistemului, implementarea acestora poate îmbunătății tensiunea de ieșire, menținând soarele focalizat pe parcursul întregii zile. Eficiența este îmbunătățită în mod special dimineața și în orele târzii ale dupăamiezii, spre deosebire de sistemele fixe care nu sunt orientate către soare. Modulele fotovoltaice sunt scumpe și în cele mai multe cazuri, panourile însăși vor costa mai mult decat întreg sistemul. Totuși, un sistem care utilizează un dispozitiv de urmărire, bine proiectat, ar avea nevoie de puține panouri pentru a crește eficiența, rezultat care ar reduce costurile inițiale de implementare.

1.13. Privire de ansamblu asupra tipurilor de sisteme de urmărire

Sistemele de urmărire solare pot fi împărțite în trei mari categorii depinzând de tipul de unitate și detectare, sau de poziționare a sistemului, pe care le cuprinde. Urmăritoarele pasive se folosesc de radiația solară pentru a încălzi gazul care mișcă sistemul pe cer. Urmăritoarele active folosesc unități electrice sau hidraulice sau anumite motoare sau actuatoare pentru a mișca sistemul. Urmaritoarele cu buclă deschisă nu folosesc senzori, dar, în schimb, pentru determinarea poziției soarelui pe cer, folosesc date preânregistrate pentru fiecare site în parte.

1.13.1. Urmărtioare pe gaz (urmăritoare pasive)

Urmăritoarele pasive folosesc un gaz lichid compresat pentru a înclina panoul solar. Un recipient aflat pe partea cu soarele, este încălzit astfel încât presiunea gazului crește și împinge lichidul de o parte a tracker-ului în alta. Acest lucru determină înclinarea sistemului. Acest dispozitiv este fiabil și necesită puțină întreținere. Deși fiabile și cu un cost de întreținere aproape gratis, urmăritoarele pasive pe gaz rar pot poziționa modulul solar direct către soare. Acest lucru se întâmplă deoarece temperatura variază de la zi la zi și sistemul nu ia în calcul această variabilă. Zilele înorate reprezintă de asemenea o problemă atunci când soarele apare sau dispare dupa nori, forțând astfel gazul din cilindri să se dilate sau să contracte, rezultând o miscare haotică a dispozitivului. Urmăritoarele pasive sunt, totuși, o modalitate de creștere a tensiunii de ieșire într-un mod ieftin și cu efect imediat.

Sistemul de urmărire începe ziua poziționat cu fața către Vest. În timp ce soarele se deplasează către Est, încălzește recipientul aflat pe partea dinspre Vest (care nu este la umbră), forțând astfel ca lichidul să se deplaseze în partea umbrită dinspre Est. Lichidul care este forțat să ajungă în partea de Est a recipientului, schimbă punctul de echilibru al sistemului și îl deplasează către Est. Poate dura aproape o oră pentru a realiza trecerea de la Vest la Est. Încălzirea lichidului este controlată de către plăci de aluminiu care fac umbră. Atunci când un recipient este expus la soare mai mult decât celălalt, presiunea interioară crește, determinând dispozitivul să se încline.

1.13.2. Urmărtioare active

Trackerele active măsoară intensitatea luminoasă provenită de la soare pentru a determina în ce parte, modulele solare, să se încline. Senzorii de lumină sunt poziționați pe sistemul de urmărire în anumite locații sau în forme bine determinate. Dacă soarele nu este îndreptat direct către senzorii de lumină, atunci va fi o diferență între intensitatea luminoasă de la un senzor în comparație cu celălalt, și această diferență poate determina în ce direcție sistemul se va înclina cu scopul de a fi cu fața către soare.

1.13.3. Urmărtioare în buclă deschisă

Aceste urmăritoare determină poziția soarelui folosind algoritmi de control sau simple sisteme de timp.

1.13.3.1. Urmărtioare cu timer

Acestea utilizează un timer pentru a deplasa sistemul pe cer. Mișcarea incrementată pe tot parcursul zilei păstrează modulele cu fața către soare. Urmăritoarele de acest tip pot utiliza una sau două axe în funcție de aplicație. Principalul dezavantaj al sistemelor cu temporizator este acela că mișcarea lor nu ia în calcul variațiile sezoniere în ceea ce privește poziția soarelui pe cer. În cazul în care nu sunt luate măsuri pentru a determina poziția soarelui în funcție de aceste aspecte sezoniere pe parcursul anului, vor exista diferențe notabile în ceea ce privește eficiența în funcție de anotimp.

1.13.3.2. Urmărtioare în funcție de altitudine sau azimut

Acestea folosesc date astonomice sau algoritmi de poziție a soarelui pentru a determina poziția soarelui pentru orice timp sau locație. Locația sistemului de urmărire, data și timpul sunt folosite de către un microcontroler pentru a se orienta după poziția soarelui. Odată ce poziționarea a fost calculată, modulele sunt mutate utilizând servo-motoare.

1.14. Tipuri de sisteme de urmărirea traiectului solar

Sunt multe tipuri de sisteme de urmărire care pot fi grupate în modele cu o singura axă sau cu două axe.

1.14.1. Sisteme de urmărire care au o singură axă

Figura 1.5. Sisteme de urmărirea traiectului solar care folosesc o singură axă

Sistemele solare de urmărire cu o singură axă pot avea ori o axă orizontală, ori una verticală. Cele orizontale sunt folosite în regiunile tropicale unde soarele este puternic la amiază, dar unde zilele sunt scurte. Cele verticale sunt folosite la latitudini mari (cum ar fi Marea Britanie), unde soarele nu este foarte puternic, dar zilele de vară pot fi foarte lungi. Acestea au un unghi de înclinare manual cuprins între 0° – 45° și urmărește soarele de la Est la Vest. Ele folosesc modulele fotovoltaice și senzori de lumină pentru a evita mișcările de urmărire inutile și pentru fiabilitate. Noaptea sistemele de urmărire ajung la o poziție orizontală.

1.14.2. Sisteme de urmărire care au două axe

Figura 1.6. Sisteme de urmărirea traiectului solar care folosesc două axe

Sistemele solare cu două axe folosesc ambele axe, și cea orizontală și cea verticală, astfel putând urmării mișcarea soarelui oriunde în lume. Acest tip de sistem este folosit pentru controlul telescoapelor astronomice, deci există o mulțime de programe disponibile pentru a prezice și urmări în mod automat mișcarea soarelui pe cer.

Sistemele cu două axe urmăresc soarele de la Est la Vest și de la Nord la Sud pentru un plus de câstig al tensiunii de ieșire (aprox. 40%).

1.15. Tipuri de monturi ale sistemelor de urmărire

Sistemele de urmărire pot fi pasive sau active, sau pot avea o axă sau două axe. Cele care au o singură axă, de obicei folosesc o montură polară pentru a avea o eficiență maximă. Sistemele de urmărire cu o singură axă, de obicei, sunt orientate manual pe verticală pe axa secundară, axă ce este ajustată în mod regulat pe timpul anului. Există două tipuri de monturi pentru sistemele care au două axe, polar sau altitudine-azimut.

1.15.1. Monturi de tip polar

Sistemele de urmărire polară au o singură axă în apropierea axei de rotație a Pământului, de aici și numele de Polar. Doar monturile telescoapelor astronomice de mare acuratețe se rotesc în jurul unei axe paralele cu cea a Pământului. În cazul sistemelor de urmărire, denumite și sisteme de urmărire „polare”, au axa aliniată perpendicular pe „eliptic” (un disc imaginar ce contine drumul catre soare).

Figura 1.7. Monturi de tip polar

Sistemele de urmărire simple sunt ajustate manual pentru a compensa trecerea către eliptic pe timpul anotimpurilor. Ajustarea are loc de cel puțin două ori pe an, la echinocțiuri; odată pentru a stabili poziția pentru toamnă-iarnă, și odată pentru primavară-vară. Aceste sisteme de urmărire au de obicei o singură axă, deoarece, este nevoie de un singur mecanism de mișcare. Astfel se reduc costurile și permite utilizarea metodelor pasive de urmărire.

1.15.2. Montură pe ax orizontal

Figura 1.8. Montură pe ax orizontal

Sistemele de urmărire montate pe un singur ax, pot fi orientate fie prin mecanisme pasive fie active. Pentru aceasta, pe anumite cadre, sau pe piloni, este montat un tub orizontal ce are la capete rulmenți. Axul tubului este aliniat către nord-sud. Panourile sunt montate pe tub, acesta se rotește în jurul axei pentru a urmări mișcarea soarelui pe cer. Deoarece panourile nu se înclină către Ecuator, nu sunt destul de eficiente pe timpul iernii, dar au un aport mărit pe timpul primăverii și verii, atunci când soarele este sus pe bolta cerească. Aceste dispozitive sunt mai putin eficiente la latitudini mari. Principalul avantaj îl constituie robustețea structurii de sprijin și simplitatea mecanismului. Deoarece panourile sunt orizontale, acestea pot fi montate pe ax fără să ne facem probleme din punct de vedere al umbririi, și sunt întotdeauna ușor de curățat. În cazul mecanismelor active, este nevoie doar de un motor și de un control simplu pentru a mișca mai multe rânduri de panouri.

1.15.3. Montură pe ax vertical

Un mecanism de mișcare cu un singur ax poate fi construit să pivoteze doar pe verticală, având panourile montate, fie pe verticală, fie sub un anumit unghi. Astfel de sisteme de urmărire se folosesc la latitudini mari, unde traiectoria soarelui nu are loc foarte sus pe cer, dar unde zilele de vară sunt mai lungi, soarele parcurgând o parabolă mult mai mare. Aceasta metodă o putem întalni în construcția unei case cilindrice din Austria (45° latitudine Nord), care se rotește în întregime, urmărind soarele, având panouri fotovoltaice montate pe verticală pe o parte a clădirii.

Figura 1.9. Montură pe ax vertical

1.15.4. Montură altitudine/azimuth (montură pe două axe)

Figura 1.10. Montură pe două axe

Acest model este strict reprezentativ pentru sistemele de urmărire activă, și de asemenea, devine popular datorită simplității sale structurale și dimensiunilor compacte. O axă este pivotul vertical al axului, sau discul orizontal, care permite ca dispozitivul să fie rotit la un anumit punct de pe compas. Cea de a doua axă este elevatia verticală. Folosind combinații ale celor două axe, orice poziție din emisferă poate fi atinsă. Aceste sisteme pot fi controlate de catre calculator în concordanță cu orientarea soarelui, sau poate folosi un senzor de urmărire care controlează driverul de motor care orientează panoul către soare. Acest tip de montură este de asemenea folosit pentru a orienta reflectoarele parabolice.

1.16. Unități reflectorizante multi-oglinzi

Aceste dispozitive folosesc multe oglinzi în plan orizontal pentru a reflecta soarele până la o temperatură fotovoltaică ridicată. Problemele structurale sau costul ridicat sunt în mare reduse, atâta timp cât oglinzile nu sunt expuse la vânt. Prin angajarea unui mecanism brevetat, doar două sisteme de actionare sunt necesare pentru fiecare dispozitiv. Este potrivit pentru utilizarea pe acoperișuri plate și la latitudini mici datorită configurației dispozitivului.

1.17. Orientarea modulelor fotovoltaice

Orientarea sistemului de urmărirea traiectului solar, are ca scop îmbunătățirea performanței. Totuși, cea mai bună poziționare pentru un sistem de urmărire este pe partea dinspre sud a acoperișului, dar și acoperișul care este îndreptat spre est sau vest poate fi o soluție. Terasele de asemenea sunt acceptate pentru a se monta sisteme de urmărire, deoarece dispozitivele pot fi montate pe suporturi înclinate către sud la un anumit unghi. Orientarea optimă pentru un sistem de urmărire este poziționarea către sud și înclinat la 45° față de orizontală.

CAPITOLUL 2

Motorul pas cu pas

2.1. Introducere

Motorul pas cu pas este un dispozitiv electromagnetic care convertește pulsurile în rotații ale arborelui mecanic. Arborele sau axul unui motor pas cu pas se rotește cu pași discreți atunci când pulsuri electrice sunt aplicate motorului în secvente potrivite. Secvențele pulsurilor aplicate sunt strâns legate de direcția de rotație a arborelui motor. Viteza de rotație a axului motor este strâns legată de frecvența impulsurilor de intrare, iar lungimea de deplasare este legată de numărul de impulsuri aplicate. Folosind aceste tipuri de motoare, avem următoarele avantaje, precum: simplitatea, deoarece nu există perii sau contacte, costul scazut, fiabilitate ridicată, cuplu mare la viteze mici, precizie mare la mișcare. Cele mai multe sisteme de urmărire care folosesc motoare pas cu pas controlează accelerația/decelerația, atunci când schimbă viteza.

Figura 2.1. Motorul pas cu pas

2.2. Motoarele pas cu pas bipolare versus unipolare

Cele mai cunoscute tipuri de motoare pas cu pas sunt motoarele bipolare și motoarele unipolare. Și cele unipolare și cele bipolare se aseamănă, cu excepția faptului că cele unipolare au ramificații la fiecare înfășurare. Motorul bipolar are nevoie ca curentul să fie direcționat pe înfășurări în ambele direcții. Racordul central al motorului unipolar permite unui simplu circuit de direcționare să limiteze parcurgerea curentului într-o singură cale. Marele dezavantaj al motorului unipolar este că nu poate să alimenteze toate înfășurările în același moment, rezultând un cuplu mai mic în comparație cu motorul bipolar. Motorul unipolar poate fi folosit ca un motor bipolar prin deconectarea derivației centrale.

Motorul unipolar are 5 fire. Un fir comun și patru fire pe care tensiunea de intrare trebuie distribuită într-o ordine secvențială pentru a se putea roti. Motorul bipolar poate avea 6 fire din care perechea în plus poate fi folosită pentru ca motorul să fie direcționat pe anumiți pași.

Figura 2.2. Schema motorului pas cu pas unipolar

Figura 2.3. Schema motorului pas cu pas bipolar

2.3. Diagrama de conectare a unui motor pas cu pas

ULN2003 / MC1413 este un driver de motor ce are integrat tranzistoare NPN. Acesta este foarte bun pentru a controla un motor pas cu pas unipolar în patru faze cum este cel folosit în lucrarea de față.

Figura 2.4. ULN 2003

Este recomandat să se conecteze o dioda zener de 12V între sursa de tensiune și Vdd (pinul 9) de pe chip, pentru a absorbi întoarcerile câmpului electromagnetic atunci când motorul este oprit.

2.4. Pornirea unui motor pas cu pas

Identificarea firelor: comunul și înfășurările

Figura 2.5. Conexiunea pentru a verifica înfășurările

Se observă că dintre cele 6 fire, 2 sunt grupate. Celelalte patru reprezintă bobinele pe care trebuie să se aplice tensiunea. Cel mai important lucru este să găsim linia comună. Se va lua un aparat de masură și se va măsura rezistența dintre fire. O bornă a aparatului va fi pusă pe firul pe care credem că este cel comun, cu cealaltă bornă se vor verifica firele rând pe rând, ar trebui să ne indice 75 Ω, înseamnă că firul ales este comunul.

conexiunea circuitului

Figura 2.6. Conexiunea ULN-ului cu motorul

Figura 2.7. Schema bloc

Se va folosi microcontrolerul PIC16F877 pentru a produce tensiunea de +5V pe rând, pe fiecare dintre pinii a,b,c,d.

a=5v, b=0v, c=0v, d=0v

a=0v, b=5v, c=0v, d=0v

a=0v, b=0v, c=5v, d=0v

a=0v, b=0v, c=0v, d=5v

2.5. Motorul pas cu pas unipolar

În construcția motorului pas cu pas unipolar sunt 4 bobine. Fiecare terminație a bobinelor sunt legate între ele și oferă firul comun al motorului care întotdeauna va fi legat la plusul unei surse de tensiune. Celelalte patru capete ale firelor reprezintă cele patru bobine ale motorului. Pot avea și un anumit cod al culorii. Așa cum se observă la motorul folosit de către noi: portocaliul este prima bobină (L1), maronul este cea de-a doua (L2), galbenul este cea de-a treia (L3), negrul este cea de-a patra, iar roșul este firul comun.

Prin controlul unui motor pas cu pas înțelegem următoarele:

creșterea sau încetinirea vitezei

creșterea sau scăderea numărului de rotații;

schimbarea direcției, ceea ce înseamnă rotirea în sensul acelor de ceas sau invers

Pentru a varia viteza unui motor trebuie să modificăm frecvența impulsurilor. Numărul de impulsuri aplicate va determina numărul rotațiilor, iar pentru a schimba direcția de deplasare, trebuie să modificăm secvența impulsurilor. Așadar toate cele trei lucruri enumerate mai sus se bazează pe impulsuri. Sunt trei modalități diferite pentru a roti un motor:

excitarea unei singure bobine;

excitarea a două bobine;

excitarea jumătate de pas cu jumatate de pas.

Tabel 2.1. Secvențele impulsurilor către motor

În cazul excitării jumătate de pas cu jumătate de pas, motorul se va roti jumătate dintr-un pas. Astfel, dacă un pas înseamnă 1.8 grade, în acest mod motorul se va roti 0.9 grade. Rezoluția pasului înseamnă ca dacă motorul va primi un impuls, atunci acesta se va roti atâtea grade. Dacă rezoluția pasului este de 1.8 grade, atunci motorul va avea nevoie de 200 de impulsuri pentru ca acesta să completeze o revoluție (360°).

Specificații ale motorului pas cu pas:

Curentul maxim pe fiecare bobină 0.75A, unipolar, șase fire.

Rotația motorului este într-o legatură strânsă cu impulsurile aplicate la intrare. Secvența impulsurilor aplicate este direct legată de direcția de rotație a arborelui motor. Viteza de rotație a arborelui motor este strâns legată de frecvența impulsurilor la intrare și lungimea de rotație este strâns legată de numărul impulsurilor aplicate.

2.6. Motorul pas cu pas, avantaje și dezavantaje

Avantaje:

Unghiul de rotație al motorului este direct proportional cu impulsurile de la intrare;

Motorul are cuplu maxim la staționare (dacă infașurările sunt alimentate);

Poziționare și repetare a mișcării precise, atâta timp cât motoarele pas cu pas bune au o acuratețe de 3 – 5% pe pas și această eroare nu se acumulează de la un pas la celălalt;

Un excelent răspuns la pornire/oprire/întoarcere;

Sunt foarte rentabile atâta timp cât nu există perii pentru contact în interiorul motorului. Totuși, viața motorului depinde de viața rulmentului;

Motoarele răspund la impulsurile digitale de la intrare care oferă un control în buclă deschisă, făcând astfel ca motorul să fie simplu și usor de controlat;

Este posibil să se atingă viteze sincrone de rotație foarte mici cu o încărcătură care este direct cuplată la ax;

Pot fi realizate plaje mari de viteze de rotație, atâta timp cât viteza este proporțională cu frecvențele impulsurilor de la intrare.

Dezavantaje:

Pot apărea rezonanțe atâta timp cât nu este controlat în mod adecvat;

La viteze foarte mari nu este ușor de controlat.

2.7. Controlul în buclă deschisă

Unul dintre cele mai bune avantaje pe care le poate avea un motor pas cu pas este abilitatea să poată fi controlat ușor într-un sistem buclă deschisă. Controlul în buclă deschisă înseamnă că nu are nevoie de informații despre poziția de care are nevoie. Acest tip de control elimină nevoia de dispozitive de detectare scumpe precum decodificatoarele optice. Poziția motorului pas cu pas este cunoscută prin simplul fapt că ține minte impulsurile de intrare.

2.8. Tipuri de motoare pas cu pas

Există trei tipuri de motoare pas cu pas:

Repuls variabil;

Magnet permanent;

Hibrid.

2.8.1. Repuls variabil (Variable reluctance VR)

Acest tip de motor este folosit de foarte mult timp. Este, probabil, cel mai ușor de înțeles din punct de vedere al modului sau structural. Acest motor este construit dintr-un rotor cu dinți din fier și dintr-un stator cu înfășurări. Atunci cand înfășurările de pe stator sunt alimentate, polii se vor magnetiza. Rotația are loc atunci când dinții rotorului sunt atrași de către polii alimentați ai statorului.

Figura 2.8. Secțiune într-un motor cu repuls variabil

2.8.2. Magnet permanent (Permanent magnet PM)

Adesea menționat ca fiind un motor „tinichea”, motorul pas cu pas cu magnet permanent costă puțin și are o rezoluție mică, cu unghiurile pasului cuprinse între 7.5 grade și 15 grade (48 – 24 pasi/revoluție). Motoarele PM, așa cum spune și numele, în structura lor au incluși magneți permanenți. Rotorul nu mai are dinți așa cum era la motorul VR. În schimb, rotorul este magnetizat cu alternări ale polilor nord și sud, situați în linie dreaptă, paralel cu axul rotorului. Acești poli magnetizați ai rotorului produc un flux magnetic mare și datorită acestuia motorul PM, comparându-l cu motorul VR, își îmbunătățește caracteristica de cuplu.

Figura 2.9. Principiul de funcționare al motorului pas cu pas cu magnet permanent

2.8.3. Modelul hybrid HB

Motorul pas cu pas hibrid este mult mai scump față de motorul pas cu pas cu magnet permanent dar are o performanță îmbunătățită în ceea ce privește rezoluția pasului, cuplul și viteza. Unghiurile tipice ale pașilor unui motor pas cu pas hibrid sunt de la 3.6 grade pana la 0.6 grade (100 – 400 pași pe revoluție). Motorul pas cu pas hibrid combină cele mai bune caracteristici ale ambelor tipuri de motoare VR și PM. Rotorul este dințat la fel ca la modelul VR și conține un magnet concentric în jurul axului. Dinții rotorului produc o cale mult mai bună care ghidează fluxul magnetic în locațiile preferate din golurile de aer. Acest lucru crește în continuare dinamica cuplului și „ținerea” motorului, în comparație cu celelalte modele.

Figura 2.10. Secțiune a motorului pas cu pas hibrid

2.9. Aplicații ale motorului pas cu pas

Motorul pas cu pas este o alegere bună oricând este nevoie de controlat mișcarea. Acestea pot fi folosite în aplicații unde este nevoie de a controla rotația, unghiul, viteza, poziția și sincronizarea. Datorită numeroaselor avantaje specificate mai sus, motoarele pas cu pas și-au găsit întrebuințarea în multe aplicații, precum, imprimantele, ploterele, echipamente de birou, hard disk-uri, echipament medical, faxuri, automate și multe altele.

2.10. Rotația câmpului electromagentic

Figura 2.11. Rotația câmpului electromagnetic la motorul pas cu pas

Atunci când bobinele unui motor pas cu pas sunt alimentate, este dezvoltat în stator, un flux electromagnetic. Direcția acestui flux este determinată de regula, „Mâinii Drepte”, care spune:

„Dacă bobina este prinsă în mâna dreaptă și cu degetele poziționate înspre direcția curentului din înfășurări (degetul mare este îndreptat la 90 grade de celelalte degete), atunci, degetul mare va indica direcția câmpului electromagnetic. Atunci, rotorul se aliniază în așa fel încât întoarcerea fluxului să fie minimă. În acest fel motorul se va roti în sensul acelor de ceas, astfel polul său sud se aliniază cu polul nord al statorului și polul său nord se va alinia cu polul sud al statorului. Pentru a face ca motorul să se miște, trebuie să dezvoltăm o secvență care să alimenteze înfășurările în așa fel încât să ofere un câmp electromagnetic pe care rotorul să-l urmeze în timpul atracției magnetice.

2.11. Generarea cuplului

Cuplul produs de către un motor pas cu pas depinde de următorii factori:

rata pasului;

curentul de mișcare din înfășurări;

tipul mișcării.

Într-un motor pas cu pas, cuplul este dezvoltat atunci când fluxurile electromagnetice ale rotorului și ale statorului se îndepărtează unul de celălalt. Statorul este construit dintr-un material cu o înaltă permeabilitate magnetică. Prezența materialului cu o înaltă permeabilitate magnetică face ca fluxul electromagneitc să se limiteze pentru cele mai multe dintre căile definite de către structura statorului în aceeași manieră în care curentul se limitează cu conductorii unui circuit electric. Cuplul produs de către motor este direct proporțional cu intensitatea fluxului electromagnetic generat atunci când bobinele sunt alimentate.

Relația de bază care definește intensitatea unui câmp electromagnetic este:

H = (N*i)/l;

Unde,

N = numărul de înfășurări

i = curentul

H = intensitatea câmpului electromagnetic

l = lungimea căii fluxului electromagnetic

Această relație ne arată că intensitatea fluxului electromagnetic și prin urmare, cuplul, este direct proporțional cu numărul de înfășurări, iar curentul este invers proporțional cu lungimea căii fluxului electromagnetic. Se știe faptul că același cadru de motor pas cu pas, poate avea cuplu variabil, doar prin schimbarea parametrilor înfășurărilor.

2.12. Fazele, polii și unghiurile dintre pași

În mod obișnuit moatoarele pas cu pas au două faze, dar există de asemenea și motoare cu trei sau cinci faze. Un motor bipolar cu două faze are o singură înfășurare/fază și un motor unipolar are o singură înfășurare cu o ramnificație centrală pe fiecare fază. Uneori, motorul pas cu pas unipolar mai este denumit și „motorul în patru faze”, chiar dacă are doar două faze. Există și motoare care au două înfășurări separate pe fiecare fază – acestea pot fi pornite ori în mod bipolar, ori în mod unipolar. Un pol poate fi definit ca una dintre regiunile din corpul magnetizat, unde densitatea fluxului electromagnetic este concentrată. Ambele, și statorul și rotorul unui motor pas cu pas au poli.

În realitate mai multi poli sunt adaugați atât rotorului cât și statorului cu scopul de a crește numarul de pași pe revoluție al unui motor, sau cu alte cuvinte, pentru a oferi o gradație de pas cât mai mică. Motorul pas cu pas cu magnet permanent conține un număr egal de perechi de poli ale rotorului și ale statorului. În mod normal motorul pas cu pas PM are 12 perechi de poli. Statorul are 12 perechi de poli pe fază. Motorul pas cu pas hibrid are un rotor cu dinți. Rotorul este împărțit în două parți, separate de un magnet permanent, determinând ca jumătate dintre dinții rotorului să aibe poli sud și jumatate să aibe poli nord. Numărul perechilor de poli este egal cu numarul dinților din una dintre jumătațile rotorului. Statorul motorului pas cu pas hibrid are de asemenea dinți pentru a mări numărul de poli echivalenți (un grad mai mic al polilor, numărul echivalent al polilor = 360/pas al dintelui) în comparație cu polii principali, în jurul cărora bobinele se rotesc. Există o relație între numărul polilor unui rotor și numărul echivalent al polilor unui stator și între numărul fazelor care determină unghiul complet facut de un pas.

Unghiul făcut de pas: unghiul cu care motorul pas cu pas se rotește pentru un singur impuls dacă se aplică unui singur fir sau unei perechi, se numește unghi făcut de pas.

Unghiul pasului = 360 / (Nph * Ph) = 360 / N

Nph = numărul echivalent al polilor pe fază = numărul polilor unui rotor

Ph = numărul fazelor

N = numărul total al polilor pentru toate fazele

Dacă pasul dinților rotorului și statorului nu este egal, relația de mai sus devine mult mai complexă.

CAPITOLUL 3

Microcontrolerul și softul de programare

3.1. Microcontrolerul PIC

Figura 3.1. Microcontrolerul PIC 16F877

PIC face parte din familia microcontrolerelor Harvard fabricate în tehnologie microchip, derivate din originalele PIC 1640 dezvoltate de către divizia microelectronică de la General Instrument’s. Numele PIC vine de la „Programmable Interface Controller” (Controler cu interfață programabilă), dar la puțin timp după a fost numit „Programmable Intelligent Computer” (Computer inteligent programabil). PIC sunt folosite datorită costului redus, larga disponibilitate, o bază mare de utilizatori, vastă colecție de tutoriale și de aplicații, disponibilitatea unor aplicații de dezvolatare sau de programare gratuite sau foarte ieftine.

3.2. Arhitectura de bază a procesoarelor pe 8 biți

Arhitectura PIC este distinct minimalistă. Aceasta se caracterizează prin urmatoarele caracteristici:

Spații dedicate codului și datelor (Arhitectura Harvard)

Un număr fix de instrucțiuni

Cele mai multe instrucțiuni sunt simple cicluri de execuție (patru cicluri pe ceas) cu întârzieri pe ciclurile din ramuri și din ciclurile folosite pentru a ieși din buclă

Un singur registru (W), a cărui utilizare (ca operand sursă) este implicată

Toate funcțiile din locația RAM precum regiștrii

O stivă hardware pentru stocarea adreselor de întoarcere

O cantitate destul de mică de spațiu adresabil de date (de obicei 256 bytes), extins prin bancuri

Spatiu de date mapate, port și registrele periferice

Contorul programului este de asemenea mapat în interiorul spațiului rezervat datelor și poate fi scris spre deosebire de alte procesoare, nu există diferență între spatiul rezervat „memoriei” și „regiștrilor”, deoarece RAM-ul deserveste ambelor și memoriei și regiștrilor, și RAM-ul se referă la registrul fișier.

3.3. Arhitectura microcontrolerului PIC

Arhitectura Harvard

Arhitectura Harvard este un concept mai nou decat cel al lui Von Neumann. Acesta a crescut din necesitatea de a accelera operațiile microcontrolerului. La arhitectura Harvard, magistrala de date și magistrala de adresare sunt separate. Așadar, prin intermediul unității centrale de prelucrare este permis un flux mai mare de date, și bineânțeles, o viteză mai mare la prelucrare. Prin separarea programului de memoria de date este posibil faptul ca instrucțiunile să nu mai fie cuvinte pe 8 biți. PIC 16F877 folosește instrucțiuni pe 14 biți care permite tuturor instrucțiunilor să fie de dimensiunea unui singur cuvânt. Este de asemenea tipic arhitecturii Harvard să aibe puține instrucțiuni de dimensiunea unui singur cuvânt. Este tipic arhitecturii Harvard să aibe mai puține instrucțiuni decât arhitectura Von Neumann și să aibe instrucțiuni care se execută într-un singur ciclu. Avantajul major al acestei arhitecturi este acela că atunci când o instrucțiune este executată cealaltă poate fi preluată. Viteza de prelucrare se dublează. Găsim această arhitectură la microprecesorul PIC 16F877.

PIC folosește arhitectura Harvard, așadar mărimea unei instrucțiuni poate fi diferită față de mărimea datelor.

Figura 3.2. Arhitectura Harvard

PIC 16F877 este unul dintre cele mai folosite microcontrolere în special la automatizări, în mediul industrial, la aparate și aplicații de consum. PIC 16F877 se poziționează în vârful clasei de mijloc ale microcontrolerelor dezvoltate de către Microchip Inc. Acesta poate fi programat și șters aproape de 10.000 de ori. Prin urmare este foarte bun pentru noile produse în curs de dezvoltare.

3.4. Schema pinilor pentru PIC 16F877

Figura 3.3. Schema pinilor

Pinii I/O

Microprocesorul PIC 16F877 are 40 pini. Majoritatea pot fi folositi ca pini de intrare/ieșire (I/O). Ceilalți au funcții specifice.

Vss și Vdd

Aceștia sunt pinii de alimentare. Vdd este pinul care se leagă la plus și Vss este pinul care se leagă la minus (la masă, 0V). Tensiunea maximă de intrare la care se poate alimenta este de 6V, iar cea minimă este de 2V.

MCLR

Intrarea Master Clear (Pinul de reset). Acest pin este pinul cu numărul 1. Acesta se folosește pentru a sterge locațiile de memorie din interiorul PIC-ului (atunci când dorim să-l reprogramăm). În mod normal este conectat la grila pozitivă.

OSC1/CLK IN și OSC2/CLK OUT

Acestea reprezintă intrarea și ieșirea pentru oscilatorul de quartz. Pe acești pini putem conecta un ceas extern, astfel ca microcontrolerul sa aibe o preizie mărită. Acestea, în modul oscilator de quartz (XT), sunt conectate la un oscilator sau un rezonator.

3.5. Caracteristici ale microcontrolerului PIC 16F877

Tabel 3.1. Caracteristicile cheie ale PIC-ului

3.6. Introducere în ADC

Modulul de conversie de la analog la digital (A/D) poate avea până la opt intrări analogice pentru un dispozitiv. Intrările analogice încarcă o probă capacitivă. Ieșirea probei capacitive reprezintă intrarea convertorului. Atunci convertorul genereaza un răspuns digital pentru nivelul analogic prin aproximări succesive. Această conversie A/D a intrării semnalului analogic, corespunde unui număr digital pe 10 biți. Tensiunea de referință (alimentarea pozitivă și negativă), pot fi selectate soft fie ca tensiuni de intrare ale dispozitivului (AVdd, AVss), sau ca nivel de tensiune pe pinii AN3/VREF+ și AN2/VREF. Poarta de conversie A/D are o caracteristică aparte de a putea opera și atunci când dispozitivul se află în modul SLEEP.

Modulul A/D are patru regiștrii. Aceștia sunt:

Rezultatul ridicat al registrului (ADRESH)

Rezultatul scăzut al registrului (ADRESL)

Controlul registrului 0 (ADCON0)

Controlul registrului 1 (ADCON1)

Registrul ADCON0, controlează operația modulului A/D. Registrul ADCON1 configurează funcțiile pinilor de pe poartă. Pinii de pe poartă pot fi configurați ca intrări analogice (AN3 și AN2 pot fi de asemenea referințe ale tensiunii), sau ca intrări digitale.

3.7. Regiștrii de control

Registrul ADCON0

Tabel 3.2. Registrul ADCON

Bitii 7-6 ADCS1:ADCS0 – biți de selecție ai tactului conversiei

00 = FOSC/2

01 = FOSC/8

10 = FOSC/32

11 = FRC (tactul este determinat de oscilatorul intern RC)

Bitii 5-3 CHS2:CHS0 – biți de selecție ai canalului analog

000 = canalul 0 (AN0)

001 = canalul 1 (AN1)

010 = canalul 2 (AN2)

011 = canalul 3 (AN3)

100 = canalul 4 (AN4)

101 = canalul 5 (AN5)

110 = canalul 6 (AN6)

111 = canalul 7 (AN7)

Notă: pentru dispozitivele care nu implementează toate cele 8 canale A/D, pot fi rezervate selecții de neimplementare. Este recomandat a nu se selecta canale neimplementate.

Bitul 2 GO/DONE – bitul stării de compresie

Atunci când GO/DONE = 1 – se află în curs de conversie (setând acești biți, se pornește conversia, care este în mod automat stearsă de către hardware atunci când conversia s-a terminat)

Atunci când GO/DONE = 0 – nu se află în curs de conversie

Bitul 1 Neimplementat – se citește „0”

Bitul 0 ADON – bitul de pornire

Atunci când ADON = 1 – modulul de conversie este pornit

Atunci când ADON = 0 – modulul de conversie este oprit și nu consumă curent

R bit de citire

W bit de scriere

U bit neimplementat, se citește „0”-n = valoare de reset la POR.

3.8. Modulul de conversie de la analog la digital

Modulul de conversie Analog-Digital (A/D) are cinci intrări pentru dispozitivele care au 28 de pini, și opt intrări pentru dispozitivele cu 40/44 pini. Conversia unui semnal analogic rezultă într-un număr corespondent pe 10 biți. Modulul A/D ține cont de referința de tensiune scăzută sau ridicată prin intermediul unor combinații ale intrărilor Vdd, Vss, RA2, sau RA3. Convertorul A/D deține o caracteristică unică prin care poate opera și atunci când acesta este în modul SLEEP. Pentru ca acesta să poată opera în modul SLEEP, ceasul A/D trebuie să derive de la oscilatorul intern RC.

Registrul ADCON0 controlează funcționarea modulului A/D. Registrul ADCON1 configurează funcțiile pinilor de pe port. Pinii pot fi configurați ca intrări analogice (RA3 poate fi referința tensiunii), sau ca intrări/ieșiri digitale.

Figura 3.4. Conectarea hardware ADC

3.9. Introducere în programul MPLAB

Pentru a verifica exact cum va funcționa întregul proiect s-a preferat să se facă o simulare folosind următoarele programe:

PROTEUS – pentru a realiza schema electronică și PCB-ul.

MPLAB – pentru a încărca programul în microcontroler și pentru testare și depanare.

MPLAB IDE este un program puternic pentru dezvoltarea microcontrolelor PIC. Este conceput pentru a furniza utilizatorului cele mai simple soluții pentru dezvoltarea de aplicații ale sistemelor integrate, fără a compromite performanța sau controlul.

Figura 3.5. Fereastra MPLAB IDE

Se alege din meniul Configure – Select Device. În fereastra noua apărută se alege tipul procesorului pe care l-am ales pentru proiect, în cazul nostru PIC 16F877. Led-urile verzi și roșii indică componentele MPLAB suportate de procesor.

Figura 3.6. Uneltele suportate de către Microchip

Urmează crearea unui proiect urmărind meniul Project – Project Wizard. Prin proiect se înțelege modul în care fișierele sunt organizate pentru a fi compilate și asamblate.

Figura 3.7. Crearea unui proiect, se apasă pe Next

Figura 3.8. Se alege dispozitivul și se apasă Next

Figura 3.9. În această fereastră se alege limbajul de asamblare și de compilare

Figura 3.10. Se dă un nume proiectului și se alege calea

Figura 3.11. Se alege sursa programului

Figura 3.12. Sfârsitul secțiunii de creare a proiectului

Figura 3.13. Fereastra Proiect, unde s-a adaugat codul sursă pentru programarea PIC-ului

Se va alege din meniul Project – Build All.

Figura 3.14. Fereastra Output arată rezultatul procesului de compilare

Pentru a testa codul, avem nevoie de o unealtă de depanare. Pentru aceasta alegem PROTEUS VSM. Acesta este un simulator folosit pentru a testa codul pe calculator.

Figura 3.15. Fereastra Proteus VSM – urmărim meniul Debugger-Select Tool-Proteus VSM

Se va porni simularea și se va apăsa pe Step Intro, pentru a testa aplicația pas cu pas.

Figura 3.16. Verificarea aplicației și simularea acesteia

CAPITOLUL 4

Dezvoltare hardware

4.1. O scurtă introducere

Proiectul “Sistem de urmărirea traiectului solar” a pornit de la ideea de îmbinare a lucrurilor învățate în cele 3 semestre de școală. Astfel am vrut să aducem împreună programarea microcontrolerelor cu proiectarea și execuția schemelor electronice cât și folosirea simulatoarelor. Proiectul nostru nu este tocmai o aplicație practică a conceptului datorită dimensiunilor reduse ale componentelor și aici mă refer la panoul solar la motorul pas cu pas la acumulator. Am vrut doar să demonstrăm că proiectul nostru este viabil și poate fi extins la scară mult mai mare și eventual poate fi îmbunătățit cu înca un ax de libertate sau al doilea fotorezistor sau se poate adăuga un afișaj LCD care să afișeze diferiți parametri de funcționare cum ar fi tensiunea pe acumulator sau curentul consumat de utilizator.

Concret partea de mea de proiect a constat în proiectarea schemei electronice, realizarea PCB-ului, plantarea și lipirea componentelor, testarea și rezolvarea problemelor apărute în functionare.

4.2. Prezentare componente

4.2.1. PIC16F877

PIC16F877 are un număr total de 40 pini. Cel mai adesea se găsește într-o capsulă de tip DIP40 dar se poate găsi de asemenea și într-o capsulă SMD care este mai mică ca cea DIP. DIP este prescurtarea de la Dual In Package. SMD este prescurtarea de la  Surface Mount Devices sugerând că găurile pentru pinii unde să intre aceștia, nu sunt necesare pentru lipirea acestui tip de componentă.

Tabel 4.1. Semnificația pinilor microcontrolerului PIC16F877

4.2.2. Motor pas cu pas

Motorul pas cu pas este un tip de motor sincron cu poli aparenți pe ambele armături. La apariția unui semnal de comandă pe unul din polii statorici rotorul se va deplasa până când polii săi se vor alinia în dreptul polilor opuși statorici. Rotirea acestui tip de rotor se va face practic din pol în pol, de unde și denumirea sa de motor pas cu pas. Comanda motorului se face electronic și se pot obține deplasări ale motorului bine cunoscute în funcție de programul de comandă. Motoarele pas cu pas se folosesc acolo unde este necesară precizie ridicată.

Constructiv exista 2 tipuri de motoare pas cu pas: motoare unipolare și motoare bipolare în aplicația noastră vom folosi un motor pas cu pas unipolar cu un unghi al pasului de 3,75° deci pentru o rotație completa trebuie să execute 96 de pași.

Figura 4.1. Schema unui motor pas cu pas unipolar

4.2.3. Driver-ele motorului pas cu pas

Drivere-le au fost realizate cu tranzistori bipolari Darlington de tipul NPN BD 681. Au fost selectați acești tranzistori pentru curentul de colector suportat de 4A. Pentru motorul pas cu pas este necesar un curent de cca. 1,3A. În baza tranzistoarelor s-a calculat câte un rezistor de 4,7 KΩ care asigură un curent de bază suficient pentru comanda acestora. Diodele conectate în colectorul tranzistorilor și la polul pozitiv al sursei de alimentare taie autoinducția produsă de bobinele motorului pas cu pas. Diodele sunt de tipul 1N4007.

Figura 4.2. Driver-ele pentru comanda motorului pas cu pas

4.2.4. Fotorezistorul

În fotorezistor conducția are loc datorită mișcării purtătorilor de sarcină (electroni și goluri). Prin fenomenul de fotoconducție se înțelege creșterea conducției unui material (metal, semiconductor) datorită generării de purtători de sarcină suplimentari sub influența radiației luminoase.

Printr-un semiconductor supus unei diferențe de potențial U va trece un curent electric slab (de întuneric), care crește, atunci când semiconductorul este iluminat, datorită fotoconducției. Intensitatea fotocurentului, diferită de cea a curentului de întuneric, depinde de temperatură, tensiunea electrică aplicată și de durata iluminării.

În aplicația noastră fotorezistorul este folosit pentru depistarea maximului de luminiozitate sau a valorilor intermediare și anume – soare, cer înorat sau lăsarea întunericului.

Figura 4.3. Conectarea fotorezistorului

Tabel 4.2. Măsurători ale fotorezistorului în diferite condiții de iluminare

Tabel 4.3. Praguri de tensiune

Aceste tensiuni au fost obținute folosind schema de conectare a fotorezistorului. S-a folosit un voltmetru conectat pe pinul 2 (RA0/AN0) al microcontrolerului și masa montajului.

4.2.5. Cristalul de quartz

Oscilatoarele cu quartz sunt extrem de răspândite datorită stabilității excelente a frecvenței de oscilație. Oscilatorul fundamental conține un amplificator și o rețea de reacție. Pentru amorsarea oscilației, produsul dintre cișțtigul amplificatorului α și atenuarea rețelei de reacție β trebuie să fie supraunitar (adica α β>1). În plus, defazajul total introdus de amplificator și rețeau de reacție trebuie să fie multiplu de 360°, adică semnalul de reacție de la ieșirea rețelei să fie în fază cu semnalul de la intrarea amplificatorului.

În aplicația noastră asigură o frecvență foarte precisă microcontrolerului. Această precizie este necesară datorită faptului că pamântul se rotește cu un grad la fiecare 4 minute iar procesorul trebuie să calculeze cu exactitate când sa faca saltul cu un pas spre dreapta după ce inițial s-a calat pe intensitatea maximă a soarelui. În aplicația noastraă vom folosi un cristal de cuartz de 4 MHz.

4.2.6. Sursa de tensiune stabilizată

În general, alimentarea corectă este de o importanță maximă pentru funcționarea sistemului cu microcontroler. Pentru o funcționare în parametri a microcontrolerului, este necesar să oferim o sursă stabilă de alimentare. Conform specificațiilor tehnice oferite de producătorul microcontrolerului PIC, tensiunea de alimentare ar trebui să se încadreze între 2V și 6V pentru toate versiunile. Cea mai simplă soluție este folosirea stabilizatorului de tensiune LM7805 care oferă tensiune stabilă de +5V la ieșire. Pentru a funcționa corect sau pentru a avea o tensiune stabilizată de 5V la ieșire (pinul 3), tensiunea de intrare pe pinul 1 la LM7805 ar trebui să fie între 7V și 24V. În funcție de curentul consumat de montaj vom folosi tipul corespunzător de stabilizator de tensiune LM7805. Sunt diferite versiuni de LM7805. Pentru consum de curent de până la un 1A vom folosi versiunea în capsula TO-220 cu posibilitatea de răcire adițională.

Figura 4.4. Schema stabilizatorului integrat

4.2.7. Panoul solar (fotovoltaic)

Pe scurt, panourile fotovoltaice sunt dispozitive capabile să transforme energia solara în energie electrică. Inițial panourile fotovoltaice au fost folosite pentru a asigura energia electrică acolo unde nu există nici un alt mod de a o produce: stații experimentale, outpost-uri îndepărtate sau sateliti. În prezent, panoul fotovoltaic, deși încă destul de costisitor, a început să pătrundă în cam toate domeniile și mediile sociale. Este folosit pentru a produce curentul electric necesar locuințelor individuale izolate, în cadrul unor centrale solare de mare capacitate, în cadrul dispozitivelor mobile precum taxiurile electrice sau alimentatoarele mobile si multe altele. Pe măsură ce tehnologia va avansa și pretul panourilor solare va scădea din ce în ce mai mult, tot mai multe persoane vor avea acces la această formă alternativă de producere a energiei electrice. Cum ziceam și în paragraful precedent, prețul unei instalații solare de producere a energiei electrice este înca foarte ridicat. Investiția inițială se amortizează în timp. În țara noastră, instalarea de sisteme cu panouri fotovoltaice este propice în principal în partea de sud și sud-est. În funcție de necesarul electric al incintei pentru care se montează sistemul, acesta poate asigura între 20 și chiar 80% din necesarul de consum, pentru anumite perioade de timp. Un sistem fotovoltaic nu conține doar panouri, ci și baterii, invertoare și multe alte dispozitive. Astfel, pretul său creste. Pentru a acoperi necesarul unei locuințe de 150 de m spre exemplu, este nevoie de o investiție de 15-20.000 euro, care se poate amortiza în 8-15 ani. Chiar și așa însă, sistemul fotovoltaic (sau chiar cel hibrid, cu turbine eoliene și panouri), nu poate asigura independența de la rețea. El poate fi un substituent, dar va fi necesară în continuare o soluție de backup: rețeaua RENEL sau un generator cu motor termic.

Panoul solar folosit în proiectul nostru are o suprafata expusa lumii solare de 600 cm și produce 13,5 Vcc și 350 mA pentru o zi însorită. Panoul dispune de un releu de încărcare integrat în interiorul lui astfel că tensiunea furnizată la ieșire este întotdeauna cuprinsa între 12 V și 13,5 V. Panoul a fost conectat la un acumulator de 12V și 7Ah pentru ca energia electrică produsa să poată fi stocată pentru un timp mai mare. Proiectul poate fi extins cu un invertor care sa debiteze o tensiune de 220 Vca cu care s-ar putea alimenta diverese echipamente electronice mici consumatoare de energie electrică ex.: un laptop sau încarcarea telefoanelor mobile. La partea de montaj s-a adaptat panoului un suport pentru a putea fi instalat cu usurință pe axul motorului. Tot în panoul solar a fost instalat și fotorezistorul pentru ca aceasta să se miște o dată cu panoul astfel ambele sa fie expuse soarelui în acelasi timp.

4.3. Proiectarea schemei electronice, realizarea PCB-ului, plantarea și lipirea componentelor

Schema electronică și PCB-ul au fost proiectate cu aplicația Proteus. La realizarea schemei electronice s-a urmărit funcționalitatea și simplitatea acesteia. După ce schema a fost desenată în Proteus s-a încarcat programul compilat din assembler în microcontroler și s-a trecut la simularea funcționării. S-au finisat câteva aspecte legate de funcționarea schemei electronice și s-au depistat câteva bug-uri de programare care au fost rezolvate. În momentul când am constat o bună funcționare din punct de vedere electric și rularea programului corespundea algoritmului schițat de colegul care s-a ocupat de partea de soft a proiectului am trecut la realizarea practică. Pe o bucată de PCB cu dimensiunile de 7,5 cm x 7,5 cm s-a desenat cu vopsea traseele electrice rezultate în urma simulării cu aplicația Proteus. Acesta a fost apoi corodat într-o soluție de clorură ferică și s-au practicat găurile pentru componente iar apoi s-a trecut la plantarea și lipirea acestora. S-au adăugat mufe pentru alimentare, fotorezistor și motorul pas cu pas. Ideea a fost ca în cazul în care se dorește să se intervină pe spatele PCB-ului acesta să poată fi detașat de fire fără a fi nevoie de pistolul de lipit. Pentru microcontroler am instalat un soclu DIP40 pentru ca microcontrolerul să poata fi ușor extras și reprogramat în programator daca acest lucru ar fi necesar.

4.4. Testarea și rezolvarea problemelor apărute în funcționare

Testarea și verificarea a început cu programarea microcontrolerului PIC16F877. Programarea acestuia s-a facut într-un dispzitiv dedicat acestui lucru. Programatorul a fost realizat de colegii de proiect și va fi prezentat în proiectele lor. Vreau doar să amintesc că în aplicația scrisă în microcontroler au fost setate 2 praguri de 4,6V si 3,7V care sunt folosite în algoritmul de rulare al aplicației. La atingerea pragului de 4,6V motorul pas cu pas se oprește din căutarea maximului și rămâne pe acestă poziție până când este detectat pragul de 3,7V. În momentul în care este detectat pragul de 3,6V, motorul pas cu pas primeste comanda de a se deplasa către vest spre un nou maxim.

În continuare am verificat sursa de tensiune integrată realizată cu CI 7805 și am constatat că aceasta furnizeaza tensiunea de 5Vcc – tensiune necesară alimentării microcontrolerului și motorului pas cu pas. La motorul pas cu pas s-au făcut unele modificări la ordinea de conectare a firelor motorului pâna s-a ajuns la o funcționare care respectă algoritmul. Deasemena s-a calibrat tensiunea de pe pinul 2 a microcontrolerului care trebuie să respecte valorile de tensiune trecute în Tabel 4.3. Am urmărit respectarea algoritmului de funcționare și anume panoul să se deplaseze câte un pas dinspre est către vest iar atunci când întâlnește o sursă de lumină puternică (tensiunea la pinul 2 mai mare de 4,6V) să se oprească și din 4 în 4 minute (din 4 în 4 secunde în aplicația noastră, pentru a demonstra funcționarea în clasă) să facă verificări ale intensității luminoase executând un pas la stânga apoi doi pași la dreapta și daca gaseste aceeași intensitate luminosă să revină pe centru iar în caz contrar să plece către dreapata până gasește un nou maxim luminos. S-a mai urmărit în funcționare ca atunci când ciclul de căutare atinge maximul în partea de vest după parcurgerea a 48 de pași panoul să se deplaseze în pozitia inițială de start și să intre în modul sleep. Am urmărit atent dacă există probleme de ordin termic cu tranzistoarele driver pentru că prin ele este alimentat cu energie electrică motorul pas cu pas. Există o mică încălzire a acestora (nu au radiator de caldură instalat) cât și a stabilizatorului de tensiune. Pentru stabilizatorul de tensiune s-a instalat un radiator de căldură cu suprafața de 50 cm suficient pentru disiparea căldurii produsă de stabilizator.

După terminarea verificărilor și reglajelor, PCB-ul a fost fixat cu 4 șuruburi pe un suport care este folosit și ca bază a întregului sistem. Tot pe acest suport s-a fixat motorul pas cu pas și acumulatorul de 12 V.

Pe axul motorului pas cu pas s-a fixat panoul solar prin intermediul unui suport cu 2 șuruburi. Când toate componentele sistemului au fixate s-a trecut la realizarea conexiunilor între PCB, motorul pas cu pas, panoul solar, fotorezistor și acumulator prin intermediul mufelor cu care au fost prevăzute încă din faza de proiectare. Sistemul astfel asamblat a fost testat cca. 20 ore. În aceast timp au fost încărcate diferite variante de soft până s-a ajuns la varianta finală care ne-a mulțumit din punct de vedere al funcționării.

Figura 4.5. Simularea în Proteus a schemei electronice

Figura 4.6. Simularea în Proteus a PCB-ului

Figura 4.7. PCB-ul

Tabel 4.4. Tabelul cu materiale

Figura 4.8. Detaliu proiect – realizare practică

Figura 4.9. Programator PIC- realizare practică

Figura 4.10. Sistem de urmărirea traiectului solar – realizare practică

Bibliografie

[1] A.K. Saxena and V. Dutta, “A versatile microprocessor based controller for solar tracking,” in Proc. IEEE, 1990, pp. 1105 – 1109.

[2] T.A. Papalias and M. Wong, “Making sense of light sensors, ”http://www.embedded.com, 2006.

[3] R. Condit and D. W. Jones, “Stepping motor fundamentals,” Microchip Inc. Publication AN907, pp. 1 – 22, 2004.

[4] S. J. Hamilton, “Sun-tracking solar cell array system,” University of Queensland Department of Computer Science and Electrical Engineering, Bachelors Thesis, 1999.

[5] Microchip Inc., “PIC16F87X Datasheet,” www.microchip.com, 2011.

[6] M. F. Khan and R. L. Ali, “Automatic sun tracking system,” presented at the All Pakistan Engineering Conference, Islamabad, Pakistan, 2005.

[7] Labcenter Electronics Ltd, “Proteus 7”, http://www.labcenter.com/index.cfm, 2011

[8] Microchip Inc., “MPLAB IDE”, http://www.microchip.com, 2011

ANEXA 1

Figura 4.11. Schema bloc

ANEXA 2

Figura 4.12. Schema electronică a panoului solar

ANEXA 3

Figura 4.13. Schema electronică a programatorului pentru PIC

ANEXA 4

Figura 4.14. Schița sistemului de urmărirea traiectului solar

ANEXA 5

Figura 4.15. Algoritmul de rulare

ANEXA 6

Programul scris în limbajul de programare assembler

;**********************************************************

; solar_tracker.asm

;

; Ghervase Dan Ionuț

; Balanica Francisc Dan

; Ben Iulian

; Vasilache Marius

;

; Sistem de urmărirea traiectului solar

;**********************************************************

LIST P=16F877

INCLUDE "P16F877.INC"

__CONFIG _CP_OFF & _CPD_OFF & _LVP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC

;**Alocari initiale**

cblock 0x20

Direction ;Registru de directie (stanga sau dreapta)

Position0 ;Registru de referinta pozitia centru

Position1 ;Registru de referinta pozitia stanga

Position2 ;Registru de referinta pozitia dreapta

Time1 ;Registru de timp pentru functia de intarziere de 1 msec

Time2 ;Registru de timp pentru functia de intarziere de 250 msec

Time3 ;Registru de timp pentru functia de intarziere de 1 sec

Time4 ;Registru de timp pentru functia de intarziere de 1 min

PositionCount ;Registru de stocare a pasilor facuti

Temp ;Registru de intoarcere din est cu decremenatrea pozitiei buclei

endc

Left Equ d'2' ;Directia stanga = 2

Right Equ d'1' ;Directia dreapta = 1

Index1 Equ b'0101' ;Indexul pasului pentru pozitia 1

Index2 Equ b'0001' ;Indexul pasului pentru pozitia 2

Index3 Equ b'1001' ;Indexul pasului pentru pozitia 3

Index4 Equ b'1000' ;Indexul pasului pentru pozitia 4

Index5 Equ b'1010' ;Indexul pasului pentru pozitia 5

Index6 Equ b'0010' ;Indexul pasului pentru pozitia 6

Index7 Equ b'0110' ;Indexul pasului pentru pozitia 7

Index8 Equ b'0100' ;Indexul pasului pentru pozitia 8

Threshold1 Equ b'10111101' ;Nivelul pragului pentru lumina minim detectata

Threshold2 Equ b'11101011' ;Nivelul pragului pentru subrutina de cautare a luminii

org 0x000 ;Reset vector

NOP

;**Configurare initiala**

Initial

banksel PORTC ;Selecteaza Bank 0

clrf PORTC ;Curata PORTC

movlw B'01000001' ;Configureaza ADCON0

movwf ADCON0 ;ADCO0 = Fosc/8, Ch0, porneste AD

banksel OPTION_REG ;Selecteaza Bank 1

movlw B'10000110' ;Configureaza OPTION_REG

movwf OPTION_REG ;TMR0 prescaler = 1:128

clrf TRISC ;Configureaza PORTC pentru toate iesirile

movlw B'00000110' ;Configureaza ADCON1

movwf ADCON1

banksel PORTC ;Selecteaza Bank 0

movlw Index1 ;Configureaza primul pas al motorului in pozitia index

movwf PORTC

clrf PositionCount ;In pozitia zero

;** Cauta cel mai luminos punct (gaseste soarele) dupa initiere **

Search

btfss INTCON,T0IF ;Verifica daca intreruperea pentru Timer0 este setata

goto Search ;Bucla pana la valoare setata

bcf INTCON,T0IF ;Curata intreruperile pentru Timer0

BSF ADCON0,GO ;Configureaza GO in ADCON0 pentru start ADC

WAIT2

btfss PIR1,ADIF ;Verifica daca intreruperea pentru AD este configurata

goto WAIT2 ;Bucla pana cand conversia este completa

bcf PIR1,ADIF ;Curata intreruperile AD

movlw Threshold2 ;Muta pe valoarea minima W pentru comparare w/ ADRESH

subwf ADRESH,W

btfsc STATUS,C ;Vezi daca valoarea in ADRESH este mai mare deat valoarea pragului

goto Main ;If ADRESH > valoare a pragului minima, continua cu rutina main

movlw Right ;If ADRESH < valoare minima, muta motorul la dreapta

movwf Direction

CALL StepControl

incf PositionCount,1 ;Incrementeaza pozitia contorului pentru miscare la dreapta

CALL PositionCountCheck ;Verifica daca este sfarsitul zilei

goto Search ;Continua cu cautarea punctului de maxim (soare)

Delay

call Delay1s ;Intirziere de 4 secunde pentru demonstratie in clasa

call Delay1s

call Delay1s

call Delay1s

;CALL Delay1m ;Intirziere de 4 minute pentru o functionare reala

;CALL Delay1m

;CALL Delay1m

;CALL Delay1m

;** Program principal al rutinei de mutare/masurare/comparare **

Main

CALL ADCStart ;Apeleaza subrutina ADC sa faca o masurare in centru

movf ADRESH,W

movwf Position0 ;Memoreaza masurarea facuta in centru

movlw Left ;Muta motorul 1 pas la stanga

movwf Direction

CALL StepControl

decf PositionCount,1 ;Decrementeaza contorul pentru miscarea la stanga

CALL PositionCountCheck ;Verifica daca este sfarsitul zilei

CALL ADCStart ;Apeleaza subrutina ADC sa faca o masurare in stanga

movf ADRESH,W

movwf Position1 ;Memorezaza masurarea facuta in stinga

movlw Right ;Muta motorul 2 pasi la dreapta

movwf Direction

CALL StepControl

incf PositionCount,1 ;Incrementeaza contorul pentru miscare la dreapta

CALL PositionCountCheck ;Verifica daca este sfarsitul zilei

movlw Right

movwf Direction

CALL StepControl

incf PositionCount,1 ;Incrementeaza contorul pentru miscare la dreapta

CALL PositionCountCheck ;Verifica daca este sfarsitul zilei

CALL ADCStart ;Apeleaza subrutina ADC sa faca o masurare in dreapta

movf ADRESH,W

movwf Position2 ;Memorezaza masurarea facuta in dreapta

movf Position0,W ;Verifica daca centru si stanga sunt egale

subwf Position1,W

btfsc STATUS,Z

goto ReturnToPosition0 ;Daca sunt egale intoarce-te in centru

movf Position0,W ;Verifica daca centru si dreapta sunt egale

subwf Position2,W

btfsc STATUS,Z

goto ReturnToPosition0 ;Daca sunt egale intoarce-te in centru

movf Position1,W ;Verifica daca stanga si dreapta sunt egale

subwf Position2,W

btfsc STATUS,Z

goto ReturnToPosition0 ;Daca sunt egale intoarce-te in centru

movf Position1,W ;Verifica daca centru este mai mare decat stanga

subwf Position0,W

btfsc STATUS,C

goto NextCheck ;Daca centru este mai mare decit stinga, compara cu dreapta

goto NextMajorCheck ;Daca centru este mai mic decat stanga, verifica stanga fata de celelalte

NextCheck

movf Position2,W ;Verifica daca centru este mai mare decat dreapta

subwf Position0,W

btfsc STATUS,C

goto ReturnToPosition0 ;Daca centru este mai mare introarce-te in centru

goto NextMajorCheck ;Daca centru nu este mai mare, verifica stanga fata de celelate

ReturnToPosition0

movlw Left ;Muta motorul un pas la stanga spre centru daca centru este mai mare

movwf Direction

CALL StepControl

decf PositionCount,1 ;Decrementeaza contorul pentru miscare la stanga

CALL PositionCountCheck ; Verifica daca este sfarsitul zilei

goto Delay

NextMajorCheck

movf Position0,W ;Verfica stanga daca este mai mare decat centru

subwf Position1,W

btfsc STATUS,C

goto NextCheck2 ;Daca stanga este mai mare compara cu dreapta

goto NextMajorCheck2 ;Daca stanga este mai mica decat centru, verifica dreapta fata de celelate

NextCheck2

movf Position2,W ;Verifica in stanga daca este mai mare decat dreapta

subwf Position1,W

btfsc STATUS,C

goto ReturnToPosition1 ;Daca stanga este mai mare intoarce-te in stanga

goto NextMajorCheck2 ;Daca centru nu este mai mare, verifica dreapta fata de celelalte

ReturnToPosition1

movlw Left ;Muta motorul doi pasi la stanga, daca stanga este mai mare

movwf Direction

CALL StepControl

decf PositionCount,1 ;Decrementeaza contorul pentru miscare la stanga

CALL PositionCountCheck ;Verifica daca este sfarsitul zilei

movlw Left

movwf Direction

CALL StepControl

decf PositionCount,1 ;Decrementeaza contorul pentru miscare la stanga

CALL PositionCountCheck ;Verifica daca este sfarsitul zilei

goto Delay

NextMajorCheck2

movf Position0,W ;Verifica daca dreapta este mai mare decat centru

subwf Position2,W

btfsc STATUS,C

goto NextCheck3 ;Daca dreapta este mai mare, compara cu stanga

goto ReturnToPosition0 ;Daca dreapta este mai mica decat centru, intoarce-te in centru

NextCheck3

movf Position1,W ; Verifica daca dreapta este mai mare decat stanga

subwf Position2,W

btfsc STATUS,C

goto DoNothing ;Daca dreapta este mai mare, ramai pe loc

goto Delay ;Daca nu, treci peste

DoNothing

goto Delay

;**Controlul motorului pas cu pas**

ADCStart

btfss INTCON,T0IF ;verifica daca intreruperea pentru Timer0 este setata

goto ADCStart ;Bucla pana la valoare setata

bcf INTCON,T0IF ;Curata intrerupererile pentru Timer0

BSF ADCON0,GO ;Configureaza GO in ADCON0 pentru start ADC

WAIT

btfss PIR1,ADIF ;Verifica daca intreruperea pentru AD este configurata

goto WAIT ;Bucla pana cand conversia este completa

bcf PIR1,ADIF ;Curata intreruperile AD

movlw Threshold1 ;Muta pe valoarea minima W pentru comparare

subwf ADRESH,W

btfsc STATUS,C ;Verifica daca ADRESH este mai mare decat valoarea pragului

return ;Daca ADRESH > pragul minim, continua w/ rutina main

goto ADCStart ;Daca ADRESH < valoare minima, continua sa cauti

StepControl

CALL Delay1s ;Intarzieri intre pasi

movf Direction,W ;Gaseste directia de miscare

movf PORTC,W ;Citeste PORTC

sublw Index1 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl2

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl1

movlw Index2 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl1

movlw Index8 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl2

movf PORTC,W ;Citeste PORTC

sublw Index8 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl4

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl3

movlw Index1 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl3

movlw Index7

goto MoveMotor ; Urmatoarea pozitie index in dreapta

StepControl4

movf PORTC,W ;citeste PORTC

sublw Index7 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl6

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl5

movlw Index8 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl5

movlw Index6 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl6

movf PORTC,W ;Citeste PORTC

sublw Index6 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl8

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl7

movlw Index7 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl7

movlw Index5 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl8

movf PORTC,W ;Citeste PORTC

sublw Index5 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl10

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl9

movlw Index6 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl9

movlw Index4 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl10

movf PORTC,W ;Citeste PORTC

sublw Index4 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl12

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl11

movlw Index5 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl11

movlw Index3 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl12

movf PORTC,W ;Citeste PORTC

sublw Index3 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl14

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl13

movlw Index4 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl13

movlw Index2 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl14

movf PORTC,W ;Citeste PORTC

sublw Index2 ;Compara PORTC cu pozitia index

btfss STATUS,Z ;Daca nu se potriveste, cauta alta pozitie

goto StepControl16

movf Direction,W ;Gaseste directia de miscare

sublw Right ;Vezi daca dreapta este pozitia apelata

btfsc STATUS,Z ;Daca este dreapta, mergi pe pozitia urmatoare in dreapta

goto StepControl15

movlw Index3 ;Daca nu este dreapta, mergi pe pozitia urmatoare in stanga

goto MoveMotor

StepControl15

movlw Index1 ;Urmatorarea pozitie index in dreapta

goto MoveMotor

StepControl16 ;Altfel intoarce-te in pozitia index 1

movlw Index1

MoveMotor

movwf PORTC ;Muta motorul in pozitia index dorita

return

;** Sfarsitul zilei rutina de cautare/reset/sleep **

PositionCountCheck

movf PositionCount,W

sublw d'48'

btfsc STATUS,Z ;Daca e egal cu 48, mergi la EndOfDayBrightCheck, altfel, vezi daca este egal cu 208

goto EndOfDayBrightCheck

movf PositionCount,W

sublw d'208'

btfsc STATUS,Z ;Daca e egal cu 208, mergi la EndOfDayBrightCheck, altfel, intoarce-te la rutina main

goto EndOfDayBrightCheck

return

EndOfDayBrightCheck

btfss INTCON,T0IF ;Verifica daca intreruperea pentru Timer0 este setata

goto EndOfDayBrightCheck ; Bucla pana la valoare setata

bcf INTCON,T0IF ;Curata intreruperea pentru Timer0

BSF ADCON0,GO ;Configureaza GO in ADCON0 pentru start ADC

WAIT3

btfss PIR1,ADIF ;Verifica daca intreruperea pentru AD este configurata

goto WAIT3 ;Loops until conversion is complete

bcf PIR1,ADIF ;Curata intreruperile AD

movlw Threshold1 ; Muta pe valoarea minima W pentru comparare w/ ADRESH

subwf ADRESH,W

btfsc STATUS,C ;Vezi daca valoarea in ADRESH este mai mare deat valoarea pragului

goto EndOfDayBrightCheck ;Daca ADRESH > pragul minim, continua cautarea

CALL ReturnToEast ;Altfel, intoarce-te la est si mergi in sleep

sleep

goto Initial

ReturnToEast

movlw d'48' ;Reptea de 48 de ori pentru a intoarce motorul la start (est)

movwf Temp

LOOP

movlw Left ;Muta motorul un pas la stanga

movwf Direction

CALL StepControl

decfsz Temp,F

goto LOOP

return

;**Rutina de intarziere**

Delay1ms

movlw d'250' ;1 msec intarziere

movwf Time1

LOOP1

NOP

decfsz Time1,F

goto LOOP1

return

Delay250ms ;250 msec intarziere

movlw d'250'

movwf Time2

LOOP2

CALL Delay1ms

decfsz Time2,F

goto LOOP2

return

Delay1s ;1 sec intarziere

movlw d'4'

movwf Time3

LOOP3

CALL Delay250ms

decfsz Time3,F

goto LOOP3

return

Delay1m ;1 min intarziere

movlw d'240'

movwf Time4

LOOP4

CALL Delay250ms

decfsz Time4,F

goto LOOP4

return

end

Similar Posts