Погодозависимое управление котлом
- Войдите на сайт для отправки комментариев
Здравствуйте, уважаемые!
Небольшая предыстория (можно пропустить):
У меня в подвале стоить отопительный газовый котел. Управление по заданной температуре теплоносителя (механическое). При большой разнице дневной и ночной уличных температур приходилось бегать и крутить установки. Тогда и возникло желание автоматизировать этот процесс.
Первый регулятор был собран на PIC16F628A на тактовой частоте 32кГц. Микрочиповский си (возможно ввиду моей криворукости) работал криво. Писал на ассемблере. Соответственно - визуализации и управления минимум, но работал. Температурными датчиками выступали DS12b28.
Итак проект.
Познав ардуино я реализовал управление на ней:
1. Контроллер - ARDUINO UNO
2. Датчики температуры теплоносителя и наружней - DS12b28.
3. Управление и отображение - 16х2 ЖК дисплей с кнопками
4. Исполнительные устройства - блок 2 реле 5В. Одно реле перевод на автоматический режим, второе - управление горелкой.
Программно реализовано меню с выбором гетерезиса и наклона графика зависомости температур (пока прямая), запись адресов датчиков в ППЗУ.
Что хочется добавить - wifi модуль с индикацией и управлением по сети. Нет модуля и наю как реализовать это без статического IP, прямую зависимость сделать кривой 2 порядка (пока руки не дошли подогнать), ну и в корпус это все загнать :).
Ну и сам текст программы (кое что нарезал из чужих программ, оставив авторские комментарии):
#include <OneWire.h> // on pin 2 (a 4.7K resistor is necessary) #include <LiquidCrystal.h> #include <EEPROM.h> // Библиотека // initialize the library with the numbers of the interface pins LiquidCrystal lcd(8, 9, 4, 5, 6, 7); OneWire ds(2);// Датчик на порту 2 // Нажатые кнопки const int BUTTON_NONE = 0; const int BUTTON_RIGHT = 1; const int BUTTON_UP = 2; const int BUTTON_DOWN = 3; const int BUTTON_LEFT = 4; const int BUTTON_SELECT = 5; const int Gorelka=11; //Порт горелки const int Auto=3; //Порт включения автоматики //const int Buzzer=11; //Порт бузера int flagGeter = 0; //Флаг гетерезиса int Geteresis = 5; //Гетерезис температуры изначально 5 градусов int Grafik = 4; // Форма графика зависимости температуры теплоносителя от уличной температуры byte addrOUT[8]; //={0x10,0x30,0xC5,0xC8,0x0,0x0,0x0,0xC3}; //Адрес наружнего датчика byte addrIN[8]; //={0x10,0x31,0xC5,0xC8,0x0,0x0,0x0,0xF4}; // Адрес датчика теплоносителя void setup(void) { Serial.begin(9600); lcd.begin(16, 2); lcd.clear(); pinMode(Gorelka, OUTPUT); pinMode(Auto, OUTPUT); // pinMode(Buzzer, OUTPUT); digitalWrite(Gorelka, HIGH); digitalWrite(Auto, HIGH); Serial.println("Auto OFF"); Serial.println("Gorelka OFF"); for (byte i=0; i<8; i++) { addrIN[i] = EEPROM.read(i); addrOUT[i] = EEPROM.read(i+8); } lcd.print("kaida@ya.ru "); Serial.println("kaida@ya.ru "); // BuzzerBeep(); } void loop(void) { byte i; // byte present = 0; // byte type_s; // byte data[12]; // byte* addr; byte addrRead1[8]; byte addrRead2[8]; int n; int k; float Tout; //Уличная температура float Tin; //Температура теплоносителя // uint8_t raw; int button; float Ttn=0.; //Температура теплоносителя расчетная int intTout1; int intTout2; int intTin1; int intTin2; // Поиск датчиков в линии и считывание их номеров for( i = 0; i < 8; i++) { // Обнуляем addrRead1[i]=0x0; addrRead2[i]=0x0; } k=0; // Опрашиваем до 6 раз while (k<6){ n=0; ds.reset(); if (ds.search(addrRead1)){ n++; // Serial.print("ROM1 "); for( i = 0; i < 8; i++) { // Serial.print(' '); // Serial.print(addrRead1[i], HEX); } // Serial.println(""); delay(250); ds.reset(); if (ds.search(addrRead2)){ n++; // Serial.print("ROM2 "); for( i = 0; i < 8; i++) { // Serial.print(' '); // Serial.print(addrRead2[i], HEX); }; // Serial.println(""); ds.reset(); delay(250); } } //Если датчиков 2 идем дальше if (n == 2)break; //Если прошло 6 циклов и датчиков меньше 2, то уходим на пп ошибки if (k == 5) { intTout1 = 0; intTout2 = 0; intTin1 = 0; intTin2 = 0; for (i=0; i<8; i++) { if (addrOUT[i]== addrRead1[i]) intTout1++; if (addrOUT[i]== addrRead2[i]) intTout2++; if (addrIN[i]== addrRead1[i]) intTin1++; if (addrIN[i]== addrRead2[i]) intTin2++; } lcd.clear(); lcd.setCursor(0, 0); if ( (intTout1 == 8) ^ (intTout2 == 8)) { } else { lcd.print("ToutERR "); // Serial.println("Tout ERROR"); } if ( (intTin1 == 8) | (intTin2 == 8)) { } else { lcd.print("TinERR"); // Serial.println("Tin ERROR"); } SensorsError(); //Ошибка датчиков k=0; // k=0 Обнуляем счетчик } k++; ds.reset_search(); delay(2000); //Задержка 2 сек } ds.reset_search(); // Температура снаруже Tout = Temperatura(&addrOUT[0]); lcd.setCursor(0, 0); lcd.print("Tout="); lcd.print(Tout); lcd.print("C "); // Serial.print(" Temperature OUT = "); // Serial.println(Tout); // Температура теплоносителя Tin = Temperatura(&addrIN[0]); lcd.setCursor(0, 1); lcd.print("Tin="); lcd.print(Tin); lcd.print("C "); // Serial.print(" Temperature IN = "); // Serial.println(Tin); // Считывание кнопки выхода в меню if (getPressedButton() == BUTTON_UP) { // Остановка горелки, переход в меню digitalWrite(Gorelka, HIGH); Serial.println("Gorelka OFF"); printMenu1(); n=0; while (n < 1000) { //выдержка меню n++; button=getPressedButton(); if (button == BUTTON_UP) n=1000; // выход из меню if (button == BUTTON_LEFT){ // Изменение гетерезиса lcd.setCursor(0, 1); lcd.print("<- "); lcd.print(Geteresis); lcd.print(" +>"); // lcd.setCursor(7, 1); k=0; while (k <1000){ button=getPressedButton(); if (button == BUTTON_UP) { // выход из подменю k=1000; button=0; printMenu1(); } if ((button == BUTTON_LEFT)&(Geteresis != 2)) { Geteresis--; //Если нажата кнопка влево и гетерезис не равен 2 градусам уменьшаем его lcd.setCursor(7, 1); lcd.print(Geteresis); k=0; // Обнуляем время } if ((button == BUTTON_RIGHT)&(Geteresis != 9)) { Geteresis++; //Если нажата кнопка вправо и гетерезис не равен 9 градусам увеличиваем его lcd.setCursor(7, 1); lcd.print(Geteresis); k=0; // Обнуляем время } delay (5); } printMenu1(); } if (button == BUTTON_RIGHT){ // Изменение графика lcd.setCursor(0, 1); lcd.print("<- "); lcd.print(Grafik); lcd.print(" +>"); k=0; while (k <1000){ button = getPressedButton(); if (button == BUTTON_UP){ k=1000; // выход из подменю button=0; printMenu1(); } if ((button == BUTTON_LEFT)&(Grafik != 0)) { Grafik--; //Если нажата кнопка влево и гетерезис не равен 0 уменьшаем его lcd.setCursor(7, 1); lcd.print(Grafik); k=0; // Обнуляем время } if ((button == BUTTON_RIGHT)&(Grafik != 7)) { Grafik++; //Если нажата кнопка вправо и гетерезис не равен 7 увеличиваем его lcd.setCursor(7, 1); lcd.print(Grafik); k=0; // Обнуляем время } delay (5); } printMenu1(); } delay (5); } if (n == 1000) lcd.clear(); } // Управление горелкой digitalWrite(Auto, LOW); //Включаем автоматику Serial.println("AUTO"); //Рассчет температуры теплоносителя линейные графики switch (Grafik){ case 0: Ttn=57.-0.8*Tout; break; case 1: Ttn=50.-Tout; break; case 2: Ttn=43.-1.2*Tout; break; case 4: Ttn=36.-1.4*Tout; break; case 5: Ttn=29.-1.6*Tout; break; case 6: Ttn=22.-1.8*Tout; break; case 7: Ttn=15.-2.*Tout; break; } if (Ttn > 85.) Ttn = 85.; //Ограничиваем 85С сверху if (Ttn < 25.) Ttn = 25.; //Ограничиваем 25С снизу // Serial.print("Ttn="); // Serial.println(Ttn); // Управляем горелкой if (flagGeter == 1) { if (Tin >= (Ttn - (float)Geteresis)) { digitalWrite(Gorelka, HIGH); // Если температура теплоносителя больше т-ры с гетерезисом отключаем горелку Serial.println("Gorelka OFF"); } else { digitalWrite(Gorelka, LOW); //Иначе Включаем горелку Serial.println("Gorelka ON"); flagGeter = 0; // Снимаем флаг гетерезиса } } else { if (Tin <= Ttn) { digitalWrite(Gorelka, LOW); //Если температура теплоносителя меньше расчетной температура Включаем горелку Serial.println("Gorelka ON"); } else { digitalWrite(Gorelka, HIGH); // Иначе отключаем горелку Serial.println("Gorelka OFF"); flagGeter = 1; // Ставим флаг гетерезиса } } } //Считывание температуры по адресу датчика и проверка контрольной суммы float Temperatura(byte* addr){ // byte data; byte i; // byte present=0x0; int16_t raw; byte data[12]; // float Tt; // float a=1.; for (int k=0; k<6; k++){ ds.reset(); ds.select(addr); ds.write(0x44, 1); // start conversion, with parasite power on at the end delay(1000); // maybe 750ms is enough, maybe not // we might do a ds.depower() here, but the reset will take care of it. ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for ( i = 0; i < 9; i++) { // we need 9 bytes data[i] = ds.read(); } if (OneWire::crc8(data, 8) == data[8]) { // Проверка контрольной суммы raw = (data[1] << 8) | data[0]; // raw = raw << 3; // 9 bit resolution default // "count remain" gives full 12 bit resolution raw = (raw & 0xFFF0) + 12 - data[6]; return (float)raw / 16.0; } delay(500); } lcd.clear(); lcd.setCursor(0, 0); lcd.print("CRC ERROR"); SensorsError(); return 0; } // ПП ошибки датчиков с возможностью записи адресов датчиков в EEPROM void SensorsError() { byte addrRead[8]; int button; byte i; digitalWrite(Auto, HIGH); //Отключаем автоматику Serial.println("Auto OFF"); lcd.setCursor(0, 1); lcd.print(" SETUP"); while(1){ if (getPressedButton() == BUTTON_UP) { //Будем искать датчик и прописывать его в EEPROM // Serial.println("buttonUP"); if (ds.search(addrRead)){ lcd.clear(); lcd.setCursor(1, 0); lcd.print("<-IN OUT->"); while(1){ button = getPressedButton(); if(button == BUTTON_LEFT){ // Записываем в EEPROM адрес наружного датчика for (i=0; i < 8; i++) EEPROM.write(i, addrRead[i]); lcd.setCursor(1, 0); lcd.print("<-IN OK "); delay (2000); break; } if(button == BUTTON_RIGHT){ // Записываем в EEPROM адрес внутреннего датчика for (i=0; i < 8; i++) EEPROM.write(i+8, addrRead[i]); lcd.setCursor(1, 0); lcd.print(" OK OUT->"); delay (2000); break; } } } lcd.setCursor(0, 1); lcd.print(" SETUP"); // Serial.println("SETUP"); } } } //ПП Считывание нажатия клавиш int getPressedButton() { int button; int buttonValue = analogRead(0); // считываем значения с аналогового входа(A0) if (buttonValue > 1000) { return BUTTON_NONE; } else if (buttonValue < 100) { button = BUTTON_RIGHT; } else if (buttonValue < 200) { button = BUTTON_UP; } else if (buttonValue < 400){ button = BUTTON_DOWN; } else if (buttonValue < 600){ button = BUTTON_LEFT; } else if (buttonValue < 800){ button = BUTTON_SELECT; }else { return BUTTON_NONE; } // BuzzerBeep(); while (analogRead(0)<1000); // Serial.println(button); return button; } //Печать меню void printMenu1(){ lcd.setCursor(0, 0); lcd.print(" EXIT "); lcd.setCursor(0, 1); lcd.print("<-Geter Grafik->"); }
Привет. У меня похожая ситуация. Пока работает на 3 реле sonoff. А мне хочется реализовать погодазависимый. Итого у меня есть котел газовый который может быть только включен или выключен.
хочу построить погодазависимый модуль управления котлом на базе ардуино уно с 3мя датчиками температуры. 1 датчик на улице, второй в помещении, а третий в котле. У котла есть только два положения "вкл" и "выкл" необходимо собирая данные с датчиков пользуясь кривыми гестерезиса (необходимо иметь первоначальную установку коэфицента "утепленности дома") поддерживать температуру теплоносителя, для того что бы в доме была заданная температура. что бы температура в " трубе" менялась относительно температуры на улице для поддержания заданой температуры в помещении.
Здравствуйте, Я пока отказался от датчика на улице - при постоянной работе отопления он оказался не нужен. Регулирование температуры теплоносителя осуществляется по заданной температуре в помещении по PID алгоритму, хотя я использую из него только пропорциональную составляющую. Очень уж неторопливы процессы нагрева и охлаждения дома. Последняя версия программы пока обкатана только на протеусе. Посмотрите - может даст что-то к идеям. Я не использую прерываний, вместо них есть переменные, отвечающие за отсчет секунд - неторопливые процессы.
Объясните логику работы? Не совсем понял. У вас система работает как простой термостат? То есть подогрев включен до наступления заданной температуры, а потом отключается?
Делал похожее соседу.
Юнкерс Евролайн.
Разрывом перемычки комнатного термостата.
После разрыва котел через 3 минуты отключал насос.
Приходилось при этом раз в 2.5 минуты
включать перемычку на пару секунд.
Чтобы он успел включить насос на очередные 3 минуты, но не успел поджечь горелку.
По поводу погодозависимости....
Датчик внутри не нужен.
Регулировка температуры подачи идёт по уличной температуре.
У меня самого Cerapur со встроенным погодником,
график настроил лет 10 назад и забыл
Подхожу к котлу раз в два года для чистки конденсационного блока от серы.
От 258 по 276 строку идет чтение внутренней температуры и в зависимости от ее разницы с заданной температурой вычисляется температура теплоносителя по пропорциональной формуле с Kp. В остальном работает как термостат по температуре теплоносителя. Циркуляционный насос работает всегда, так что температура батарей достаточно ровная. От наружней температуры отказался в связи с тем, что на график сильно влияет ветер на улице. Вводить лишние замеры счел ненужным. Тем более, что мне интереснее комфортная температура в доме. Формула расчета теплоносителя: Ттеплоносителя=Ттеплоносителя+Кр*(Тв_доме_замерянная - Тв_доме_заданная)
Наверное, перепутали местами (Тв_доме_замерянная - Тв_доме_заданная)?
В целом - очень интересно! Уже сделал управление трехходовым клапаном смесительного узла через Arduino. Сейчас только подбираюсь к созданию алгоритма по расчету Ттеплоносителя, уже сутки собираю показания датчиков температуры (четыре в доме, один на улице, один на подаче в тёплый пол).
Какая у вас система отопления? Радиаторы? Тёплый пол? Комбинированная?
Система уже реально работает? Есть ли графики температур улица-дом?
Наверное, перепутали местами (Тв_доме_замерянная - Тв_доме_заданная)?
Спасибо, и правда перепутал.
В целом - очень интересно! Уже сделал управление трехходовым клапаном смесительного узла через Arduino. Сейчас только подбираюсь к созданию алгоритма по расчету Ттеплоносителя, уже сутки собираю показания датчиков температуры (четыре в доме, один на улице, один на подаче в тёплый пол).
Смотрел, у Вас задача, как я понял значительно глобальнее. У меня речь идет о доме с постоянным проживанием. Соответственно изменения температуры в доме не требуется. Один раз установив комфортную температуру надо только ее поддерживать. Резких бросков температуры быть не может, соответственно и наружняя температура мне без надобности - отрегулирую ситуационно по внутренней температуре. Другое дело, если Вы хотите выровнять температуру по дому, но и тогда можно найти наиболее холодное помещение, по нему считать температуру теплоносителя, а остальные помещения регулировать клапанами, опять же вычисляя для них температуру теплоносителя.
Какая у вас система отопления? Радиаторы? Тёплый пол? Комбинированная?
Радиаторы плюс теплый пол на входе. Теплый пол установлен на стабильную температуру механическим датчиком.
Система уже реально работает? Есть ли графики температур улица-дом?
Система пока не работает - ловлю блох в протеусе. График строить не буду по указанным выше причинам. Интересно будет посмотреть Вашу реализацию проекта. Кстати - а зачем Вы датчики раскидали на разные порты?
У меня тоже ПМЖ. Но у меня основное отопление - тёплый пол. Есть только один радиатор под окнами "второго света", там тёплый пол не справляется (потолок в этой комнате около 4-5 метров).
Я пока наблюдаю за графиками температур. Хочу понять как дом реагирует на изменение погоды.
Но предварительно думаю, что при похолодании (особенно резком) дом будет очень медленно реагировать (у меня каменные стены, крыша, много бетона на полу). Допустим, упала температура на десятую долю градуса - контроллер чуть прибавит подачу отопительной воды. А дом уже реально остывает, ему нужно было заранее прибавлять t° подачи (при похолодании или даже раньше, например, по прогнозу погоды).
Разве у вас не ожидается такого явления? Будет всё как в статьях по ПИД-регулированию - температура дома начнёт "качаться" по синусоиде. К этому времени уже придёт день с солнышком и потеплением, потом еще как-нибудь сменится погода. Пока не уверен, что П-алгоритмом можно управлять отоплением тёплого пола без резких перепадов температуры поверхности пола.
Такой задачи пока не стоит. Несколько датчиков чисто для наблюдения пока. В процессе решу, как усреднить показания этих датчиков для получения итоговой t°дома.
По вашему примеру создам свою тему, как только будет чем поделиться. Обязательно скину ссылку.
Кабель (использую хорошую 4-х парную UTP) уже приходит с разных сторон и сходится в одно место, у щита. Можно было бы с перерасходом кабеля соединить линии, но зачем?
Но предварительно думаю, что при похолодании (особенно резком) дом будет очень медленно реагировать (у меня каменные стены, крыша, много бетона на полу). Допустим, упала температура на десятую долю градуса - контроллер чуть прибавит подачу отопительной воды. А дом уже реально остывает, ему нужно было заранее прибавлять t° подачи (при похолодании или даже раньше, например, по прогнозу погоды).
Разве у вас не ожидается такого явления? Будет всё как в статьях по ПИД-регулированию - температура дома начнёт "качаться" по синусоиде. К этому времени уже придёт день с солнышком и потеплением, потом еще как-нибудь сменится погода. Пока не уверен, что П-алгоритмом можно управлять отоплением тёплого пола без резких перепадов температуры поверхности пола.
По поводу "качания" Вы говорите об эффекте перерегулирования. Если такое будет - буду вводить интегральную и дифференциальные составляющие и играться с коэффициентами.
Соглашусь по поводу инерционности Вашей системы - но как раз она и может стать буфером от автоколебаний. Хотя, ИМХО, неплохо бы ввести "быстрый" элемент типа радиатора. У меня обратная ситуация - бревенчатый дом и отопление радиаторами. Теплый пол - только граница перед жилыми помещениями. Тем более, что держу его на постоянной температуре.
Вспомните как работает гистерезис. достигло до опред температуры выкл нагрев, упал до другой температуры включился. И для этого нужен датчик в комнате. Для чего нужен датчик на улице ? Здесь еще интересней. Понятно , чем ниже температура на улице тем быстрее скорость остывания. И датчик на улице регулирует ШИМ нагрева. А ШИМ нагрева должен не сильно больше скорости остывания дома , что в свою очередь зависит от температуры на улице . Для инерционых тепловых систем длятельнось цикла ШИМ должна порядка 0,1-10 минутам. А вот ШИМ нагревателя определяет датчик на улице. Датчик внутри определяет момент когда надо включить и выключить.
Чтобы при похолодании заранее увеличивать нагрев (на определенное значение)
Еще ДО ТОГО, как температура дома вообще хоть как-то отреагировала.
У меня дом с отключенным отоплением может меньше градуса за ночь потерять. На небольшое изменение температуры на улице он может вообще завтра отреагировать. А слегка подогревать нужно уже сегодня.
Поэтому я не уверен, что ПИД-регулирование может вообще помочь с хорошо утепленным инерционным домом. Если нужно включать отопление ДО ТОГО, как температура в доме хоть как-то изменилась (на улице похолодало, а дома еще нет) - ПИД-регулирование по комнатным датчикам не в состоянии будет это предугадать.
И если нужно отключать отопление ДО ТОГО, как температура в доме выросла (на улице потеплело, а дома станет жарко только через полдня, например) - тоже проблема.
Вот для этого я хочу использовать уличный датчик. А пока наблюдаю за графиками температур.
Поэтому я не уверен, что ПИД-регулирование может вообще помочь с хорошо утепленным инерционным домом. Если нужно включать отопление ДО ТОГО, как температура в доме хоть как-то изменилась (на улице похолодало, а дома еще нет) - ПИД-регулирование по комнатным датчикам не в состоянии будет это предугадать.
И если нужно отключать отопление ДО ТОГО, как температура в доме выросла (на улице потеплело, а дома станет жарко только через полдня, например) - тоже проблема.
погуглить то не судьба? все давно придумали и посчитали до вас. и если поискать получше можно найти достаточно информации даже хотя бы для понимания о чем пишешь.
Теплорасчет, температурный график - так я управлял вручную отоплением 4 зимы.
Теперь хочу пойти немного другим путём. Через понимание реакции дома на внешние воздействия автоматизировать поддержание температуры в переходные периоды (потепление или похолодание).
Просто забить свою таблицу "t° улица - t° подачи" в ардуино много ума не нужно. Мне сейчас это не интересно.
Со всем уважением к qwone, но измерение температуры на улице, с построением температурного графика позволяет экономить на отоплении процентов 10-15, вот суть того "тумана".
Тут есть пример расчета теплопотерь для одноэтажного дома.
lean_74,прошу прощения за резкие слова. Но в приведеных вами ссылках предлагается рецепт - купить газовый котел и датчик измерения температуры и экономить 10-15 процентов. Но дальше принципа работы кроме как купить я не обнаружил.
процетирую все же: Задача наружного датчика температуры состоит в том, чтобы снять с вас заботу о ручной регулировке температуры подачи воды в котле. Датчик измеряет температуру воздуха на улице, извлекает из памяти заданные нами настройки необходимой температуры в помещении и задает требуемую температуру воды.
Это хорошо что вы процитировали. Отличная мошеническая схема. Вы платите нам ваши деньги. И теперь нет у заботится о своих деньгах. Мы сэкономили 100% ваши времени, потраченых на сохраниения ваших денег.
То есть по факту берется обычный котел без внешнего датчика и делается подключение внешнего датчика. Можно даже показание вывести на экран. Дальше пишутся такие статьи. Новый котел- новая цена . Зарабатывание денег на пустом месте. Пользователь никак не сможет проверить нужны ли были траты на этот апгрейд.
Уважаемый qwone, видит бог, не хочу я тебе никакой котел продавать :)
@mykaida, как ваши успехи?
У меня уже пару недель стабильно работает система, отоплением больше не управляю вручную.
Вот создал тему как обещал
@mykaida, как ваши успехи?
У меня уже пару недель стабильно работает система, отоплением больше не управляю вручную.
Вот создал тему как обещал
Пока никак - что-то написал, в эмуляторе оттестировал, но до натурных испытаний не довел - нет времени, а оставлять дом без тепла при ошибках опасаюсь. Вашу тему просмотрел - солидная работа и впечатляющий результат. Поздравляю!
Датчик температуры нужен для того чтобы определить температуру батареи, она будет меняться от температуры на улице и батарея всегда будет теплой. В мороз -25 где то +65 а при 0 гдето 38 градусов. Но все можно подкорректировать относительно теплопо ерь вашего дома. Поэтому на ардуино подается 4 температуры: улицу (описал уже), на батарее (регулировать вычисленную температуру по формуле), на котле (для потдержания температуры котла), и комнатная температура (для коррекции расчетной температуры для батареи)
А ардуино открывает или закрывает 3-х ходовой кран для удержания температуры батареи Вот как то так
Имеется котел Beretta CIAO 24 с возможностью подключения датчика наружной температуры (артикул 20049748 если что).
Кто может подсказать, что за начинка там установлена? Наверняка обычный терморезистор, может известны его параметры?
Имеется котел Beretta CIAO 24 с возможностью подключения датчика наружной температуры (артикул 20049748 если что).
Кто может подсказать, что за начинка там установлена? Наверняка обычный терморезистор, может известны его параметры?
Да, похоже что просто термодатчик типа pt100. На станице 7 инструкци это видно. Скорее всего он такой же как и датчик S.R. со страницы 8. Это задаст температуру теплоносителя.
Но также неплохо использовать термостат с ПИД. В Вашем котле он подключается к CN5 со страницы 7. Это позволит держать стабильную температуру в доме.
Не знаю как у вас, а в Юнкерсах датчик температуры обычно NTC 10 kOhms
Да, похоже что просто термодатчик типа pt100. На станице 7 инструкци это видно. Скорее всего он такой же как и датчик S.R. со страницы 8. Это задаст температуру теплоносителя.
Но также неплохо использовать термостат с ПИД. В Вашем котле он подключается к CN5 со страницы 7. Это позволит держать стабильную температуру в доме.
Спасибо за наводку! Закажу для экспериментов pt100.
Касательно ПИД - разве эта модель поддерживает его? Смотрел список совместимости, для моей модели указан только on/off.
https://new.besmart-home.com/files/compatibility_Beretta.pdf
Спасибо за наводку! Закажу для экспериментов pt100.
Касательно ПИД - разве эта модель поддерживает его? Смотрел список совместимости, для моей модели указан только on/off.
https://new.besmart-home.com/files/compatibility_Beretta.pdf
Дык ПИД только это и делает. Включает, выключает и измеряет интегрально-дифференциальные характеристики. В соответствии с этим "включает и выключает".
Не знаю как у вас, а в Юнкерсах датчик температуры обычно NTC 10 kOhms
Значит, возможны варианты... Измерив сопротивление датчика, можно определить его тип? Или возможны варианты датчиков с одинаковым сопротивлением но разным видом кривой?
Дык ПИД только это и делает. Включает, выключает и измеряет интегрально-дифференциальные характеристики. В соответствии с этим "включает и выключает".
Комнатный термостат подключу, конечно. Осталось только с внешним датчиком разобраться )
Не знаю как у вас, а в Юнкерсах датчик температуры обычно NTC 10 kOhms
Значит, возможны варианты... Измерив сопротивление датчика, можно определить его тип? Или возможны варианты датчиков с одинаковым сопротивлением но разным видом кривой?
Вряд ли.
Еслb при комнатной температуре будет примерно 10 кОм
и при небольшом нагреве (даже в руке) сопротивление падает- это NTC.
Хотя иногда параллельно-последовательно NTC терморезистору подключают
резисторы для линеаризации.
https://www.rlocman.ru/shem/schematics.html?di=157741
https://aterlux.ru/article/ntcresistor
Еслb при комнатной температуре будет примерно 10 кОм
и при небольшом нагреве (даже в руке) сопротивление падает- это NTC.
Вряд ли уличный датчик будет настроен на комнатную температуру. Наверное, там другая кривая.
Еслb при комнатной температуре будет примерно 10 кОм
и при небольшом нагреве (даже в руке) сопротивление падает- это NTC.
Вряд ли уличный датчик будет настроен на комнатную температуру. Наверное, там другая кривая.
Это я описал как определить там NTC 10 кОм или PT100.
А уж кривая какая будет - такая и будет.