This shows you the differences between two versions of the page.
|
pm:prj2026:atoader:mihnea.marinel [2026/05/21 16:28] mihnea.marinel |
pm:prj2026:atoader:mihnea.marinel [2026/05/22 10:20] (current) mihnea.marinel |
||
|---|---|---|---|
| Line 3: | Line 3: | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | Proiectul este unul de automatizare care combină controlul industrial cu monitorizarea siguranței ambientale. | + | Proiectul este unul de automatizare care combină controlul industrial cu monitorizarea siguranței ambientale. Este un sistem de ventilație inteligent, ce gestionează calitatea aerului și temperatura într-o incintă. |
| - | Este un sistem de ventilație inteligent, ce gestionează calitatea aerului și temperatura într-o incintă. | + | |
| - | Dispozitivul monitorizează constant doi parametri critici: temperatura (prin senzorul analogic LM35D) | + | Dispozitivul monitorizează constant doi parametri critici: temperatura (prin senzorul analogic LM35D) și prezența gazelor inflamabile sau a fumului (prin senzorul MQ-2). În funcție de valorile citite, sistemul ajustează automat turația unui ventilator folosind semnale PWM, afișează datele în timp real pe un ecran LCD I2C și avertizează vizual utilizatorul prin LED-uri de stare. |
| - | și prezența gazelor inflamabile sau a fumului (prin senzorul MQ-2). În funcție de valorile citite, sistemul | + | |
| - | ajustează automat turația unui ventilator folosind semnale PWM, afișează datele în timp real pe un ecran LCD I2C | + | |
| - | și avertizează vizual utilizatorul prin LED-uri de stare. | + | |
| - | Am ales acest proiect deoarece integrează fluxuri de date analogice cu logică de control în timp real. | + | Am ales acest proiect deoarece integrează fluxuri de date analogice cu logică de control în timp real. Direcția este una utilă în scenarii reale, precum camere de servere sau ateliere, unde ventilația trebuie să fie eficientă energetic dar și să reacționeze instantaneu la pericole (scurgeri de gaze). Elementul central este logica de override: indiferent de temperatură, detectarea fumului forțează sistemul în mod de alertă maximă. |
| - | Direcția este una utilă în scenarii reale, precum camere de servere sau ateliere, unde ventilația trebuie să fie | + | |
| - | eficientă energetic dar și să reacționeze instantaneu la pericole (scurgeri de gaze). Elementul central este logica | + | |
| - | de override: indiferent de temperatură, detectarea fumului forțează sistemul în mod de alertă maximă. | + | |
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| Line 58: | Line 51: | ||
| {{ :pm:prj2026:atoader:schema_electrica_ventilator.png?700 |Schema bloc ventilator}} | {{ :pm:prj2026:atoader:schema_electrica_ventilator.png?700 |Schema bloc ventilator}} | ||
| + | |||
| + | |||
| + | **Stările Sistemului:** | ||
| + | |||
| + | 1. **Stare Normală:** Temperatura este sub pragul de alertă, mediul este curat. Ventilatorul este oprit. | ||
| + | {{ :pm:prj2026:atoader:ventilator_stare_neutra.jpeg?700 |Schema bloc ventilator}} | ||
| + | |||
| + | 2. **Stare Atenție Temperatură:** Temperatura crește peste pragul setat, sistemul pornește evacuarea aerului. | ||
| + | {{ :pm:prj2026:atoader:ventilator_stare_medie_temperatura.jpeg?700 |Schema bloc ventilator}} | ||
| + | |||
| + | 3. **Stare Alarma Gaz:** Senzorul MQ-2 detectează gaz. Sistemul ignoră temperatura și intră în modul de siguranță. | ||
| + | {{ :pm:prj2026:atoader:ventilator_stare_critica(gaz_detectat).jpeg?700 |Schema bloc ventilator}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| <note tip> | <note tip> | ||
| - | Firmware-ul este scris în C (AVR Libc) folosind registrele specifice ATmega328P. Logica software este structurată modular: | + | Firmware-ul este scris în C (AVR Libc) la nivel de regiștri (bare-metal) pentru ATmega328P, dezvoltat în mediul VS Code cu PlatformIO. Logica software este structurată modular: |
| - | + | ||
| - | 1.Inițializare: Configurare ADC (prescaler, referință), PWM (Timer 1), I2C (frecvență bus) și pini I/O. | + | |
| - | + | ||
| - | 2.Bucla principală: | + | |
| - | -Eșantionare ciclică a canalelor ADC0 (MQ-2) și ADC1 (LM35). | + | 1.Inițializare: Configurare ADC (prescaler, referință), PWM (Timer 1), I2C (frecvență bus 100kHz) și pini I/O. |
| - | + | ||
| - | -Conversia valorii brute ADC în unități de măsură (°C). | + | |
| - | *Logica de decizie: | + | 2.Bucla principală : |
| - | -Dacă Gaz > Prag: Viteza = 100% (Override), LED Roșu intermitent. | + | • Eșantionare ciclică a canalelor ADC0 (MQ-2) și ADC1 (LM35). |
| - | -Dacă Gaz < Prag: Viteza se ajustează după temperatură (0% sub 25°C, 60% la 25-30°C, 100% peste 30°C). | + | • Oversampling și Filtru EMA: Pentru a elimina zgomotul electric de masă (Ground Bounce) generat de comutația motorului DC pe breadboard, citirile senzorului LM35D sunt trecute printr-un filtru EMA (Exponential Moving Average) combinat cu o medie aritmetică din 20 de eșantioane. |
| - | -Actualizare LCD și LED-uri. | + | • Logică de Histerezis: S-a implementat o zonă tampon (dead-band) de 2.0°C pentru a preveni oscilația ventilatorului (pornit/oprit repetat) când temperatura fluctuează fix la valoarea de graniță. |
| + | |||
| + | 3.Logica de decizie: | ||
| + | |||
| + | • Dacă Gaz > Prag (Analogic > 130 sau Pin Digital activ): Override activat, viteză 100% (PWM 255), LED Roșu intermitent, LCD afișează alarmă. | ||
| + | |||
| + | • Dacă Gaz < Prag: Viteza se ajustează după temperatură (Oprit sub 33°C, Viteză medie între 33-38°C, Maxim peste 38°C). | ||
| + | |||
| + | • Actualizare continuă a display-ului LCD și a interfeței UART pentru telemetrie. | ||
| </note> | </note> | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| - | <note tip> | + | Sistemul reușește să filtreze cu succes zgomotul electric puternic indus de motor pe o sursă de alimentare comună (breadboard), oferind citiri stabile de temperatură. De asemenea, funcția de "Hardware Override" a senzorului MQ-2 răspunde aproape instantaneu (sub 1 secundă) la prezența gazului, demonstrând un nivel de fiabilitate esențial pentru un sistem de siguranță. |
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
| - | </note> | + | |
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | Realizarea acestui proiect a scos în evidență discrepanțele dintre teoria ideală a circuitelor și limitările fizice ale hardware-ului real (inerție termică, zgomot pe linia de GND). Rezolvarea acestor probleme pur hardware prin metode software (filtre exponențiale și histerezis) a demonstrat că un sistem embedded stabil necesită o fuziune echilibrată între electronică și programare. | ||
| ===== Download ===== | ===== Download ===== | ||
| + | <note> | ||
| + | Codul sursă complet, schemele și imaginile sunt disponibile în repo-ul: | ||
| - | <note warning> | + | https://github.com/MMihnea04/Ventilator-Inteligent-cu-Monitorizare-Mediu.git |
| - | 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ă ;-). | + | |
| - | + | ||
| - | 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**. | + | |
| </note> | </note> | ||
| Line 105: | Line 110: | ||
| •17 Aprilie 2026 : Achiziția componentelor (LM35D, MQ-2, L298N,…). | •17 Aprilie 2026 : Achiziția componentelor (LM35D, MQ-2, L298N,…). | ||
| + | |||
| + | •10-15 Mai 2026 : Asamblare proiect. | ||
| + | |||
| + | •21-22 Mai 2026 : Scriere cod și testare finală. | ||
| </note> | </note> | ||