Управление котлом на ардуино своими руками

Добавил пользователь Morpheus
Обновлено: 19.09.2024

Alekonm

Здравствуйте! Есть идея собрать контроллер для управления электрическим котлом отопления на arduino. Прошу помочь мне составить схему необходимых модулей.
Котёл электрически Protherm 14, имеет возможность отключения через встроенное реле. То есть если контакт нормально замкнут - котёл работает, разомкнут - нет. Где находится контакт на самом котле знаю так как ранее был установлен GSM модуль.

Задача:
Собрать модуль на базе ардуино для замыкания-размыкания контакта.В итоге контроллер будет реализовывать недельный и часовой механизм включения/отключения котла. Код проекта выложу в отдельной теме по окончании.

Как я понимаю помимо самой платформы мне необходимо только реле. Или реле не нужно, а можно сразу подключиться к контактам на котле?

EandV

Вопрос, а реле котла от какого напряжения срабатывает? Ардуина на сигнальные пины подает напряжение 5В и 0,04А. Для реле котла скорее всего этого будет не достаточно.
В качестве решения могу предложить использовать Мосфет или модуль реле с Али с доп источником питания. Схема следующая: Ардуина через сигнальный пин открывает мосфет/реле , а мосфет/реле подает уже нужное напряжение на штатное реле котла. Либо менять реле котла на модуль реле с Али (нужно только, чтобы по току подходило). В любом случае нужен дополнительный блок питания на нужное количество Вольт.

Еще если важна точность по времени включения/отключения рекомендую ставить модуль внешних часов. Внутренние таймеры не отличаются точностью. Я например делал систему автополива сначала на внутреннем таймере и если период срабатывания был большой (например раз в 4 дня) то точность была +/- 10 часов.

Ну и по хорошему, нужен какой-нибудь экран, куда будет выводиться информация, например, когда будет ближайшее включение/выключение или сколько часов уже идет обогрев.

Теоретически можно добавить еще какие-нибудь датчики температуры, чтобы Ардуина еще и отключала котел в случае необходимости или наоборот включала, если холодно раньше запланированного времени.

Ардуине в принципе без разницы куда в нужное время управляющий сигнал подавать: на мосфет для включения помпы или на реле для включения/выключения котла/насоса.

Умная котельная

Задача

Комплексное обеспечение работы котельной: поддержание заданной температуры в помещениях, управление работой тёплых полов, освещения, контроль протечек воды и топлива, управление вентиляцией, контроль потребляемой электроэнергии, сбор статистики потребления энергии и визуализация её в виде графиков, оповещение по SMS о тревожных ситуациях и т. д.

Оборудование

В качестве контроллера котельной используется Arduino Mega 2560 с сетевой платой Ethernet Shield и microSD картой памяти в качестве хранилища файлов и информации.

Arduino Mega 2560

Кроме этих комплектующих в проекте используются:

  • 4 цифровых температурных датчиков DS18B20
  • 2 датчика протечки
  • 3 датчика потребления электроэнергии PZEM-004T
  • 6 реле для коммутации нагрузок 220 В

Отопление

Обогрев всех трёх зон осуществляется подачей горячей воды в трубы (тёплого пола), а управление клапанами подачи воды производится коммутацией электромагнитных реле контроллером.

Информация о текущей температуре в систему поступает от датчиков DS18B20, объединённых в 1-Wire сеть. В данном случае в сети находятся 4 датчика — 3 датчика зон контроля температуры и 1 внешний уличный датчик.

Установки температуры в зонах

Для каждой из 3-х зон в интерфейсе системы задаются требуемые значения температуры. Далее система в автоматическом режиме поддерживает заданную температуру.

Установки температуры в зонах

Контроль температуры

Система позволяет отслеживать температуру во всех зонах и сопоставлять её с требуемой целевой температурой. Тут же виден график изменения температуры в реальном времени.

Контроль температуры

Лимиты отклонений температуры

Лимиты отклонений температуры

Управление котлом

В котельной используется промышленный котёл со своей встроенной системой управления. На данный контроллер возложена только функция блокировки котла при возникновении аварийных ситуаций (протечки воды или топлива).

Управление котлом

Также в интерфейсе предусмотрена кнопка ручного включения и выключения котла. Цвет кнопки показывает, что котёл включён (оранжевый), при выключении котла кнопка станет серого цвета.

Вентиляция котельной

Управление вентиляцией котельной осуществляется при помощи нажатия на кнопку в веб-интерфейсе. Это можно делать со стационарного компьютера или с планшета или смартфона: благодаря адаптивному дизайну веб-страницы одинаково хорошо смотрятся на любом устройстве.

Вентиляция котельной

Контроль электроэнергии

Модуль PZEM-004T

В качестве датчика напряжения, тока и потребляемой мощности был выбран неплохо зарекомендовавший себя модуль PZEM-004T. Поскольку дача питается от трёхфазной сети, то для полного контроля потребляемой энергии по всем фазам, было задействовано 3 модуля PZEM-004T, по одному на каждую фазу.

Модуль PZEM-004T

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

Индикация в панели управления напряжения и потребляемой мощности

Информация об электро-параметрах в панели управления. В данном случае напряжение каждой фазы составляет 236 вольт, а потребление 42 ватта по каждой фазе. В случае возникновения аварийной ситуации система автоматически отошлёт SMS уведомление об инциденте на мобильный телефон.

Статистика потребления электроэнергии

Статистика потребления электроэнергии

Графики потребления электроэнергии

График потребления электроэнергии

Управление освещением курятника

Освещение курятника производится автоматическим способом на основе данных алгоритма определения времени восхода и захода солнца. Иногда требуется включать и выключать свет с некоторой задержкой относительно астрономического восхода и захода. Для этого в интерфейсе можно задать необходимые задержки.

Управление освещением курятника

Сохранение настроек

Все настройки, состояние кнопок и установленные состояния объектов управления, изменяемые в веб-интерфейсе, записываются в энергонезависимую память и сохраняются при выключении и последующем включении питания контроллера.

Панель управления

В панели управления собраны все важные параметры текущего состояния системы. Время, дата, подключённые модули, системные настройки, показания датчиков, состояние реле, загрузка контроллера и т. д.

Панель управления

Время восхода и захода солнца

SMS-сервер

Другие контроллеры сети

Индикация температуры

В панель управления выводится информация со всех температурных датчиков, подключённых к системе. В данный момент датчики отключены, поэтому на всех индикаторах нулевые значения.

Индикация температуры

Реле управления обогревом

Информация о состоянии каждого реле обогрева (котельная, курятник и брудер) в реальном времени. В данный момент все три реле включены.

Реле управления обогревом

Реле управления котлом

Информация о состоянии реле котла в реальном времени. В данный момент котёл включён.

Реле управления котлом

Реле вентиляции

Информация о состоянии реле вентиляции котельной. В данный момент вентиляция не работает.

Реле вентиляции

Датчик аварии котла

Датчик аварии котла

Датчик аварии топлива

Датчик аварии топлива

Реле освещения

Информация о состоянии реле освещения курятника. Если освещение включено в веб-интерфейсе, то система автоматически включает и отключает его с восходом и заходом солнца (с установленными задержками).

Реле освещения

Дизайн

Развитие проекта

.Автоматизация газовых котлов на Arduino.

Каждый кто живет в квартире или в доме с газовой системой отопления, на газовых котлах, задумывался хоть раз, а как же можно автоматизировать систему отопления? Сегодня мы поговорим о том, что можно было бы сделать на Arduino, чтобы облегчить себе жизнь. Какие бы функции могла выполнять Arduino.

Каждый кто живет в квартире или в доме с газовой системой отопления, на газовых котлах

Начнем с самого простого, что можно было бы сделать. Автоматическое включение котла по разнице температур. Как это все могло бы работать. Допустим, нормальная температура в помещении должна составлять +23 градуса, и не должна опускаться ниже +20 градусов. Реализация достаточно проста, устанавливается один датчик в доме и настраивается уровень температур, при которых Arduino будет либо включать котел, либо отключать его.


Большинство газовых котлов подвергаются таким модернизациям, такие как Vaillant, Ferroli, BAXI, и множество других. Но также стоит следить и за другой бытовой техникой, не забывать про запчасти к газовой плите индезит, к холодильникам, стиральным машинам и другой бытовой технике, своевременный ремонт обеспечивает длительную и качественную работу.

К Arduino можно добавить экран и выводить температуру в помещении.

К Arduino можно добавить экран и выводить температуру в помещении. Добавив еще парочку датчиков, мы уже сможем контролировать и температуру горячей воды, время работы котла в режиме отопления. Можно установить датчик температуры на улице и настроить включение котла, при низкой температуре на улице, а не чтобы он включался при температуры улице +18.

Еще можно придумать множество способов автоматизировать газовые котлы, все зависит от вашей фантазии.

Понравилась новость Автоматизация газовых котлов на Arduino? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступать в группу Вконтакте, в группу на Facebook.

Версия прототипа на февраль 2019:


Идея сделать свой GSM термостат появилась не сразу, но после разочарования в готовых решениях. Читайте обзор WiFi термостата POER и доступных в продаже GSM/SMS-термостатов. Wi-Fi термостат оказался бесполезным в плане пресечения проблем с котлом (отключение электричества на долгий период, нежелание котла зажечься в -20 и т.п.), что приводит к заморозке воды в доме и затратам на ремонт, а готовые термостаты кажутся мне весьма неудобными при излишне завышенной цене (в среднем 7-10 тысяч). Создание своего GSM термостата позволяет за разумные деньги (до 3 тысяч рублей) сделать изделие, которое будет заточено под конкретные пожелания создателя и по возможностям будет превосходить готовые решения за 9 тысяч рублей. Первоначальная идея была взята из темы «Управление отоплением в загородном доме (GSM)«. Там же можете скачать готовые скетчи для девайса, однако, я настоятельно рекомендую разобраться в программировании для Arduino и написать свой скетч, отвечающий Вашим личным нуждам. Так Вы получите не только недорогой GSM термостат, но и новое хобби, которое увлечет Вас как минимум на несколько недель.

Я осознаю, что мой термостат еще далек от состояния готовности, поэтому свой код пока не выкладываю, но в этой статье решил поделиться своими мыслями о том, каким я хотел бы видеть этот термостат, и какие ошибки довольно часто встречаются в коде готовых скетчей по управлению климатом с помощью SMS команд.

Итак, вот список того, что, по моему мнению, должен делать нормальный термостат. К сожалению, по мере роста кода, я столкнулся с проблемой ограниченности ресурсов Arduino (32 килобайта на код и 2 килобайта на переменные — это очень мало). Не всё, что я могу сделать, может существовать в рамках одного проекта, но, тем не менее, делюсь идеями, а каждый сам решит, какие фичи ему более полезны и интересны.

Что хотелось бы, но еще не сделано:

  • Для разбирательств в проблемных случаях хорошо бы вести лог температур и действий термостата на MicroSD карту. С точки зрения железа и программирования проблем тут никаких нет, но проблема в ресурсах Arduino. Подключение одной только библиотеки SD сжирает чуть ли ни половину доступной памяти. Как вариант, библиотека SdFat, которая не столь требовательна к памяти, но и с ней мой код не влез в лимит 32 кб. На Arduino UNO это точно не выйдет, разве что переделывать всё на Arduino Mega. Так что эта задумка пока под вопросом.

Команды (посылаются через терминал или SMS, или со смартфона, подключенного по Bluetooth):

Технические и отладочные команды для проведения первоначальной настройки.

В ответ получаем SMS о состоянии прибора после проведенных действий:

T=20.63; R=1111; A=1(21.00+0.30); W=1(10.00-30.00); VW=0; G=10/15; N=8; V=USB; DT=2019.10.15/10:44:48

Ну как-то так все и работает.

Отправка данных на интернет-сервер по GPRS.

Модем, в моем случае на базе SIM900, умеет выходить в интернет без дополнительного оборудования. Это можно использовать, чтобы сохранять данные об ошибках и периодически вести лог параметров устройства (температуры в доме, состояния реле в разное время и т.п.). Эти данные можно использовать как для удаленного контроля без необходимости оплаты SMS, так и для выяснения обстоятельств в случае проблем с котлом (когда именно котел встал, как быстро падала температура в доме и т.п.).

Самая простая реализация следующая:

Если еще нет своего сайта, делаем сайт (можно на бесплатном хостинге, но обязательно с поддержкой PHP).

В результате получаете лог типа такого при проветривании помещения:

2019-02-14,09:54:20,23.25
2019-02-14,09:55:20,22.50
2019-02-14,09:56:19,22.00
2019-02-14,09:57:24,20.75
2019-02-14,09:58:25,20.25
2019-02-14,09:59:19,20.25
2019-02-14,10:00:19,20.25
2019-02-14,10:01:20,19.75
2019-02-14,10:02:19,19.50

Я с GPRS интернетом мучался два дня, так что расскажу, где могут быть затыки. Вообще, эта статья очень помогла мне разобраться с командами, там же узнаете, какие ответы что означают. Шлем следующие AT команды модему, не забывая дожидаться ответа об успешном выполнении после каждой команды.

Ну а имея данные на сервере в интернете, с ними уже можно делать что угодно — выводить на экране в удобном виде, строить графики, рассылать тревожные email’ы при выходе параметров за разумные границы и т.п. Я также думал об обратной связи — чтобы из интернета слать команды на модем, но пока не вижу в этом большой необходимости — это излишнее нагромождение в проекте, а у меня уже на это нет памяти — 31.8 кб из 32 занято. Да и если всё исправно работает, то и слать на термостат ничего не нужно. А я все же надеюсь, что термостат будет работать исправно 🙂 Если же кто-то планирует это сделать, у меня в мыслях два варианта:

Остальное…

Теперь несколько слов о потенциальных проблемах, которые я обнаружил в скетчах, имеющихся в интернете.

Об использовании millis(); в качестве таймера.

Классический пример, который можно видеть чуть ли ни во всех скетчах, которые мне попались:

unsigned long currentTime;
unsigned long loopTime;
currentTime = millis();
if(currentTime >= (loopTime + 10000)) loopTime = currentTime;
/* какое-то важное действие, которое надо выполнять каждые 10 секунд */
>

Это часто работает при первоначальных проверках, но копнем глубже, прочитаем инструкцию:

millis() — Возвращает количество миллисекунд с момента начала выполнения текущей программы на плате Arduino. Это количество сбрасывается на ноль, в следствие переполнения значения, приблизительно через 50 дней.


ct=238 lt=230 lt+10=240
ct=239 lt=230 lt+10=240
ct=240 lt=230 lt+10=240 WIN!
ct=241 lt=240 lt+10=250
ct=242 lt=240 lt+10=250
ct=243 lt=240 lt+10=250
ct=244 lt=240 lt+10=250
ct=245 lt=240 lt+10=250
ct=246 lt=240 lt+10=250
ct=247 lt=240 lt+10=250
ct=248 lt=240 lt+10=250
ct=249 lt=240 lt+10=250
ct=250 lt=240 lt+10=250 WIN!
ct=251 lt=250 lt+10=4 WIN!
ct=252 lt=251 lt+10=5 WIN!
ct=253 lt=252 lt+10=6 WIN!
ct=254 lt=253 lt+10=7 WIN!
ct=255 lt=254 lt+10=8 WIN!
ct=0 lt=255 lt+10=9
ct=1 lt=255 lt+10=9
ct=2 lt=255 lt+10=9
ct=3 lt=255 lt+10=9
ct=4 lt=255 lt+10=9
ct=5 lt=255 lt+10=9
ct=6 lt=255 lt+10=9
ct=7 lt=255 lt+10=9
ct=8 lt=255 lt+10=9
ct=9 lt=255 lt+10=9 WIN!
ct=10 lt=9 lt+10=19
ct=11 lt=9 lt+10=19

Так что ходящий по рукам код выполнения действий через заданные промежутки, рассчитанные с помощью millis() кажется мне весьма сомнительным. Понятно, что большая часть поделок на arduino не используются 50 дней подряд, а если и используются, автор уже считает, что отладка завершена и может просто не заметить странного поведения, ведь через какое-то время программа снова должна начать выполняться как следует (если только многоразовое выполнение того, что должно выполняться редко, не выведет всю систему из строя.

Варианты решения проблемы (как я их вижу):

Об отсутствии проверок на текущее состояние оборудования.

Например типичное включение модема, которое можно видет в скетчах:

digitalWrite(GSM_PIN, HIGH);
delay(800);
digitalWrite(GSM_PIN, LOW);

Но эти же команды и выключают модем. Так что если по какой-то причине модем уже был включен, выполняя эти команды, мы его выключаем. Далее авторы скетчей беззаботно выполняют команды отправки SMS, даже не проверив, работает модем или нет. Имхо, вреда от такого оборудования будет больше, чем пользы — если Вы выключите модем, полагая, что вы его включаете, то вовсе останетесь без удаленного контроля.

Как я это себе представляю (на практике пока работает без проблем):

О выводе SMS в сериал порт без сохранения.

Статья будет дополняться и исправляться со временем. Если кто-то тоже работает над подобным проектом — делитесь своими мыслями в комментах. Также пишите о граблях, на которые уже пришлось наступить при подобных разработках.

Дополнение 2019-10-15:

После некоторого опыта использования, в новом сезоне внес в прошивку следующие изменения:

Дополнение 2019-11-03:


Отверстия на крышке потихоньку вырезал советским ручным лобзиком с мелкими зубьями (не электрическим), так как пластик крышки довольно тонкий и хрупкий – с ним надо понежнее, иначе пойдет трещинами.

Также в последний момент решил добавить кнопку с фиксированным положением переключателя для включения и выключения подсветки экрана, так как большую часть времени подсветка не нужна. Кнопка напрямую подключается к экрану вместо имеющейся там перемычки.


Также потребовалось сделать и вентиляционные отверстия для выброса тепла из контейнера. Я сделал их на высоте 1 см от верхнего края, через каждые 1.5 см, на всех сторонах кроме лицевой и того угла, где находится термодатчик, чтобы тепло, выходящее изнутри, его не подогревало.



Ну и последний шаг – наклеить 4 подушечки из толстого двухстороннего скотча на нижнюю часть разделочной доски и хорошенько прижать ее к дну контейнера, чтобы при вставлении штекера питания или USB, вся сборка не отодвигалась от отверстий для штекеров. Можно использовать для фиксации и термоклей, но в случае необходимости вынуть сборку из контейнера для проведения ремонта или апгрейда, отдирать термоклей будет сложнее, чем скотч. Теперь контейнер можно закрывать: замена сим-карты, подключение питания и USB кабеля для программирования, а также кабеля для котла, будет производиться снаружи.



Дополнение 2019-11-05:

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

Примеры общения с термостатом по Wi-Fi:

По SMS общение происходит так же, только за деньги 🙁 Кстати, благодаря статистике теперь видно, что температура гуляет в пределах 1.25 градусов, что намного приятнее, чем 2-3 градуса перепадов при использовании термостата Poer. Вынесенный наружу цифровой датчик Dallas значительно быстрее улавливает иизменения температуры в помещении, чем встроенная внутрь корпуса аналоговая термопара Поера. Также теперь можно оценить циклы работы/простоя котла. В примере на втором скриншоте видно, что котел работал примерно по 15 минут с последующим отдыхом около 60-70 минут, чтобы прогреть дом до 20-21 градусов при уличной температуре около 0 градусов.

Читайте также: