Ventilator inteligent
Introducere
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, 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 dependență între procesul de ventilație și temperatura camerei.
Utilitatea lui derivă din diferențierea sa față de un ventilator clasic de birou.
Descriere generală
Senzorul de temperatură, precum și cel de proximitate, transferă date către Arduino.
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.
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 generează un grafic ce evidențiază fluctuația temperaturii în timp.
Hardware Design
Arduino UNO
Breadboard
Senzor de temperatură DHT11
Motor cu elice
Servomotor
Card microSD + adaptor
Senzor PIR HC-SR505
Modul sursă de alimentare + alimentator
Driver (1 diodă, 1 rezistență 1kOhm, 1 tranzistor NPN)
Fire
Software Design
Mediul de dezvoltare folosit este Arduino IDE.
Bibliotecile externe folosite au fost:
SPI.h.h (pentru adaptorul microSD)
Servo.h (pentru Servomotor)
SD.h (pentru cardul microSD)
DHT.h (pentru modulul de temperatură DHT11)
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ă.
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.
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
Poză proiect de ansamblu:
Exemplu rezultat generare grafic din data logger, folosind Excel:
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
Documentația în format
PDF
Bibliografie/Resurse