Differences

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

Link to this comparison view

pm:prj2021:apredescu:ventilator_inteligent [2021/05/30 18:03]
tudor.calafeteanu [Software Design]
pm:prj2021:apredescu:ventilator_inteligent [2021/05/30 18:44] (current)
tudor.calafeteanu
Line 7: Line 7:
 ===== Introducere ===== ===== Introducere =====
  
-  * Ventilatorul inteligent are viteza de rotatie dependenta ​de temperatura camerei, fiind activ doar atunci ​cand senzorul de proximitate ​detecteaza miscare. Senzorul de proximitate poate fi montat ​dupa bunul plac, insa, din motive ergonomice, ​in prezentarea video a proiectului,​ senzorul a fost fixat pe breadboard. Temperaturile sunt calculate la un interval de timp prestabilit,​ fiind salvate pe un card microSD, ​realizand, astfel, un data logger. Datele sunt apoi introduse ​in Excel, care genereaza ​un grafic ce surprinde ​evolutia ​temperaturii camerei ​in timp. +  * Ventilatorul inteligent are viteza de rotație dependentă ​de temperatura camerei, fiind activ doar atunci ​când senzorul de proximitate ​detectează mișcare. Senzorul de proximitate poate fi montat ​după bunul plac, însă, din motive ergonomice, ​în prezentarea video a proiectului,​ senzorul a fost fixat pe breadboard. Temperaturile sunt calculate la un interval de timp prestabilit,​ fiind salvate pe un card microSD, ​realizând, astfel, un data logger. Datele sunt apoi introduse ​în Excel, care generează ​un grafic ce surprinde ​evoluția ​temperaturii camerei ​în timp. 
-  * Scopul ventilatorului inteligent, ​fata de unul normal, este sa isi schimbe singur viteza de rotatie in functie ​de temperatura camerei ​si sa functioneze ​doar atunci ​cand detecteaza miscare, pentru a eficientiza consumul de energie ​electrica+  * Scopul ventilatorului inteligent, ​față ​de unul normal, este să își schimbe singur viteza de rotație în funcție ​de temperatura camerei ​și să funcționeze ​doar atunci ​când detectează mișcare, pentru a eficientiza consumul de energie ​electrică
-  * Am plecat de la ideea de a crea o dependenta intre procesul de ventilatie si temperatura camerei. +  * Am plecat de la ideea de a crea o dependență între ​procesul de ventilație și temperatura camerei. 
-  * Utilitatea lui deriva ​din diferentierea ​sa fata de un ventilator clasic de birou.+  * Utilitatea lui derivă ​din diferențierea ​sa față ​de un ventilator clasic de birou.
  
 ===== Descriere generală ===== ===== Descriere generală =====
Line 16: Line 16:
 {{:​pm:​prj2021:​apredescu:​ventilator_inteligent_diagrama_block.png?​450|}} {{:​pm:​prj2021:​apredescu:​ventilator_inteligent_diagrama_block.png?​450|}}
  
-  * Senzorul de temperatura, precum ​si cel de proximitate, ​transfera ​date catre Arduino. +  * Senzorul de temperatură, precum ​și cel de proximitate, ​transferă ​date către ​Arduino. 
-  * Arduino ​controleaza ​motorul prin PWM, folosind un driver de control al turatiei ​motorului. Controlul ​turatiei ​se realizeaza avand in vedere datele primite de la cei doi senzori.+  * Arduino ​controlează ​motorul prin PWM, folosind un driver de control al turației ​motorului. Controlul ​turației ​se realizează având în vedere datele primite de la cei doi senzori.
   * Servomotorul este controlat direct de Arduino.   * Servomotorul este controlat direct de Arduino.
-  * Datele ​receptionate ​de Arduino sunt stocate ​intr-un card SD care se comporta ​ca un data logger pentru senzorul de temperatura+  * Datele ​recepționate ​de Arduino sunt stocate ​într-un fișier aflat pe cardul ​SDcare se comportă ​ca un data logger pentru senzorul de temperatură
-  * Cardul este citit de laptop, apoi se genereaza ​un grafic ce evidentiaza fluctuatia ​temperaturii ​in timp.+  * Cardul este citit de laptop, apoi se generează ​un grafic ce evidențiază fluctuația ​temperaturii ​în timp.
 ===== Hardware Design ===== ===== Hardware Design =====
  
Line 26: Line 26:
   - Arduino UNO   - Arduino UNO
   - Breadboard   - Breadboard
-  - Senzor de temperatura ​DHT11+  - Senzor de temperatură ​DHT11
   - Motor cu elice   - Motor cu elice
   - Servomotor ​   - Servomotor ​
   - Card microSD + adaptor   - Card microSD + adaptor
   - Senzor PIR HC-SR505   - Senzor PIR HC-SR505
-  - Modul sursa de alimentare + alimentator +  - Modul sursă ​de alimentare + alimentator 
-  - Driver (1 dioda, 1 rezistenta ​1kOhm, 1 tranzistor NPN)+  - Driver (1 diodă, 1 rezistență ​1kOhm, 1 tranzistor NPN)
   - Fire   - Fire
    
Line 41: Line 41:
 <note tip>​Mediul de dezvoltare folosit este Arduino IDE.</​note>​ <note tip>​Mediul de dezvoltare folosit este Arduino IDE.</​note>​
 <note tip>​Bibliotecile externe folosite au fost: <note tip>​Bibliotecile externe folosite au fost:
-   - **SPI.h.h** (pentru ​sdaptorul ​microSD)+   - **SPI.h.h** (pentru ​adaptorul ​microSD)
    - **Servo.h** (pentru Servomotor)    - **Servo.h** (pentru Servomotor)
    - **SD.h** (pentru cardul microSD)    - **SD.h** (pentru cardul microSD)
-   - **DHT.h** (pentru modulul de temperatura ​DHT11)+   - **DHT.h** (pentru modulul de temperatură ​DHT11)
 </​note>​ </​note>​
  
-  *  ​Detectia miscarii ​se face o data dupa fiecare ciclu de miscare ​a servomotorului. Un ciclu il reprezinta ​trecerea servomotorului din pozitia ​0, la pozitia ​180, apoi din nou la pozitia ​0 (1 ciclu = 0° -> 180° -> 0°). Daca senzorul PIR nu detecteaza miscare ​(output 0) si starea ventilatorului este //running// (flag-ul stopMoving este setat pe 0), se incrementeaza ​un counter (counterMovement). ​Daca acest counter ajunge la valoarea 3, atunci ventilatorul ​isi schimba ​starea din //​running// ​in //​blocked//,​ revenind la starea //running// abia cand detecteaza, din nou, miscare. De fiecare ​data cand senzorul ​detecteaza miscare, iar ventilatorul este activ, counter-ul se reseteaza+  *  ​Detecția mișcării ​se face o dată după fiecare ciclu de mișcare ​a servomotorului. Un ciclu reprezintă ​trecerea servomotorului din poziția ​0, la poziția ​180, apoi din nou la poziția ​0 (1 ciclu = 0° -> 180° -> 0°). Dacă senzorul PIR nu detectează mișcare ​(output 0) și starea ventilatorului este //running// (flag-ul stopMoving este setat pe 0), se incrementează ​un counter (counterMovement). ​Dacă acest counter ajunge la valoarea 3, atunci ventilatorul ​își schimbă ​starea din //​running// ​în //​blocked//,​ revenind la starea //running// abia când detectează, din nou, mișcare. De fiecare ​dată când senzorul ​detectează mișcare, iar ventilatorul este activ, counter-ul se resetează
-  * Miscarea ​motorului DC se face prin PWM, mapand ​range-ul de temperaturi care poate fi detectat de senzorul de temperatura ​(0-50), la range-ul de viteze (100 - 255). Astfel, elicea se va invarti ​cu o viteza ​direct ​proportionala ​cu temperatura camerei. +  * Mișcarea ​motorului DC se face prin PWM, mapând ​range-ul de temperaturi care poate fi detectat de senzorul de temperatură ​(0-50), la range-ul de viteze (100 - 255). Astfel, elicea se va învârti ​cu o viteză ​direct ​proporțională ​cu temperatura camerei. 
-  * Dupa fiecare ciclu de miscare ​a servomotorului,​ se scrie valoarea temperaturii detectate, ​impreuna ​cu timpul trecut, ​in secunde, de la pornirea ventilatorului, ​intr-un fisier //​logger.txt//​. Punctele rezultate sunt apoi trecute ​in Excel pentru generarea graficului.+  * După fiecare ciclu de mișcare ​a servomotorului,​ se scrie valoarea temperaturii detectate, ​împreună ​cu timpul trecut, ​în secunde, de la pornirea ventilatorului, ​într-un fisier //​logger.txt//​. Punctele rezultate sunt apoi trecute ​în Excel pentru generarea graficului.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +<note important>​**Poză proiect de ansamblu:​**</​note>​ 
 +{{:​pm:​prj2021:​apredescu:​ventilator_inteligent_poza.png?​700|}} 
 +<note important>​**Exemplu rezultat generare grafic din data logger, folosind Excel:​**</​note>​ 
 +{{:​pm:​prj2021:​apredescu:​ventilator_inteligent_grafic.jpeg?​700|}}
 ===== Concluzii ===== ===== Concluzii =====
 +A fost prima oară când am lucrat cu hardware. Am întâmpinat unele dificultăți în conectarea unelor componente pe breadboard, însă au fost rezolvate rapid. Consider o lucrare foarte interesantă pentru un student care nu a mai avut tangențe cu proiecte în Arduino, am învățat lucruri noi și sunt mândru de rezultatul final.
 ===== Download ===== ===== Download =====
-Documentația în format <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html> ​+<note tip>​Sursa:​ {{:​pm:​prj2021:​apredescu:​ventilatorinteligent.rar|}}</​note>​ 
 +<note tip>Documentația în format <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html> </note>
  
-===== Jurnal ===== 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +  * https://​www.instructables.com/​Controlling-a-Motor-an-NPN-Transistor-on-the-Ardui/​
 +  * https://​www.youtube.com/​watch?​v=-AvF2TsB2GI
 +  * https://​youtu.be/​8TnrozK_384
 +  * https://​youtu.be/​5Dp-XatLySM
 +  * https://​www.arduino.cc/​reference/​en/​language/​functions/​math/​map/​
pm/prj2021/apredescu/ventilator_inteligent.1622387028.txt.gz · Last modified: 2021/05/30 18:03 by tudor.calafeteanu
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