This shows you the differences between two versions of the page.
pm:prj2021:apredescu:ventilator_inteligent [2021/05/30 18:21] tudor.calafeteanu [Download] |
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 SD, care 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>**Poza proiect de ansamblu:**</note> | + | <note important>**Poză proiect de ansamblu:**</note> |
{{:pm:prj2021:apredescu:ventilator_inteligent_poza.png?700|}} | {{:pm:prj2021:apredescu:ventilator_inteligent_poza.png?700|}} | ||
<note important>**Exemplu rezultat generare grafic din data logger, folosind Excel:**</note> | <note important>**Exemplu rezultat generare grafic din data logger, folosind Excel:**</note> | ||
{{:pm:prj2021:apredescu:ventilator_inteligent_grafic.jpeg?700|}} | {{: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 ===== | ||
<note tip>Sursa: {{:pm:prj2021:apredescu:ventilatorinteligent.rar|}}</note> | <note tip>Sursa: {{:pm:prj2021:apredescu:ventilatorinteligent.rar|}}</note> |