This shows you the differences between two versions of the page.
|
pm:prj2026:bianca.popa1106:miruna.iliescu [2026/05/15 15:09] miruna.iliescu [Gestionarea butonului și protecție EMI] |
pm:prj2026:bianca.popa1106:miruna.iliescu [2026/05/15 20:49] (current) miruna.iliescu [Diagrama de semnal] |
||
|---|---|---|---|
| Line 42: | Line 42: | ||
| Implementarea folosește o mașină de stări non-blocantă, fără nicio funcție de tip | Implementarea folosește o mașină de stări non-blocantă, fără nicio funcție de tip | ||
| - | `_delay_ms()` în bucla principală. Timpii sunt gestionați printr-un contor de milisecunde | + | _delay_ms() în bucla principală. Timpii sunt gestionați printr-un contor de milisecunde |
| propriu, bazat pe Timer1 în mod CTC. | propriu, bazat pe Timer1 în mod CTC. | ||
| Line 88: | Line 88: | ||
| * Breadboard | * Breadboard | ||
| * Fire de legătură | * Fire de legătură | ||
| + | |||
| + | {{ :pm:prj2026:bianca.popa1106:miruna.iliescu:schema_hardware.png?800 |Schema hardware }} | ||
| Placa Arduino-compatible reprezintă unitatea centrală de control a sistemului. Aceasta | Placa Arduino-compatible reprezintă unitatea centrală de control a sistemului. Aceasta | ||
| Line 108: | Line 110: | ||
| Butonul este conectat pe pinul D2 (INT0), cu pull-up intern activat. Întreruperea externă | Butonul este conectat pe pinul D2 (INT0), cu pull-up intern activat. Întreruperea externă | ||
| se declanșează pe front descrescător (1→0), adică la apăsarea butonului. | se declanșează pe front descrescător (1→0), adică la apăsarea butonului. | ||
| + | |||
| + | ==== Diagrama de semnal ==== | ||
| + | |||
| + | {{ :pm:prj2026:bianca.popa1106:miruna.iliescu:protectie_emi.png?1000 |Protectie EMI }} | ||
| + | |||
| + | {{ :pm:prj2026:bianca.popa1106:miruna.iliescu:ciclu_irigare_auto.png?1000 | Ciclu irigare AUTO }} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 123: | Line 131: | ||
| ==== Moduri de funcționare ==== | ==== Moduri de funcționare ==== | ||
| - | Sistemul definește două moduri (`system_mode_t`): | + | Sistemul definește două moduri (system_mode_t): |
| * **MODE_AUTO**: irigare automată bazată pe citirile senzorului | * **MODE_AUTO**: irigare automată bazată pe citirile senzorului | ||
| * **MODE_MANUAL**: control manual al pompei prin buton | * **MODE_MANUAL**: control manual al pompei prin buton | ||
| - | În MODE_AUTO, mașina de stări (`irrigation_state_t`) parcurge: | + | În MODE_AUTO, mașina de stări (irrigation_state_t) parcurge: |
| * **STATE_IDLE**: citire senzor la intervale regulate; dacă umiditatea < prag → STATE_WATERING | * **STATE_IDLE**: citire senzor la intervale regulate; dacă umiditatea < prag → STATE_WATERING | ||
| Line 158: | Line 166: | ||
| * **Lab 1 – USART**: log serial pentru debugging; afișarea valorilor ADC, umidității și stării sistemului | * **Lab 1 – USART**: log serial pentru debugging; afișarea valorilor ADC, umidității și stării sistemului | ||
| * **Lab 2 – Întreruperi externe**: butonul pe INT0, front descrescător, cu ISR pentru setarea unui flag atomic | * **Lab 2 – Întreruperi externe**: butonul pe INT0, front descrescător, cu ISR pentru setarea unui flag atomic | ||
| - | * **Lab 3 – Timer1 CTC**: contor de milisecunde non-blocant; OCR1A = 249, prescaler 64, ISR incrementează `system_millis` | + | * **Lab 3 – Timer1 CTC**: contor de milisecunde non-blocant; OCR1A = 249, prescaler 64, ISR incrementează system_millis |
| * **Lab 4 – ADC**: citirea senzorului FC-28 pe canalul A0; medie pe 10 eșantioane cu eliminarea min/max | * **Lab 4 – ADC**: citirea senzorului FC-28 pe canalul A0; medie pe 10 eșantioane cu eliminarea min/max | ||
| * **TWI/I2C**: comunicare cu LCD 1602 prin modulul PCF8574; driver propriu implementat în registre AVR | * **TWI/I2C**: comunicare cu LCD 1602 prin modulul PCF8574; driver propriu implementat în registre AVR | ||