Водонагреватель по заданной температуре
- Войдите на сайт для отправки комментариев
Ср, 07/11/2018 - 11:49
День добрый, не судите строго я только начинаю...
суть моей идеи сделать что то типо термостата. то есть при указанной температуре вкл /выкл тен на электро умывалнике в гараже. с этим проблем нет , греет тен дошла температура до 40 выключился , немного остыла опять включился ...... но хотелось бы сделать порог чтоб можно было установить (без энкодеров и дисплеев) допустим 30 включается 40 выключается и так постоянно чтоб работал.... не могу сообразить как сделать , подскажите! скетч ниже датчик DS18B20 плата ардуино uno
#include <OneWire.h> // Подключаем библиотеку для взаимодействия с устройствами, работающими на шине и по протоколу 1-Wire #include <DallasTemperature.h> // Подключаем библиотеку с функциями для работы с DS18B20 (запросы, считывание и преобразование возвращаемых данных) #define ONE_WIRE_BUS 2 // Указываем пин подключения data-вывода датчика температуры #define term_power 3 // Указываем пин подключения питания датчика температуры OneWire oneWire(ONE_WIRE_BUS); // Сообщаем библиотеке об устройстве, работающем по протоколу 1-Wire DallasTemperature sensors(&oneWire); // Связываем функции библиотеки DallasTemperature с нашим 1-Wire устройством (DS18B20) int relepin = 4; // реле пин 4 //int relepin2 = 7; // реле пин 5 void setup(void)/////////////////////////////////////////////////////////////////// { Serial.begin(9600); // Запускаем вывод данных на серийный порт sensors.begin(); // Запускаем библиотеку измерения температуры pinMode(term_power, OUTPUT); // Определяем пин подключения питания датчика температуры } float temperature() { // Измеряем температуру 10 секунд digitalWrite(term_power, HIGH); // Включаем питание датчика температуры delay(100); // Задержка перед первым измерением sensors.requestTemperatures(); // Запрос на измерение температуры (1-й ошибочный) delay(500); // Задержка перед поторным измерением sensors.requestTemperatures(); // Запрос на измерение температуры (повторный) float t = float(sensors.getTempCByIndex(0)); // Получаем значение температуры //digitalWrite(term_power, LOW); // Отключаем питание датчика температуры delay(9400);//9400 // Задержка, чтобы датчик не нагревался от частых измерений return(t); // Возвращаем значение температуры в место вызова функции } void loop(void)///////////////////////////////////////////////////////////////// { pinMode(relepin, OUTPUT); // реле //pinMode(relepin2, OUTPUT); // реле 2 //------------------------------------------------------------------------------------------------------------------------------------------------- if(sensors.getTempCByIndex(0) > 31) digitalWrite(relepin, HIGH); // если температура больше 40 град то реле выключается если меньше то вылючается else digitalWrite(relepin, LOW); //if (sensors.getTempCByIndex(0) < 30 ) digitalWrite(relepin2, HIGH); // //else digitalWrite(relepin2, LOW); Serial.println(temperature(),1); // Выводим текущее значение температуры датчика, округленное до десятых }
Бидняшка. Загнобил дядяВитя.
Вам нужен гистерезис
https://helpiks.org/8-11314.html
ТС, строчку 34 перенесите в setup, в ЛУПе этой строчке не место
Бидняшка. Загнобил дядяВитя.
почитал. Правильно загнобил.
Что Вы имеете в виду под "установить без энкодеров и дисплеев"? Голосом? Набором кода на перемычках? Пассами руками и заклинанием? Через web-форму? О чём вообще речь?
Что Вы имеете в виду под "установить без энкодеров и дисплеев"? Голосом? Набором кода на перемычках? Пассами руками и заклинанием? Через web-форму? О чём вообще речь?
изначально сделать уставки в IDE... прошить контроллер и оставить как есть дело в другом как сделать чтоб температура держалась, дапустим +30 включить, +40 выключить. все больше не нужно не чего
если (температура <= 30){
Пин_с_реле = HIGH;
}
иначе если (температура >=40){
Пин_с_реле = LOW;
}
разве не так? что-то я не понимаю в чем проблема....
если (температура <= 30){
Пин_с_реле = HIGH;
}
иначе если (температура >=40){
Пин_с_реле = LOW;
}
разве не так? что-то я не понимаю в чем проблема....
ОГРОМНОЕ СПАСИБО! Именно это мне и нужно было.
ОГРОМНОЕ СПАСИБО! Именно это мне и нужно было.
Что это было??????
Как мы синхронно-то, а!
Чтоб можно было устанавливать порог термостата без кнопок,энкодера, дисплея, нужно добавить переменный резистор на аналоговый вход и нарисовать шкалу в градусах 25-60*. Считывать ADC и переводить в Т пороговое. Только нафига для такой задачи ардуино? На TL431, реле и NTC тоже самое получится. В цепь анода резистор для ООС. Гистерезис обеспечит реле.
тэн для бойлера с регулятором и все.
Ну я написал это:
http://arduino.ru/forum/proekty/termostat-gazovogo-kotla
Для газового котла. Не думаю, что это будет сложно адаптировать под Вашу задачу. Тут только добавлены кнопки для заданий температуры, индиккатор 2х16 и гистерезис 5 градусов.