Differences

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

Link to this comparison view

pm:prj2026:atoader:mihnea.marinel [2026/05/09 22:30]
mihnea.marinel [Bibliografie/Resurse]
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 25: Line 18:
 • Senzor LM35D - furnizează o tensiune proporțională cu temperatura ambientală. ​ • Senzor LM35D - furnizează o tensiune proporțională cu temperatura ambientală. ​
  
-• Senzor MQ-2 - detectează concentrația de gaz/fum și trimite semnal analogic ​către MCU+• Senzor MQ-2 - detectează concentrația de gaz/fum și trimite ​un semnal analogic ​(pentru măsurare pe PC0),  
 +dar și un semnal digital (pe PB4) pentru întreruperi sau override rapid la depășirea pragului hardware.
  
 • Driver L298N + Ventilator - primește semnal PWM pentru a varia viteza motorului de 12V.  • Driver L298N + Ventilator - primește semnal PWM pentru a varia viteza motorului de 12V. 
Line 35: Line 29:
 Concepte din laboratoare folosite: Concepte din laboratoare folosite:
  
-• Laboratorul 3: PWM - pentru controlul vitezei ventilatorului prin registrul ​OCR0A.+• Laboratorul 3: PWM - pentru controlul vitezei ventilatorului prin registrul ​OCR1A (Timer 1, Fast PWM pe pinul PB1).
    
 • Laboratorul 4: ADC - pentru citirea valorilor analogice de la LM35D și MQ-2.  • Laboratorul 4: ADC - pentru citirea valorilor analogice de la LM35D și MQ-2. 
Line 57: 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 0), 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 < PragViteza se ajustează după temperatură (0% sub 25°C60% la 25-30°C, 100% peste 30°C). +• Oversampling și Filtru EMAPentru a elimina zgomotul electric de masă (Ground Bounce) generat de comutația motorului DC pe breadboardcitirile senzorului LM35D sunt trecute printr-un filtru EMA (Exponential Moving Averagecombinat 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 proiectuluisurse, scheme, etcUn 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 104: 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>​
Line 111: Line 121:
  
 •https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​50002659A.pdf •https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​50002659A.pdf
 +
 +•https://​ocw.cs.pub.ro/​courses/​pm/​tutorial/​proiect
 +
 +•https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2023-2024
 +
 +•https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab4-2023-2024
 +
 +•https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024
 +
 +•https://​www.pololu.com/​file/​0J309/​MQ2.pdf
  
  
 <​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>​
pm/prj2026/atoader/mihnea.marinel.1778355057.txt.gz · Last modified: 2026/05/09 22:30 by mihnea.marinel
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