Защита термостата

Angrom
Offline
Зарегистрирован: 05.01.2022
#include <OneWire.h> // Подключаем библиотеку для взаимодействия с устройствами, работающими на шине и по протоколу 1-Wire 
#include <DallasTemperature.h> // Подключаем библиотеку с функциями для работы с DS18B20 (запросы, считывание и преобразование возвращаемых данных) 
 
#define ONE_WIRE_BUS 2 // Указываем пин подключения data-вывода датчика температуры 
#define term_power 2 // Указываем пин подключения питания датчика температуры 
 
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); // Определяем пин подключения питания датчика температуры 
pinMode(relepin, OUTPUT); // реле 
//pinMode(relepin2, OUTPUT); // реле 2 
} 
 
 
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)///////////////////////////////////////////////////////////////// 
 
{ 
//----------------------------------------------------------------УСТАВКИ ТЕМП.-------------------------------------------------------------------------------— 
if(sensors.getTempCByIndex(0) <= 67){ digitalWrite(relepin, LOW);} // если температура меньше 28 град то реле включаем 
if(sensors.getTempCByIndex(0) >= 70){ digitalWrite(relepin, HIGH);}//если темп. больше 30 то реле выключаем 
 
//if (sensors.getTempCByIndex(0) < 30 ) digitalWrite(relepin2, HIGH); // 
//else digitalWrite(relepin2, LOW); 
 
 
Serial.println(temperature(),1); // Выводим текущее значение температуры датчика, округленное до десятых 
}

Здравствуйте, подскажите как сделать чтобы, если датчик выходит история или отключается тэн выключался 

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

а как понять, что датчик сломался или отключился?

Angrom
Offline
Зарегистрирован: 05.01.2022

один из проводов отсоединился

 

NikShel
Offline
Зарегистрирован: 21.01.2018

Строки 4, 5. Проверьте.

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

Angrom пишет:

один из проводов отсоединился

я вас о другом спрашиваю - как программа об этом узнает?

-NMi-
Offline
Зарегистрирован: 20.08.2018

Тута два пути:

1 - при инициализации 1820 прижимает уши, типа я здеся, на линии и готов. соответственно это отслеживаем в софте.

2 - проверяем контрольку в присланном пакете, отслеживаем в софте.

Данный способ мучения датчиков и проводов работает при обрывах, замыканиях, погружении в аццкую смесь и вазможна даже при йадерном взрыве примерно с 14го года. пока нисламалсо)))

пысы- фсё пейсал сам, снуля, бисфсиво, тока пиво и рыба...

Angrom
Offline
Зарегистрирован: 05.01.2022

Наверное лучше запрограммировать так чтобы когда перестаёт датчик данный присылать то тэн отключается

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

Angrom пишет:

Наверное лучше запрограммировать так чтобы когда перестаёт датчик данный присылать то тэн отключается

Алгоритм:

каждый раз. когда датчик присылает правильные данные - запоминайте время. Если с этого времени прошло оговоренное число секунд. а данные не обновились - выключаем тен