Обычно в бытовом тепловентиляторе есть спираль которая нагревается. В данной статье будет представлено решение как уменьшить нагрев спирали в зависимости от температуры окружающего воздуха. И сделать так чтобы обогреватель не маслал на полную мощность когда это уже не требуется, а только подогревал помещение включая мощность спирали в пол силы.
Для этого нам потребуется:
- Микроконтроллер Arduino Pro Mini (можно купить тут)
- Твердотельное реле SSR-25DA (можно купить тут)
- Датчик температуры DS18B20 (можно купить тут)
- Резистор 4.7кОм
- Гибкой провод-шнурок 1-2 м для датчика
- Блок питания (около 5В) для микроконтроллера Arduino Pro Mini - подойдет от зарядки для сотового телефона.
Примерная схема тепловентилятора
Плюс минус все тепловентиляторы так устроены. В нашем случае мы просто сделаем разрыв в цепи питания одной из спиралей и пропустим через твердотельное реле.
Вся прелесть твердотельного реле SSR-25DA заключается в том, что оно может включить и отключить цепь несколько раз в секунду (в нашем случае примерно 30 раз) при этом оно будет чувствовать себя прекрасно и проработает так много времени.
Принцип работы
Включение о отключение несколько раз в секунду будет регулировать микроконтроллер Arduino Pro Mini анализируя температуру воздуха через датчик. Таким образом если в помещении будет холодно микроконтроллер просто на постоянку включит реле и спираль начнет нагреваться обогревая помещение. С течением времени когда температура воздуха поднимется микроконтроллер начнет кратковременно отключать реле, и чем будет выше температура тем моменты отключения реле будут чаще и длительнее. В конечно итоге установится баланс между частотой и длительностью включения реле и температурой воздуха. Обогреватель просто начнет поддерживать температуру слегка нагрев спираль. Это помогает экономить электроэнергию и не уменьшает разброс температуры. Встроенный в тепловентилятор биметаллический выключатель можно использовать в качестве аварийного отключения на случай сбоя с электроникой чтобы не произошло перегрева помещения.
"Мозги" тепловентилятора
Используется паразитное питание датчика DS18B20 чтобы шнурок с датчиком требовал всего 2 провода.
Скетч для микроконтроллера
Скетч или программа для микроконтроллера заливается на плату стандартным способом. Если вы не знаете как это сделать наберите в гугле "заливка скетча на arduino pro mini". Ниже сам код:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <avr/wdt.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int maxTemp=30;
int minTemp=26;
const int relayPin=9;
unsigned long interval=30*1000; //30sec recomended
unsigned long lastConnectionTime=0;
int Temp=25;
float tempPrev;
float temp=20;
void setup() {
Serial.begin(9600);
pinMode(relayPin,OUTPUT);
wdt_enable(WDTO_8S);
sensors.begin();
setPwmFrequency(relayPin, 1024); //division on 1024 for ~30Hz
pinMode(13, OUTPUT); //Blick LED
}
void loop() {
if(millis() - lastConnectionTime > interval) {
digitalWrite(13, HIGH);
tempPrev=temp;
sensors.requestTemperatures();
temp=sensors.getTempCByIndex(1);
digitalWrite(13, LOW);
if (temp == -127) {temp=tempPrev;}
int val = 255-255*(temp-minTemp)/(maxTemp-minTemp);
if (val<0) {val=0;}
if (val>204) {val=204;} //80% -this 230 or 450W; 204 for 400W
analogWrite(relayPin, val);
lastConnectionTime = millis();
Serial.print("Temp=");
Serial.print(temp);
int valperc = map(val, 0, 255, 0, 100);
Serial.print(" Power=");
Serial.print(valperc);
Serial.println("%");
}
delay(1);
wdt_reset();
}
void setPwmFrequency(int pin, int divisor) {
byte mode;
if(pin == 5 || pin == 6 || pin == 9 || pin == 10) {
switch(divisor) {
case 1: mode = 0x01; break;
case 8: mode = 0x02; break;
case 64: mode = 0x03; break;
case 256: mode = 0x04; break;
case 1024: mode = 0x05; break;
default: return;
}
}
}
Просто скопируйте его и вставьте в приложение Arduino IDE. Подключите arduino pro mini и загрузите программу.
|