This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:amarinescu0804 [2026/05/23 14:26] amarinescu0804 [Jurnal] |
pm:prj2026:vlad.radulescu2901:amarinescu0804 [2026/05/24 21:34] (current) amarinescu0804 [Hardware Design] |
||
|---|---|---|---|
| Line 40: | Line 40: | ||
| **Module hardware**: | **Module hardware**: | ||
| + | |||
| + | * **Placă de dezvoltare (Microcontroler ATmega328P):** „Creierul” sistemului. Preia datele analogice și digitale, procesează logica automatului finit (State Machine) folosind timere hardware interne și comandă atât interfața, cât și elementele de execuție. | ||
| * **Senzor umiditate sol** – utilizat pentru a măsura în timp real nivelul de hidratare al substratului plantei și pentru a trimite datele către convertorul ADC. | * **Senzor umiditate sol** – utilizat pentru a măsura în timp real nivelul de hidratare al substratului plantei și pentru a trimite datele către convertorul ADC. | ||
| Line 51: | Line 53: | ||
| * **Butoane de control** – folosite pentru interacțiunea cu utilizatorul, permițând schimbarea regimului de funcționare (Automat/Cronometrat/Hibrid) și setarea pragurilor. | * **Butoane de control** – folosite pentru interacțiunea cu utilizatorul, permițând schimbarea regimului de funcționare (Automat/Cronometrat/Hibrid) și setarea pragurilor. | ||
| - | {{ :pm:prj2026:vlad.radulescu2901:schema_electrica_aquabuddy.png?600 |}} | + | {{ :pm:prj2026:vlad.radulescu2901:aquabuddy_schema_electrica.png?600 |}} |
| ==== Descrierea conexiunilor și a pinilor utilizați ==== | ==== Descrierea conexiunilor și a pinilor utilizați ==== | ||
| Line 91: | Line 93: | ||
| * **Control Volumetric și Soft-Start (PWM):** Udarea nu se face pe bază de timp brut, ci volumetric (ex: 50 ml). S-a implementat o constantă a debitului pompei, iar sistemul calculează dinamic fracțiunile de 10ms necesare pentru cantitatea dorită. Suplimentar, s-a utilizat Timer0 pe pinul PD6 (Fast PWM) pentru a crea o rampă de accelerare a motorului (Soft-Start), eliminând presiunea bruscă de pe furtun. | * **Control Volumetric și Soft-Start (PWM):** Udarea nu se face pe bază de timp brut, ci volumetric (ex: 50 ml). S-a implementat o constantă a debitului pompei, iar sistemul calculează dinamic fracțiunile de 10ms necesare pentru cantitatea dorită. Suplimentar, s-a utilizat Timer0 pe pinul PD6 (Fast PWM) pentru a crea o rampă de accelerare a motorului (Soft-Start), eliminând presiunea bruscă de pe furtun. | ||
| * **State Machine (UI & Operare):** Logica principală este structurată pentru a comuta între 4 ecrane de interfață (**Monitorizare Acasă**, **Setare Prag Sol**, **Setare Timp Udare**, **Setare Volum Apă**) și 3 moduri operaționale (**Auto**, **Timed**, **Hybrid**), garantând că display-ul este actualizat (refresh) doar atunci când apar modificări sau o dată pe secundă, economisind timp de procesare pe magistrala lentă I2C. | * **State Machine (UI & Operare):** Logica principală este structurată pentru a comuta între 4 ecrane de interfață (**Monitorizare Acasă**, **Setare Prag Sol**, **Setare Timp Udare**, **Setare Volum Apă**) și 3 moduri operaționale (**Auto**, **Timed**, **Hybrid**), garantând că display-ul este actualizat (refresh) doar atunci când apar modificări sau o dată pe secundă, economisind timp de procesare pe magistrala lentă I2C. | ||
| + | * **Monitorizare și Debugging (USART):** Pe parcursul dezvoltării, s-a implementat comunicarea serială prin interfața USART. Aceasta a fost esențială pentru diagnosticarea în timp real a sistemului (monitorizarea valorilor brute citite de convertorul ADC de la senzorul de sol, verificarea stărilor din automatul finit și validarea calculelor matematice pentru dozajul volumetric), permițând o separare clară și rapidă a problemelor de tip hardware de cele software. | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | {{ :pm:prj2026:vlad.radulescu2901:aquabuddy_cutie.jpeg?600 |}} |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| + | Rezultatul final este un sistem de irigații automatizat stabil și complet portabil, fiind alimentat independent de la o baterie externă. Sistemul monitorizează precis umiditatea solului, livrează volumetric cantitatea exactă de apă prin accelerarea treptată a pompei (Soft-Start), rulează o arhitectură non-blocking ce previne înghețarea codului și oferă utilizatorului o interfață fluidă, cu feedback instantaneu pe ecranul LCD. | ||
| + | |||
| + | Un video demonstrativ se poate găsi în secțiunea de jurnal, unde este demonstrată întreaga funcționalitate a proiectului (în afara cutiei). | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| - | ===== Download ===== | + | Dezvoltarea acestui proiect a reprezentat o oportunitate excelentă de a transpune conceptele teoretice de microprocesoare într-o aplicație practică de utilitate reală. Cea mai importantă reușită a proiectului a fost implementarea unei arhitecturi software complet non-blocking (multitasking cooperativ bazat pe timere hardware), care oferă sistemului un timp de răspuns instantaneu la interacțiunea cu utilizatorul. |
| - | <note warning> | + | **Provocări întâmpinate și rezolvate:** |
| - | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | Pe parcursul dezvoltării, interfațarea motorului de curent continuu al pompei cu partea logică a ridicat două probleme majore, ambele rezolvate prin decizii tehnice specifice: |
| - | 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**. | + | * **Izolarea alimentării:** Inițial, alimentarea pompei direct din linia de 5V a microcontrolerului cauza căderi bruște de tensiune la pornirea motorului (din cauza curentului mare de start), ceea ce destabiliza complet funcționarea sistemului. Soluția a fost separarea planurilor de putere: pompa este acum alimentată dintr-un pachet dedicat de baterii externe, păstrând doar masa (GND) comună cu placa logică pentru referința semnalului PWM. |
| - | </note> | + | |
| + | * **Gestionarea interferențelor:** La oprirea bruscă a pompei se genera tensiune de autoinducție, iar paraziții electromagnetici corupeau memoria RAM a ecranului. Problema a fost mascată din software: s-a implementat o rutină asincronă de Auto-Recovery care detectează oprirea pompei și forțează o reinițializare rapidă a ecranului (sub 60ms), restabilind interfața fără blocaje perceptibile. | ||
| + | ===== Download ===== | ||
| + | |||
| + | [[https://github.com/andrei-48/Aquabuddy-PM|Github Proiect]] | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| Line 116: | Line 123: | ||
| https://youtu.be/5-j5lsSoZKQ | https://youtu.be/5-j5lsSoZKQ | ||
| + | |||
| Video pentru demonstrarea funcționalității pompei și a senzorului (vizibil pe USART - 1022/1023 senzorul fiind lăsat liber) | Video pentru demonstrarea funcționalității pompei și a senzorului (vizibil pe USART - 1022/1023 senzorul fiind lăsat liber) | ||
| Line 121: | Line 129: | ||
| * Pentru etapa software am implementat codul final (mai prezintă mici bug-uri ce vor fi rezolvate). Am schimbat alimentarea pompei trecând la o sursă separată de curent pe 4 baterii (6V). Am schimbat VCC-ul senzorului la pinul PD7 pentru a reduce consumul de curent și pentru a evita efectul de electroliză care poate degrada senzorul. | * Pentru etapa software am implementat codul final (mai prezintă mici bug-uri ce vor fi rezolvate). Am schimbat alimentarea pompei trecând la o sursă separată de curent pe 4 baterii (6V). Am schimbat VCC-ul senzorului la pinul PD7 pentru a reduce consumul de curent și pentru a evita efectul de electroliză care poate degrada senzorul. | ||
| + | {{:pm:prj2026:vlad.radulescu2901:poza_jurnal_aquabuddy3.jpeg?600|}} | ||
| + | |||
| + | https://youtu.be/iVb_wFHDsnE | ||
| + | |||
| + | Video care demonstrează toate funcționalitățile implementate în sistem. În clip sunt prezentate: navigarea prin interfață pentru selectarea modului de funcționare, configurarea pragurilor (timp și umiditate) și setarea volumului de apă dorit. De asemenea, este surprinsă declanșarea pompei (evidențiind efectul de accelerare treptată prin Soft-Start), inițiată atât pe baza temporizatorului, cât și a atingerii pragului critic de umiditate (pentru a simula un sol uscat și a forța declanșarea sistemului, senzorul a fost extras intenționat din pământ în timpul demonstrației). | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| - | <note> | + | 1. Documentație Hardware (Datasheets): |
| - | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
| - | </note> | + | * **Microchip ATmega328P Datasheet** – Pentru configurarea la nivel de regiștri a Timerelor (0 și 1), a convertorului analog-digital (ADC), a magistralei I2C (TWI) si pentru a utiliza pinii corecți. |
| + | |||
| + | * **Hitachi HD44780 LCD Controller** – Utilizat pentru a înțelege timpii de execuție (delay-urile necesare la inițializare) și setul de comenzi pe 4-biți. | ||
| + | |||
| + | * **NXP PCF8574 I2C Expander** – Documentația modulului de pe LCD, necesară pentru implementarea protocolului de comunicare. | ||
| + | |||
| + | * **Vishay IRF520 MOSFET** – Specificațiile tranzistorului de putere folosit pentru controlul pompei de apă. | ||
| + | |||
| + | 2. Documentație Software și Mediu de Dezvoltare: | ||
| + | |||
| + | * **AVR C Runtime Library (avr-libc)** – Documentația oficială pentru bibliotecile folosite în proiect (<avr/io.h>, <avr/interrupt.h>, <avr/wdt.h>). | ||
| + | |||
| + | 3. Resurse Academice: | ||
| + | |||
| + | * **OCW UPB** - Proiectare cu Microprocesoare – Suportul de curs și laboratoare (în special laboratoarele de Timere, ADC și I2C) care au stat la baza dezvoltării arhitecturii acestui proiect. | ||
| <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> | ||