Sistem de Orientare Pentru Panouri Solare Implementate cu Microcontrolerul Atmel

INTRODUCERE

CAPITOLUL 1. Metode de eficientizare a conversiei energiei solare

1.1 Metode de eficientizare

1.2 Rolul sistemelor de orientare automată a panourilor solare

CAPITOLUL 2. Microcontrolerul ATMEGA328P

2.1 Caracteristici generale

2.2 Porturi I/O

2.3 Interfața periferică serială

2.4 Modulul TWI…………………………………………………………………………………………………………..

CAPITOLUL 3. Sistemul de dezvoltare Arduino Uno

3.1 Caracteristici generale

3.2 Mediul de dezvoltare ArduinoIDE

CAPITOLUL 4. Senzori și elemente de execuție utilizate

4.1 Senzorul de lumină TSL2561

4.2 Comanda motoarelor de curent continuu folosind puntea H

4.3 Circuitul integrat L298P. Driverul de motoare Ardumoto.

CAPITOLUL 5. Realizare practică

5.1 Implementare hardware

5.2 Implementare software

CAPITOLUL 6. Concluzii……………………………………………………………………………………………..

6.1 Concluzii și perspective de dezvoltare…………………………………………………………………………

BIBLIOGRAFIE…………………………………………………………………………………………………………..

ANEXE………………………………………………………………………………………………………………………..

Lista figurilor

Figura 1.1 Structura celulei solare

Figura 1.2 Celula, Modul, Panou, Aranjament fotovoltaic

Figura 1.3 Orientarea panoului în direcția soarelui

Figura 1.4 Sistem tracker pe o singură axă

Figura 1.5 Sistem tracker pe două axe

Figura 2.1 Atmega 328P – Diagramă bloc [2]

Figura 2.2 Diagrama bloc a Arhitecturii AVR

Figura 2.3 Setul de Registre generale al UCP

Figura 2.4 Registrele speciale X, Y si Z

Figura 2.5 Schema unui pin I/O

Figura 2.6 Sincronizarea la citirea unui valori externe aplicată unui pin

Figura 2.7 Interconexiunea dintre unitatea de procesare de tip Master și cea de tip Slave

Figura 2.8 Dispozitive conectate printr-o magistrală TWI

Figura 2.9 Condițiile de Start și Stop ale interfeței TWI

Figura 3.1 Arduino Uno – vedere din față

Figura 3.2 Arduino Uno – vedere din spate

Figura 3.3 Logo Arduino IDE

Figura 3.4 Arduino – Port Serial

Figura 3.5 Arduino – Fereastră mesaje

Figura 3.6 Configurare Arduino

Figura 3.7 Exemplu program Arduino

Figura 4.1 Schema bloc funcțională TSL2561

Figura 4.2 Punte obișnuită

Figura 4.3 Pornire pe perechi

Figura 4.4 Circuitul integrat L298P

Figura 4.5 Diagrama Bloc a circuitului integrat L298P

Lista tabelelor

Tabel 2.1 Vectori de întreruperi și reset

Tabel 2.2 Configurația porturilor

Tabel 3.1 Specificații tehnice Arduino

Tabel 4.1 Evaluări maxim absolute

Tabel 4.2 Set de registre al senzorului TSL2561

Tabel 4.3 Tabelul de stări al Punții H

Lista acronimelor

CMOS = Complementary metal–oxide–semiconductor

RISC = Reduced Instruction Set Computing

MIPS = Million Instructions Per Second

EEPROM = Electrically Erasable Programmable Read -Only Memory

SRAM = Static Random Access Memory

ISP/ICSP = In-System Self-Programmable

UAL = Arithmetic Logic Unit

CISC = Complex Instruction Set Computer

ADC = Analog-To-Digital Converter

USART = Universal Synchronous Asynchronous Receiver Transmitter

AREF = Analog Reference

SPI = Serial Peripheral Interface

SP = Stack Pointer

GIE = Global Interrupt Enable

PC = Program Counter

MCUCR = MCU Control Register 

SS = Slave Select

SCL = Serial Clock

SCK= Systeml Clock

MOSI = Master Out – Slave In

MISO = Master In – Slave Out

TWI = The 2-wire Serial Interface

NMOS = Negative-Channel Metal-Oxide Semiconductor

SD = Secure Digital

SDA = Serial Data

FTDI = Future Technology Devices International

USB = Universal Serial Bus

PWM = Pulse-Width Modulation

DC = Direct Current

RAM = Random Access Memory

AC = Alternating current

GND = Ground

UART = Universally Asynchronous Receiver/Transmitter

TTL = Transistor-Transistor Logic

IDE = Integrated Development Environment

LED =  Light-Emitting Diode

C = Inter-Integrated Circuit

SMBus = The System Management Bus

LCD = Liquid-Crystal Display

OLED = Organic Light-Emitting Diode

PCB = Printed Circuit Board

MSB = Most Significant Bit

SMPS = Switch-Mode Power Supply

SPST = Single-Pole, Single-Throw

DPDT = Double-Pole, Double-Throw

MOFSET = Metal–Oxide–Semiconductor Field-Effect Transistor

Introducere

Primul fotovoltaic convențional a fost produs în anii 1950, fiind utilizat la producerea curentului electric pentru sateliții care orbitează în jurul pământului.

Scopul folosirii panourilor solare este de a satisface cererea tot mai mare a resurselor de energie regenerabile. O dată cu trecerea timpului, cererea pentru energie electrică a crescut în cantități alarmante astfel încât să poată satisface nevoile societății. Beneficiile în urma folosirii energiei solare sunt: lipsa poluării creată direct de aceste sisteme și folosirea lor practică și ieftină pe cale naturală pe termen lung. Sistemele tracker sunt proiectate pentru a orienta panourile solare spre soare. Prin adăugarea unui sistem de urmărire, energia unui panou solar ar putea fi majorată cu până la 50% în cursul lunilor de vară.

Lucrarea de licență are la bază dorința umană de a utiliza surse de energii regenerabile, nepoluante și care prezintă un potențial valoros din punct de vedere al energiei, având scopul de a găsi metode noi de a îmbunătății randamentul celulelor fotovoltaice. Pornind de la înțelegerea princiupiului de funcționare și studiul elementelor componente ale celulei fotovoltaice, se va studia implementarea unei soluții tehnice practice de a mări eficiența panoului solar prin orientarea acestuia în mod automat după mișcarea Soarelui. În felul acesta se va mări durata de expunere la soare a panoului solar. Se va studia și implementa posibilitatea de comandă a instalației utilizând un microcontroler care datorită caracteristicilor sale remarcabile, oferă posibilități multiple de soluționare a sistemului de comandă.

Lucrarea este structurată pe 6 capitole și se evidențiază caracterul teoretic prin prezentarea elementelor constructive (microcontroler, senzorul de lumină, sistemul de dezvoltare Arduino Uno) dar și caracterul practic (software și hardware). În încheiere îmi exprim concluziile și implicația personală.

Motivația alegerii acestei teme constă în faptul că acest tip de tehnologie folosită în lucrarea de față este din ce în ce mai pregnant regăsită în obiectele ce ne înconjoară, ne ușurează și ne îmbunătățesc viața. De asemenea, conceperea și crearea unui întreg circuit cu o finalitate practică constituie unul din principalele obiective ale unui inginer.

CAPITOLUL 1

– Metode de eficientizare a conversiei energiei solare –

Energia solară reprezintă energia electromagnetică transmisă de soare generată prin fuziune nucleară. Ea este practic inepuizabilă și este cea mai curată formă de energie de pe pământ fiind formată din radiații calorice, luminoase, radio sau de altă natură emise de soare. Această cantitate de energie generată de soare este de câteva mii de ori mai mare decât cantitatea totală de energie utilizată de toți oamenii. [8]

Energia solară fotovoltaică se bazează pe producerea directă de electricitate prin intermediul celulelor cu siliciu. Atunci când strălucește și atunci când condițiile climatice sunt favorabile, soarele furnizează o putere de 1 KW/mp. [8]

Celulele solare sunt realizate din materiale semiconductoare, cum ar fi siliciul. Un strat subțire semiconductor este tratat în mod deosebit pentru a forma un câmp electric, pozitiv pe o parte și negativ pe cealaltă. Atunci când radiația luminoasă ajunge la celula solară, electronii se eliberează din atomi în materialul semiconductor. Dacă se atașează conductori electrici pe părțile pozitive și negative, formând un circuit electric, electronii pot fi captați sub formă de energie electrică. [23]

Figura 1.1 Structura celulei solare

Din punct de vedere al tipului de cristal, celulele din siliciu se împart în trei categorii:

– celulă din siliciu monocristalină realizată dintr-un material semiconductor absolut pur;

– celulă din siliciu policristalină confecționată prin turnarea siliciului lichid sub forma unor plăci; se formează apoi structuri de mărimi distincte apărând unele defecte la margini. Este mai puțin eficientă; .

– celulă amorfă se realizează prin depunerea unei pelicule de siliciu pe sticlă sau pe alt material folosit ca substrat. Eficiența acesteia este mult mai mică decât a celorlalte două tipuri. [23]

1.1Metode de eficientizare

Puterea de ieșire a unei celule fotovoltaice depinde de eficiența și mărimea suprafeței fiind proporțională cu intensitatea soarelui care ajunge la suprafața celulei.

Eficiența de conversie a energiei reprezintă raportul dintre puterea electrică maxim produsă și puterea luminii utilizate în condiții de testare standard. Radiația solară standard are o densistate de putere de 1000 W/.

Celulele fotovoltaice sunt conectate din punct de vedere electric în serie și/sau în paralel pentru a produce curenți și puteri mai mari. Mai multe celule închise într-un spațiu protejat, formează modulele fotovoltaice care sunt o parte fundamentală a unui sistem fotovoltaic. Mai multe module compun panourile fotovoltaice în timp ce modulele împreună cu panourile fotovoltaice formează un aranjament fotovoltaic și reprezintă unitatea generatoare de energie. [23]

Figura 1.2 Celulă, Modul, Panou, Aranjament fotovoltaic

Câteva metode prin care putem îmbunătăți eficiența celulei solare pentru a obține o putere maximă: [5]

Informarea înaintea luării unei decizii

Cel mai important lucru care trebuie făcut este de a acumula cât mai multe informații înainte de a achiziționa un panou solar. Făcând acest lucru, putem afla care sistem oferă cea mai bună performanță și ne asigurăm că vom obține niveluri îmbunătățite de conversie a energiei. [5]

Folosirea unui concentrator solar

Lumina solară poate fi orientată cu ajutorul unui concentrator solar. Scopul acestora este de a orienta lumina care cade pe o suprafață mare către suprafețele mai mici, ca de exemplu oglinzile mari. Astfel, eficiența globală a celulelor solare poate fi crescută. [5]

Instalarea corectă a panourilor fotovoltaice

Panourile solare trebuie instalate corect. Orientarea și unghiul asigură faptul că panoul va prima lumina solară optimă pe tot parcursul zilei, precum și pe tot parcursul anului. Orientarea panourilor ar trebui să fie favorabilă spre sud, în cauzul în care locuiește în emisfera nordică iar daca se locuiește în emisfera sudică orientarea este favorabilă spre nord. Între orele 9:00 și 15:00, panourile ar trebui să fie orientate încât sa primească lumina soarelui direct fără niciun obstacol. [5]

Evitarea zonelor umbrite

Celula solară nu trebuie să fie umbrită, în caz contrat acest lucru va avea un efect negativ asupra debitului de putere. Această problemă se referă în special la celulele solare conectate în serie, deoarece daca o celulă este umbrită va cauza probleme celulelor învecinate fiind lipsite de energie. Acest lucru se datorează faptului că acționează ca un rezistor și ajută la determinarea curentului total. [5]

Păstrarea curată a panourilor

Acumularea prafului pe suprafața panourilor, va reduce eficiența astfel încât lumina soarelui care va ajunge pe celule va fi disipată. Prin urmare, este important să se evite depunerea prafului si a altor impurități. [5]

Prevenirea creșterii de temperatură

Eficiența panoului solar este afectată de nivelul de temperatură, astfel aceasta este invers proporțională cu temperatura. Trebuie să existe un decalaj între acoperiș si panourile solare pentru a permite deplasarea cu ușurință a aerului și pentru a preveni căldura înante să afecteze panourile. [5]

1.2 Rolul sistemelor de orientare automată a panourilor solare

Sistemul solar tracker este un dispozitiv ce ajută în orientarea unui panou fotovoltaic, făcându-le astfel să acționeze precum un reflector de lumină sau să își orienteze suprafața către sursa de proveniență a razelor solare. [2]

Generarea energiei solare funcționează cel mai bine când este poziționat în direcția soarelui, astfel încât un sistem de orientare poate crește eficiența unor astfel de echipamente pentru orice direcție fixă. Panourile solare trebuie să fie perpendiculare cu razele soarelui pentru a produce maximul de energie. Abaterea de la unghiul optim va reduce eficiența generării energiei din panouri. Deplasarea cu câteva grade va cauza doar 1% până la 5% din pierderea energiei, în timp ce deplasarea cu unghiuri mai mari de 10° până la 20° vor cauza semnificativ generarea de energie (un procent de până la 35%). Această pierdere depinde însă atât de material cât si de modelul din sticlă protectoare care acoperă panoul solar. [2]

Figura 1.3 Orientarea panoului în direcția soarelui

Dispozitivele active utilizează mecanisme precum spițe și motoare, pentru a realiza acțiunea de rotire a panourilor solare, în timp ce sistemele pasive se bazează pe proprietățile chimice din componența materialelor. Cea de-a 3-a categorie realizează o mișcare a panourilor printr-un număr fix de iterații, în funcție de mișcarea Pământului în jurul Soarelui. Sistemele manuale au fost construite sub principiul influenței utilizatorului asupra mișcării panourilor solare, prin crearea de modele individuale ale rotirii, translației etc. [2]

1) Sisteme pasive de orientare a panourilor solare

Sistemele pasive utilizează atât caracteristici mecanice, cât și chimice, bazate pe componența materialelor, în scopul orientării panourilor astfel încât acestea să urmarească mișcarea Soarelui. O abordare constă într-un sistem de memorare a structurii aliajului ce se găsește pe ambele părți ale panoului solar. Astfel că, atunci când panoul este perpendicular expus razelor solare, cele două părți se află într-o stare de echilibru. Însă, mișcarea Soarelui va influența temperatura acestor două componente din aliaj, sub ideea că partea expusă mai mult se va dilata, iar cea opusă se va contracta, determinând ulterior o rotație a panoului solar pentru a putea ajunge din nou într-o poziție perpendiculară cu razele ultraviolete. [7]

O altă abordare a problemei constă în ultilizarea unui sistem termo-hidraulic, compus din două recipiente plasate pe fiecare latură. Așadar, dacă panoul nu se află într-o poziție perpendiculară, lichidele din interiorul recipientelor vor avea temperaturi diferite, fapt ce va fi translatat în mediul hidraulic sub forma unei diferențe de presiune ce va obliga fluidul să fie transmis printr-o conductă, spre partea cu temperatura mai joasă. Schimbarea de greutate va forța astfel panoul să își schimbe orientarea către Soare. Acest tip de sisteme pentru orientare prezintă avantaje precum costuri scăzute, eficiență ridicată, consum nul de energie și necesitatea inexistentă a motoarelor. Pe de altă parte, aceste soluții nu sunt atât de eficiente precum cele din categoria dispozitivelor active (23% în comparație cu 40-57% pentru cele din urmă) și au tendința de a avea un comportament lent în timpul dimineții. [7]

2) Sisteme active de orientare a panourilor solare

Acestea sunt sisteme ce funcționează utilizând senzori, motoarele acționate pe baza curentului continuu și circuitele logice. Senzorii achiziționează informații despre poziția Soarelui, ulterior aceste date fiind prelucrate de către circuitele logice, care vor comanda apoi motoarele de curent continuu spre a executa o rotație într-o anumită direcție, pentru a determina o acțiune perpendiculară a razelor solare asupra panoului. [7]

2.1) Sisteme active bazate pe o singură axă de rotatie

. Sistemele ce prezintă o singură axă de poziționare (est-vest) sunt orientate cu fața la soare în orice moment al zilei și folosesc de obicei un suport polar pentru eficiență solară maximă. Aceste sisteme polare au o singură axă așezată astfel încât sa fie aproximativ paralelă cu axa de rotație a Pământului în jurul polului nord și sud. În comparație cu un suport fix, sistemele pe o singură axă cresc debitul cu aproximativ 30%. [7]

Figura 1.4 Sistem tracker pe o singură axă

2.2)Sisteme active bazate pe axe de rotație duale

Sisteme ce prezintă axe duale de rotație dispun de o libertate a mișcării în limita a 2 grade. Datorită acestei propietăți de flexibilitate, sistemele sunt capabile de a detecta poziția Soarelui pe cer în fiecare moment al zilei. Această categorie de dispozitive prezintă cea mai bună performanță, însă cu riscul unor costuri mari. Pentru a putea realiza o rotație în jurul propriei axe sau o mișcare de elevație, sunt necesare două motoare ce funcționeaza pe baza curentului continuu, fiind conectați la doi senzori independenți, pentru fiecare tip de mișcare. Motoarele de tip stepper sunt utilizate pentru a obține cele mai bune rezultate prin mișcarea sistemului la un unghi fix în direcția cu pricina. [7]

Figura 1.5 Sistem tracker pe două axe

2.3) Sisteme cronologice de orientare a panourilor solare

Principiul din spatele acestui mecanism constă în detectarea mișcării de rotație a Pământului, mișcând panoul cu un unghi egal și opus față de suprafața planetei. Spre exemplu: presupunând că Soarele trece pe deasupra panoului solar cu un unghi de 360 de grade pe zi, asta ar însemna 15 grade pe oră. Astfel, sistemul poate fi setat să execute o rotire de 15 grade pe oră în perioada zilei, urmând apoi să revină la poziția inițială pe timpul nopții, spre a nu produce o încurcătură a firelor de conexiune. Un astfel de sistem prezintă o implementare ușoară, iar totodată eficientă din punct de vedere al preciziei miscărilor. [7]

2.5) Siteme manuale de orientare a panourilor solare

Această categorie de sisteme este utilizată în țările mai puțin dezvoltate din punct de vedere tehnologic, unde mâna de lucru prezintă costuri reduse, iar dispozitivele sunt înlocuie de către operatori ce ajustează panourile solare. Putem afirma faptul că prezintă avantaje sub ideea mentenanței continue a panourilor solare. [7]

CAPITOLUL 2

– Microcontrolerul ATMEGA328P –

O dată cu trecerea timpului oamenii au încercat întotdeauna să descopere noi metode de a automatiza procesele tehnologice, pentru a ajuta la mărirea preciziei executării proceselor și a calității, la micșorarea timpului acordat obținerii acestor procese și la creșterea productivității.

Un controler (cuvânt de origine anglo-saxonă – “controller”) poate fi privit ca un sistem cu un procesor, memorie și interfețe de intrare – ieșire, utilizat pentru a controla și a recepționa stări de la un proces, fără intermediul operatorului uman.

Microcontrolerele sunt proiectate pentru aplicații încorporate, în timp ce microprocesoarele sunt proiectate pentru a fi folosite în calculatoarele personale sau alte aplicații. Dispozitivele care folosesc microcontrolere sunt dispozitivele de control la distanță, sistemul de control al motorului auto, sisteme de alarmă, dispozitive medicale și alte sisteme controlate automat.

Sunt unele microcontrolere care pot folosi cuvinte pe patru biți și funcționează la frecvențe de ceas foarte mici (de exemplu 4Hz), pentru a reduce consumul de energie; acestea au capacitatea de a păstra funcționalitatea în timp ce se așteaptă un alt eveniment (ca de exemplu apăsarea unui buton).[21]

  2.1 Caracteristici generale

ATmega328P este un microcontroler de joasă putere CMOS cu magistrala de date pe 8biți, și are la bază arhitectura îmbunătățită RISC a AVR-ului. Prin execuția instrucțiunilor într-un singur ciclu de ceas, ATmega328P atinge o rată de aproximativ 1 MIPS/MHz permițând proiectantului de sistem să optimizeze consumul de putere în raport cu viteza de execuție.[10]

Familia de microcontrolere megaAVR utilizează arhitectura RISC care conține un set de 131 instrucțiuni puternice, cea mai mare parte efectuându-se într-un singur ciclu de ceas.

Memoria microcontrolerului ATmega328P este structurată în :

– 1KB memorie de tip EEPROM (Electrically Erasable Programmable Read-Only Memory) este pentru date stocate semi-permanent. Ea memorează informații chiar și la deconectarea alimentării. Conține 100 000 cicluri de scriere/ștergere.

– 2KB memoria internă de tip SRAM (Static Random Access Memory) are magistrală bidirecțională și două cicluri diferite (de citire și de scriere).

– 32KB memorie flash de program de tip ISP (In-System Self-Programmable) are capacitatea de citire în timpul scrierii și conține 10 000 cicluri scriere/ștergere.

Folosindu-se în aplicații memoria pe un singur cip, s-a exclus utilitatea unei memorii externe. Majoritatea dispozitivelor conțin interfețe seriale utilizate pentru a conecta memorii EEPROM mai mari sau cipuri flash. Spațiul de adresare al memoriei de date mapează setul de registre generale, memoria SRAM și registrele I/O. Deși se găsesc scheme separate și instrucțiuni speciale pentru a accesa registrele I/O și registrele generale, ele pot fi manevrate ca și cum ar fi în SRAM. Memoria internă EEPROM nu este mapată în spațiul de adresare al microcontrolerului; ea putând fi accesată prin utilizarea unui registru special și a unor instrucțiuni de scriere/citire care fac accesarea mult mai înceată. [10]

Microcontrolerele din familia megaAVR beneficiază de un format pipeline (următoarea instrucțiune este încărcată atunci când cea inițială se execută). Aceste microcontrolere sunt printre cele mai rapide dintre cele 8biți, deoarece instrucțiunile se execută într-un singur ciclu de ceas iar frecvența ceasului la care lucrează ajunge până la 20 MHz. Operațiile în modul Low Power sunt realizate la o frecvență mai redusă a ceasului. [10]

Figura 2.1 Atmega 328P – Diagramă bloc [10]

Nucleul AVR-ului combină un set redus de 32 registre generale de lucru; aceste registre fiind conectate direct la Unitatea Logică Artimetică (UAL) și permițând ca două registre independente să fie accesate cu o singură instrucțiune ce se execută într-un singur ciclu de ceas. Din punct de vedere al codului această arhitectură este mult mai eficientă, ajungând sa aibă rata de procesare de 10 ori mai mare decât microcontrolerele bazate pe arhitectura CISC. [10]

Microcontrolerul ATmega328P conține următoarele caracteristici: 23 de linii I/O de uz general, 3 numărătoare/timere flexibile cu moduri de comparare, întreruperi interne și externe. Un USART serial programabil, un port serial SPI, un convertor analog-digital ( ADC ) cu 6 canale de câte 10 biți, un timer programabil de supraveghere cu oscilator intern (Timer Watchdog), o interfață serială orientată pe byte și 5 moduri selectabile de economisire a energiei. [10]

Modul Power-down salvează conținutul registrelor dar oprește oscilatorul, dezactivând toate celelalte funcții ale cipului până la apariția următoarei întreruperi sau a resetării hardware. În modul Power-save, timerul asincron continuă să funcționeze, lăsând utilizatorul să păstreze o bază a timerului în timp ce restul dispozitivului este în Sleep-mode. Funcția de reducere a zgomotului în ADC oprește unitatea de control și prelucrare și toate modulele I/O în afară de timerul asincron si a ADC, pentru micșorarea la minim a zgomotului în timpul conversiei analog-digitală. În modul Standby, oscilatorul prelucrează iar restul dispozitivului se află în Sleep-mode. Acest lucru permite un start-up foarte rapid iar acest mod favorizează un consum redus de putere. [10]

Cipul ISP permite reprogramarea memoriei printr-o interfață serială SPI, de către un programator convențional de memorie nevolatilă, sau de către un program de boot ce rulează pe AVR și care poate folosi orice interfață pentru a descărca aplicația necesară în memoria flash. [10]

Nucleul UCP

Figura 2.2 Diagrama bloc a Arhitecturii AVR [10]

Astfel pentru a maximiza performanța și paralelismul, procesorul AVR utilizează o arhitectură Harvard, cu memorii și magistrale separate pentru program și date. Instrucțiunile din memoria de program sunt executate printr-un pipeline pe un singur nivel. În timp ce o instrucțiune este executată, următoarea instrucțiune este adusă din memoria de program. Acest concept permite execuția instrucțiunilor într-un singur ciclu de ceas. Memoria de program este de tip In-System Reprogramable Memory. [10]

Cele 32 de registre generale pe 8 biți pot fi accesate rapid într-un singur ciclu de ceas. O operație UAL poate conține ca operanzi două registre diferite din blocul de registre generale iar în urma executării ei, rezultatul va fi salvat într-unul din registrele generate.[10]

Setul de registre generale este optimizat pentru setul de instrucțiuni reduse (RISC). Pentru a obține performanțe ridicate și flexibilități dorite, sunt aprobate următoarele situații :

– 1 Operand pe 8 biți la ieșire și un rezultat pe 8 biți la intrare

– 2 Operanzi pe 8 biți la ieșire și un rezultat pe 8 biți la intrare

– 2 Operanzi pe 8 biți la ieșire și un rezultat pe 16 biți la intrare

– 1 Operand pe 16 biți la ieșire și un rezultat pe 16 biți la intrare

Figura 2.3 Setul de Registre generale al UCP [10]

Unele instrucțiuni care folosesc aceste registre au acces direct la ele într-un ciclu de ceas. Asa cum reiese și din figura de mai sus, fiecare registru conține o adresa unică, mapată direct în primele 32 de locații ale memoriei de date. Modul de organizare în memoria de date oferă o flexibilitate ridicată în momentul accesării, în condițiile în care nu au o implementare fizică independentă. Șase dintre cele 32 de registre pot fi folosite ca trei registre-pointer de 16 biți pentru adresarea indirectă în spațiul de adresare al memoriei de date. Unul din aceste registre-pointere poate fi utilizat în indicarea adresei în tabela de căutare a memoriei de program de tip Flash. [10]

Registrele R26-R31, sunt registre de adrese pe 16 biți, din figura de mai sus au unele funcții aparte. Aceste 3 registre au funcții de incrementare automată și decrementare automată și sunt reprezentate în figura de mai jos.:

Figura 2.4 Registrele speciale X, Y si Z [10]

UAL poate efectua operații aritmetice și logice între registre, între o constantă și un registru sau se pot efectua operații pe bit asupra unui singur registru. După efectuarea operației aritmetice, registrul Status este actualizat pentru a evidenția informații referitoare la rezultatul operatiei. Acestea sunt utilizate la modificarea fluxului programului astfel încât să efectueze operații condiționale. Registrul Status este actualizat după operațiile din UAL, motiv pentru care codul rezultat va fi unul mai rapid. Salvarea acestuia este controlată din software deoarece nu se efectuează automat la întâlnirea unei întreruperi. [10]

Fluxul de program este susținut de instrucțiuni de salt condiționat sau necondiționat sau de instrucțiuni de apelare a unor subrutine fiind în stare de adresare directă a întregului spațiu de adrese. Multe din instrucțiunile AVR au formatul unui cuvânt de 16 biți. Fiecare adresă a memoriei de program semnalează o locație de memorie care este formată dintr-o instrucțiune de 16 sau 32 de biți. [10]

Memoria de program de tip Flash este divizată în două secțiuni: secțiunea de Boot Program și secțiunea de Program de Aplicație; fiecare având biți de blocare utilizați pentru a asigura protecția la citire sau scriere.[10]

Adresa numărătorului de program (Program Counter – cel care conține adresa instrucțiunii la care a rămas programul înainte de deservirea întreruperii) este stocată în stivă atunci când au loc întreruperile și apelurile de subrutine. Stiva este utilizată pentru a stoca date temporare și este alocată efectiv în memoria de date SRAM, iar dimensiunea maximă a acesteia este redusă la dimensiunea memoriei și a gradului de ocupare al acesteia. Programele utilizatorului trebuie să realizeze indicatorul de stivă (Stack Pointer – cel care indică vârful stivei) care poate fi accesat pentru citire/scriere în spațiul de memorie I/O. Datele din SRAM pot fi accesate cu ușurință prin cele 5 moduri diferite disponibilie în arhitectura AVR. [10]

Un modul de întrerupere are registrele de control localizate în spațiul I/O. Se utilizează un bit adițional GIE (Global Interrupt Enable) pentru stimularea întreruperilor globale, aflat în Registrul Status. Modulele conțin vectori de întrerupere diferiți în tabela vectorilor de întreruperi. Prioritatea este mai mare dacă adresa vectorului de întrerupere este pe o poziție mai inferioară. Spațiul de memorie al I/O conține 64 adrese pentru funcțiile unității de control și prelucrare, precum: Registrul de control, SPI și alte funcții I/O. [10]

Pointerul de Stivă

Stiva este folosită în general pentru a stoca datele temporare, pentru a stoca variabilele locale și adresele de întoarcere după întreruperi. Ea este realizată de la locații de memorie superioare la locații de memorie inferioare și este implementată de sus în jos. Registrul SP (Stack Pointer) arată vârful stivei adică locația din memoria de date SRAM a stivei unde sunt localizate stivele de întreruperi. [10]

Comanda PUSH (introducerea datei în stivă ) va decrementa SP cu 1 (o locație de memorie) în timp ce comanda POP (scoaterea datei din stivă ) va incrementa SP cu 1. Instrucțiunile CALL, ICALL, RCALL introduc în stivă adresa la care va reveni execuția programului după întrerupere și vor decrementa SP cu 2 în timp ce intrucțiunile RET, RETI vor scoate din stivă adresa la care va reveni execuția programului după întrerupere și vor incrementa SP cu 2. Stiva trebuie să fie determinată de program înaintea de activarea unei întreruperi. Valoarea inițială a SP-ului este identică cu ultima adresă din SEAM-ul intern. [10]

Manipularea întreruperilor și resetarea

Se găsesc surse de întrerupere distincte. Aceste întreruperi dar și vectorul de Reset sunt separate și fiecare conține un vector de program în spațiul memoriei de program. Toate întreruperile au alocat câte un bit de activare (enable) care împreună cu bitul GIE au valoarea logică 1 în registrul Status putând să permită o întrerupere. Întrucât depind de valoarea registrului PC, întreruperile pot fi dezactivate când biții Boot Lock (BLB02 sau BLB12) sunt programați. Această caracteristică perfecționează securitatea software. [10]

Adresele cele mai inferioare din spațiul memoriei de program sunt definte ca vectori de întrerupere și de reset. Lista vectorilor de întrerupere stabilește nivelul de prioritate al diferitelor întreruperi. Adresa inferioară și nivelul de prioritate sunt invers proporționale: cu cât adresa este mai inferioară cu atât nivelul de prioritate este mai mare. Cea mai mare prioritate o deține Reset-ul, fiind urmat de INTO – cererea de întrerupere externă 0. Vectorii de întrerupere pot fi deplasați la începutul secțiunii Boot Flash ajustând bitul IVSEL din registrul de control MCUCR. [10]

Când are loc o întrerupere, bitul GIE este golit și toate întreruperile sunt dezactivate. Software-ul utilizatorului poate plasa valoarea 1 în acest bit pentru activarea întreruperilor seriale. Rutina inițială este oprită când sunt activate toate întreruperile activate. Bitul este stabilit automat când se realizează o modificare din instrucțiunea de întrerupere (se execută instrucțiunea RETI). [10]

Sunt 2 tipuri de întreruperi de bază și anume:

– primul tip este activat de un eveniment care setează flag-ul de întrerupere. Pentru aceste întreruperi, registrul PC este actualizat cu vectorul de întrerupere inițial astfel încât să fie efectuată rutina de întrerupere și sistemul hardware șterge flag-ul convenabil întreruperii. Fanioanele de întrerupere pot fi șterse prin scrierea valorii logice 1 în poziția bitului pentru a fi șters. Dacă are loc o condiție de întrerupere în același timp cu ștergea enable-ului, fanionul de întrerupere va fi stabilit și păstrat în memorie până când se activează întreruperea, sau este eliminat prin software. Asemănător, dacă în momentul ștergerii bitului GIE au loc una sau mai multe cereri de întrerupere, fanionul potrivit întreruperii va fi setat și păstrat în memorie până când bitul GIE este setat și se vor aplica în ordinea priorității. [10]

-al doilea tip este activat numai dacă condiția de întrerupere este prezentă. Acest tip nu necesită în mod obligatoriu un fanion. Dacă cererea de întrerupere dispare înainte de a fi validată, aceasta nu se va mai declanșa. Adresa fiecărui vector de întrerupere va fi adresa din tabelul de mai jos adunată la adresa de start a secțiunii Boot Flash. [10]

Tabel 2.1 Vectori de întreruperi și reset[10]

2.2 Porturi I/O

Toate porturile au funcționalitatea citire-modificare-scriere când sunt utilizate ca porturi generale I/O. Acest lucru are în plan schimbarea direcției unui port fără prelucrarea neintenționată a direcției oricărui pin cu ajutorul instrucțiunilor SBI și CBI. În același mod se aplică și când este schimbată valoarea unității sau când sunt activate/dezactivate rezistoarele pull-up.[10]

Unitatea pin-ului este suficient de puternică pentru a conecta direct afișajele LCD. Toți pinii porturilor au rezistoare individuale selectabile de tip pull-up cu o tensiune de alimentare stabilă și toate porturile I/O au diode de protecție. [10]

Figura 2.5 Schema unui pin I/O[10]

Toate registrele și referințele de biți din această secțiune sunt scrise la forma generală. Litera ”x” reprezintă numărului portului iar litera ”n” reprezintă numărul bitului. Pe de altă parte, când folosim pentru a defini un registru sau a un bit într-un program, trebuie utilizată forma precisă.[10]

Sunt alocate trei locații de memorie pentru fiecare, una pentru registrul de date-PORTx, a doua pentru registrul direcției-DDRx și a treia pentru porturile pinilor de intrare-PINx. Locația porturilor de intrare este de tipul read-only, pe când registrul de date și registrul de direcție sunt read/write. Scrierea valorii logice 1 într-un bit al registrul PINx va rezulta într-o comutare în bitul corespunzător din registrul de date. În afară de aceasta, bitul de dezactivare a Pull-up-ului, PUD din MCUCR dezactivează funcția de pull-up pentru toți pinii din toate porturile când se setează. [10]

Configurarea pinilor

Fiecare pin de port conține trei biți de registre: DDxn, PORTxn și PINxn. Biții DDxn sunt accesați la adresele I/O ale DDRx, biții PORTxn la adresele PORTx și biții PINxn la adresele PINx. Bitul DDxn din registrul DDRx selectează direcția pinului. Dacă are valoare logică 1, Pxn este configurat ca pin de ieșire. Dacă are valoarea logică 0, Pxn este configurat ca pin de intrare. [10]

Dacă bitul PORTxn are valoarea logică 1 când pinul este configurat ca intrare, rezistorul pull-up este activat. Pentru a dezactiva rezistorul, bitul trebuie să aibă valoarea 0 sau pinul va fi configurat ca pin de ieșire. [10]

Dacă bitul PORTxn are valoarea logică 1 când pinul este configurat ca ieșire, portul este setat 1. Dacă bitul PORTxn are valoarea logică 0 când pinul este configurat ca ieșire, atunci portul este setat 0. [10]

Comutarea între intrare și ieșire

Când se realizează comutarea între {DDxn, PORTxn}=0b00 și ieșirea high {DDxn, PORTxn}=0b11, trebuie să intervină o stare intermediară care activează pull-up-ul {DDxn, PORTxn}=0b01 sau care setează ieșirea low {DDxn, PORTxn}=0b10. [10]

Tabel 2.2 Configurația porturilor [10]

Citirea valorii pinului

Setarea bitului DDxn este o acțiune independentă față de citirea valorii pinului prin bitul de registru PINxn. Un sincronizator este util pentru a evita distrugerea când pinul fizic își schimbă valoarea în apropiere de vârful clock-ului intern, și introduce un delay. Figura de mai jos reprezintă diagrama în timp a sincronizării atunci când se citește o valoare externă aplicată pinului. Întârzierile maxime și minime de propagare sunt notate cu și ..[10]

Figura 2.6 Sincronizarea la citirea unui valori externe aplicată unui pin [10]

Perioada ceasului de sistem pornește imediat după primul front descrescător. Când semnalul de clock se află jos, se blochează valoarea semnalului. O tranziție pe pin va fi întârziată cu o valoare între 0,5 și 1,5 dintr-o perioadă de ceas.

  2.3 Interfața periferică serială

Comunicația serială este foarte răspândită printre microcontrolere datorită compatibilității sale cu multe dispozitive cu ajutorul cărora poate interacționa dar și un număr redus de conexiuni.

Comunicarea între microcontroler și dispozitivele periferice se realizează cu ajutorul protocolului SPI. Acesta este un sistem pentru comunicație pe 4 fire: unul pentru transmisie, unul pentru recepție, unul pentru sincronizare și ultimul pentru a selecta dispozitivul prin care va comunica.

Figura 2.7 Interconexiunea dintre unitatea de procesare de tip Master și cea de tip Slave [10]

Sistemul din figura 2.7 este format din două registre de deplasare și un generator de semnal de ceas Master. Unitatea Master realizează ciclul de comunicație serială prin setarea pinului de selecție în starea de joasă impedanță, potrivit unității Slave vrute. Unitatea Master generează impulsurile de ceas necesare pe linia SCK pentru a interschimba date și tot aceasta împreună cu unitatea Slave pregătesc datele pentru transfer în registrele lor de deplasare corespunzătoare. [10]

Datele se deplasează pe linia MISO (Master In – Slave Out) de la Slave la Master iar pe linia MOSI se deplasează de la Master la Slave (Master Out – Slave In). Slave se sincronizează după Master, o dată cu trimiterea fiecărui pachet de date punând linia Slave Select SS în stare de înaltă impedanță. [10]

Dacă interfața SPI este configurată ca Master, aceasta pierde automat controlul asupra liniei SS. Acest control va fi comandat prin implementare software, înainte să pornească comunicația. Când aceasta este gata, scrierea unui octet de date în registrul de date SPI (data register) va provoca pornirea generatorului de ceas SPI și odată cu aceasta va declanșa și deplasarea celor 8 biți spre unitatea Slave. După deplasarea unui byte de date, generatorul de ceas SPI se va opri pentru a se seta fanionul de sfârșit al transmisiunii flag-ului (SPIF). O cerere de întrerupere este solicitată, atunci când bitul de activare a întreruperii SPI (SPIE) din registrul SPCR este setat. Unitatea Master poate continua să deplaseze următorul byte de date prin scrierea acestuia în registrul SPDR sau poate semnala sfârșitul pachetului de date punând linia SS în stare de înaltă impedanță. Ultimul byte din registrul buffer va fi păstrat în registrul buffer pentru utilizări ulterioare. [10]

Dacă interfața SPI este configurată ca Slave, aceasta va sta în stare pasivă pe linia MISO, linie care va avea trei stări cât timp pinul SS este în stare de înaltă impedanță. În această stare pasivă, datele vor fi deplasate pe fronturile impulsurilor de ceas care care vin pe pinul SCK doar atunci când semnalul SS este pus în starea de joasă impedanță însă programul software poate actualiza conținutul registrului de date SPI, SPDR. Când un byte a fost deplasat complet, se setează fanionul de semnalare al terminării transmisiei (SPIF). O cerere de întrerupere este solicitată, atunci când bitul de activare al întreruperii SPI din registrul SPCR este setat. Unitatea Slave poate continua să deplaseze următorii octeți în registrul SPDR înainte să citească datele care urmează să apară. Ultimul byte va fi păstrat în registrul buffer pentru utlizări ulterioare. [10]

Sistemul conține un singur buffer pentru a transmite date si două buffere pentru primi datele. Astfel octeții care trebuie transmiși nu pot fi scriși în registrul de date SPI înainte de a se termina întregul ciclu. Când se primesc date, dacă un caracter recepționat nu este citit din registrul de date SPI înainte ca următorul caracter să fie deplasat integral în registru, primul octet va fi pierdut. [10]

  2.4 Modulul TWI

Interfața TWI (The 2-wire Serial Interface) este convenabilă pentru comunicația între diferite microcontrolere și controlere I/O. Magistrala permite cuplarea unor circuite compatibile în structura sistemului, fără excepții precum fabricarea acestora: NMOS, CMOS sau bipolară. Aceasta este o magistrală bidirecțională simplă, care utilizează două fire: unul pentru datele seriale (Serial Data) și unul pentru ceasul serial (Serial Clock) ca și în figura de mai jos. [10]

Figura 2.8 Dispozitive conectate printr-o magistrală TWI [10]

Fiecare dispozitiv conectat la magistrală este recunoscut printr-o adresă unică și poate funcționa fie ca receptor fie ca transmițător și receptor. Transmițătoarele și receptoarele pot funcționa în modul master sau în modul slave, în funcție de cum inițiază un transfer de date sau de cum sunt adresate. Un dispozitiv master poate transmite/recepționa semnale la/de la un dispozitiv slave sau poate controla trasferurile între două dispozitive slave, dintre care unul este transmițător și celălalt este receptor. Pot fi mai multe dispozitive master pe magistrală iar în cazul acestor sisteme are loc o procedură de arbitraj bazată pe conectarea de tip ȘI-cablat a tuturor dispozitivelor la magistrală. Semnalele de ceas de pe magistrală pot fi afectate dacă un dispozitiv slave lent forțează linia de ceas la nivel logic LOW sau de un alt dispozitiv master, pe durata arbitrajului. [22]

Ambele linii, SDA și SCL, sunt bidirecționale și conectate prin intermediul unei rezistențe de pull-up la tensiunea de alimentare. Cele două linii sunt în starea HIGH dacă magistrala este liberă. Etajul de ieșire al dispozitivului conectat la magistrală trebuie să fie de tip open-drain sau open-collector pentru a se realiza funcția ȘI-cablat. Pe magistrala de TWI, transferurile de date pot fi realizate cu rate de maxim 100 KB/s în modul standard sau 400 KB/s în modul rapid. [22]

Condițiile de START și STOP

Figura 2.9 Condițiile de Start și Stop ale interfeței TWI [10]

Condițiile de START și STOP sunt considerate situații de excepție.

Condiția START e definită prin tranziția din starea HIGH în starea LOW a liniei SDA, pe durata căreia linia SCL este HIGH. [10]

Condiția STOP e definită prin tranziția din starea LOW în starea HIGH a liniei SDA, pe durata căreia linia SCL este HIGH.

Condițiile de START și de STOP sunt generate întotdeauna de un dispozitiv master. Magistrala este ocupată când apare condiția START și este liberă după apariția condiției STOP. [10]

Detectarea acestor condiții de către dispozitivele slave cuplate la magistrală este foarte ușoară dacă acestea conține hardware-ul specializat de interfațare. Cele care nu dispun de acest hardware, cer eșantionarea de două ori a liniei SDA pe durata unei perioade de ceas, astfel încât să poată fi găsită această tranziție. [10]

CAPITOLUL 3

– Sistemul de dezvoltare Arduino Uno–

Arduino Uno este o platformă destinată celor pasionați de electronică, ingineri din domeniu, studenți dar și pentru cei care sunt pasionați de construirea montajelor electronice. Aceasta a apărut pe piață în anul 2010, folosind atât cipul 328P cât și comutatorul de putere. Are un mic bootlader numit Optiboot (mai mult spațiu pentru utilizatorii de proiecte) care rulează la 115K. Deși cipul este același, se mai obțin 1.5K din spațiul flash suplimentar care era folosit anterior de bootlader. Cipul FTDI (Future Technology Devices International) a fost înlocuit cu Atmega8u2, un cip care se comportă identic cu cel pe care îl înlocuiește dar care permite diferite tipuri de interfețe USB (Universal Serial Bus). [12]

Este cea mai recentă placă de dezvoltare de la Arduino, și una dintre cele mai simplu de utilizat platforme cu microcontroler. Poate fi privit ca un minicalculator care reușește să culeagă informații din mediu și să reacționeze la acestea. [12]

O placă Arduino este compusă dintr-un microcontroler AVR Atmel, pe 8 biți și alte câteva componente care ajută la programarea și includerea cu ușurință în alte circuite. Un avantaj al acestor plăci îl reprezintă modul comun în care sunt realizați conectorii plăcii, la vedere, dând posibilitatea de a fi conectate cu diferite module, cunoscute sub numele de Arduino Shields. Unele scuturi sunt adresabile individual prin magistrala serială I²C, altele comunică direct prin pini aleși. [12]

Figura 3.1 Arduino Uno – vedere din față

Figura 3.2 Arduino Uno – vedere din spate

3.1 Caracteristici generale

Arduino Uno este o placă de dezvoltare bazată pe microcontrolerul ATMega328.

Aceasta are 14 intrări digitale /pini de ieșire ((dintre care 6 pot fi utilizate ca ieșiri PWM (Pulse-Width Modulation) – este un generator de semnale dreptunghiulare cu frecvență fixă; semnale folosite în general pentru a controla viteza unui motor de curent continuu, 6 intrări analogice, un oscilator cu cristal de quartz de 16 MHz, o conexiune USB (Universal Serial Bus) – care stabilește comunicația între anumite dispozitive și gazda ce le controlează, o mufă de alimentare, un antet ICSP (In Circuit Serial Programming) este un port care permite programarea microcontrolerului pe placă fără a fi demontat și un buton de resetare. Acesta conține tot ceea ce este necesar pentru a sprijini microcontrolerul ATMega328. [14]

Tabel 3.1 Specificații tehnice Arduino [14]

Arduino Uno poate fi alimentat prin intermediul conexiunii USB sau cu o sursă de alimentare externă. Sursa de alimentare este selectată automat. Alimentarea externă (non-USB) poate proveni ori de la un adaptor AC (curent alternativ) – DC (curent continuu) ori de la un acumulator. Adaptorul poate fi conectat cu ajutorul unei mufe de 2.1 mm cu centru pozitiv, inserată în conectorul de alimentare a plăcuței. Conectarea de la un acumulator poate fi realizată inserând în pinii GND (împământarea) și Vin (tensiunea de intrare) capetele de la conectorii de alimentare iar sistemul de dezvoltare poate opera pe o alimentare externă între 6 și 20 volți. [14]

Dacă este alimentat cu o tensiune mai mică de 7V, există posibilitatea, ca pinul de 5V să furnizeze mai puțin de 5 volți și placa să devină instabilă iar în cazul în care folosim o tensiune mai mare de 12V, stabilizatorul de tensiune se poate supraîncălzi fapt ce poate avea ca urmări deteriorarea plăcii. Limitele recomandate de către producător este de 7 – 12V. [14]

Pinii de alimentare sunt după cum urmează:

– Pin-ul Vin: Reprezintă pinu-ul de intrare a unei tensiuni de alimentare pentru placa de dezvoltare Arduino Uno atunci când este utilizată o sursă de alimentare externă (spre deosebire de 5V de la conectorul USB sau de la stabilizatorul de tensiune). Putem introduce tensiuni de alimentare prin acest pin, sau dacă folosim conectorul de alimentare de alimentare, o vom accesa tot prin acest pin; [14]

– Pin-ul 5 V: Acest pin dă la ieșire o tensiune de 5V de la stabilizatorul de tensiune utilizat pentru alimentarea microcontrolerului. Acesta poate fi alimentat fie de la pinul Vin de pe placa de dezvoltare, fie furnizat de către USB sau de o altă sursă de tensiune de 5V fie de la pinul de 3.3V care evită stabilizatorul, și poate dăuna plăcii ceea ce nu este recomandat; [14]

– Pin-ul 3V3: O alimentare de 3.3 volți generat de către stabilizatorul de tensiune de pe placă. Curentul maxim ce îl furnizează este de 50mA; [14]

– Pin-ul GND: Sunt pinii de masă;

– Pin-ul IOREF: Acest pin de pe placa Arduino oferă tensiunea de referință prin care funcționează microcontrolerul. Un modul configurat corect poate citi tensiunea de pe pinul IOREF și poate selecta sursa de alimentare convenabilă sau să activeze tranziții de tensiune pe ieșiri pentru 5V sau 3.3V. [14]

. Atmega328 are 32 KB (cu 0.5 KB utilizați pentru bootloader). Ea are, de asemenea, 2KB SRAM și 1KB EEPROM.

Fiecare din cei 14 pini digitali de pe placa Uno pot fi folosiți ca intrare sau ieșire, folosind funcțiile pinMode(), digitalWrite() și digitalRead(). Ele funcționează la 5V. Fiecare pin poate produce sau primi un curent maxim de 40mA și are un rezistor pull-up intern (deconectat inițial) de 20 – 50kΩ. [14]

În plus, unii pini au funcții speciale:

– Serial: 0 (RX) și 1 (TX). (RX) este folosit pentru a primi iar (TX) este folosit pentru a transmite date seriale TTL (Transistor–Transistor Logic) este o clasă de circuite digitale construită dintr-un tranzistor cu joncțiune bipolară si rezistențe; este numit așa deoarece atât funcția porții logice AND cât si funcția de amplificare sunt efectuate de tranzistori; [14]

– Întreruperile externe: 2 și 3. Acești pini sunt programați pentru a declanșa o întrerupere la o valoare scăzută, un front crescător sau descrescător, sau o schimbare în valoare. Funcția destinată întreruperilor pentru a afla mai multe detalii despre comenzile acestora este attachInterrupt(); [14]

– PWM (Pulse-Width Modulation): 3, 5, 6, 9, 10 și 11. Asigură ieșiri PWM de 8 cu ajutorul funcției analogWrite(); [14]

– Pinii standard de intrare/ieșire: 4, 7, 8; [14]

– SPI (Serial Peripheral Interface): 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Acești pini asigura comunicarea SPI folosind librăria SPI. Aceasta este o interfață sincronă standard de mare viteză folosită pentru transmiterea de date, unde circuitele digitale pot fi interconectate pe principiul master – slave. Cele patru semnale logice specifice acesteia sunt: SCK (firul prin care este transmis clock-ul), MOSI (firul prin care dispozitivul master trimite date către slave), MISO (firul prin care dispozitivele slave trimit date către master), SS (Selectare slave – canal specific SPI). Poate opera cu mai multe dispozitive slave, fiecare dispozitiv având atașat un canal Slave Select, dar cu un singur dispozitiv master; [14]

– LED: 13. Pe placa este încorporat un Led care este conectat la pinul digital 13. Când pinul este ridicat, ledul este pornit iar când pinul este coborât, ledul este oprit; [14]

Placa Arduino are 6 intrări analogice, etichetate de la A0 până la A5, fiecare asigurând o rezolutie de 10 biți (adică maxim 1024 de valori diferite). În general, ei măsoară de la masă 5 volți, deși se poate modifica limita superioară utilizând pinul AREF și funcția analogReference(). [14]

În plus, unii pini au funcții suplimentare:

– Pinii analogici standard: A0, A1, A2, A3; [14]

– SDA (date seriale): A4. Acest pin suportă comunicarea prin 2 fire interfața C (Inter-Integrated Circuit) sau TWI (Two Wire Interface) și este folosit pentru datele seriale la TWI. [14]

– SCL (ceas serial): A5. Acest pin este identic cu A4, diferența fiind făcută de utilitatea lui pentru ceasul serial. [14]

– AREF: Folosit ca și tensiune de referință pentru intrările analogice, utilizat cu funcția analogReference(). [14]

– RESET: Se poate seta acest pin LOW pentru a reseta microcontrolerul de la Arduino. De obicei este folosit pentru a adăuga un buton de reset pentru modulele care îl blochează pe cel de pe placă. [14]

Placa Arduino Uno are multe modalități de a comunica cu computerul, cu o altă placă arduino sau cu alte microcontrolere: fie prin portul USB, fie prin pinii 0 si 1 (RX și TX) care facilitează comunicarea serială UART TTL (5V). Un ATmega16U2 pe placuță creează un canal pentru comunicarea serială prin USB și apare precum un port virtual de comunicare pentru software-ul de pe computer. Firmware-ul (soft-ul specific respectivului integrat) lui 16U2 utilizează driver-ele standard USB COM, astfel niciun software extern nu este necesar, însă, pe Windows, fișierul .inf este cerut. [14]

3.2 Mediul de dezvoltare integrat Arduino ( IDE )

Mediul de dezvolatare integrat Arduino (IDE – Integrated Development Environment) a fost realizat pentru scrierea programelor ce pot fi încărcate pe platformele fizice Arduino. Este o aplicație dezvoltată în limbajul de programare JAVA iar scopul acesteia este de a ajuta persoanele care nu au mai lucrat niciodata în dezvoltarea de software și care nu au mai interacționat cu un astfel de mediu. [11]

Figura 3.3 Logo Arduino IDE

După rularea programului arduino primul lucru ce trebuie făcut este determinarea portului serial prin care plăcuța se contectează la PC . Cea mai simplă metodă este de a conecta placa, iar după 30 de secunde de așteptat vom deschide din ” Tools ” apoi ” Port ”. Aici vor aparea mai multe intrări, însă una singură îi aparține plăcuței noastre. Pentru a afla acest lucru, va trebui să deconectăm plăcuța, iar la reconectarea acesteia să observăm care port a apărut. [13]

Figura 3.4 Arduino – Port Serial

Zona de mesaje afișează erorile de programare și oferă mesaje în timpul salvării și exportării unui program, iar în dreapta jos este afișat portul serial prin care este conectată placa la PC prin “COM ”.

Figura 3.5 Arduino – Fereastră mesaje

Configurarea mediului de dezvoltare integrat se realizează ducând săgeata mouse-lui la

“Tools ” apoi “ Board ” și selectăm tipul de placă folosit de noi Arduino Uno. [13]

Figura 3.6 Configurare Arduino

Programul sau proiectul nou scris în sistemul de dezvoltare Arduino IDE se numesc “Schițe”. Acestea se salvează în fișiere cu extensia .ino.

Butoanele din bara de instrumente sunt pentru verificarea și încărcarea programelor pe plăcuță, crearea, deschiderea și slavarea schemelor dar și deschiderea monitorului serial. [13]

Butonul “Verify” este cel care verifică dacă sunt/nu sunt erori în cod;

Butonul “Upload” este cel care compilează și încarcă codul pe plăcuță. Ținând tasta shift apăsată acesta poate fi transformat în buton “Upload using programmer“ când se utilizează un program extern;

Butonul “New” creeză o schemă nouă;

Butonul “Open” ajută la deschiderea unei scheme, din cele create de utilizator, pe care o va deschide în fereastra inițială;

Butonul “Save” salvează schema;

Butonul “Serial” deschide monitorul serial.

Cel mai simplu program, realizat cu ajutorul Arduino IDE, care poate fi scris pe un microcontroler este de a stinge si aprinde un LED (de a “ clipi ”) la un interval de timp. Pentru executarea acestui program, care să ruleze repetitiv, trebuie definite două funcții principale: setup( ) și loop( ). [12]

– setup( ) se rulează la începutul unui program o singură dată și are rol de a inițializa programul.

– loop( ) rulează repetitiv până în momentul în care este întreruptă alimentarea plăcii de dezvoltare Arduino.

În figura de mai jos, avem exmplul de program:

Figura 3.7 Exemplu program Arduino

CAPITOLUL 4

– Senzori și elemente de execuție utilizate–

Un senzor este definit ca “un dispozitiv ce recepționează și răspunde la semnale”. Acest domeniu prezintă atât o parte naturală, cât și una artificială, creată de către om. [18]

Senzorii naturali, precum cei găsiți în organisme vii, de obicei răspund sub forma unui semnal, având un caracter electro-chimic, bazat pe transportul de ioni, asemeni țesutului nervos (putem face o asemănare cu nervii optici din interiorul ochiului). Aparatura creată de om funcționează tot pe ideea transmisiunii de informație sub formă electrică, însă, realizată pe baza electronilor. [18]

Senzorii utilizați în sistemele artificiale trebuie să „vorbească” aceeași limbă precum interfețele prin intermediul cărora comunică. Acest dialect prezintă un caracter electric, ceea ce semnifică faptul că un senzor artificial ar trebui să fie capabil de a răspunde cu semnale acolo unde informația este modificată, pe baza deplasării electronilor, față de mecanismul natural bazat pe ioni. În consecință, ar trebui să fie posibilă conexiunea unui senzor la un sistem electronic prin intermediul firelor, decât printr-o soluție electro-chimică sau fibre ale țesutului nervos. [18]

Scopul unui senzor este de a răspunde la un semnal de intrare de natură fizică și de a o converti într-un semnal electric ce poate fi compatibil cu respectivele circuite în cauză. Putem afirma faptul că un senzor este asemeni unui translator ce traduce valorile non-electrice în domeniul electric. Atunci când spunem ”electric”, ne referim la un semnal ce poate fi amplificat, transmis sau modificat de către dispozitive electronice. Semnalul de la ieșirea senzorului poate fi exprimat sub formă de voltaj (tensiune), curent sau încărcare electrică (exprimat sub formă de valoare). [18]

Termenul de ”senzor” nu ar trebui să fie confundat cu cel de ”traductor”. Primul realizează conversia oricărui tip de energie într-altul, în timp ce al doilea convertește doar anumite energii in cea electrică. Traductoarele pot fi utilizate drept actuatoare (”switch-uri”, declanșator al unui efect sau motor) în diverse sisteme. Un actuator poate fi descris ca fiind opusul unui senzor; convertește semnalul electric în energie non-electrică. [18]

În principiu, sunt două tipuri de senzori: direct și complex. Un senzor direct convertește stimulul în semnal electric sau modifică unul deja existent prin utilizarea unui efect fizic pe măsură, în timp ce senzorul complex necesită unul sau mai multe traductoare de energie înainte ca un senzor direct să poată genera o valoare electrică la ieșire. Totodată, senzorii pot fi atât pasivi, cât și activi. Un senzor pasiv nu necesită nicio sursă adițională de energie, generând direct semnalul electric ca și răspuns la stimul. Astfel, energia primită este convertită imediat în semnal de ieșire. [18]

Majoritatea senzorilor pasivi sunt din categoria celor direcți așa cum i-am definit anterior.

Clasificarea senzorilor pe baza schemelor variază de la simplu spre foarte complex. În funcție de scopul clasificării, ne putem ghida după diferiți parametrii și caracteristici:

1) Senzorii activi necesită o putere de la sursa externă pentru a deservi operațiilor caracteristice, ceea ce putem numi excitație. Acest semnal este modificat de către senzor pentru a produce semnaulul de ieșire. [18]

2) În funcție de referința selectată, senzorii pot fi clasificați și drept absoluți sau relativi. Un senzor absolut detectează un stimul pe care îl raportează la o scară fizică absolută, invariantă condițiilor de măsurare, în timp ce unul relativ produce un semnal ce relatează un anumit caz particular. [18]

4.1 Senzorul de lumină TSL2561

TSL2561 reprezintă o familie de convertoare foton-digital ce transformă intensitatea luminoasă în semnal digital, capabile de a suporta interfețe C (TSL2561) sau SMBus (TSL2560). Fiecare dispozitiv combină o fotodiodă de un singur spectru (vizibil și infraroșu) și o altă fotodiodă capabilă de a răspunde în spectrul infraroșu, pe un singur circuit integrat CMOS, capabil de a oferi un răspuns aproape fotonic într-un interval dinamic de 20 biți (rezoluție de 16 biți). [16]

Două integrate de tip ADC (analog-to-digital) convertesc curenții fotodiodelor în semnal de ieșire digital ce ilustrează radianța măsurată pe fiecare canal. Ieșirea digitală poate servi drept intrare pentru un microprocesor unde luminanța (nivel ambiental de lumină) în lucși este derivată utilizând o formulă experminentală, spre a aproxima răspunsul ochiului uman. TSL2560 permite o înterupere de tipul SMB-Alert, pe când TSL2561 suportă nivelul tradițional de întrerupere ce rămâne sub statutul de ”pozitiv” (afirmat) până când firmware-ul îl modifică. [16]

Deși, sunt utile în dezvoltarea aplicațiilor pentru detecția luminii, TSL2561 sunt totodată proiectate și pentru display-uri speciale (LCD, OLED etc.) în scopul de a prelungi durata bateriei și a oferi clientului o vizualizare optimă în orice condiții de iluminare. Lumina din spatele display-ului, ce poate utiliza până la 30-40% din puterea totală a dispozitivului, poate fi administrată cu usurință. De asemenea, ambele dispozitive sunt ideale pentru controlul iluminării tastaturii, bazată pe condițiile ambientale. Luminanța mai poate fi folosită și pentru a administra timpul de expunere pentru camerele digitale. TSL2560/61 sunt ideale pentru laptop-uri, tablete, PC-uri, monitoare LCD, televizoare de tip plasmă, telefoane și camere digitale. Alte aplicații ale acestora ar include și sitemul de iluminare stradală, lumini de securitate, utilizarea razelor solare (precum panourile), viziune pentru mașinării și instrumente din domeniul automotiv. [16]

Figura 4.1 Schema bloc funcțională TSL2561 [16]

Dispozitivele din familia TSL2561 sunt senzori de lumină ambientală de generație a doua. Fiecare conține două integrate de tipul analogic-digital (ADC-uri) ce acumulează curenți de la două fotodiode. Integrarea ambilor curenți, de pe cele două canale, se petrece simultan. Odată cu realizarea procesului de conversie, rezultatul este transferat la registrele de date Channel 0, și respectiv, Channel 1. Transferurile de acest gen sunt trecute prin memoria tampon de două ori, pentru a asigura că integritatea datelor se păstrează. După realizarea transferului, dispozitivul începe automat următorul ciclu de integrare. Comunicarea către echipament este realizată folosind standardul SMBus cu două fire sau C cu magistrală serială. [16]

În consecință, TSL2651 poate fi conectat cu usurință la un microcontroler sau imbricat în cadrul unuia. Nu este necesar un circuit extern pentru recondiționare a semnalului, astfel economisind fabricarea altui PCB. Din moment ce ieșirea lui TSL2561 este digitală, intrarea este efectiv imună la zgomot, în comparație cu un una analogică. Totodată, TSL2561 suportă întreruperi ce simplifică și îmbunătățește eficiența sistemului prin eliminarea necesității unui senzor de măsurare a valorii intensității luminii. Acest concept poate fi definit atât de utilizator, în termeni de intensitate a luminii și timp, sau persistență, cât și drept o schimbare în luminozitate. TSL2561 prezintă abilitatea de a defini un prag deasupra și dedesubtul nivelului de lumină curent. O înterupere este generată atunci când valoarea unei conversii depășește una dintre aceste limite. [16]

Tabel 4.1 Evaluări maxim absolute

Convertorul analog-digital

TSL2561 conține două convertoare de tip ADC ce integrează curenții recepționați pe canalul 1 și 2 de la fotodiode. Integrarea ambelor canale se petrece simultan, iar odată ce conversia a fost realizată, rezultatul este transferat tot prin canalul 1, respectiv 0, către registrele de date. Transferurile trec de două ori prin memoria tampon pentru a asigura faptul că datele nu se pierd pe drum. După realizarea transferului, procesul de conversie se reia automat.

Interfața digitală

Controlul lui TSL2651 este realizat printr-o interfată alcătuită după standardul ”două-fire” serial, ce unesc un set de registre ce oferă acces la astfel de funcții, iar totodată, la datele de ieșire. Interfața serială este compatibilă cu System Management Bus (SMBus) versiunile 1.1 și 2.2, iar totodată cu modul Fast-Mode al lui C. TSL2561 oferă trei adrese de tip ”slave” ce pot fi selectabile prin intermediul unui pin extern (ADDR SEL). [16]

Protocoalele SMBus și C

Fiecare protocol de trimitere (Send) și scriere (Write) reprezintă, în esență, o serie de octeți. Un byte trimis către TSL2561, cu cel mai important bit (MSB) egal cu 1, va fi interpretat drept un ”octet de COMANDĂ”. Cei mai puțin semnificativi 4 biți ai byte-ului de COMANDĂ formează un registru de selectare a adresei, ce este utilizat pentru a fixa destinația pentru biții transmiși. [16] TSL2561 răspunde la oricare cerere de ”Request Byte” cu conținutul registrului specificat de către adresa primită. TSL2561 implementează următoarele protocoale de tip SMB 2.0:

Protocolul de trimitere a octetului (Send Byte);

Protocolul de recepționare a octetului (Receive Byte);

Protocolul de scriere a octetului (Write Byte);

Protocolul de scriere a cuvântului (Write Word);

Protocolul de citire a cuvântului (Read Word);

Protocolul de blocare a scrierii (Block Write);

Protocolul de blocare a citirii (Block Read); [16]

TSL2561 implementează următoarele protocoale specifice Philips Semiconductor C:

Protocol pentru citire combinată (C Read Combined);

Protocol de scriere al C;

Formatele de date suportate de dispozitivile TSL2561 sunt :

Transmițătorul master transmite receptorului slave (SMBus și C): în acest caz direcția transferului nu se schimbă;

Master citește slave-ul imediat după primul byte (doar SMBus): la momentul primei recunoașteri (furnizate de către receptorul slave) emițătorul master devine un receptor master iar receptorul slave devine un transmițător slave;

Formatul combinat (SMBus și C): în timpul schimbării de direcție în cadrul unui transfer, master repetă atât condiția de START cât și adresa slave dar cu bitul R/W inversat. În acest caz, receptorul master termină transferul prin generarea pe ultimul octet a lui NACK și o condiție de STOP. [16]

Setul de registre

Familia TSL256X este controlată și monitorizată cu ajutorul a 16 registre de date (dintre care 3 sunt rezervate) și un registru de comandă, ce poate fi accesat prin interfață serială. Aceste registre prezintă o varietate de funcții pentru control și pot fi citite pentru a determina rezultatele conversiilor cu ADC. Setul de registre este prezentat sumar în tabelul 2: [16]

Tabel 4.2 Set de registre al senzorului TSL2561

4.2 Comanda motoarelor de curent continuu folosind puntea H

Motorul de curent continuu prezintă o importanță în acționările de reglaj de viteză dezvoltându-se atât ca fabricație cât și ca utilizare. Acesta este din ce în ce mai utilizat în tracțiunea electrică, instalații de transport și ridicat, etc. [20]

Pentru a putea controla acest motor este nevoie de un montaj special cunoscut și sub numele de ”punte totală”; acest circuit poartă denumirea aferentă deoarece prezintă patru elemente de comutare, dispuse în ”colțurile” literei H, bara ce formează litera fiind motoarele. [17]

Puntea H reprezintă un circuit electronic care este capabil să schimbe polaritatea tensiunii de alimentare a unui consumator; ea poate fi construită din componente discrete (tranzistoare, relee) sau poate fi disponibilă sub forma unor circuite integrate (ca și în cazul nostru). [20]

Figura 4.2 Punte obișnuită

Puntea obișnuită este prezentată în figura de mai sus.

Elementul cheie constă în faptul că sunt, din punct de vedere teoretic, patru comutatoare plasate în punte. Aceste elemente poartă denumirea de S1, S2, S3 și S4.

Când cele două comutatoare S1 și S4 sunt închise, iar S2 și S3 sunt deschise, va fi aplicată o tensiune pozitivă asupra motorului iar în caz contrar, această tensiune este inversată.

Comutatoarele sunt pornite în perechi, fie S1 cu S4, sau S3 cu S2, dar niciodată nu pot fi acționate două din aceeași parte a punții. [17]

Dacă ne aflăm în acest caz nefavorabil, se crează un scurt circuit între borna de plus și borna de minus a bateriei. Acest fenomen este cunoscut sub numele de ”scurt în Modul de Comutare al Sursei de Curent” (SMPS). Dacă puntea este suficient de puternică va absoarbe acea încărcătură, iar bateriile se vor descărca foarte rapid. Însă, de obicei, comutatoarele aflate în scurt se topesc.

Pentru a alimenta motorul, este necesară pornirea perechii de comutatoare ce sunt diagonal opuse. [17]

Figura 4.3 Pornire pe perechi

Fluxul de curent este desenat cu verde. Astfel, pe masură ce curentul se scurge precum în figura noastră, motorul începe să funcționeze într-o directie ”pozitivă”. Dar, ce se întamplă dacă pornim comutatorul S3 și S4? Fluxul curentului își va schimba sensul, făcând astfel ca motorul să funcționeze în direcția opusă celei inițiale. Tot ce poate transmite curent va funcționa, de la patru comutatoare SPST (single-pole, single-throw), un DPDT (double-pole, double-throw), fire, tranzistoare, până la modele de putere MOSFET (metal–oxide–semiconductor field-effect transistor). [17]

Dacă fiecare comutator poate fi controlat independent, atunci se pot realiza unele obiective interesante cu ajutorul acestei punți, pe care unii o denumesc ”dispozitiv cvadrant” (4QD). Dacă este construită doar pe baza unui DPDT, atunci putem controla doar sensul motorului. De asemenea, se poate construi o mică tabelă de adevăr, ce prezintă statutul fiecărui comutator, văzând astfel cum se comportă puntea în fiecare situație.

Cum fiecare comutator prezintă două stări, și avem patru astfel de dispozitive, înseamnă că sunt 16 posibile stări. Însă, din moment ce există și stări în care sunt pornite ambele părți (ceea ce conduce la arderea punții), sunt de fapt doar 4 stări utile (de unde numele de ”cvadrant”) în care tranzistorii sunt deschiși. [17]

Tabel 4.3 Tabelul de stări al Punții H

Ultimele rânduri descriu fenomenul de scurtcircuitare, în care motorul tinde să acționeze împotriva unei forțe ce se opune acestuia. Rotația motorului generează tensiune ce încearcă să îl forțeze spre a se întoarce într-o direcție opusă. Acest lucru poate opri motorul brusc, fapt ce poartă denumirea de ”frânare” în majoritatea punților H. Dar există și o stare în care toate tranzistoarele sunt oprite. În acest caz, motorul încetinește până la oprire. [17]

4.3 Circuitul integrat L298P. Driverul de motoare Ardumoto.

Cel mai utilizat modul de control al motoarelor este prin folosirea circuitului integrat SGS Thompson L298 care încorporează 2 punți H într-o singură capsulă, deci se pot controla 2 motoare independent și în același timp. [15]

L298P este un circuit integrat monolitic în interiorul pachetelor 15-lead Multiwatt și PowerSO20 (în cazul nostru).

Figura 4.4 Circuitul integrat L298P [15]

Este o punte H de tensiune ridicată și curent dual înalt, proiectat pentru a accepta standardul TTL logic și pentru a controla dispozitive inductive precum relee, solenoide, motoare DC sau stepper. Prezintă două intrări prin intermediul cărora se decide dacă dispozitivul funcționează independent sau nu față de semnalul de la intrare. Emițătoarele tranzistoarelor din partea de jos a punții sunt conectate împreună, iar terminalul extern corespunzător acestora poate fi utilizat pentru a lega un rezistor ce va acționa drept senzor. Totodată, prezintă și o intrare suplimentară pentru sursa de curent, făcând funcționabil nivelul logic și la putere mică. [15]

Figura 4.5 – Diagrama Bloc a circuitului integrat L298P

STADIUL DE PUTERE LA IEȘIRE

L298 înglobează două stagii de putere la ieșire (A și B). Stagiul de putere la ieșire reprezintă o configurație a punții astfel încât ieșirile pot produce o încărcătură inductivă în modul comun sau diferențial, în funcție de intrare. Fluxul curentului în asemenea încărcături provine de la punte în sensul ieșirii; un rezistor extern (RSA; RSB) permite detecția intensității acestui curent. [15]

STADIUL DE LA INTRARE

Fiecare punte este comandată de patru porți de intrare, sub numele de In1, In2, EnA și In3, In4, EnB. Intrările notate cu ”In” setează puntea într-un stagiu unde intrările ”En” sunt pe ”tensiune înaltă”; un stadiu de ”jos” pe ”En” determină opusul pentru ”In”. Toate intrările sunt compatibile cu standardul TTL. [15]

Un condensator non-inductiv, de obicei de 100 nF, trebuie prevăzut între Vs și Vss, plasat cât mai aproape de GND. Atunci când condensatorul de mare putere este prea departe de IC, un al doilea mai mic trebuie să fie în apropierea lui L298. Rezistorul ce acționează drept senzor trebuie să prezinte înpământare în apropierea polului negativ al lui Vs, ce se află implicit aproape de pinul GND al lui IC. Fiecare intrare trebuie conectată la sursa semnalelor ce o comandă în drumuri cât mai scurte. Intrarea de ”Enable” trebuie să fie setată pe un ”stadiu jos” (low state) înainte de a porni sau a opri sursa de tensiune. [15]

CAPITOLUL 5

– Realizare practică–

5.1 Implementarea Hardware

Pentru a realiza implementarea hardware am folosit următoarele componente:

Shield-ul Ardumoto este o platformă compatibilă cu platforma Arduino UNO care poate controla 2 motoare de curent continuu. Arduino nu este destul de puternic când vine vorba de motoare și din această cauză puterea dată de porturile sale este insuficientă pentru a învârti un motor.

Dacă se conectează un motor electric direct la portul Arduino, se va arde procesorul de pe acesta. Astfel la conectarea oricărui motor, chiar și de mică putere este nevoie de o platformă specială, în cazul nostru Ardumoto care permite încărcarea de putere din sursa de alimentare.

Figura 5.2 Shield-ul Ardumoto

Driverul este bazat pe circuitul integrat L298P H-bridge care poate oferi la ieșire un curent maxim de 2A și utilizat în majoritatea cazurilor pentru a controla motoarele de voltaj mic.

Este un driver cu 2 canale, astfel fiecare canal poate alimenta motorul cu 2A și poate conține 2 tipuri de intrări pentru a controla motorul: una de direcție (dacă motorul se învârte în sensul acelor de ceasornic sau invers) și una de viteză (conține 2 valori: high pentru a face motorul sa se miște și low pentru a-l opri). Pentru a varia viteza unui motor va trebui să variem tensiunea aplicată la bornele acestuia cu ajutorul PWM-ului iar led-urile din dreptul fiecărui canal vor semnala în ce direcție se va mișca acesta.

Schema Shield-ului Ardumoto este următoarea :

Figura 5.3 Schema Shield Ardumoto [25]

Senzorul TSL2561 este un senzor de lumină complex, în comparație cu senzorii simpli, acesta măsoară atât infraroșu cât și lumina vizibilă pentru a aproxima mai bine răspunsul ochiului uman. Fiind un senzor integrat, acesta poate măsura cantități mici dar și mari de lumină schimbând timpul de integrare.

Figura 5.4 Senzor de lumină TSL2561 – vedere din față

Figura 5.5 Senzor de lumină TSL2561 – vedere din spate

Acest senzor conține două integrate de tip analogic-digital (ADC) ce acumulează curenți de la două fotodiode. Comunicarea către echipament este realizată folosind C.

TSL2561 se poate conecta la un microcontroler sau imbricat în cadrul unuia; și poate suporta întreruperi ceea ce îmbunătățește eficiența sistemului prin eliminarea necesității unui senzor de măsurare a valorii intensității luminii.

Schema senzorului de lumină este următoarea:

Figura 5.6 Schema senzorului de lumină

Convertorul de nivel logic bi-direcțional este un dispozitiv mic care coboară în siguranță semnalele de 5V la 3,3V și ridică semnalele de 3,3V la 5V. Acesta are capacitatea de a converti 4 pini de pe parte de sus la 4 pini de pe partea de jos (LV4, LV3, LV2, LV1 cu HV4, HV3, HV2, HV1). Pe fiecare parte sunt furnizate 2 intrări și 2 ieșiri. Poate fi folosit cu orice semnal semnal digital de exemplu C, SPI.

Figura 5.7 Convertor de nivel logic bi-direcțional – vedere față

Figura 5.8 Convertor de nivel logic bi-direcțional – vedere spate

Convertorul de nivel se folosește foarte ușor cu placa; astfel ea poate fi alimentată de la două surse de voltaj: voltajul mare (cel de 5V) la pinul ”HV” iar voltajul mic (cel de 3,3V) la pinul ”LV”.

Pentru a realiza nivelul bi-direcțional este nevoie de o pereche de rezistori pull-up și un tranzistor MOFSET cu canal de tip n ca în figura de mai jos :

Figura 5.9 Schemă convertor de nivel bi-direcțional

Protoshield-ul permite conexiuni ușoare între un Arduino și un breadboard și este folosit pentru a facilita realizarea proiectelor.

Figura 5.10 Protoshield

Deoarece contează foarte mult și aspectul proiectului, pentru a nu aglomera conectarea componentelor am ales acest protoshield pe care am conectat senzorul de lumină și convertorul de nivel bi-direcțional.

Motorul de curent continuu prezintă o importanță deosebită în acționările de reglaj de viteză fiind din ce în ce mai utilizat pentru componentele electronice (imprimantă) sau acționarea mașinilor unelte, instalații de transport și ridicat, etc.

Fiecare motor de curent continuu este alcătuit din 2 elemente principale: statorul care reprezintă partea fixă a motorului ce include magneții permanenți și rotorul care reprezintă partea mobilă a motorului, plasată de obicei în interior. Rotorul este format dintr-un ax pe care este situat colectorul având rolul de a schimba sensul curentului.

Figura 5.11 Motor H-H

Pentru a capta energia maximă de la soare, am folosit un motor H-H; acesta este folosit în majoritatea cazurilor pentru antena satelit deoarece este capabil să miște antena din orizont în orizont (Horizont-Horizont). Din cauză că acest motor oferă multă putere a fost nevoie de unele modificări ale sursei de tensiune pentru a putea fi suportat de plăcuța arduino. Deoarece la ieșirea microcontrolerelor sunt furnizate valori mici ale curentului și tensiunii, pentru a acționa un motor de curent continuu este nevoie de un circuit de amplificare precum ”Puntea H” încorporată în shieldul Ardumoto.

Modul de alimentare

Pentru a se realiza orientarea sistemului va trebui să fie alimentat la o sursă de tensiune de curent continuu. Această sursă de curent continuu va trebui să ofere o tensiune între 9V și 12V și un curent de cel puțin 1,5A pentru a oferi destulă putere celorlalte componente. Acest lucru este cerut în special de motorul de curent continuu H-H.

Figura 5.12 Alimentator 12V-2A

Aplicarea unei tensiuni mai mici decât tensiunea standard de funcționare a unui modul poate produce erori sau poate duce la nefuncționalitatea acelui dispozitiv, în timp ce aplicarea unei tensiuni mai mari poate provoca arderea dispozitivului. Acestea fiind spuse, tensiunea principală de alimentare trebuie redusă.

5.2 Implementarea Software

CAPITOLUL 6

– Concluzii –

Lucrareap dep fațăp ap urmăritp săp aducăp înp discuțiep aspectelep legatep dep optimizareapeficiențeipconversieipfotovoltaicepprinpmărireapgraduluipdeputilizarepapenergieip solare,pfolosindmmecanismepdeporientarepapmodulelorăfotovoltaice.mSoluțiampropusămpentum orientareamautomatămampanouluimsolarmînmfuncțiemdemmișcareamSoarelui,maremlambazăm senzorulmdemluminămcaremoferăminformațiimînmceeamcempriveștemmișcareammișcareamși luminozitateamSoarelui.

Putem spune că acest domeniu se află încă în faza incipientă a dezvoltării și ne așteptăm la progrese considerabile și descoperiri remarcabile în acest domeniu.

Această lucrarea de față constituie totodată și o introducere în domeniul microcontrolerelor; studiul, analiza, mărimilor de intrare-ieșire într-un microcontroler, a elementelor de interfațare și a mediuliu de programare si compilare.

Utilizarea unui microcontroler în soluționarea sistemului de comandă și control a unui sistem de urmărire are avantajul flexibilității implementării practice a soluției, deoarece soluția aleasă poate fi modificată și optimizată soft.

Folosirea unei instalații de urmărire a mișcării Soarelui mărește randamentul unui panou fotovoltaic cu până la 35%, ținându-se cont și de pierderile de energie datorate consumului propriu al instalației.

Implementarea practică a fost realizată punându-se accent pe componente electronice, mecanisme și piese ușor accesibile.

Lucrul la acest proiect a fost unul benefic pentru mine întru-cât mi-am aprofundat cunoștințele în acest domeniu și pot spune că mi-a trezit interesul de a putea continua cu acest lucru pe viitor

 6.1 Concluzii și perspective de dezvoltare

Următorul pas al acestui proiect va fi îmbunățirea acestuia prin adăugarea de senzori suplimentari care să furnizeze informații referitoare la temperatură, umiditatea și presiunea aerului. De asemenea, partea de acționare pentru rotirea panoului va fi înlocuită cu un motor pas cu pas unipolar care va fi comandat cu ajutorul unui driver realizat cu tranzistoare mosfet cu canal n, oferind astfel un randament mult mai bun față de driverul ce conține tranzistoare bipolare, utilizat în prezent. Motorul pas cu pas oferă o precizie mult mai bună asupra poziției panoului, deoarece el poate fi comandat să rotească pe distanțe unghiulare mici (15 ° sau 30 °).

Partea de alimentare a montajului ce alimentează motorul și partea de comandă va fi înlocuită cu un sistem pe bază de acumulatori (Lithium-polymer) ce va conține un convertor coborâtor de tensiune care va încărca atât acumulatorul dar va alimenta și întreg montajul preluând energia necesară direct din panoul solar, astfel se obține un sistem independent.

Pentru o bună monitorizare și control asupra montajului va fi implementat un protocol de comunicație fără fir ce va comunica prin intermediul unui rooter cu o interfață grafică realizată în mediul de dezvoltare LabVIEW produs de cei de la National Instruments. Interfața grafică va putea afișa în timp real datele de la senzori și va salva datele acestora într-un fișier cu extensia .txt pentru a putea fi prelucrate ulterior dacă este necesar.

În final va rezulta un sistem destul de performant și simplu, realizat cu costuri reduse.

BIBLIOGRAFIE

[1] http://www.slideshare.net/fbconnect/landingpage?from=%2FASJamwal%2Fsolar-tracking-system-report%3Ffrom_action%3Dsave

[2] http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1060&context=eesp

[3] http://www.researchgate.net/publication/228868717_Solar_Tracker_cu_algoritm_matematic

[4] http://www2.unitbv.ro/LinkClick.aspx?fileticket=RHXY4w7mi10%3D&tabid=4579

[5] http://www.doityourself.com/stry/6-ways-to-improve-solar-cell-efficiency#b

[6] http://www.pveducation.org/pvcdrom/introduction/solar-energy

[7] http://en.wikipedia.org/wiki/Solar_tracker

[8] http://en.wikipedia.org/wiki/Solar_energy

[9] http://andrei.clubcisco.ro/cursuri/f/f-sym/2ad/02.pdf

Foaie de catalog

[10] http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

[11] http://incearca.softwareliber.ro/2008/06/30/arduino-platforma-gratuita-pentru-pasiona%C8%9Bii-de-electronica/

[12] http://anycomponents.fnhost.org/prezentare-platforma-arduino/

[13] http://www.roroid.ro/prima-lectie/

[14] http://www.arduino.cc/en/Main/ArduinoBoardUno

Foaie de catalog

[15] http://www.st.com/web/en/resource/technical/document/datasheet/CD00000240.pdf

[16] http://www.adafruit.com/datasheets/TSL2561.pdf

[17] http://www.mcmanis.com/chuck/robotics/tutorial/h-bridge/

Carte

[18] Jacob Fraden, Handbook of Modern Sensors , Editura Springer

[19] Constantin Ungureanu, Dorel Cernomazu, Motoare electrice solare de construcție specială, Editura Matrix Rom

[20] http://www.electronicstefan.ro/2012/01/ce-este-puntea-h/

[21] https://en.wikipedia.org/wiki/Microcontroller

[22] Radu Rădescu, Arhitectura Sistemelor de Calcul, Editura Politehnica Press

[23] http://www.promacht.ro/solar/panouri.html

[24] http://tekduino.blogspot.ro/2011/08/lectia-5-ardumoto.html

[25] https://learn.sparkfun.com/tutorials/ardumoto-shield-hookup-guide

[26] http://www.cursuri.flexform.ro/courses/L2/document/Cluj- Napoca/grupa4/Narosi_Sanda/site/mcc.html

Similar Posts