This shows you the differences between two versions of the page.
pm:prj2022:imacovei:panou_solar_inteligent [2022/05/12 17:44] stefan.saraev [Bibliografie/Resurse] |
pm:prj2022:imacovei:panou_solar_inteligent [2022/05/31 22:03] (current) stefan.saraev [Cod sursa] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Panou Solar Inteligent ====== | + | ====== Panou Solar Inteligent - Saraev Stefan 332CA - PM 2022 ====== |
===== Introducere ===== | ===== Introducere ===== | ||
Proiectul va consta intr-un panou solar aflat pe un suport rotativ ce se va adapta la conditiile de mediu si se va orienta spre sursa de lumina astfel incat tensiunea generata va fi maxima. | Proiectul va consta intr-un panou solar aflat pe un suport rotativ ce se va adapta la conditiile de mediu si se va orienta spre sursa de lumina astfel incat tensiunea generata va fi maxima. | ||
Line 11: | Line 11: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Calibrarea panoului se va face fie automat, daca tensiunea generata in acel moment scade sub un anumit prag sau daca a trecut un timp T de la ultima calibrare, fie manual, prin apasarea unui buton. Pentru calibrare voi folosi si un senzor de lumina, deoarece nu doresc sa calibrez dispozitivul daca nu exista lumina in jurul lui. | + | Calibrarea panoului se va face fie automat, daca tensiunea generata in acel moment scade sub un anumit prag sau daca a trecut un timp T de la ultima calibrare, fie manual, prin apasarea unui buton. |
{{:pm:prj2022:imacovei:saraev_stefan_panou_solar.png?300|}} | {{:pm:prj2022:imacovei:saraev_stefan_panou_solar.png?300|}} | ||
+ | |||
+ | {{:pm:prj2022:imacovei:circuit_simplu_saraev_stefan.png?300|}} | ||
+ | |||
+ | Modelul matematic folosit este unul relativ simplu, dar eficient. Calibrarea se realizeaza prin scanarea a 5 puncte distincte is apoi ajustarea unghiurilor de rotatie ale celor 2 servomotoare ca sa se obtina pozitia de tensiune maxima. | ||
+ | |||
+ | Modelul are la baza aproximatia ca tensiunea generata de panoul solar pentru o anumita configuratie a servomotoarelor (unghi_motor_fix, unghi_motor_mobil) este egala cu produsul scalar dintre vectorul razei de lumina si vectorul descris de configuratia servomotoarelor. Acest model respecta ideea ca, atunci cand panoul solar se afla perpendicular pe vectorul razei de lumina, tensiunea generata este maxima. De asemenea, cand panoul solar este paralel cu raza de lumina, tensiunea generata este 0. | ||
+ | |||
+ | Asta presupune ca, prin calcularea valorilor din cele 5 configuratii, programul are un sistem de ecuatii pe care trebuie sa il rezolve pentru configuratia vectorului razei de lumina. | ||
+ | |||
+ | Pentru o mai buna modelare a realitatii, voi rezolva sistemul de ecuatii dupa ce scad minimul dintre toate valorile din toate valorile obtinute in faza de scanare. Acest pas se bazeaza pe faptul ca exista lumina ambientala, ce genereaza tensiune indiferent de orientarea panoului. | ||
+ | |||
+ | O alta optimizare o reprezinta calcularea configuratiei folosind doar valorile cele mai mari din combinatiile de 2 ecuatii folosite pentru calcul. Ideea din spate este ca modelul matematic prezice tensiune negativa cand panoul este orientat cumva cu spatele la sursa de lumina (unghiul depaseste 90 de grade), pe cand in realitate am vedea tensiune 0 (sau pozitiva, dar foarte mica, datorata luminII ambientale). In acest caz, ma asigur ca voi calcula unghiurile pentru cadranul corect in care sa incadrez panoul. | ||
+ | |||
+ | Desi programul prevede si o etapa de ajustare iterativa, am observat ca nu este necesara neaparat, deoarece aproximatia matematica este satisfacatoare. | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
Line 25: | Line 39: | ||
* Rezistente | * Rezistente | ||
+ | Schema electrica: | ||
+ | {{:pm:prj2022:imacovei:schema_electrica_saraev_stefan.png?500|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | Am folosit urmatoarele concepte invatate de la PM: | ||
+ | * intreruperi - pentru buton | ||
+ | * comunicare prin interfata seriala - pentru loguri pe laptop | ||
+ | * citire de valori analogice - pentru tensiunea panoului solar | ||
+ | * PWM - pentru servo | ||
+ | |||
+ | Am structurat codul sub forma unui automat finit cu 4 stari: | ||
+ | * Init | ||
+ | * ajusteaza dupa model matematic | ||
+ | * ajusteaza dupa metoda iterativa | ||
+ | * asteapta conditie reajustare | ||
+ | |||
+ | Flow-ul este acesta: | ||
+ | |||
+ | Init -> ajusteaza dupa model matematic -> asteapta conditie reajustare | ||
+ | |||
+ | Se poate observa ca in solutia finala nu implementez metoda iterativa, deoarece adauga un overhead executabilului si am considerat ca nu adauga imbunatatiri semnificative. | ||
+ | |||
+ | Explicarea starilor: | ||
+ | ==== Init ==== | ||
+ | |||
+ | Se asteapta apasarea butonului pentru a incepe calibrarea | ||
+ | |||
+ | ==== Ajusteaza dupa model matematic ==== | ||
+ | |||
+ | Se executa algoritmul descris mai sus, cel in care calculez matematic care ar fi o pozitie buna in care panoul se poate aseza. | ||
+ | |||
+ | ==== Ajusteaza dupa metoda iterativa ==== | ||
+ | |||
+ | Aceasta stare nu este folosita, ea exista pentru actualizari ulterioare | ||
+ | |||
+ | ==== Asteapta conditie reajustare ==== | ||
+ | |||
+ | Se foloseste energia generata de panoul solar si se citeste periodic ce tensiune produce acesta. Daca variatia depaseste un prag sau daca se apasa butonul, se reincepe calibrarea. | ||
+ | |||
+ | ===== Cod sursa ===== | ||
+ | {{:pm:prj2022:imacovei:cod_sursa.zip|}} | ||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
+ | {{:pm:prj2022:imacovei:panou_pm_saraev_stefan_332ca.jpeg?300|}} | ||
+ | |||
+ | Poza cu proiectul in versiunea finala | ||
+ | |||
+ | In urma testarii, in 75% din cazuri panoul se pozitioneaza astfei incat tensiunea generata dupa calibrare este mai mare decat valorile descoperite din timpul perioadei de calibrare. In restul de 25% din cazuri, variatia de tensiune dintre cea generata in pozitia finala si cea generata pe parcursul calibrarii este sub 2.5% | ||
+ | |||
+ | Panoul este capabil sa se reorienteze la variatia tensiunii generate, si alege o directie de orientare favorabila in fiecare caz. Desi poate parea contraintuitiv daca se orienteaza cu spatele la o sursa de lumina, panoul ia in considerare toate sursele de lumina disponibile in mediul inconjurator si incearca sa maximizeze tenisunea generata. Astfel, se pot observa situatii cand panoul se orienteaza spre o reflexie a unei surse de lumina, tocmai pentru ca in acea directie are acces la o cantitate mai mare, per total. | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Panoul se poate roti dupa o sursa de lumina, timpul necesar pentru calibrare este minim, iar aproximarea matematica a avut succes in a simplifica problema. | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
+ | Am modificat modelul matematic pentru cele 2 servomotoare, din 2 vectori independenti unul de celalalt in 2 vectori dependenti: | ||
+ | * un vector ce are originea fixa, si reprezinta modul de orientare al servomotorului de la baza | ||
+ | * un vector ce are originea mobila, in varful primului vector, si reprezinta modul de orientare al celui de-al 2lea servomotor. | ||
+ | |||
+ | Miscarea vectorului mobil este una de rotatie in jurul perpendicularei pe planul bazei (in jurul verticalei), iar asta complica sistemul de ecuatii, dar rezolva multe erori de logica si, in final, ofera o aproximatie mai compatibila cu realitatea. | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||