Алгоритм регулировки температуры с учетом инерционности
- Войдите на сайт для отправки комментариев
Всем привет! Пытаюсь реализовать регулятор температуры в комнате. Имею следующие компоненты:
1. Нормально открытый сервопривод на батарее. При подаче на него напряжения, батарея перекрывается в течение 3-5 минут.
2. Датчик температуры в другом конце комнаты
Сейчас алгоритм регулировки такой:
Каждые 30 сек проверяется температура в комнате.
Если температура выше 24,5 градусов и сервопривод открыт, то подаю напряжение на сервопривод(клапан закрывается)
Если температура ниже 24,3 градусов и сервопривод закрыт, то снимаю напряжение с сервопривода(клапан открывается)
Очевдно, что из-за длительного(3-5 мин) переходного процесса сервопривода, появляется инерционность. И температура скачет в горазжо больших пределах.
Посоветуйте, пожалуйста, алгоритм регулировки с учетом этой инерционности. Присматриваюсь к методу ПИД регулятора. Но, там обычно ругулируется мощность нагревателя. А сервопривод можно только включить или выключить и опять же, инерционность.
И возможно ли вообще это сделать с текущим набором компонентов или надо обязательно еще измерять температуру батареи?
Релейный ПИД с периодом 20 минут.
А чем не устраивают обычные термоголовки?
Я понимаю если бы у вас был водяной теплый пол, там да, много гемора из-за инерционности.
У меня стояла изначально обычная термоголовка с ручной регулировкой температуры. Хочется сделать возможным удаленое регулирование температуры и ее автоматическое снижание при отсутствии дома.
Пойду штудировать про релейный ПИД. А 20 мин не слишком большой период?
Чтобы клапана успевали шевелиться.
Можете и 5 минут поставить.
Готовые с таймером двадцатку стоят....
http://www.santehnet.lv/index.php?l=2&c=206&p=24072
Не знаю сколько это стоит, но ещё:
https://ibud.ua/ru/p120624-c2395-termogolovka-herz-etk-elektronnaya
Да, анализировал рынок на наличие готовых вариантов. Те которые с таймером, обычно не позволяют ими управлять удаленно. А дома я появляюсь не по расписанию. Могу раньше придти, могу позже. Те варианты, которые с удаленным управлением, стоят больше 100 баксов. А сервопривод стоил дешелве 500р. Вот и решил попробовать с его помощью сделать самостоятельно.
Тогда серва со шкивом раза в два большем диаметра термоголовки.
Тросовый привод. Даже нить капроновая. Надежно зафиксировать от проворота.
У неё 180, на головке 360 (если надо).
Откалибровать один раз температура-градус поворота.
Плюсы - память состояния без питания.
Простейшее управление.
Минусы - городить конструктив.
Девятиграммовая не справится....
rjlexx, во-первых, непонятно, почему сервопривод можно только включить и выключить. Его, вообще-то, можно повернуть на любой угол.
Если все-таки состояния только два, то посмотрите, как регулируют мощность - там точно так же, как правило, только два состояния, и для регулировки температуры изменяется отношение времен во включенном и выключенном состоянии.
Нет, там не настоящий сервопривод,
а штука называемая сантехниками сервопривод.
Ну да бог им судья....
Внутри привод с воском.
Типа амортизатора.
Как в автотермостате или смесителе с термостатом.
Воск греют, он расширяется и нажимает на клапан.
Греют керамическим позистором, как в глюгане,
мощьность в прогретом состоянии 3-5 Ватт.
Поэтому и время на открытие- закрытие несколько минут.
Обычно стоят на рейке тёплого пола.
Как раз минус в громоздкости и оттолкнул от этой затеи.
Пробую сейчас на основе примера PID_RelayOutput из библиотеки Arduino PID сделать ругулировку. Там как раз на выходе идет регулировка времени нахождения в открытом\закрытом состоянии.
Вы очень развернуто ответили про сантехнический сервопривод:) Спасибо! Именно для теплых полов он и предназначается. А так как в комнатном отоплении используется аналогичный клапан, решил попробовать использовать этот сервопривод. Вот такой у меня: https://www.aliexpress.com/item/230v-NO-thermal-actuator-electric-valve-for-underfloor-heating-radiator-valve-control-normally-open/32806771466.html?spm=a2g0s.9042311.0.0.AKYJXW
https://www.aliexpress.com/af/ALLSOME-LCD-Radiator-Actuator-Valves.html?...
Да, я рассматривал этот регулятор. Выше писал по какой причине он мне показался неподходящим.
У меня стояла изначально обычная термоголовка с ручной регулировкой температуры. Хочется сделать возможным удаленое регулирование температуры и ее автоматическое снижание при отсутствии дома.
Честно говоря, при использовании газового радиаторного отопления смысла немного, клапана будете 10 лет окупать. Проще температуру или скорость подачи теплоносителя изменять, да и то, нужно ли? Какую то нормальную экономию наблюдал на эл.теплых полах, там таймера недельные стоят с вариациями включения. Газ провел, сперва поигрался с головками, а потом бросил, не стоят 200-300 рублей экономии этой возни. ИМХО.
Именно так.
Если в котле его нет то лучше сделать погодный регулятор.
А вот там тогда и таймер добавлять.
Термоголовки на тёплый пол отключил в первый же год.
Котёл конденсатный с погодником.
По таймеру на ночь на 2 градуса снижается температура.
У меня квартира в МКД. Оплата отопления по счетчику. До этого стояла механическая термоголовка. Я понижал на ней температуру, когда уходил на работу и повышал температуру, когда возвращался домой. Неудобство в том, что приходится это каждый раз делать вручную и при возвращении квартира некоторое время прогревается.
С сервоприводом планирую сделать следующую логику:
1. Когда никого нет дома, МК будет автоматически снижать температуру.
2. На пути домой буду вручную отправлять с телефона команду на прогрев квартиры или автоматизирую это завязавшись, например, на приближение телефона на определенное расстояние к дому.
Ну так и я о том же!
Снижайте температуру носителя.
Термоголовки будут ограничивать максимум,
а минимумом будете занимать сами.
trembo, не, это нам домовладельцам хорошо. Не знаю как у Вас в многоквартирных, а у нас опа. У кого входящая, тот зажаривается, у кого выход, зубами лязгает. Где счетчики калорий, думаю жарятся все и просто взять и снизить не выйдет.
Самое прикольное, у мамки квартира 69кв.м, у жены 48кв.м, ценники на отопление раза в полтора-два выше моих на 100кв. Это при том, что квартиры не угловые и с улицей одна стена контачит, физическая загадка однако.))))
Если не получится с сервой на парафине добиться поддержания стабильной температуры, то буду уже городить управлвление механической головкой.
Есть ещё шаровой трехвходовой клапан с моторчиком.
Открывается-закрывается за 2-3 секунды. 12 Вольт.
Но стОит как готовый цифровой термостат.
https://m.ebay.com/itm/3-way-motorized-ball-valve-DN15-reduce-port-T-por...
Ну какой нафик трехходовый. Есть стандартное решение "термоэлектрическая головка", электроуправляемый аналог батарейной термоголовки. Установочные места - один в один, с батареи крутилку снял и выбросил, на ее место эту самую термоэлектрическую головки поставил. Воткнул в розетку - открылась, вынул - закрылась. В разрыв поставил два реле последовательно, одно термо, тругое - таймер. Ну или от большого ума ардуино с релюшкой.
и ради чего это все в квартире, в которой почти постоянно кто-то есть?? - смысл есть, когда люди уезжают на несколько дней. А понижать температуру на 5 часов днем, а вечером поднимать обратно - ну прикиньте, какая экономия будет. Думаю. что и 200 рублей в месяц вряд ли...
Потратьте лучше эти силы и опыт не на экономию каких-то копеек, а чтоб заработать побольше...
Всем привет!
Разбираюсь с сантехническим парафиновым "сервоприводом" (Valtec VT. ТЕ 3040)
Задача - чтобы "сервопривод" нажимал на шток трехходового клапана (Valtec VT.MR03.N) и на выходе получалась необходимая температура подачи в коллектор тёплых полов (частный дом, большая теплоёмкость, надоело крутить термоголовку по погоде).
Упрощенно - "сервопривод" давит на шток клапана. Надавил сильно - перекрыл подачу горячей воды полностью. Надавил средне - пошла тёпленькая водичка. Отпустил вообще - пошла очень горячая вода в пол (плохо). То есть нужно балансировать на грани открытия клапана (насколько это получится).
Интересная задачка, короче. Пока строился - всё руки не доходили. Специально взял "сервопривод" на 220 вольт - чтобы легко управлять через релейный модуль ардуино.
Сваял вариант для отладки:
- ардуино Uno с ethernet-шилдом подключена к домашнему роутеру
- раз в 10 секунд измеряет температуру коллектора с помощью ds18b20
- отправляет температуру get-запросом на сервер в инете. на сервере лежит php-скрипт, записывает температуру в БД (для анализа) и отвечает ардуинке, что делать с сервоприводом (подать ток на него или нет)
- ардуино по ответу web-сервера включает или выключает реле
Загвоздка в том, что парафин долго разогревается (и долго остывает). Зато потом в разогретом парафине шток очень резко двигается и температура воды скачкообразно растёт (ведь смесительный клапан открывается на 100%).
Для пробного алгоритма ввел два параметра - сколько секунд разогревать парафин и сколько остужать. Хочется найти такие параметры, чтобы температура на выходе была более стабильна. Подбираю параметры и вот что получается.
Увеличиваю время нагрева - клапан успевает открыться полностью и в коллектор успевает зайти вода +50° (нехорошо). Уменьшаю на несколько секунд - клапан вообще не открывается. Вот только что подобрал параметры близкие к "равновесию" - греем парафин 109 сек., охлаждаем 300 сек.
Продолжаю изучать.
Вот алгоритм работы "сервопривода" из мануала:
Прошу высказываться, если этот вопрос интересен. Всю жизнь программирую, мне пока в удовольствие разбираться :) Если в этой теме неуместно - могу создать отдельную.
Ну только так у Воды большая теплоемкость, а толкать туда парафин и при температуре когда он застывает.
Прошу высказываться, если этот вопрос интересен. Всю жизнь программирую, мне пока в удовольствие разбираться :) Если в этой теме неуместно - могу создать отдельную.
Уважаемый, люди намного умнее нас с Вами, давно придумали ПИД алгоритм. Я сомневаюсь, что Вы (или кто-то) его прямо сейчас опровергнут. Если не читали - почитайте, очень полезное занятие.
И, кстати, при большой инерционности интегальная и дифференциальная составляющая не имеет смысла. И остается только пропорциональная составляющая...
судя по графику производителя этакий пульсирующий режим работы заложен здесь изначально.
Если есть желание попытаться этот клапан открывать не полностью, а частично, то нужно по меньшей мере представлять физику его работы и уже исходя из этого, пытаться там что-то мастрячить.
т.е. попробуйте описать свою задачу сначала с т.з. физики.
Уважаемый, конечно читал про ПИД. Использовать его собираюсь на следующем этапе. А сейчас разбираюсь с самим "сервоприводом" (или "электротолкателем", если так удобнее называть). Чтобы лучше представлять работу "электротолкателя" при подборе ПИД-коэффициентов.
Верно! Но я подобрал такое время воздействия на "электротолкатель", чтобы шток выходил не полностью. Изобразил зеленым цветом. Шток не успевает выйти целиком, а мне это и нужно.
После обкатки (подбираю на реально работающей системе) можно будет подобрать t-max - время воздействия, которое запрещено превышать при управлении через ПИД-алгоритм (для избежания выхода штока целиком).
Выше расписал физику его работы.
Это вы так думаете, а торговцы знают что это не так.
Как правило, электрические приводы
имеют встроенную спираль,
при получении сигнала она нагревается
и расширяется -
тем самым приводя в движение клапан.
http://heiz.ru/articles/119.html
Я паспорт изделия практически цитировал.
Изделие по вашей ссылке тоже имеет паспорт производителя Herz, где сказано "Термопривод принимает положение благодаря электрически нагреваемому расширительному элементу."
Ну да ладно, какой бы ни был материал рабочего тела (металл, жидкость в рабочем диапазоне t или жидкость/твердое тело в рабочем диапазоне t) - алгоритм работы "электротолкателя" будет одинаковый.
Подали напряжение - ничего не происходит. Ждём нагрева рабочего тела. Подождали - рабочее тело расширилось, вытолкнуло шток.
И наоборот. Согласны?
Задача - чтобы "сервопривод" нажимал на шток трехходового клапана (Valtec VT.MR03.N) и на выходе получалась необходимая температура подачи в коллектор тёплых полов (частный дом, большая теплоёмкость, надоело крутить термоголовку по погоде).
Уважаемый, у меня была такая же проблема и я ее успешно решил. Изначально я тоже решил пойти путем микроконтроллеров, но слава богу бросил эту мысль. Решил все много проще - поставил на подачу механический терморегулятор с выносным датчиком температуры. Датчик температуры прикрутил к трубе обратки. И все - не зависит от электричества, сбоев программы и т.д.
У меня тоже 4 года стоял механический терморегулятор с выносным датчиком. Давно хотел автоматизации и вот сейчас занимаюсь этим.
И наоборот. Согласны?
в общем - верно, а в частности - не верно.
на данный момент не вполне понятно, за счет какого расширения работает ентот парафин.
При затвердевании большинство веществ уменьшают свой объем, причем это совсем другой коэф, чем при нагревании- охлаждении того- же вещества, но в жидкой фазе.
И теплоемкостей при фазовом переходе аж 3, для тврдоей фазы, самого фазового прехода + еще и жидкой фазы.
Пока ясно одно, частота опроса датчика Т должна быть выше, а управление на симмисторе.
Глючноватая у Вас система. По факту желательно поставить датчик температуры для измерения температуры электропарафина. И по этой температуре следить за уровнем открытия прикрытия клапана. А дальше задача состоит в регулировании этой температуры для управления всей системы. Конечно эту трепанацию можно сделать только на одном регуляторе и получить эмпирическую зависимость. Длина выдвинутого штока -(полное время ШИМ ,время вклШИМ, время выкл ШИМ). Но даже это не внесет полную ясность работу всей вашей системы, так как это все же электроклапан и "закон Ома для водяной системы " не работает. И вам придется индивидуально регулировать каждый клапан(темепературу регулирования армопарафина каждого) для вменяемой работы всей вашей системы.
Вопрос из зала: а почему не поставили тогда изначально термодатчики.
Ответ : Так это все капитализм. Защита рынков сбыта. У фирм производителей есть разработки типовых систем . И вот для каждого терморегулятора вычисленые типовые настройки регулирования, которые и зашиты в контролере, который скорее всего и продается по конским ценам. И работу которого вы вычисляете. Так что или покупайте контроллер или ставьте термометры в каждый клапан.
ПС: Но может быть такая картина что эти клапаны работают в режиме открыл/закрыл . А промежуточных значений не предусмотрено производителем.
Так и есть.
Но шток двигается плавно, поэтому подбором времени открытия/закрытия уже удалось ограничить выдвижение штока. Если добавить автоматическую подстройку времени открытия/закрытия, то получится интерфейс для управления этим "электротолкателем". Потом добавить ПИД-алгоритм и получить желаемое.
А пока сделал прямое управление ПИД-алгоритмом, подбираю коэффициенты и анализирую результаты.
На графиках выше оси X - температура. Ниже оси X - результат функции ПИД (для анализа). Если ПИД()>0, тогда подаю напряжение на "электротолкатель", иначе отключаю.
Включать питание до того, как температура упадёт уже получилось (коэффициентом Д=0.1). А вот выключать питание "электротолкателя" раньше, чем температура начнет расти - вот это задачка... Температура не растет - значит П не срабатывает, И не наблюдает ошибку... Вся надежда на подбор Д-коэффициента.
И теплоемкостей при фазовом переходе аж 3, для тврдоей фазы, самого фазового прехода + еще и жидкой фазы.
Согласен. Но для нужд алгоритма, полагаю, будет достаточно знаний, полученных опытным путём.
Ведь точных параметров (время нагрева, остывания) быть не может - они зависят от температуры рабочего тела перед началом воздействия. Полагаю, придется придумывать какой-то алгоритм самообучения этим параметрам с автокоррекцией каждые Х-минут. Здорово, правда? (с) :)
Частота пока 3 секунды. Симистор - для надежности, чтобы ресурс реле не убивать, да? Пока для отладки хотел на имеющихся твердотельных реле поиграться.
Вы просто сформулируйте себе текущую задачу в вашей постанове.
т.е. вы хотите фактически зафиксировать какую-то температуру парафина, когда нагревается он принудительно, а охлаждается - самостоятельно.
Вообще, зачем все эти танцы с бубном, если теплоемкость пола или комнаты очень велика и кормите вы свои радиаторы стаб температурой или пульсирующим потоком разниы особо нет. Просто датчики для этих случаев должны стоять в разным местах.
Итак, вчерашний день наблюдал за работой под управлением ПИД-алгоритма и подбирал коэффициенты. Результаты не очень понравились, есть скачки температуры до максимальной. Нужно самообучение (обратная связь). Всё фигня, Миша, давай по-новой (c) :)
Искал практику по управлению термоприводом, который долго разогревается и остывает.
Нашёл интересную тему! Там человек управляет похожим термоприводом с помощью ШИМ обычной схемой. При этом промежуточное положение штока поддерживается годами!
Сегодня проснулся в 6 утра и решил реализовать ШИМ-алгоритм (пока "на коленке", с той же ардуино и твердотельным реле, периодичность целых 3 секунды).
Результат даже в таких условиях очень понравился! За 5 часов работы на уставке 32°С было всего пара скачков температуры на пару градусов! При том, что система реально работала и температура приходящей к смесительному клапану воды менялась! Я очень доволен. Средняя температура выходящей воды за 5 часов составила 31.9°С.
Теперь про алгоритм:
- Изначально ширина импульса "электротолкатель включен" 10 секунд. "Выключен" - 40 секунд.
- Каждые 120 секунд проверяем температуру выходящей воды. Если t° больше нужной - уменьшаем ширину импульса "включен" на 1 сек. Когда t° упало ниже желаемой - увеличиваем ширину импульса "включен" на 1 сек.
После пары часов изучения графиков ввёл пару хитростей:
1) Если t° и так падает - не нужно уменьшать ширину импульсов, нужно просто подождать (с ростом - то же самое)
2) Если t° стала выше нормы - сразу же нужно однократно уменьшить ширину импульса (а не ждать пока сработает цикл "каждые 120 сек")
3) Ввел гистерезис (пока поставил 0.3°С), чтобы система срабатывала еще до достижения заданной t°
Результатом, повторюсь, уже очень доволен. Реальный гистерезис этого "умного термостата" составил около +/- 0.7°С. Дом весь день работает на этом термостате. Пробовал дестабилизировать систему (увеличил ширину импульса) - постепенно клапан опять прикрылся до нужного уровня.
Продолжу наблюдения.
Когда отлажу коэффициенты и алгоритм (вдруг еще какие хитрости нужно добавить) - перепишу всё на arduino, пусть автономно управляет. Чтобы я через облачную БД только настройки контроллеру передавал.
И можно будет переходить к следующему этапу.
ок, сейчас вы стали двигаться в верном направлении
Всем привет!
Подобрал параметры, отладил алгоритм. Пару недель уже работает автономно на реальной системе.
Температуру держит стабильно даже на первой скорости насоса (при этом вода медленнее доходит до термодатчика и он соответственно дольше реагирует)
Переписал всё на arduino. Самостоятельно лезет в облачную БД за настройками, хранит их у себя в EEPROM (на случай отсутствия интернета), раз в 30 секунд скидывает в облачную БД показания температурных датчиков (четыре в доме, один на улице, один на трубе подачи отопительной воды в пол).
Может еще будут небольшие доработки (проверять контрольную сумму настроек из облачной БД - вдруг какой-то сбой чтения).
Но в целом задача №1 выполнена. Arduino самостоятельно управляет электромеханическим клапаном Valtec, который накручен на трехходовый клапан смесительного узла. Кому надо - можете пользоваться кодом. Особо не чистил от отладочных "костылей", поэтому извиняйте.
Здравствуйте.
Собираюсь сделать терморегулятор радиаторов в доме посредством управления сервоприводами, установленными на коллекторе.
Есть положительный опыт построения ПИД терморегулятора для управления газовым котлом по протоколу OpenTherm. Там ESP8266 на основе полученных данных вычислял значение ПИД от 0 до 100, которое фактически задавало температуру теплоносителя от 30 до 85 градусов. Подбором коэффициентов удалось добиться точности поддержания температуры в комнате 0,3 градуса.
Теперь задача следующая. Котёл будет поддерживать постоянную температуру теплоносителя, а регулировка температуры в помещениях должна производиться посредством управления сервоприводами на коллекторе радиаторов.
Правильно ли я понимаю, что Ваш алгоритм представляет значение ПИД в период ШИМ ? То есть если ПИД=70, то 7 минут клапан открыт а 3 минуты закрыт, или например ПИД=20, тогда 2 минуты клапан открыт, а 8 минут закрыт. Это я так грубо привёл пример для собственного понимания.