Student: Ioan Cioraneanu Grupa: 332CB
Masurarea temperaturii si a umiditatii, afisarea lor pe un ecran LCD. Cand tempereatura nu este in parametrii de confort, un ventialor va racori camera sau un rezistor o va incalzi. Camera va fi o incinta mica pentru a se putea observa schimbarile de temperatura.
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.
Lista de piese:
Dupa ce este setata temperatura de referinta circuitul functioneaza idependent.
► pre-setup
#include <LiquidCrystal_I2C.h> #include <DHT_U.h>
#define DHTPIN 12 #define DHTTYPE DHT22 #define ref_temp 28.0
DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27, 20, 4);
unsigned long startTime; unsigned long currentTime;
► setup
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);
DDRD |= B00000000; PORTD |= B00000100; // heater pin 2 PORTD |= B00010000; // fan pin 4 pinMode(2, OUTPUT); pinMode(4, OUTPUT);
startTime = millis();
► loop
float hum = dht.readHumidity(); float temp = dht.readTemperature(); if (isnan(hum) || isnan(temp)) { lcd.setCursor(0, 0); lcd.print("Read failed!"); lcd.setCursor(0, 1); lcd.print("Please reset"); return; }
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);
if (temp > ref_temp) { PORTD &= B11101111; } else { PORTD |= B00010000; }
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 }
Mediul de dezvoltare folosit în realizarea proiectului: Arduino IDE.