- Блог Евгения Николаенко
- Контроль отопления и вентиляции на базе Arduino
- Устройство системы
- Управляющая программа (скетч для ардуино)
- Зависание контроллера Arduino
- Просадка напряжения
- Доработка скетча Ардуино
- Раздельное включение вентиляторов вытяжки
- Автоматика для твердотопливных котлов на Ардуино
- Оставьте комментарий:
- Навигация по сайту:
- Юный Технарь:
- Помощь проекту:
- Поиск
- Последние статьи
- Подключаем шаговый двигатель NEMA17 к Ar…
- Информер на матрице 8 на 32 из WS2812
- Мой канал на YouTube
- Подпишитесь!
- Arduino.ru
- Погодозависимое управление котлом
Блог Евгения Николаенко
Контроль отопления и вентиляции на базе Arduino
Представляю мой новый проект — автоматическое управление отоплением и вентиляцией на базе Arduino Nano 3.0.
Довольно долго я бился над решением задачи создания оптимального микроклимата в ванной комнате, и наконец-то, благодаря знаниям, полученным в процессе изучения Arduino и различных датчиков температуры и влажности, мне это удалось! 🙂
Началось все с того, что в весенний и осенний периоды, когда погода на улице еще не стабилизировалась, в ванной комнате наблюдались постоянные перепады температуры и влажности. Обогреватель то и дело перегревал воздух в дневное время, а если его отключить, то воздух становился неприемлемо холодным для ванной комнаты. То же самое и с влажностью. Постоянно включенная вытяжка приводила к переохлаждению комнаты в ночное время, а днем, если вытяжку не включить, происходило чрезмерное оседание конденсата, о борьбе с которым я уже писал ранее. В итоге, устав от необходимости бегать включать/выключать батарею и вытяжку по нескольку раз в день, а также имея практический опыт создания автоматизированной заслонки на базе Arduino, решил сконструировать прибор для автоматического управления отоплением и вентиляцией в ванной комнате. О результатах проделанной работы рассказано в этом видео.
А теперь предлагаю подробнее рассмотреть как все работает, включая программу (скетч) для Arduino!
Устройство системы
На передней панели системы управления отоплением и вентиляции находится двухстрочный дисплей LCD 1602 I2C, который отображает текущие значения температуры и влажности, а также позволяет просматривать меню установок прибора. Красная и зеленая кнопки — кнопки управления (оказалось вполне достаточно двух кнопок для изменения настроек и управления устройством). Красный светодиод загорается при включении отопления, а зеленый — при включении вентиляции. На левой стороне расположен датчик температуры и влажности DHT22 а также USB-порт модуля Arduino, который пришлось заклеить для лучшей сохранности.
Система для управления отоплением и вентиляцией на базе Arduino. Вид сбоку
На правой стороне устройства находится выключатель и система охлаждения, представляющая собой компьютерный вентилятор, работающий на вытяжку. Без него корпус системы нагревался (от встроенного блока питания и реле), что приводило к неверным показаниям датчика температуры, т.к. он расположен близко к корпусу.
Система для управления отоплением и вентиляцией на базе Arduino. Вид сбоку
Система контроля микроклимата работает от сети 220 вольт и подключена к ближайшей розетке.
Система для управления отоплением и вентиляцией на базе Arduino.
Заглянем внутрь корпуса. Сам корпус является обычной распределительной коробкой. На его передней панели имеются 4 болта, открутив которые можно легко и быстро получить доступ к мозгам системы, а также к коммутационным реле, которые управляют нагрузкой.
Система для управления отоплением и вентиляцией на базе Arduino со снятой лицевой панелью
Внутри находится сборка из модуля ардуино нано 3.0, силовых реле с максимальным током до 10 ампер, и блоком питания на 9 вольт.
Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри
Панель управления подключена к основному модулю при помощи шлейфов.
Система для управления отоплением и вентиляцией на базе Arduino. Вид изнутри
Панель управления можно легко отсоединить от устройства для проведения профилактических работ или модернизации. Как уже упоминалось выше, в состав панели входит LCD модуль, 2 светодиода и 2 управляющие кнопки.
Панель управления системы контроля микроклимата на базе Arduino
Управляющий модуль сконструирован на монтажной плате и имеет разъемы для подключения датчика влажности и температуры DHT22, панели управления, нагрузки (4 разъема), а также источника питания. Первый, второй и четвертый разъемы работают в режиме ключа (замыкают и размыкают цепь). Третий разъем обеспечивает выход с напряжением 5 вольт для управления дистанционной розеткой.
Главный модуль системы контроля микроклимата на базе Arduino
Силовые элементы надежно припаяны при помощи медных проводов на обратной стороне монтажной платы. Логические элементы аккуратно спаяны меду собой, все реле управляются через транзисторы. Ссылку на схему более совершенной модели этого прибора см. в конце статьи!
Главный модуль системы контроля микроклимата на базе Arduino. Монтажная плата
Корпус системы — обычная электрическая разветвительная коробка стандартного размера.
Корпус системы контроля микроклимата
Настенный конвектор, отлично подсушивающий влажный воздух, находится на противоположной стене от модуля управления микроклиматом.
Настенный конвектор, управляемый системой на базе Arduino
Розетка с дистанционным управлением системы контроля микроклимата на базе Arduino
Управляющая программа (скетч для ардуино)
Теперь, пожалуй, самое интересное 🙂 Предлагаю вашему вниманию полный скетч для управления отоплением и вентиляцией на базе Arduino. Скажу сразу, что скетч модернизировался после первого запуска системы целых 3 раза. И на то были определенные причины.
Изначально температура измерялась каждые 2 секунды, и в зависимости от этого срабатывали правила включения и выключения электроприборов. Бывало так, что вытяжка включалась и выключалась каждые 2 секунды, в моменты колебания влажности или температуры на пограничных значениях.
Решением данной ситуации стало изменение алгоритма программы таким образом, чтобы измерения проводились 5 раз подряд (в течение 10 секунд), а затем для всех показателей вычислялось среднее значение, на основании которого применялись правила включения/отключения нагрузки. Это позволило избавиться от таких «скачков» с выключением вытяжки или батареи!
Итак, скетч под этим спойлером:
Скетч занимает около 50% памяти ардуино и требует дополнительных библиотек для работы с датчиком DHT22 и экраном LCD через интерфейс I2C, найти которые можно на просторах интернета.
На момент написания статьи уже месяц система работает в штатном режиме, микроклимат в ванной стал практически идеальным, конечно пришлось несколько раз менять настройки включения и выключения вытяжки и батареи, но подобрав нужные параметры все стало просто идеально — и днем и ночью комфортные ощущения при нахождении в этом помещении! 🙂
Обновлено 05.11.2018
Зависание контроллера Arduino
Прошло пол года с момента начала активной эксплуатации устройства, и обнаружились некоторые проблемы, а именно, периодические зависания модуля ардуино. Начав разбираться, первым делом наткнулся на некий WatchDog, который способен автоматически перезагрузить систему при зависании микроконтроллера. Подумал — вот оно подходящее решение. Но как выяснилось, на моей китайской копии Arduino Nano 3.0 WatchDog работает неправильно из-за некорректной прошивки загрузчика. Для того чтобы это исправить, нужна «правильная» прошивка загрузчика, найти которую можно в интернете, и программатор, которым все это дело будет «зашиваться» внутрь чипа. Пока ждал программатор с Китая, решил поискать реальные причины зависания контроллера.
Просадка напряжения
Пытаясь найти объективную причину зависания, я стал грешить на некачественный блок питания и просадку напряжения при включении реле, особенно когда несколько реле включаются одновременно, ведь зависания происходили не так часто, а всего лишь 1-2 раза в месяц.
Первым делом решил добавить 2 конденсатора по 1000 мкф в надежде, что они уменьшат просадку напряжения при срабатывании реле. Первый поставил параллельно выходу с блока питания (там кстати уже был свой конденсатор, но второй лишним не будет, подумал я), а второй — установил параллельно выходу +5V на плате ардуино, откуда как раз берется питание для реле. С этого же выхода питается и сам микроконтроллер. Складывается логичная ситуация — когда все реле включаются одновременно, микроконтроллеру не хватает напряжения и он зависает.
После добавление конденсаторов зависания практически прекратились, но все же, 1 раз в месяц могло и зависнуть.
Доработка скетча Ардуино
Поигравшись с конденсаторами, решил проверить программное обеспечение устройства на наличие неоптимального кода, который мог бы приводить к зависаниям микроконтроллера. Первым делом начал с проверки процедуры DoAll(), которая управляет включением и отключением реле. И тут меня как осенило, откуда берутся просадки напряжения.
Дело в том, что после обработки данных, полученных с датчиков, и включении/выключении какого-либо реле, происходил мгновенный переход к следующей обработке данных с датчиков, и включение/выключение следующего реле, и так далее. Фактически, все реле действительно могли включаться или отключаться одновременно, с задержкой менее 1 мсек, поскольку между обработкой данных для каждого реле отсутствовала пауза.
Исправив код этой процедуры, а именно, добавив искусственную задержку в 200 миллисекунд после включения/отключения какого-либо реле, я был крайне удивлен стабильной работой прибора. Зависания вовсе прекратились, и вот уже 2 месяца прибор работает стабильно. Теперь и WatchDog не нужен, хотя конечно он не помешает, на всякий случай.
В итоге можно сказать, что причиной зависания являлась несбалансированность нагрузки на источник питания при выполнении программного кода, а также низкое качество источника питания. Исправив программу, исчез и дисбаланс. Ниже представлен исправленный фрагмент кода процедуры DoAll(). Жирным текстом выделены те самые задержки по 200 мсек, которые были добавлены в программу и кардинально повысили стабильность работы микроконтроллера.
Обновлено 02.02.2019
Раздельное включение вентиляторов вытяжки
Зимой обнаружилось, что из одной из вытяжет стал капать конденсат, поэтому было решено отключать на зиму этот вентилятор. И чтобы не лазить каждый сезон с отверткой в развет коробку и уж тем более в само устройство, решил сделать все программно, поскольку каждый вентилятор управляется отдельным реле. Немного переработал скетч, добавив дополнительный экран настроек, на котором можно задействовать или отключить каждый вентилятор по отдельности Также уменьшил время одновременного нажатия кнопок для переключения между экранами настроек с 3 до 2 секунд. Свежий скетч можно скачать по ссылке ниже
Автоматика для твердотопливных котлов на Ардуино
Контроллер для твердотопливного котла на Arduino.
Ссылки на компоненты:
ЖК-дисплей LCD1602 (синий экран)- http://ali.pub/alnru
Модуль расширителя интерфейса (I2C)- http://ali.pub/dwj5n
2-ух канальный релейный модуль на 5 В — http://ali.pub/qbz9o
Датчик температуры DS18b20 — http://ali.pub/y34um
Автоматика для твердотопливных котлов
Оставьте комментарий:
Навигация по сайту:
Юный Технарь:
Помощь проекту:
Деньги можно перечислить на карту Сбербанка России:
4276 5400 2194 5088
Поиск
Последние статьи
Подключаем шаговый двигатель NEMA17 к Ar…
Подключаем шаговый двигатель NEMA17 к Arduino.
Информер на матрице 8 на 32 из WS2812
Информер на матрице 8 на 32 из WS2812.
Мой канал на YouTube
Подпишитесь!
2015, Arduinoprom.ru — блог Чилингаряна Грачика. Все авторские права на тексты принадлежат ему.
При размещении текстов и видеоматериалов на сторонних ресурсах активная гиперссылка ОБЯЗАТЕЛЬНА.
Все логотипы и товарные знаки, размещенные на сайте, принадлежат только их законным владельцам (правообладателям).
Arduino.ru
Погодозависимое управление котлом
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Небольшая предыстория (можно пропустить):
У меня в подвале стоить отопительный газовый котел. Управление по заданной температуре теплоносителя (механическое). При большой разнице дневной и ночной уличных температур приходилось бегать и крутить установки. Тогда и возникло желание автоматизировать этот процесс.
Первый регулятор был собран на PIC16F628A на тактовой частоте 32кГц. Микрочиповский си (возможно ввиду моей криворукости) работал криво. Писал на ассемблере. Соответственно — визуализации и управления минимум, но работал. Температурными датчиками выступали DS12b28.
Познав ардуино я реализовал управление на ней:
1. Контроллер — ARDUINO UNO
2. Датчики температуры теплоносителя и наружней — DS12b28.
3. Управление и отображение — 16х2 ЖК дисплей с кнопками
4. Исполнительные устройства — блок 2 реле 5В. Одно реле перевод на автоматический режим, второе — управление горелкой.
Программно реализовано меню с выбором гетерезиса и наклона графика зависомости температур (пока прямая), запись адресов датчиков в ППЗУ.
Что хочется добавить — wifi модуль с индикацией и управлением по сети. Нет модуля и наю как реализовать это без статического IP, прямую зависимость сделать кривой 2 порядка (пока руки не дошли подогнать), ну и в корпус это все загнать :).
Ну и сам текст программы (кое что нарезал из чужих программ, оставив авторские комментарии):
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Привет. У меня похожая ситуация. Пока работает на 3 реле sonoff. А мне хочется реализовать погодазависимый. Итого у меня есть котел газовый который может быть только включен или выключен.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
хочу построить погодазависимый модуль управления котлом на базе ардуино уно с 3мя датчиками температуры. 1 датчик на улице, второй в помещении, а третий в котле. У котла есть только два положения «вкл» и «выкл» необходимо собирая данные с датчиков пользуясь кривыми гестерезиса (необходимо иметь первоначальную установку коэфицента «утепленности дома») поддерживать температуру теплоносителя, для того что бы в доме была заданная температура. что бы температура в » трубе» менялась относительно температуры на улице для поддержания заданой температуры в помещении.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте, Я пока отказался от датчика на улице — при постоянной работе отопления он оказался не нужен. Регулирование температуры теплоносителя осуществляется по заданной температуре в помещении по PID алгоритму, хотя я использую из него только пропорциональную составляющую. Очень уж неторопливы процессы нагрева и охлаждения дома. Последняя версия программы пока обкатана только на протеусе. Посмотрите — может даст что-то к идеям. Я не использую прерываний, вместо них есть переменные, отвечающие за отсчет секунд — неторопливые процессы.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Объясните логику работы? Не совсем понял. У вас система работает как простой термостат? То есть подогрев включен до наступления заданной температуры, а потом отключается?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
По поводу погодозависимости.
Датчик внутри не нужен.
Регулировка температуры подачи идёт по уличной температуре.
У меня самого Cerapur со встроенным погодником,
график настроил лет 10 назад и забыл
Подхожу к котлу раз в два года для чистки конденсационного блока от серы.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
От 258 по 276 строку идет чтение внутренней температуры и в зависимости от ее разницы с заданной температурой вычисляется температура теплоносителя по пропорциональной формуле с Kp. В остальном работает как термостат по температуре теплоносителя. Циркуляционный насос работает всегда, так что температура батарей достаточно ровная. От наружней температуры отказался в связи с тем, что на график сильно влияет ветер на улице. Вводить лишние замеры счел ненужным. Тем более, что мне интереснее комфортная температура в доме. Формула расчета теплоносителя: Ттеплоносителя=Ттеплоносителя+Кр*(Тв_доме_замерянная — Тв_доме_заданная)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Наверное, перепутали местами (Тв_доме_замерянная — Тв_доме_заданная)?
В целом — очень интересно! Уже сделал управление трехходовым клапаном смесительного узла через Arduino. Сейчас только подбираюсь к созданию алгоритма по расчету Ттеплоносителя, уже сутки собираю показания датчиков температуры (четыре в доме, один на улице, один на подаче в тёплый пол).
Какая у вас система отопления? Радиаторы? Тёплый пол? Комбинированная?
Система уже реально работает? Есть ли графики температур улица-дом?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Наверное, перепутали местами (Тв_доме_замерянная — Тв_доме_заданная)?
Спасибо, и правда перепутал.
В целом — очень интересно! Уже сделал управление трехходовым клапаном смесительного узла через Arduino. Сейчас только подбираюсь к созданию алгоритма по расчету Ттеплоносителя, уже сутки собираю показания датчиков температуры (четыре в доме, один на улице, один на подаче в тёплый пол).
Смотрел, у Вас задача, как я понял значительно глобальнее. У меня речь идет о доме с постоянным проживанием. Соответственно изменения температуры в доме не требуется. Один раз установив комфортную температуру надо только ее поддерживать. Резких бросков температуры быть не может, соответственно и наружняя температура мне без надобности — отрегулирую ситуационно по внутренней температуре. Другое дело, если Вы хотите выровнять температуру по дому, но и тогда можно найти наиболее холодное помещение, по нему считать температуру теплоносителя, а остальные помещения регулировать клапанами, опять же вычисляя для них температуру теплоносителя.
Какая у вас система отопления? Радиаторы? Тёплый пол? Комбинированная?
Радиаторы плюс теплый пол на входе. Теплый пол установлен на стабильную температуру механическим датчиком.
Система уже реально работает? Есть ли графики температур улица-дом?
Система пока не работает — ловлю блох в протеусе. График строить не буду по указанным выше причинам. Интересно будет посмотреть Вашу реализацию проекта. Кстати — а зачем Вы датчики раскидали на разные порты?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
У меня тоже ПМЖ. Но у меня основное отопление — тёплый пол. Есть только один радиатор под окнами «второго света», там тёплый пол не справляется (потолок в этой комнате около 4-5 метров).
Я пока наблюдаю за графиками температур. Хочу понять как дом реагирует на изменение погоды.
Но предварительно думаю, что при похолодании (особенно резком) дом будет очень медленно реагировать (у меня каменные стены, крыша, много бетона на полу). Допустим, упала температура на десятую долю градуса — контроллер чуть прибавит подачу отопительной воды. А дом уже реально остывает, ему нужно было заранее прибавлять t° подачи (при похолодании или даже раньше, например, по прогнозу погоды).
Разве у вас не ожидается такого явления? Будет всё как в статьях по ПИД-регулированию — температура дома начнёт «качаться» по синусоиде. К этому времени уже придёт день с солнышком и потеплением, потом еще как-нибудь сменится погода. Пока не уверен, что П-алгоритмом можно управлять отоплением тёплого пола без резких перепадов температуры поверхности пола.
Такой задачи пока не стоит. Несколько датчиков чисто для наблюдения пока. В процессе решу, как усреднить показания этих датчиков для получения итоговой t°дома.
По вашему примеру создам свою тему, как только будет чем поделиться. Обязательно скину ссылку.
Кабель (использую хорошую 4-х парную UTP) уже приходит с разных сторон и сходится в одно место, у щита. Можно было бы с перерасходом кабеля соединить линии, но зачем?