Suport Panou Solar cu Urmărire Automată

Introducere

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.

Descriere generală

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:

  • Un panou solar de 6V, montat pe un suport mobil;
  • Două servomotoare SG90, care permit mișcarea suportului pe două axe;
  • Patru fotorezistori (LDR 5528), care detectează intensitatea luminii din patru direcții diferite;
  • Un microcontroller Arduino Uno, care preia valorile de la fotorezistori și controlează poziția servomotoarelor în funcție de diferențele de lumină;
  • Un senzor de curent (ACS712) care măsoară curentul generat de panou;
  • Un panou LCD cu interfață I2C, care afișează în timp real curentul măsurat.

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.

schemabloc_stefanivanov.jpg

Hardware Design

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.

Listă de piese

  • Arduino UNO
  • 2× Servomotoare SG90
  • 4× Foto-rezistoare (LDR)
  • 4× Rezistențe 10kΩ
  • Rezistență 10Ω
  • LCD 16×2 cu I2C
  • Senzor curent ACS712 5A
  • Panou solar 6V
  • Breadboard + fire de conexiune

Componenta conectata la panoul solar este un senzor de curent ACS712 5A.

Interfețe și comunicație cu microcontrollerul

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.

Configurația pinilor

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 D2 PWM Control unghi prin semnal PWM
Servomotor 2 D3 PWM Control unghi prin semnal PWM
LCD I2C D8 (SDA), D9 (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

Bill of Materials

Nr. Componenta Descriere Datasheet / Sursa
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° [http://www.ee.ic.ac.uk/pcheung/teaching/DE1_EE/stores/sg90_datasheet.pdf]
3 Foto-rezistor (LDR) ×4 Rezistor dependent de lumină [https://www.alldatasheet.com/html-pdf/1131893/ETC2/GL5528/110/1/GL5528.html]
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://handsontec.com/dataspecs/module/I2C_1602_LCD.pdf]
6 Senzor curent ACS712 5A 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.emag.ro/panou-solar-6v-3-5w-ai1407/pd/D3TD8GMBM/]

Schema electrica

Software Design

Logica software a fost implementată și testată cu succes pe placa 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. De asemenea, au fost implementate cu succes senzorul de curent ACS712, afișajul LCD I2C și panoul solar.

Motivația alegerii bibliotecilor

Pentru controlul ecranului LCD I2C, am utilizat inițial librăria LiquidCrystal_I2C, deoarece oferă o interfață simplă și eficientă pentru afișajele compatibile. Totuși, având nevoie să eliberăm pinii analogici A4 și A5 pentru alți senzori, am optat pentru librăria SoftwareWire, care permite comunicarea I2C prin alți pini digitali. În acest context, am folosit un fork compatibil, LiquidCrystal_SoftI2C (Arduino-LiquidCrystal-SoftI2C-library), care integrează suportul pentru SoftwareWire, permițând astfel conectarea LCD-ului I2C fără a compromite pinii analogici standard. Pentru controlul servo, am folosit biblioteca Servo.h, deoarece este standard în Arduino și oferă un control precis cu consum redus de resurse.

Legătura cu laboratoarele

Î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 I2C pentru comunicarea cu afișajul LCD. Folosirea SoftwareWire demonstrează cum se poate replica protocolul I2C în lipsa pinilor dedicați.

Structura codului și validarea funcționalităților

Codul este organizat într-o manieră clară și funcțională, folosind funcții dedicate pentru principalele componente logice ale sistemului:

  • smoothAnalogRead(pin) – efectuează o medie pe 10 citiri analogice pentru fiecare senzor LDR, asigurând stabilitatea valorilor;
  • UpDown(avgT, avgB) – controlează mișcarea verticală a panoului în funcție de diferența de lumină între senzorii superiori și inferiori;
  • LeftRight(avgL, avgR) – controlează mișcarea orizontală a panoului în funcție de diferența de lumină între senzorii din stânga și din dreapta.

Funcționalitățile au fost validate pe hardware-ul real, panoul urmărind corect lumina solară în ambele axe cu ajutorul celor două servomotoare SG90. Valorile senzorilor sunt afișate prin portul serial, iar afișajul LCD I2C confirmă pornirea corectă a sistemului. 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ă.

Calibrarea elementelor de senzoristică

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.

Calibrarea elementelor de senzoristică

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.

Senzorul de curent ACS712 a necesitat și el calibrare, întrucât semnalul de ieșire are un offset de aproximativ 2.5V (corespunzător la 0A). De asemenea, senzorul are și un factor de sensibilitate de 100 mV/A.

Pentru afișajul LCD I2C, am verificat lizibilitatea textului și poziționarea acestuia pe cele două linii ale ecranului (16×2), pentru a asigura o prezentare clară a valorilor.

Implementarea

ivanovstefan1.jpg ivanovstefan2.jpg

GitHub / Codul sursă

Demo

pm/prj2025/ajipa/stefan.ivanov0604.txt · Last modified: 2025/05/30 00:58 by stefan.ivanov0604
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0