Водонагреватель по заданной температуре

a2kuz
Offline
Зарегистрирован: 17.04.2017

День добрый, не судите строго я только начинаю...

суть моей идеи сделать что то типо термостата. то есть при указанной температуре вкл /выкл тен на электро умывалнике в гараже. с этим проблем нет , греет тен дошла температура до 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);                // Выводим текущее значение температуры датчика, округленное до десятых
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Бидняшка. Загнобил дядяВитя. 

sadman41
Offline
Зарегистрирован: 19.10.2016

Вам нужен гистерезис

https://helpiks.org/8-11314.html

b707
Offline
Зарегистрирован: 26.05.2017

ТС, строчку 34 перенесите в setup, в ЛУПе этой строчке не место

b707
Offline
Зарегистрирован: 26.05.2017

DetSimen пишет:

Бидняшка. Загнобил дядяВитя. 

почитал. Правильно загнобил.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

a2kuz пишет:
сделать порог чтоб можно было установить (без энкодеров и дисплеев) 

Что Вы имеете в виду под "установить без энкодеров и дисплеев"? Голосом? Набором кода на перемычках? Пассами руками и заклинанием? Через web-форму? О чём вообще речь?

a2kuz
Offline
Зарегистрирован: 17.04.2017

ЕвгенийП пишет:

a2kuz пишет:
сделать порог чтоб можно было установить (без энкодеров и дисплеев) 

Что Вы имеете в виду под "установить без энкодеров и дисплеев"? Голосом? Набором кода на перемычках? Пассами руками и заклинанием? Через web-форму? О чём вообще речь?

изначально сделать уставки в IDE... прошить контроллер и оставить как есть дело в другом как сделать чтоб температура держалась, дапустим +30 включить, +40 выключить. все больше не нужно не чего 

Николай Коростелев
Offline
Зарегистрирован: 05.04.2016

если (температура <= 30){

Пин_с_реле = HIGH;

}

иначе если (температура >=40){

Пин_с_реле = LOW;

}

 

разве не так? что-то я не понимаю в чем проблема....

a2kuz
Offline
Зарегистрирован: 17.04.2017

Николай Коростелев пишет:

если (температура <= 30){

Пин_с_реле = HIGH;

}

иначе если (температура >=40){

Пин_с_реле = LOW;

}

 

разве не так? что-то я не понимаю в чем проблема....

ОГРОМНОЕ СПАСИБО! Именно это мне и нужно было. 

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

a2kuz пишет:

ОГРОМНОЕ СПАСИБО! Именно это мне и нужно было. 

Что это было??????

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Как мы синхронно-то, а!

Pyotr
Offline
Зарегистрирован: 12.03.2014

Чтоб можно было устанавливать порог термостата без кнопок,энкодера, дисплея, нужно добавить переменный резистор на аналоговый вход и нарисовать шкалу в градусах 25-60*. Считывать ADC и переводить в Т пороговое. Только нафига для такой задачи ардуино? На TL431, реле и NTC тоже самое получится. В цепь анода резистор для ООС. Гистерезис обеспечит реле.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

тэн для бойлера с регулятором и все.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Ну я написал это:

http://arduino.ru/forum/proekty/termostat-gazovogo-kotla

Для газового котла. Не думаю, что это будет сложно адаптировать под Вашу задачу. Тут только добавлены кнопки для заданий температуры, индиккатор 2х16 и гистерезис 5 градусов.