This shows you the differences between two versions of the page.
pm:prj2022:dene:ventilatorinteligent [2022/05/27 22:03] andreea.costache99 [Scheme electrice] |
pm:prj2022:dene:ventilatorinteligent [2022/05/27 23:44] (current) andreea.costache99 [Listă piese] |
||
---|---|---|---|
Line 12: | Line 12: | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | Ventilatorul va începe să funcționeze dacă temperatura din cameră depășește un anumit prag setat de către utilizator. Dacă se depășește acest prag, ventilatorul își mărește sau scade turația în funcție de temperatura din cameră. De asemenea, pe ecranul LCD se vor afișa ora, temperatura și umiditatea. În cazul în care sistemul se supraîncălzește și ia foc, flacăra va fi detectată folosind senzorul pentru flăcări iar buzzerul va scoate un sunet. | + | Ventilatorul va începe să funcționeze dacă temperatura din cameră depășește un anumit prag setat de către utilizator. Dacă se depășește acest prag, ventilatorul își mărește sau scade turația în funcție de temperatura din cameră. De asemenea, pe ecranul LCD se vor afișa ora, temperatura și umiditatea. În cazul în care sistemul se supraîncălzește și ia foc, flacăra va fi detectată folosind senzorul pentru flăcări iar buzzerul va emite un sunet. |
Line 24: | Line 24: | ||
==== Listă piese ==== | ==== Listă piese ==== | ||
- | * Plăcută Arduino UNO R3 ATMEGA328P | + | * Plăcuță Arduino UNO R3 ATMEGA328P |
* Breadboard | * Breadboard | ||
* LCD | * LCD | ||
- | * Potențiometru | + | * Potențiometru 10K |
* DC Motor | * DC Motor | ||
* Elice | * Elice | ||
Line 36: | Line 36: | ||
* Rezistențe 1KΩ | * Rezistențe 1KΩ | ||
* Tranzistor NPN 2N2222 | * Tranzistor NPN 2N2222 | ||
+ | * Condensator 68nF | ||
* Diodă | * Diodă | ||
* Buzzer | * Buzzer | ||
Line 132: | Line 133: | ||
În funcția **loop()** are loc citirea temperaturii, a umidității, se incrementează timpul și se fac verificările pentru ventilator(dacă trebuie să pornească sau nu), pentru detecția flăcărilor și se transmit datele prin Bluetooth. | În funcția **loop()** are loc citirea temperaturii, a umidității, se incrementează timpul și se fac verificările pentru ventilator(dacă trebuie să pornească sau nu), pentru detecția flăcărilor și se transmit datele prin Bluetooth. | ||
+ | ===== Rezultate Obţinute ===== | ||
== Funcționalitate == | == Funcționalitate == | ||
- | Pentru că nu dorim ca altcineva în afară de noi să configureze ventilatorul, acesta are o parolă iar pentru a putea porni ventilatorul trebuie mai întâi să introducem parola și să realizăm câteva configurări. | ||
- | Cu ajutorul joystick-ului vom introduce parola(1234 conform setării făcute în cod) iar dacă a fost introdusă corect atunci vom trece la pasul în care setăm o temperatură de referință, altfel ne vom întoarce din nou la introducerea parolei. | + | Pentru că nu dorim ca altcineva în afară de noi să configureze ventilatorul, acesta are o parolă iar pentru a |
+ | putea porni ventilatorul trebuie mai întâi să introducem parola și să realizăm câteva configurări. | ||
+ | {{ :pm:prj2022:dene:cst_passwd.jpeg?300|}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Cu ajutorul joystick-ului vom introduce parola(1234 conform setării făcute în cod) iar dacă a fost introdusă corect atunci vom trece la pasul în care setăm o temperatură de referință, altfel ne vom întoarce la introducerea parolei. | ||
+ | |||
+ | {{ :pm:prj2022:dene:cst_passwd_c.jpeg?300|}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
După ce am introdus parola cu succes, se setează temperatura de referință în °C, adică temperatura de la care vrem să pornească ventilatorul, în cazul în care temperatura măsurată de senzor e mai mare decât aceasta, în caz contrar, ventilatorul va fi oprit. | După ce am introdus parola cu succes, se setează temperatura de referință în °C, adică temperatura de la care vrem să pornească ventilatorul, în cazul în care temperatura măsurată de senzor e mai mare decât aceasta, în caz contrar, ventilatorul va fi oprit. | ||
Pentru o precizie cât mai bună, temperatura de referință va fi un număr zecimal, astfel că mai întâi vom introduce partea întreagă și apoi partea zecimală, pentru fiecare pas făcându-se verificări ca datele să fie valide. | Pentru o precizie cât mai bună, temperatura de referință va fi un număr zecimal, astfel că mai întâi vom introduce partea întreagă și apoi partea zecimală, pentru fiecare pas făcându-se verificări ca datele să fie valide. | ||
+ | {{ :pm:prj2022:dene:cst_temp.jpeg?300|}} | ||
+ | |||
+ | |||
Dacă datele nu sunt valide, ne întoarcem la pasul în care introducem parola. | Dacă datele nu sunt valide, ne întoarcem la pasul în care introducem parola. | ||
- | După ce setăm temperatura de referință va fi nevoie să setăm și timpul(ora & minute), deoarece nu am folosit un modul RTC. | + | |
+ | După ce setăm temperatura de referință va fi nevoie să setăm și timpul(ora & minute), deoarece nu am avut la dispozitie un modul RTC. | ||
+ | |||
+ | |||
Atât pentru oră cât și pentru minute, se introduce fiecare digit separat pentru a face verificarea ca datele să fie valide. Secundele vor fi afișate din cod. | Atât pentru oră cât și pentru minute, se introduce fiecare digit separat pentru a face verificarea ca datele să fie valide. Secundele vor fi afișate din cod. | ||
Dacă datele sunt incorecte ne întoarcem la pasul în care introducem parola. | Dacă datele sunt incorecte ne întoarcem la pasul în care introducem parola. | ||
+ | {{ :pm:prj2022:dene:cst_time.jpeg?300|}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
Dacă data și minutele sunt valide atunci pe ecran se vor afișa temperatura măsurată în °C, umiditatea(în procente) și ora. | Dacă data și minutele sunt valide atunci pe ecran se vor afișa temperatura măsurată în °C, umiditatea(în procente) și ora. | ||
+ | |||
+ | |||
+ | {{:pm:prj2022:dene:cst_t_h.jpeg?300|}} | ||
+ | |||
+ | |||
+ | |||
+ | |||
Există 3 trepte de funcționare pentru ventilator, în funcție de diferența dintre cele două temperaturi: | Există 3 trepte de funcționare pentru ventilator, în funcție de diferența dintre cele două temperaturi: | ||
+ | |||
- diferența este în intervalul [0, 2) => analogWrite(MOTOR, 100); | - diferența este în intervalul [0, 2) => analogWrite(MOTOR, 100); | ||
- diferența este în intervalul [2, 5) => analogWrite(MOTOR, 150); | - diferența este în intervalul [2, 5) => analogWrite(MOTOR, 150); | ||
- | - diferența este în intervalul [5, infinit) => analogWrite(MOTOR, 200); | + | - diferența este în intervalul [5, infinit) => analogWrite(MOTOR, 200). |
Line 164: | Line 201: | ||
De asemenea, în cazul în care sistemul ia foc, flacăra va fi detectată cu ajutorul senzorului pentru flăcări KY-026 iar buzzer-ul va scoate un sunet. | De asemenea, în cazul în care sistemul ia foc, flacăra va fi detectată cu ajutorul senzorului pentru flăcări KY-026 iar buzzer-ul va scoate un sunet. | ||
- | ===== Rezultate Obţinute ===== | + | Funcționarea completă poate fi vizualizată în acest demo: |
+ | [[https://www.youtube.com/watch?v=qVJyysHzio0&feature=youtu.be|Demo Ventilator Inteligent]] | ||
+ | |||
+ | {{:pm:prj2022:dene:cst_n.jpeg?200|}} | ||
+ | {{:pm:prj2022:dene:cst_app.jpeg?200 |}} | ||
+ | |||
+ | |||
- | <note tip> | ||
- | </note> | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Am reușit să implementez funcționalitățile dorite. | ||
- | ===== Download ===== | + | Am întâmpinat câteva probleme la pornirea motorului deoarece pe ecran apăreau caractere random. |
- | <note warning> | + | După câteva încercări, am reușit să rezolv problema punând un condensator683 (68nF) între VCC și GND pentru a atenua spike-urile. |
+ | |||
+ | |||
+ | |||
+ | ===== Download ===== | ||
- | </note> | + | {{:pm:prj2022:dene:proiect_pm_costache_andreea_alexandra_334cc.zip| Arhivă proiect}} |
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 182: | Line 229: | ||
* **28.04.2022** - Creare pagină wiki | * **28.04.2022** - Creare pagină wiki | ||
* **05.05.2022** - Achiziționare piese | * **05.05.2022** - Achiziționare piese | ||
+ | * **12.05.2022** - Testare module și senzori | ||
+ | * **12-23.05.2022** - Implementare, realizare schematic + proiect fizic | ||
+ | * **27.05.2022** - Completare pagină wiki | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | [[https://docs.arduino.cc/learn/electronics/lcd-displays|Ecran LCD]] |
+ | |||
+ | [[https://exploreembedded.com/wiki/Analog_JoyStick_with_Arduino|Joystick KY-023]] | ||
+ | |||
+ | [[https://arduinogetstarted.com/tutorials/arduino-joystick|Joystick KY-023]] | ||
+ | |||
+ | [[https://create.arduino.cc/projecthub/pibots555/how-to-connect-dht11-sensor-with-arduino-uno-f4d239|Senzor temperatură și umiditate DHT11]] | ||
+ | |||
+ | [[https://diyi0t.com/flame-sensor-arduino-esp8266-esp32/|Senzor pentru flăcări KY-026]] | ||
+ | |||
+ | [[https://create.arduino.cc/projecthub/akshayjoseph666/interfacing-bluetooth-module-hc-05-with-arduino-uno-f5209b|Modul Bluetooth]] | ||
+ | |||
+ | [[https://forum.arduino.cc/t/random-characters-on-lcd-while-using-a-dc-motor/381389|Caractere random]] | ||
+ | |||
+ | [[https://forum.arduino.cc/t/random-characters-on-16x2-lcd-when-using-a-motor/649738|Caractere random]] | ||
- | </note> | ||
<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> | ||