This is an old revision of the document!
Acest proiect constă în realizarea unui suport motorizat pentru un panou solar, capabil să se orienteze automat în funcție de direcția luminii solare. Scopul principal este creșterea eficienței captării energiei prin poziționarea optimă a panoului pe parcursul zilei, pe două axe, orizontal și vertical. De asemenea, va fi afișat pe un ecran și curentul captat de panoul fotovoltaic.
Ideea proiectului a pornit de la observația că majoritatea panourilor solare sunt poziționate static, fără să urmărească soarele, ceea ce duce la o potențială pierdere semnificativă a energiei.
Proiectul este util atât din punct de vedere educațional, deoarece implică concepte studiate la facultate, și din punct de vedere practic, putând fi aplicat în sisteme de captare a energiei solare.
Proiectul este compus din mai multe module care colaborează pentru a asigura orientarea automată a unui panou solar în direcția optimă față de sursa de lumină.
Partea hardware include:
Modulul software implementat pe Arduino citește valorile de lumină de la fotorezistori și determină direcția către care panoul trebuie să se orienteze pentru a maximiza captarea luminii. De asemenea, este prelucrată curentului, iar rezultatele sunt afișate pe ecran. Astfel, sistemul asigură o urmărire continuă a sursei de lumină și oferă feedback despre eficiența energetică a orientării curente.
Pentru realizarea proiectului, se folosește un Arduino UNO care controlează două servomotoare SG90 pentru orientarea panoului solar pe două axe. Patru foto-rezistoare (LDR) sunt montate în colțurile panoului și conectate prin divizoare de tensiune cu rezistențe de 10kΩ pentru a detecta direcția luminii. Valorile analogice citite sunt procesate pentru a orienta panoul spre cea mai puternică sursă de lumină. Ecranul LCD 16×2 cu interfață I2C afișează informații despre poziția curentă și intensitatea luminii. Alimentarea este asigurată de un panou solar conectat la un senzor de curent ACS712, pentru a monitoriza energia produsă. Toate componentele sunt montate pe o placă de test (breadboard) și alimentate fie prin USB, fie direct de la panoul solar.
Componenta conectata la panoul solar este un senzor de curent ACS712 20A.
Microcontrollerul utilizat este un Arduino UNO bazat pe ATmega328P. Acesta comunică cu componentele prin mai multe tipuri de interfețe. Cei patru foto-rezistori (LDR) sunt conectați la intrările analogice ADC ale plăcii, pentru a permite citirea valorilor de tensiune proporționale cu intensitatea luminii. Cele două servomotoare SG90 sunt controlate prin semnal PWM generat pe ieșiri digitale. Afișajul LCD 16×2 cu modul I2C se conectează prin magistrala I2C prin intermediul librăriei SoftwareWire, care emulează protocolul I2C prin software. Senzorul de curent ACS712 este conectat la o intrare analogică și furnizează o tensiune proporțională cu curentul măsurat, care este convertită de convertorul ADC al Arduino.
Pinii Arduino UNO au fost alocați strategic pentru a asigura compatibilitatea cu funcțiile fiecărei componente, evitând conflictele și maximizând numărul de senzori analogici disponibili. Tabelul de mai jos prezintă configurația exactă:
Componentă | Pini Arduino | Tip semnal | Justificare utilizare |
---|---|---|---|
LDR1 | A2 | Analog (ADC) | Citire lumină – senzor analogic |
LDR2 | A3 | Analog (ADC) | Citire lumină – senzor analogic |
LDR3 | A4 | Analog (ADC) | Citire lumină – senzor analogic |
LDR4 | A5 | Analog (ADC) | Citire lumină – senzor analogic |
Servomotor 1 | D9 | PWM | Control unghi prin semnal PWM |
Servomotor 2 | D10 | PWM | Control unghi prin semnal PWM |
LCD I2C | D2 (SDA), D3 (SCL) | I2C software | Emulare I2C cu `SoftwareWire` pentru a elibera A4/A5 |
Senzor curent ACS712 | A0 | Analog (ADC) | Măsurare curent analogic generat de panoul solar |
Alimentare | 5V, GND | Tensiune DC | Alimentare comună pentru toate modulele |
Nr. | Componentă | Descriere | Datasheet |
---|---|---|---|
1 | Arduino UNO | Placă de dezvoltare compatibilă cu ATmega328P | [https://docs.arduino.cc/hardware/uno-rev3] |
2 | Servomotor SG90 ×2 | Servomotor micro de 9g, rotație ~180° | [https://datasheet.lcsc.com/lcsc/1811141530_TowerPro-SG90_C145016.pdf |
3 | Foto-rezistor (LDR) ×4 | Rezistor dependent de lumină | [https://www.sparkfun.com/datasheets/Sensors/General/Photocell.pdf |
4 | Rezistență 10kΩ ×4 | Rezistență fixă pentru divizoare de tensiune | [https://www.vishay.com/docs/28721/cmfr.pdf |
5 | LCD 16×2 cu I2C | Afișaj alfanumeric 16 caractere × 2 linii, cu interfață I2C | [https://www.waveshare.com/wiki/16x2_LCD_Module |
6 | Senzor curent ACS712 20A | Senzor Hall pentru măsurarea curentului continuu și alternativ | [https://www.allegromicro.com/-/media/files/datasheets/acs712-datasheet.ashx |
7 | Panou solar 6V | Panou fotovoltaic de 6V pentru alimentare sau încărcare | [https://www.pololu.com/file/0J868/solar-cell-5V-100mA-datasheet.pdf |
La acest moment, logica software a fost implementată și testată cu succes pe Arduino UNO. Citirea valorilor analogice de la cei patru senzori LDR funcționează corect, iar algoritmul de decizie determină orientarea optimă a panoului solar. Controlul celor două servomotoare SG90 este stabil, permițând mișcarea pe ambele axe. Urmează să implementez senzorul de curent ACS712, și afișajul LCD I2C.
Pentru controlul ecranului LCD I2C, am utilizat librăria LiquidCrystal_I2C, deoarece oferă o interfață simplă și eficientă pentru afișajele compatibile. Având nevoie să eliberăm pinii analogici A4 și A5, am optat pentru librăria SoftwareWire, care permite comunicarea I2C prin alți pini digitali, fără a compromite protocolul. Pentru controlul servo, am folosit biblioteca Servo.h, deoarece este standard în Arduino și oferă un control precis cu consum redus de resurse.
În cadrul proiectului sunt aplicate concepte studiate în laboratoare precum: citirea semnalelor analogice prin ADC (pentru LDR și ACS712), generarea de semnal PWM pentru controlul servomotoarelor, utilizarea magistralei I2C pentru comunicarea cu afișajul LCD și organizarea codului în funcții modulare. Folosirea SoftwareWire demonstrează cum se poate replica protocolul I2C în lipsa pinilor dedicați.
Codul este organizat modular, cu funcții separate pentru:
Funcțiile sunt apelate secvențial în bucla principală (`loop()`), asigurând o actualizare în timp real a poziției panoului și a valorii curentului. Fiecare componentă a fost testată individual și apoi integrată în sistemul complet. Validarea s-a realizat prin teste în condiții de iluminare variabilă.
Pentru a asigura funcționarea corectă a sistemului, a fost necesară calibrarea senzorilor utilizați în proiect. În cazul celor patru foto-rezistori (LDR), s-a observat că aceștia pot avea valori ușor diferite chiar și în condiții identice de iluminare, din cauza toleranțelor de fabricație. Pentru a compensa aceste diferențe, am efectuat citiri multiple în condiții de lumină uniformă și am salvat valorile medii ale fiecărui LDR ca valori de referință. În cod, diferențele dintre citirile curente și cele de referință sunt normalizate pentru a obține o evaluare mai precisă a direcției luminii.
—————–(https://youtube.com/shorts/mDJu763XBK0?feature=share)——————
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj20??:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dumitru Alin, 331CC → :pm:prj2009:cc:dumitru_alin.