Модуль управления термоголовкой
10.03.2025
В очередной раз возникла задача сделать теплый пол в доме. Точнее не в доме, а на улице. Теплое крыльцо.
Условия задачи достаточно простые – нужно иметь возможность управлять температурой теплоносителя в зависимости от внешних факторов. Основным внешним фактором, конечно же, является температура на улице.
Я не уверен в своей правоте (нужно считать, а я поленился), но у меня есть большое подозрение, что в том случае, когда на улице -20°С – нужно греть бетонную плиту достаточно уверенно, для того, чтобы на ней не образовывалась наледь. А в случае -3°С – будет достаточно минимального нагрева.
Но вот незадача – все стандартные бюджетные решения по организации теплого пола не подразумевают какого-то динамического управления. Самым простым и понятным решением является модуль подмеса с термоголовкой, которая капиллярной трубкой соединена с внешним датчиком температуры. Принцип работы подобного устройства выглядит достаточно надёжным…
В предыдущий раз, когда у меня возникала подобная задача я пошёл сразу понятным путём. Я поставил трехходовой клапан Danfoss и повесил на него одноимённый привод. Это позволило мне иметь максимальный контроль за тем, что происходит в системе. Решение получилось хорошее, интересное, но с некоторыми недостатками. Основной недостаток – громоздкость. Этот смесительный узел занимает достаточно немало места в котельной. И второе, что мне не очень понравилось – привод клапана срабатывает достаточно часто. Температура контура отопления не является постоянной и клапану приходится постоянно подстраиваться под изменения. То бойлер включится, то отопление, то котёл встанет на технологическую паузу. Всё это вызывает постоянное изменение положения трехходового клапана. И нужно сказать, что работает это без проблем уже несколько лет, но сама по себе реализация мне не понравилась.
Хотелось чего-то более простого и "менее" завязанного на автоматику. Решил попробовать смесительный узел TIM JH-1036. В тот момент, когда я его выбирал я на что-то отвлекся и не подумал про то, что мне понадобится управление.
А вот уже после окончания монтажа и запуска этой части системы в эксплуатацию – я понял, что это было ошибкой. Стал придумывать что же с этим сделать…
Один из интересных вариантов был – управление скоростью циркуляционного насоса. Вариант сам по себе теоретически интересный, но скорее всего бессмысленный. С одной стороны он возможно и мог бы позволить каким-то образом поддерживать разную температуру в зависимости от входящих условий. С другой стороны – это бы наверняка вызывало неравномерный прогрев из-за пониженной скорости теплоносителя. Но самое главное – мне не удалось найти управляемый циркуляционный насос. То есть получается, что единственным способом управления было бы подключение чего через отдельный частотный преобразователь. Но частотный преобразователь нормально работает только с трёхфазным электромотором, а найти трёхфазный циркуляционный насос соответствующей мощности (очень маленькой!) мне не удалось. Тупик.
Была ещё одна интересная идея… Это просто включение-выключение циркуляционного насоса теплого пола в зависимости от показаний датчика температуры, который замурован в бетонной плите крыльца. Скорее всего подобный вариант был бы хорош и не требовал бы никакой больше дополнительной логики. Но, сознаюсь честно, эта идея меня почему-то посетила уже сильно позже. Наверное, в следующий раз я попробую именно так и сделать. Но сейчас же не об этом. Сейчас речь про то, как динамически менять именно температуру подачи на коллекторе теплого пола.
Для начала я решил, что мне нужно просто поменять термоголовку с капиллярной трубкой на электронную термоголовку. Сейчас в мире какое-то засилье электронных термоголовок с интерфейсом Zigbee. То есть если бы я поставил подобную термоголовку на управление смесительным узлом, вывел бы от неё внешний датчик температуры и прикрепил его к коллектору подачи теплого пола, то она бы могла вполне заменить механическую термоголовку с капиллярной трубкой!
Мой выбор пал на Aqara Smart Radiator Thermostat E1 SRTS-A01.
Ну, что сказать? В целом это решение имеет право на существование. Но мне не понравилось. Не понравилась скорость реакции термоголовки. Не понравился интерфейс управления, в котором нет возможности задать "положение клапана", а только температуру, которую термоголовка сама будет поддерживать (в целом так и должно быть для бытового устройства, конечно). Не понравилась точность поддержания температуры (хотя она скорее всего нормальная, просто для этого нужно сильно больше времени – она же для обычного радиатора предназначена). То, что она на батарейках – наверняка легко решается подведением к ней стационарного питания, так что это как раз мелочи.
Но самое главное, основной рабочий элемент этой термоголовки — это сервопривод, который двигает шток клапана. То есть при любом изменении температуры теплоносителя в подающей системе - будет включаться этот электромотор и искать новое стабильное положение для штока. То есть в целом вся эта конструкция недалеко ушла от решения с трёхходовым клапаном от Danfoss. Только Danfoss претендует на промышленное применение и соответствующую надёжность (срок службы), а эта прекрасная бытовая термоголовка в таком режиме работы может много и не выдержать. Это только мои домыслы! Возможно, что она прослужит 100 лет! Но на это очень, очень непохоже.
Но эта термоголовка натолкнула меня на мысль… Ведь если она может управлять с помощью сервомотора положением штока, то ведь, наверное, и я тоже могу управлять с помощью сервомотора положением обычной механической термоголовки? Я никогда с таким раньше не сталкивался, но ведь теоретически это возможно? Там в ютюбе какие-то мега-роботы уже бегают, прыгают, держат равновесие. Значит сервомоторы в этом мире существуют? Значит ими можно управлять?
Я пропущу описание многих своих неудачных экспериментов и попробую сразу рассказать чем всё закончилось.
За основу я взял сервомотор DS3235-180. Была ещё попытка использовать более простую версию MG996R, он она показала себя очень странно – при первоначальной подаче питания она доли секунды совершала какие-то непроизвольные движения. Было глупо и странно. А DS3235-180 вёл себя предельно корректно.
Для управления сервомотором я взял уже обычный для меня WeMos D1 Mini Pro. В прошивке Tasmota управление сервоприводами оказалось встроенным изначально, так что здесь изобретать велосипед не пришлось.
Пара преобразователей питания MP1584 (один для питания WeMos, второй для питания сервопривода).
Поскольку на MP1584 не оказалось управляющего контакта EN, то пришлось ставить ещё дополнительный релейный модуль.
Потом я соединил всё это счастье приблизительно вот по этой схеме и через какое-то время оно даже начало у меня крутиться!
Сама сборка получилась где-то вот такой. Не идеально, но для сельской местности сойдёт. В качестве подосновы взят листовой ПНД, а для крепления элементов используется по традиции термоклей.
Осталось как-то передать усилие с сервомотора на термоголовку. Сейчас попробуем наколхозить.
Для начала берём шестерню от мясорубки.
Немного обрабатываем её и получаем ведущую шестерню для сервомотора.
Немного обрабатываем вторую такую же шестерню…
Немного термоклея и получаем ведомую шестерню.
Простенький кронштейн для сервомотора из стального уголка.
Вот настройки для Tasmota, которые приведут WeMos в какое-то внятное состояние, с которым можно жить:
PowerOnState 0 # реле по-умолчанию выключены
SetOption0 0 # реле по-умолчанию выключены
SetOption47 3 # если здесь ноль, то реле оказывается в каком-то вообще непонятном состоянии после загрузки
TelePeriod 200
Module 18 # Switch template to GENERIC
GPIO0 224 # Relay1
GPIO2 416 # PWM1
DeviceName серво термог.тепл.пола
ShutterRelay1 1
SetOption80 1
ShutterMode 5
PWMFrequency 200
SetOption15 0
ShutterPWMRange1 80,530
ShutterOpenDuration1 5
ShutterCloseDuration1 5
ShutterMotorDelay1 1
Этими настройками сам привод сильно замедлен, поскольку его родная скорость поворота очень большая. А термоголовке так сильно спешить не нужно.
Для общего понимания - сервопривод принимает на входе некий PWM-сигнал, который говорит ему какое положение нужно занять прямо сейчас. И сервопривод на максиальной доступной для него скорости пытается повернуться в это положение. А если нужно сделать это медленнее, то тогда упавляющий модуль должен постепенно менять выдаваемый PWM-сигнал... И тогда будет создаваться впечатление плавного вращения сервомотора. Для меня это было неожиденно. Но в целом выглядит очень пристойно.
Ну и вот как-то приблизительно так это работает по финалу.
Поставленная цель вполне достигнута. "Если вы хотите в чём-то разбираться, но не разбираетесь, начните разбираться — и вы разберётесь!".