Differences

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

Link to this comparison view

pm:prj2022:cristip:temperaturecontrol [2022/06/01 13:47]
ioan.cioraneanu [Hardware Design]
pm:prj2022:cristip:temperaturecontrol [2022/06/01 16:06] (current)
ioan.cioraneanu [Download]
Line 1: Line 1:
 ====== Temperature Control ====== ====== Temperature Control ======
-Ioan Cioraneanu332CB+   ​Student: ​Ioan Cioraneanu 
 +   ​Grupa: ​332CB 
 ===== Introducere ===== ===== Introducere =====
  
Line 10: Line 12:
  
 ===== Descriere generală ===== ===== Descriere generală =====
 +
 +Proiectul isi propune cotrolarea temperaturii intr-o incinta. Acesta se foloseste de un senzor pentru a masura temperatura,​ iar in cazul in care aceasta nu este in parametrii de confort va actiona incalzitorul sau ventilatorul pentru a redresa diferenta.
 +Aplicabilitate:​ pentru a printa 3D se folosesc diferite materiale. Unele dintre aceastea, precum abs sau nilon, au nevoie ca temperatura ambientala sa fie una ridica si constanta. Astfel proiectul meu poate fi scalat, in functie de dimensiunile camerei necesare pentru a mentine aceasta temperatura ridicata.
  
 === Schema bloc === === Schema bloc ===
Line 22: Line 27:
   * breadboard   * breadboard
   * ventilator   * ventilator
-  * heater+  * heater ​+ bloc aluminiu + radiator
   * placa 4 relee 5V   * placa 4 relee 5V
   * senzor temperatura + umiditate DHT22   * senzor temperatura + umiditate DHT22
Line 34: Line 39:
 ===== Software Design ===== ===== Software Design =====
  
 +Dupa ce este setata temperatura de referinta circuitul functioneaza idependent.
  
-<note tip+► **pre-setup** 
-Descrierea codului aplicaţiei ​(firmware): +     * bibliotecile 
-  * mediu de dezvoltare ​(if any) (e.gAVR StudioCodeVisionAVR+<code cpp
-  * librării şi surse 3rd-party ​(e.gProcyon AVRlib+#include <​LiquidCrystal_I2C.h>​ 
-  algoritmi şi structuri pe care plănuiţi să le implementaţi +#include <​DHT_U.h>​ 
-  * (etapa 3surse şi funcţii implementate +</​code>​ 
-</note>+     * se defineste senzorul de temperatura si se seteaza referinta(ref_temp
 +<code cpp> 
 +#define DHTPIN 12 
 +#define DHTTYPE DHT22 
 +#define ref_temp 28.0 
 +</​code>​ 
 +     * se initializeaza senzorul si lcd-ul 
 +<code cpp> 
 +DHT dht(DHTPIN, DHTTYPE); 
 +LiquidCrystal_I2C lcd(0x27, 20, 4); 
 +</​code>​ 
 +     * se definesc 2 variabile ce vor fi folosite pentru a temporiza heaterul 
 +<code cpp> 
 +unsigned long startTime;​ 
 +unsigned long currentTime;​ 
 +</​code>​ 
 + 
 +► **setup** 
 +     * se inițializează senzorul si lcd-ul 
 +<code cpp> 
 +dht.begin();​ 
 +  
 +lcd.init(); ​                       // initialize the lcd 
 +lcd.backlight();​ 
 +lcd.setCursor(2,​0);​ 
 +lcd.print("​Proiect PM 2022"​);​ 
 +lcd.setCursor(0,​ 3); 
 +lcd.print("​Ioan Cioraneanu ​ WOW"​);​ 
 +delay(5000);​ 
 +</​code>​ 
 +     se seteaza pinii de output 
 +<code cpp> 
 +DDRD |= B00000000;​ 
 +PORTD |= B00000100; ​               // heater pin 2 
 +PORTD |= B00010000; ​               // fan pin 4 
 + 
 +pinMode(2, OUTPUT); 
 +pinMode(4, OUTPUT); 
 +</​code>​ 
 +     * se salveaza timpul de inceput ce va fi updatat de fiecare data cand heaterul porneste 
 +<code cpp> 
 +startTime = millis(); 
 +</​code>​ 
 + 
 + 
 +► **loop** 
 +     * se citesc temperatura si umiditatea 
 +<code cpp> 
 +float hum = dht.readHumidity();​ 
 +float temp = dht.readTemperature();​ 
 +if (isnan(hum|| isnan(temp)) { 
 +  lcd.setCursor(0,​ 0); 
 +  lcd.print("​Read failed!"​);​ 
 +  lcd.setCursor(01); 
 +  ​lcd.print("​Please reset"​);​ 
 +  return; 
 +
 +</​code>​ 
 +     se afiseaza temperatura,​ umiditatea si temperatura de referinta 
 +<code cpp> 
 +lcd.setCursor(0,0);  
 +lcd.print("​Tmp: ​ Hum:  REF_TMP:"​);​ 
 +lcd.setCursor(0,​1); 
 +lcd.print(temp);​ 
 +lcd.setCursor(6,​1);​ 
 +lcd.print(hum);​ 
 +lcd.setCursor(13,​ 1); 
 +lcd.print(ref_temp);​ 
 +</​code>​ 
 +     daca temperatura este mai mare se porneste ventilatorul 
 +<code cpp> 
 +if (temp > ref_temp) { 
 +  ​PORTD &= B11101111;​ 
 +
 +else { 
 +  PORTD |= B00010000;​ 
 +
 +</​code>​ 
 +     daca temperatura este mai mica si au trecut 10 secunde de la ultima alimentare se porneste incalzitorul 
 +<code cpp> 
 +currentTime = millis(); 
 +  
 +if (temp ref_temp && currentTime - startTime > 10000) { 
 +  PORTD &= B11111011; ​              // start the heater 
 +  delay(500); ​                      // keep the heater on for 0.5 seconds 
 +  startTime = millis(); ​            // measure the time to pause the heater 
 +  PORTD |= B00000100; ​              // stop the heater 
 + 
 +
 + 
 +</code> 
 + 
 +==== Bibliotecile ====  
 +   * //DHT.h// ⇒ folosirea senzorului DHT22 pentru înregistrarea temperaturii și umidității  
 +   * //​LiquidCrystal_I2C.h//​ ⇒ folosirea display-ului LCD cu modul I2C 
 + 
 +==== Mediu de Dezvoltare ====
  
 +Mediul de dezvoltare folosit în realizarea proiectului:​ **Arduino IDE**.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Am realizat 2 incinte. In una din ele se afla arduino, releele de control si sursa si in cea de-a doua termometrul,​ ventilatorul si incalzitorul. 
 +Pe incalzitor am prins si un bloc de aluminiu pe care am lipit un radiator pentru a disipa mai bine caldura in incinta.
 </​note>​ </​note>​
  
-===== Concluzii ===== 
  
 ===== Download ===== ===== Download =====
  
 <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**.+{{:pm:prj2022:cristip:temperature_control_cioraneanu_ioan.zip|}}
 </​note>​ </​note>​
  
-===== Jurnal ===== 
- 
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2022/cristip/temperaturecontrol.1654080454.txt.gz · Last modified: 2022/06/01 13:47 by ioan.cioraneanu
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