This shows you the differences between two versions of the page.
|
pm:prj2026:vlad.radulescu2901:amarinescu0804 [2026/05/23 14:56] amarinescu0804 [Hardware Design] |
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 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 129: | Line 136: | ||
| ===== 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> | ||