Differences

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

Link to this comparison view

pm:prj2023:adarmaz:climate-controller [2023/05/05 17:24]
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}}
- +
-</​note>​+
  
 ===== 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 ===== 
 + 
 +{{pm:​prj2023:​adarmaz:​schema_electricapm.png?​500}}
  
 ===== Software Design ===== ===== 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.
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
Line 43: 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 54: 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 60: 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>​
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​+<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​\\ 
 +[[https://​ocw.cs.pub.ro/​courses/​pm/​prj2023/​adarmaz/​climate-controller|Link pagina wiki]]
  
pm/prj2023/adarmaz/climate-controller.1683296645.txt.gz · Last modified: 2023/05/05 17:24 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