Продукти

Цифров термостат

Цифров термостат
9 януари 2025

Тъй като гледаме повечето проекти да са взаимно свързани в този проект ще използваме отново терморезистор, но този път, за да включваме/изключваме реле при определена температура въведена в програмата.

 

! ВАЖНО !
Ако решите чрез изхода на релето да управлявате високо напрежение (110-240V), както е на схемата, моля да бъдете внимателни, всичко да бъде изолирано и включвате накрая след като е свързано всичко. Не работете под напрежение. Това може да застраши живота ви.

 

Благодаря, дано сте прочели абзаца „важно“ , ако не сте Ви моля да се върнете и да го прочетете!

 

 

Преди да преминем към схемата, нека уточним какво е реле и как работи:

Релето има 3 пина за високо напрежение (NC,C,NO), които се свързват към устройството, което искате да управлявате. От другата страна има 3 пина за ниско напрежение (Ground,Vcc,Signal), които се свързват към Arduino-то. Виж Фиг. 1.

 

 

Фиг.1. Пинове за високо и ниско напрежение

 

  • NC – Нормално затворен ключ (при достигане на 5V на бобината на релето ключа се отваря);
  • C – Общ пин между NC и NO;
  • NO – Нормално отворен ключ (при достигане на 5V на бобината на релето ключа се затваря);
  • Ground – Земя (-);
  • Vcc – (5V);
  • Signal – подава се от Arduino-то за управление на релето;

 

А сега нека погледнем какво ни е нужно за проекта:

  • Arduino UNO;
  • Breadboard;
  • 100K терморезистор ( на схемата е 10К , но вие използвайте 100К);
  • 100К резистор ( на схемата е 10К , но вие използвайте 100К);
  • Едноканален релеен модул;
  • Проводници;
  • Товар по ваш избор (в случая използваме лампа на 220V);

 

Схема на свързване

Програмен код

#include
int pinOut = 10; //пин за релето
double Thermistor(int RawADC) {
double Temp;
Temp = log(10000.0*((1024.0/RawADC-1)));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15;
Temp = (Temp * 9.0)/ 5.0 + 32.0; //коментирай реда ако искаш да е в Целзий
return Temp;
}


void setup() {
Serial.begin(9600);
pinMode(10, OUTPUT); //задаваме релето като изход
}


void loop() {
int val;
double temp;
val=analogRead(0);
temp=Thermistor(val);
Serial.print("Temperature = "); //показва измерената температура на сериен монитор
Serial.print(temp);
Serial.println(" F"); //ако го правите в Целзий напишете „С“
if (temp >= 150){ //тук можем да променяма градусите вместо 150 може да напишем наше предпочитание, при достигането, на което релето да се изключи
digitalWrite(pinOut, LOW); //изключва релето
}
else {
digitalWrite(pinOut, HIGH); //релето ще е включено докато не достигнем температура над 150
}
delay(500);
}