Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:avaduva:robert_andrei.tache [2025/05/24 20:30]
robert_andrei.tache Adaugare resurse bibliografie
pm:prj2025:avaduva:robert_andrei.tache [2025/05/30 14:34] (current)
robert_andrei.tache Add conclusion
Line 76: Line 76:
 **Biblioteci folosite:** **Biblioteci folosite:**
   * **Servo.h** - Folosit initial pentru controlarea servo-urilor   * **Servo.h** - Folosit initial pentru controlarea servo-urilor
-  * **ArduinoLowPower.h** - Folosit pentru ​a evita busy-waiting+  * **avr/sleep.h** - Folosit pentru ​evitarea ​busy-waiting 
 +  * **avr/​wdt.h** - Folosit pentru WatchDog Timer 
 +  * //​**avr/​power.h** - Folosit pentru debugging/​initial pentru functii high-level de power management//​
  
 **Descriere algorithm:​** **Descriere algorithm:​**
Line 85: Line 87:
  
 Dat fiind ca soarele nu se misca foarte rapid, putem regla frecventa acestor cicluri de reglare, sensitivitatea senzorilor (adica cat de mare trebuie sa fie diferenta intre senzori pentru a se face vreo miscare) si pasul servo-urilor,​ intrucat cu o frecventa mai joasa am dori un pas mai mare. Dat fiind ca soarele nu se misca foarte rapid, putem regla frecventa acestor cicluri de reglare, sensitivitatea senzorilor (adica cat de mare trebuie sa fie diferenta intre senzori pentru a se face vreo miscare) si pasul servo-urilor,​ intrucat cu o frecventa mai joasa am dori un pas mai mare.
 +
 +In afara acestor ciclii de reglare nu dorim sa consumam multa electricitate,​ deci oprim ADC-ul si il repornim abia la trezire (cu un pic de asteptare pentru a se stabiliza).
 +
 +Aditional, am adaugat si un contor ce se ocupa de numararea ciclilor "​activi"​. Intrucat stim in mod aproximativ) ca soarele este cel mai puternic pe o perioada de ~8 ore, putem limita ciclii de reglare la aceasta perioada. Un contor este folosit pentru a tine cont de numarul de activari a soft-ului, iar dupa ce o perioada de **(ACTIVE_HOURS * 3600) / WDT_INTERVAL_SEC** a trecut (unde WDT_INTERVAL_SEC este 8 si ACTIVE_HOURS este 8) putem sari peste ciclurile de reglare. Dupa ce o alta perioada (24h - restul) a trecut, putem reveni la activarea ciclurilor de reglare.
 +
 +Acest contor se incrementeaza la fiecare wake-up din sleep.
  
 **Elementul de noutate:** **Elementul de noutate:**
Line 102: Line 110:
   * In functia setup()   * In functia setup()
   * - Servo-urile sunt resetate la pozitiile initiale (90 grade)   * - Servo-urile sunt resetate la pozitiile initiale (90 grade)
-  * - Intreruperile ​sunt activate+  * - Intreruperile ​ar trebui ​activate ​(sunt deja)
  
-  * In solar_cycle_vertical() +  * In updateServo(bool horizontalUpdate
-  * - A0-A3 sunt cititi ​pentru a determina nivelul ​de lumina ​pe fiecare senzor +  * - Tensiunile de pe pinii A0-A3 sunt citite ​pentru a afla diferenta ​de lumina ​dintre senzori 
-  * - Servo-ul vertical este actionat corespunzator pentru miscarea panoului +  * - Este calculata media fiecarei fete 
- +  * In functie de //​horizontalUpdate//​ urmeaza sa se verifice diferenta pentru servo-ul orizontal sau vertical 
-  * In solar_cycle_horizontal() +  * - Daca este diferenta suficient ​de mare (fata de o toleranta prestabilita) servo-ul respectiv se misca
-  * - A0-A3 sunt cititi pentru a determina nivelul ​de lumina pe fiecare senzor +
-  * - Servo-ul orizontal este actionat corespunzator pentru miscarea panoului+
  
   * In loop()   * In loop()
-  * - Ciclu de reglare+  * - Incrementare activeCycleCount 
 +  * - Verificare activeCycleCount 
 +  * - < ACTIVE_LIMIT => Ciclu de reglare 
 +  * - > ACTIVE_LIMIT si < SLEEP_LIMIT => hibernare 
 +  * - >= SLEEP_LIMIT => reset la 0
   * - [Info] Tensiunile citite si pozitiile inregistrate sunt scrise pe terminal   * - [Info] Tensiunile citite si pozitiile inregistrate sunt scrise pe terminal
   * - Sleep, urmand ca dupa 8 secunde sa reinceapa loop-ul   * - Sleep, urmand ca dupa 8 secunde sa reinceapa loop-ul
Line 119: Line 129:
 **Optimizari:​** **Optimizari:​**
  
-Data fiind perioada de operare, servo-urile ​ar putea fi restranse sa se miste doar intr-o raza de cateva zeci de grade.+Data fiind perioada de operare, servo-urile ​pot fi restranse sa se miste doar intr-o raza de cateva zeci de grade daca este necesar.
  
-Ciclul de reglare ​ar putea fi impartit in doua sub-cicluri independente (vertical si orizontal) ​desi nu sunt sigur cat de mult ar ajuta.+Ciclul de reglare ​este impartit in doua sub-cicluri independente (vertical si orizontal) ​care se alterneaza.
  
-Pasul ar putea de asemenea ​sa fie reglat dinamic in functie de perioada dintre cicluri si diferenta inregistrata intre senzori.+Pasul este de asemenea reglat dinamic in functie de diferenta inregistrata intre senzori. Desi nu am implementat,​ ar putea fi afectata pe viitor si de catre perioada dintre cicluri.
  
 Pin-ul A4 ar putea fi folosit pentru citirea nivelului bateriei, desi nu ar fi folositor in timp ce aceasta este incarcata deoarece MPPT-ul aduce tensiunea la 4.2V cat timp este in functionare panoul solar. - Acest lucru pica mai mult pe partea de hardware. Pin-ul A4 ar putea fi folosit pentru citirea nivelului bateriei, desi nu ar fi folositor in timp ce aceasta este incarcata deoarece MPPT-ul aduce tensiunea la 4.2V cat timp este in functionare panoul solar. - Acest lucru pica mai mult pe partea de hardware.
 +
 +**Source Code:**
 +[[https://​github.com/​MekalBoy/​arduino-solar-tracker|Github]]
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +Panoul solar reuseste sa alimenteze porturile USB cu un amperaj corespunzator incarcarii telefoanelor sau bateriilor externe (~2A) intr-un timp relativ scurt
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</note>+[[https://​youtube.com/​shorts/​vrDePWRJnq4|Powerbank Charging Demo]] 
 + 
 +Miscarea maxima pe verticala a panoului a trebuit reglata si limitata deoarece nu am luat in calcul diferenta in forta supusa servo-ului atunci cand panoul este la un unghi mai extrem. Daca reusesc sa obtin servo-uri mai puternice intre timp le voi inlocui pe cele existente actual. 
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +Desi proiectul se descurca bine in mediul "de laborator",​ ar trebui sa ofer mai multa atentie pachetului din jur pentru a-l face usor de manevrat si protejat impotriva vremii. Marimea panoului face aceasta protectie sa necesite o suprafata destul de mare, ceea ce ma impedica (din motive de cost) sa il incastrez cu materiale mai interesante decat o cutie de carton.
 +
 +Voi continua sa folosesc panoul pe post de sursa de energie pentru incarcator de baterii/​powerbank. Deoarece spatiul este restrictiv si nu este nevoie de miscare in interior, restul de sistem va fi dezbinat si folosit ulterior in alte proiecte.
 ===== Download ===== ===== Download =====
  
Line 145: Line 164:
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +  * 22 Mai - Am adunat toate piesele printate 3D pentru structura. 
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului+  * 24 Mai - Avand in vedere prognoza meteo pentru urmatoarea saptamana am procurat un proiector de lumina LED 150W pentru a putea face demo la incarcare live. 
-</​note>​+ 
 +{{:​pm:​prj2025:​avaduva:​prognoza_meteo_24mai.jpg?​378|}} 
 +{{:​pm:​prj2025:​avaduva:​reflector_24mai.jpg?​256|}} 
 + 
 +  * 25 Mai - Partea software a fost mai mult sau mai putin finalizata. 
 +  * 26 Mai - Am observat ​mica problema in cadrul structurii, si anume ca servo-urile nu suporta greutatea adunata a tuturor componentelor atunci cand sunt laolalta si la unghiuri >20 grade. Astfel a trebuit sa modific una din piesele ​de structura, sa o reprintez, si apoi sa pun servo-uri mai puternice [[https://​www.optimusdigital.ro/​en/​servomotors/​1520-mg996-digital-metal-servomotor-90.html|MG996]] ([[https://​components101.com/​sites/​default/​files/​component_datasheet/​MG996R%20Datasheet.pdf|Datasheet]]) capabile ​de a suporta greutatea impreunata chiar si la unghiuri extreme
 + 
 +{{:​pm:​prj2025:​avaduva:​big_leg_servo.png?​256|}} 
 + 
 +  * 28 Mai - Am procurat piesa nou-printata. Din pacate am uitat sa extind si gaurile pentru acces usor la gauri pentru insurubare. I could snap off the leg... nah, I'd tape. 
 + 
 +{{:​pm:​prj2025:​avaduva:​taped.jpg?​256|}}
  
 +  * 29 Mai - Am modificat codul pentru a lua in calcul raza mai mica de miscare (90 grade in loc de 180) a servo-urilor noi.
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
pm/prj2025/avaduva/robert_andrei.tache.1748107814.txt.gz · Last modified: 2025/05/24 20:30 by robert_andrei.tache
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