Table of Contents

Automatic Climate Controller - Rosu Rares Stefan 333CA

Introducere

Proiectul ales consta in construirea unui sistem de gestiune a temperaturii dintr-o incapere, utilizand platforma Arduino. Scopul acestuia este de a controla in mod automat viteza de rotatie a unui motor folosit pe post de ventilator astfel incat temperatura din incapere sa ajunga la valoarea dorita de catre utilizator. Am dezvoltat acest sistem pornind de la ideea intreuintarilor lui practice in industria auto.

Descriere generala

Modul de functionare a automatului va fi urmatorul:

  1. Senzorul de temperatura masoara valoarea temperaturii din incapere la fiecare moment de timp.
  2. Informatia este procesata si se afiseaza pe un ecran LCD temperatura curenta
  3. Se stabileste viteza optima de rotire a motorului utilizand alogitmul pid.
  4. Cand se apasa pe buton motorul va porni cu viteza initiala calculata de algoritmul pid.
  5. Voi utiliza un timer prin intermediul caruia se va verifica la fiecare minut daca temperatura a ajuns la valoarea dorita.
  6. Motorul va incepe sa creasca / sa micosrese viteza (dupa caz) pana cand temeperatura va ajunge la valoarea dorita.

Hardware Design

Componentele alese pentru crearea sistemului sunt:

  1. Arduino UNO
  2. Ecran LCD 1602 I2C
  3. Senzor DHT11 de temperatura
  4. BREADBOARD 400 Puncte
  5. MOTOR SERVO 360
  6. Push Button

Schema Tinkercad

Software Design

Mediu de dezvoltare: Arduino IDE

Functionalitatea programului

setup()

In functia setup() se citeste temperatura curenta si se afiseaza pe ecranul LCD. Se configureaza Timer0 pentru a genera intreruperi periodice prin care se va controla viteza motorului In consecinta am setat modul de functionare CTC, am stabilit valoarea de comparare a registrului OCR0A pentru a specifica intervalul intre intreruperi, am activat intreruperea la nivelul de comparare si am setat prescaler-ul.

controlMotor()

In functia controlMotor este calculata viteza de rotatie a motorului in functie de eroarea de temperatura si de constantele PID.

Primul pas consta in a citi temperatura curenta de la senzorul DHT si de a calcula eroarea dintre temperatura tinta si cea curenta. In continuare, se calculeaza termenii Proportional, Integral și Derivative utilizand valorile pentru eroarea calculata la pasul curent si eroarea calculata la pasul anterior. Se calculeaza viteza motorului in procente mapand valoarea vitezei calculata utilizand formula algoritmului PID in intervalul (0, 100).

Utilitatea intreruperilor

Am utilizat temporizatorul Timer0 care genereaza intreruperi periodice la un interval prestabilit de 1 minut. In cadrul functiei ISR(TIMER0_COMPA_vect), care este executata atunci cand Timer0 genereaza o intrerupere se verifica daca temperatura curenta nu are inca aceeasi valoare cu cea citita de senzor, iar in acest caz se mareste viteza motorului.

De asemenea, detectarea actiunii de apasare a butonului se realizeaza tot prin intermediul unei intreruperi. In cadrul functiei ISR(PCINT2_vect) starea motorului este alternata la fiecare apasare a butonului, iar motorul se opreste sau reporneste dupa caz.

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Principala dificultate a realizarii proiectului a constat in calculul constantelor pentru implementarea algoritmului PID, intrucat, nu exista formule de calcul a acestora si valorile lor se stabilesc experimental. Cu toate acestea mi-a facut placere sa dezvolt acest proiect si planuiesc ca in viitor sa inlocuiesc motorul de servo folosit cu un motor DC pentru a putea atinge viteze de rotatii de valori mai mari.

Download

rosurares.zip

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.

Jurnal

  1. 28 aprilie - achizitionare piese
  2. 7 mai - documentatie initiala
  3. 8 - 15 mai - realizare hardware
  4. 16 - 27 mai - realizare software

Bibliografie/Resurse

Export to PDF
Link pagina wiki