Защита термостата
- Войдите на сайт для отправки комментариев
Ср, 05/01/2022 - 15:10
#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); // Выводим текущее значение температуры датчика, округленное до десятых }
Здравствуйте, подскажите как сделать чтобы, если датчик выходит история или отключается тэн выключался
а как понять, что датчик сломался или отключился?
один из проводов отсоединился
Строки 4, 5. Проверьте.
один из проводов отсоединился
я вас о другом спрашиваю - как программа об этом узнает?
Тута два пути:
1 - при инициализации 1820 прижимает уши, типа я здеся, на линии и готов. соответственно это отслеживаем в софте.
2 - проверяем контрольку в присланном пакете, отслеживаем в софте.
Данный способ мучения датчиков и проводов работает при обрывах, замыканиях, погружении в аццкую смесь и вазможна даже при йадерном взрыве примерно с 14го года. пока нисламалсо)))
пысы- фсё пейсал сам, снуля, бисфсиво, тока пиво и рыба...
Наверное лучше запрограммировать так чтобы когда перестаёт датчик данный присылать то тэн отключается
Наверное лучше запрограммировать так чтобы когда перестаёт датчик данный присылать то тэн отключается
Алгоритм:
каждый раз. когда датчик присылает правильные данные - запоминайте время. Если с этого времени прошло оговоренное число секунд. а данные не обновились - выключаем тен