Differences

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

Link to this comparison view

pm:prj2023:adarmaz:climate-controller [2023/05/27 17:09]
rares_stefan.rosu
pm:prj2023:adarmaz:climate-controller [2023/05/30 17:32] (current)
rares_stefan.rosu
Line 8: Line 8:
   - Informatia este procesata si se afiseaza pe un ecran LCD temperatura curenta\\   - Informatia este procesata si se afiseaza pe un ecran LCD temperatura curenta\\
   - Se stabileste viteza optima de rotire a motorului utilizand alogitmul pid.\\   - Se stabileste viteza optima de rotire a motorului utilizand alogitmul pid.\\
-  - Voi utiliza un drive ce va transmitee comanda catre motor.\\+  ​- Cand se apasa pe buton motorul va porni cu viteza initiala calculata de algoritmul pid.\\ 
 +  ​- Voi utiliza un timer prin intermediul caruia se va verifica la fiecare minut daca temperatura a ajuns la valoarea dorita.\\
   - Motorul va incepe sa creasca / sa micosrese viteza (dupa caz) pana cand temeperatura va ajunge la valoarea dorita.   - Motorul va incepe sa creasca / sa micosrese viteza (dupa caz) pana cand temeperatura va ajunge la valoarea dorita.
  
-{{pm:​prj2023:​adarmaz:​schemapm.png?500}}+{{pm:​prj2023:​adarmaz:​schemaPm3.png?500}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
 Componentele alese pentru crearea sistemului sunt: Componentele alese pentru crearea sistemului sunt:
   - Arduino UNO   - Arduino UNO
-  - Ecran LCD 1602 +  - Ecran LCD 1602 I2C 
-  - Senzor ​SMD de temperatura ​P0K1.1206.2P.B+  - Senzor ​DHT11 de temperatura
   - BREADBOARD 400 Puncte   - BREADBOARD 400 Puncte
   - MOTOR SERVO 360   - MOTOR SERVO 360
-  - DRIVER MOTOR VNH7100AS+  - Push Button
  
 ===== Schema Tinkercad ===== ===== Schema Tinkercad =====
Line 28: Line 29:
 ===== Software Design ===== ===== Software Design =====
  
-<note tip> +Mediu de dezvoltareArduino IDE 
-Descrierea codului aplicaţiei (firmware)+ 
-  mediu de dezvoltare ​(if any) (e.g. AVR StudioCodeVisionAVR) +**Functionalitatea programului** 
-  * librării şi surse 3rd-party (e.gProcyon AVRlib+ 
-  algoritmi şi structuri pe care plănuiţi să le implementaţi +**setup()** 
-  ​* ​(etapa 3surse şi funcţii implementate + 
-</​note>​+ 
 +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 CTCam 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_vectstarea motorului este alternata la fiecare apasare a butonului, iar motorul se opreste sau reporneste dupa caz. 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 44: Line 67:
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+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 =====
 +{{pm:​prj2023:​adarmaz:​rosurares.zip}}
 <note warning> <note warning>
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
 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**. 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**.
Line 55: Line 80:
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.+  - 28 aprilie - achizitionare piese 
 +  - 7 mai - documentatie initiala 
 +  - 8 - 15 mai - realizare hardware 
 +  - 16 - 27 mai - realizare software 
 </​note>​ </​note>​
  
Line 61: Line 90:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+  ​Laboratorul 2 Intreruperi:​ [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2-2023]] 
 +  - Laboratorul 3 Timere. PWM: [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023]] 
 +  - Laboratorul 6 I2C: [[https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2022]]
 </​note>​ </​note>​
  
pm/prj2023/adarmaz/climate-controller.1685196587.txt.gz · Last modified: 2023/05/27 17:09 by rares_stefan.rosu
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