- Arduino.ru
- ПИ регулятор для теплого пола
- «Почти умный» тёплый пол на Arduino из песочницы
- Disclaimer
- Покупка
- Первый тест
- Реализация «умной» части
- Заключение
- Блог Евгения Николаенко
- Контроль отопления и вентиляции на базе Arduino
- Устройство системы
- Управляющая программа (скетч для ардуино)
- Зависание контроллера Arduino
- Просадка напряжения
- Доработка скетча Ардуино
- Раздельное включение вентиляторов вытяжки
Arduino.ru
ПИ регулятор для теплого пола
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Доброго времени суток. Ищу программиста, схемотехника, разработчика автоматических систем. Пытаюсь организовать штучное производство ПИ регуляторов для установки на коллекторы теплого пола. Сам немного увлекаюсь микроконтроллерами, но данный проект не потяну .ТЗ представляется мне следующим образом:
1. Конструктив: Блок с ардуино(предположительно нано или мини впаивается на плату), корпус с колодками под термодатчики и управляющие контакты на сервопривода (скорее всего их будет 6). Дисплей, кнопки, разъем для питания. Отдельно сервоприводы с устройством крепления и сопряжения с коллектором теплого пола.
2. Принцип работы:
Режим 1; Микроконтроллер опрашивает термодатчики вмонтированные в полу и на основании полученных значений производит регулировку протока в конкретном луче теплого пола за счет поворота сервопривода на определенный угол в ту или иную сторону. На дисплее номер луча, ниже уставка температуры, ниже текушая температура, ниже угол открытия клапана сервоприводом.
Режим2; Ручной режим – пользователь может с помощью кнопок или их комбинации установить конкретный угол открытия каждого луча. При этом индикация температуры в луче и угол открытия сервы.
Режим 3; Режим наладки ПИ регулятора – доступен лишь по кодовой комбинации клавиш используется для изменения уставки температуры и пропорциональных и интегральных констант ПИ регулятора. Индикация – номер луча, уставка температуры и константы. Данные сохраняются после отключения питания.
3. Перспектива: Запись значений температуры на носитель(флеш карта). Управление в зависимости от времени(конкретное включение и выключение каждого луча в определенное пользователем время)
«Почти умный» тёплый пол на Arduino из песочницы
Экология потребления. Мой обычный вечер — это посиделки за компьютером. Холодными вечерами частенько появлялось желание сделать моё место отдыха комфортнее. Точнее, периодически было просто холодно ногам.
Мой обычный вечер — это посиделки за компьютером. Холодными вечерами частенько появлялось желание сделать моё место отдыха комфортнее. Точнее, периодически было просто холодно ногам. Идеи были различные, вплоть до покупки USB тапочек с подогревом. Однако, все они казались мне нелепыми и отметались. И вот однажды, просматривая YouTube канал одного из любителей Arduino, я наткнулся на видео, где рассказывалось про инфракрасную плёнку. Увидев эту плёнку, я сразу понял: «Вот то, что мне надо!»
Данный проект можно кратко описать так: я положил кусок инфракрасной плёнки под дополнительный слой паркета, добавив к нему систему автоматического управления с помощью Arduino, нескольких датчиков и VB.NET. Теперь по порядку, что и как получилось.
Disclaimer
Я занимаюсь проектами подобного рода уже несколько лет, делаю для себя. Делаю, чтобы делать: сам процесс для меня гораздо интереснее, чем конечное решение. Именно поэтому описание процесса и экспериментов приведены ниже со столь детальными подробностями. Использование элементов иногда не совсем оправдано с финансовой точки зрения — это я понимаю. Периодически я что-то меняю (в подходе, в элементах), но точно не собираюсь переходить на готовые решения, так как это будет просто неинтересно.
Почему «почти умный»? Я бы не назвал измерение температуры и управление реле с таймером «умным». Как задел на будущее — есть идея усовершенствовать алгоритм управления, добавив функции обучения. Вот тогда этот проект можно будет назвать как-то иначе.
Зачем эта публикация:
- интересно получить конструктивную критику/идеи
- познакомить сообщество с инфракрасной плёнкой
Покупка
Решив, что перед действиями следует подготовиться, я отправился в поисковики с целью найти больше информации и отзывов. Комментарии рознились. Кто-то называл плёнку идеальным отопительным элементом и говорил, что успешно обогревает целые дома, кто-то жаловался на полную бесполезность и уверял, что это всё «развод». Я решил экспериментировать, так как люблю новые штуки.
Комплекты поставки встречаются разные:
- Ширина плёнки (50, 80, 100см)
- Длина (от 2-ух метров) (где-то была информация, что при ширине 50см максимально допустимо использовать до 6 метров плёнки в одном отрезке на одно подключение (источника данных нет))
- Наличие в комплекте термостата
- Наличие в комплекте поставки креплений (типа крокодил) для подключения питания к плёнке (судя по комментариям — важный момент, поскольку некоторые типы китайских креплений со временем ослабевают и контакт ухудшается вплоть до полного исчезновения)
Комментарий продавцов плёнки в моём городе: гарантия на плёнку может составлять до 10 лет, однако гарантия на термостат и, особенно, на датчик температуры не превышает 2 года. Датчик температуры слабое место и устанавливать его рекомендуется таким образом, чтобы обеспечить возможность замены в ходе эксплуатации. Обычно в пол монтируется трубка небольшого диаметра, а датчик просто вставляется в трубку позже при установке.
Для эксперимента мне требовался лишь небольшой кусок «волшебной» плёнки, поэтому главным критерием для покупки была цена и минимальность комплектации (без термостата и креплений).
Проверив цены, я остановился на одном предложении на AliExpress. Продавец предлагал 2 метра плёнки шириной 50 сантиметров за 8€, без термостата и креплений, однако за доставку просил ещё столько же. Это получался самый приемлемый вариант. Я сделал заказ и стал ждать посылки. Примерно через 3 недели кусок плёнки уже лежал у меня дома.
Первый тест
Процесс сборки элементарен:
- Отрезал плёнку нужной длины (мне хватило примерно 100см. теоретически можно резать почти в любом месте)
- Подключил клеммы (Здесь интересный момент, что плёнка ламинирована полностью с обоих сторон. Даже если контактная полоса выглядит как большой медный контакт с одной стороны плёнки (смотри фото после получения посылки) – прямого доступа к контакту всё равно нет. Если использовать свои клеммы, то сначала нужно проковырять ламинированный слой)
Включил, замерил потребление. Мощность, потребляемая моим куском плёнки, составила 105 Ватт. Если кто-то решит использовать подобную плёнку, может рассчитывать потребление как 200-210 Ватт на квадратный метр. Никаких «пусковых токов» я не наблюдал, потребление стабильно, пока есть питание и со временем не уменьшается. Конечно, не забываем, что использование термостата введёт свой коэффициент в конечные расчёты потребления.
Я встал на пол и стал ждать эффекта. Во время теста периодически переходил на обычный пол, чтобы не упустить изменения, если температура будет подниматься плавно. По прошествии нескольких минут я ощутил приятную теплоту, идущую от пола. Минут через 15 пол уже жарил так, что находиться на нём было некомфортно. Эксперимент можно было считать удачным, так как было ясно видно, что плёнка может дать необходимый уровень теплоотдачи, чтобы обеспечить мои потребности.
Реализация «умной» части
За время ожидания посылки у меня в голове сложилась довольно чёткая картина того, как будет работать мой тёплый пол. Так как это уже не первый мой проект — я решил по максимуму использовать уже существующие наработки. По сути, к управлению температурой пола я решил применить тот же алгоритм и схемы, что и для автоматического управления светом.
Сравним основные правила алгоритмов:
Свет
- Мы включаем свет, если уровень освещения ниже заданного
- Мы включаем реле на определённый промежуток времени
- Мы включаем реле, только если есть информация от датчика движения
Обогрев пола
- Мы включаем подогрев, если уровень температуры ниже заданного
- Мы включаем реле на определённый промежуток времени
- Мы включаем реле, только если есть информация от датчика движения
Своего рода блок-схема всего решения. Прошу не судить схему строго – нарисовал её специально для публикации, чтобы был понятен способ подключения и не заморачивался с подбором правильных иконок.
Реле питания пола
Для управления питанием используется связка из двух плат.
Первая плата добавляет к Arduino Nano:
- Места крепления в мою стойку автоматики (4 креста по бокам)
- Разъём RJ-45 для портов входа/выхода (разговора про сеть нет — просто я использую эти разъёмы для коммутации)
- Вход для 12В (если используется в подключаемой плате)
- Два сопротивления на 10 кОм для подключения аналоговых датчиков
Вторая плата:
- Места крепления в мою стойку автоматики (4 креста по бокам)
- Содержит JK-триггер для запоминания последней команды
- Мост питания L298D, чтобы передавать повышенный ток на катушку реле
- Реле 5В или 12В в зависимости от версии
- Несколько светодиодов для отображения состояния
Заранее отвечу на вопросы, которые могли возникнуть после ознакомления с платами.
- Почему две платы? Реализация скопирована из уже существующего управления светом, где мне так удобнее. Если бы делал с нуля – скорее всего плата была бы одна.
- Зачем триггер? Действительно, для данного решения мне кажется он излишен. Просто в одной из предыдущих версий системы управляющий контроллер не был подключен к мосту L298D постоянно, а подключался мультиплексором. Поэтому существовала необходимость помнить установленное состояние.
- Почему L298D, если можно использовать оптическую развязку? Опять же наследие и пачка давно купленных по 3€ L298D.
Датчики температуры и движения
Корпус
Предполагалось, что все управляющие элементы будут валяться под столом на полу. Из этого следовало, что будет не лишним сделать нечто похожее на корпус, чтобы систему нельзя было легко повредить, случайно задев ногой. Для корпуса была использована коробочка, предназначенная для хранения мелких вещей.
Корпус в сборе
Сбоку прорезаны отверстия для датчиков
Конечный вариант.
Вот так всё выглядит после установки. Примерная зона срабатывания датчика движения обведена. Рисовал по ощущениям – когда срабатывает, а когда нет.
Снимок экрана с окном управляющей программы на компьютере
(Как упоминалось, управляющая логика была скопирована с системы управления светом, поэтому на форме можно заметить надписи «Light» вместо «Temperature»)
Заключение
Как во время тестирования, так и во время работы данного решения в собранном виде обнаружились некоторые проблемы и нюансы. Большинство из них связано с электрическими и физическими характеристиками применённой схемы и их описание выходит за рамки данной публикации. Возможно позднее я опишу нюансы более детально в отдельном посте. Инфракрасная плёнка показала себя как интересный материал, и я вполне могу рекомендовать её для применения. Возможно ли применить её как единственный источник отопления в помещении и какое будет при этом потребление электроэнергии – я не знаю.
В общем, с момента «запуска» проекта прошло уже несколько месяцев. Мой «почти умный» тёплый пол работает отлично и выполняет своё предназначение на 100%, хотя иногда и приходится подстраивать желаемую температуру. опубликовано econet.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 секунд. Свежий скетч можно скачать по ссылке ниже