Термостат для котла на ардуино. Термостат для котла на Arduino с протоколом OpenTherm: пошаговая инструкция по сборке

Как сделать умный термостат для котла на Arduino с поддержкой OpenTherm. Какие компоненты нужны для сборки. Как подключить и запрограммировать Arduino для управления котлом по OpenTherm. Как настроить удаленное управление отоплением через Wi-Fi.

Содержание

Что такое OpenTherm и зачем он нужен

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

  • Модуляция мощности котла — котел может плавно регулировать свою мощность, а не просто включаться и выключаться
  • Управление температурой теплоносителя — термостат может задавать оптимальную температуру воды в системе отопления
  • Получение расширенной информации о работе котла — температура, давление, ошибки и т.д.
  • Управление горячим водоснабжением
  • Возможность удаленного управления через интернет

Таким образом, использование OpenTherm позволяет создать более эффективную и комфортную систему отопления. Но как сделать такой термостат самостоятельно?


Необходимые компоненты для сборки термостата

Для создания термостата с поддержкой OpenTherm нам понадобятся следующие компоненты:

  • Arduino Uno или аналогичная плата
  • Датчик температуры DS18B20
  • Модуль OpenTherm Gateway для связи с котлом
  • LCD дисплей 16×2 символов
  • Кнопки для управления
  • Wi-Fi модуль ESP8266 для удаленного управления (опционально)
  • Блок питания 5В
  • Проводники, макетная плата, корпус

Общая стоимость компонентов составит около 1500-2000 рублей в зависимости от выбранных модулей. Это значительно дешевле готовых фирменных термостатов с OpenTherm.

Схема подключения компонентов

Рассмотрим базовую схему подключения основных компонентов термостата:

«`
Arduino Uno OpenTherm Gateway LCD Дисплей DS18B20 ESP8266 Wi-Fi модуль
«`

Основные соединения:

  • OpenTherm Gateway подключается к пинам 2 и 3 Arduino
  • Датчик DS18B20 к пину 4
  • LCD дисплей к пинам 8-13
  • ESP8266 к пинам 0 и 1 (RX, TX)

Обратите внимание, что OpenTherm Gateway требует отдельного питания 5В. Остальные компоненты могут питаться от Arduino.


Программирование Arduino

Теперь нужно запрограммировать Arduino для работы с OpenTherm. Базовый скетч будет выглядеть примерно так:

«`cpp #include #include #include #include const int OT_IN_PIN = 2; // пин для приема данных OpenTherm const int OT_OUT_PIN = 3; // пин для отправки данных OpenTherm OpenTherm ot(OT_IN_PIN, OT_OUT_PIN); OneWire oneWire(4); DallasTemperature sensors(&oneWire); LiquidCrystal lcd(8, 9, 10, 11, 12, 13); float setpoint = 21.0; // заданная температура float hysteresis = 0.5; // гистерезис void setup() { Serial.begin(9600); sensors.begin(); lcd.begin(16, 2); ot.begin(handleInterrupt); } void loop() { sensors.requestTemperatures(); float temp = sensors.getTempCByIndex(0); lcd.setCursor(0, 0); lcd.print(«Temp: «); lcd.print(temp); if (temp < setpoint - hysteresis) { ot.setBoilerStatus(true); ot.setBoilerTemperature(70); } else if (temp >
setpoint + hysteresis) { ot.setBoilerStatus(false); } delay(1000); } void handleInterrupt() { ot.handleInterrupt(); } «`

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


Настройка удаленного управления через Wi-Fi

Для удаленного управления термостатом через интернет можно использовать модуль ESP8266. Алгоритм будет следующим:

  1. ESP8266 подключается к домашней Wi-Fi сети
  2. Создается веб-сервер на ESP8266
  3. Arduino отправляет данные на ESP8266 по UART
  4. Через веб-интерфейс можно удаленно менять настройки

Базовый скетч для ESP8266:

«`cpp #include #include const char* ssid = «Your_SSID»; const char* password = «Your_Password»; ESP8266WebServer server(80); float temperature = 0; float setpoint = 21.0; void setup() { Serial.begin(9600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } server.on(«/», handleRoot); server.on(«/setTemp», handleSetTemp); server.begin(); } void loop() { server.handleClient(); if (Serial.available()) { temperature = Serial.parseFloat(); } } void handleRoot() { String html = ««; html += «Temperature: » + String(temperature) + «
«; html += «Setpoint: » + String(setpoint) + «
«; html += «
New setpoint:
«; html += ««; server.send(200, «text/html», html); } void handleSetTemp() { if (server.hasArg(«temp»)) { setpoint = server.arg(«temp»).toFloat(); Serial.println(setpoint); } server.sendHeader(«Location», «/»); server.send(302, «text/plain», «»); } «`

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


Сборка термостата в корпусе

После проверки работы всех компонентов на макетной плате, можно приступать к окончательной сборке термостата в корпусе. Вот основные шаги:

  1. Выберите подходящий пластиковый корпус с учетом размеров всех компонентов
  2. Разместите компоненты внутри корпуса, продумав удобство подключения и обслуживания
  3. Просверлите отверстия для кнопок, дисплея и датчика температуры
  4. Выполните монтаж компонентов на печатной плате или универсальной макетной плате
  5. Подключите все компоненты согласно схеме
  6. Закрепите плату и дисплей внутри корпуса
  7. Подключите питание и провода для связи с котлом

При сборке обратите внимание на надежность соединений и возможность доступа к компонентам для обслуживания.

Тестирование и настройка термостата

После сборки необходимо тщательно протестировать работу термостата:

  • Проверьте правильность измерения температуры
  • Убедитесь, что котел корректно включается и выключается
  • Настройте гистерезис для оптимальной работы
  • Проверьте работу удаленного управления через Wi-Fi
  • Протестируйте все дополнительные функции, если они были добавлены

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


Возможные улучшения и дополнительные функции

Базовую версию термостата можно расширить дополнительными возможностями:

  • Добавление недельного программирования температуры
  • Интеграция с системами умного дома (Apple HomeKit, Google Home и т.д.)
  • Управление несколькими зонами отопления
  • Учет внешней температуры для оптимизации работы котла
  • Сбор и анализ статистики энергопотребления
  • Добавление датчиков влажности, CO2 для контроля микроклимата

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


Термостат на ESP32 с удаленным управлением. Часть 1. Вводная

Добрый день, уважаемый читатель!

Начиная с этой статьи я начну рассказывать, как создать готовое устройство своими руками на базе ESP32 и ESP-IDF. Без Arduino, регистрации и СМС. А необходимые теоретические сведения буду выкладывать параллельно, по мере необходимости. Материала очень много, поэтому статей будет несколько.

Пример собранного готового устройства

В итоге соберем и запрограммируем устройство, назовём его условно “Термостат + ОПС”, которое обладает следующим функционалом:

  • дистанционный мониторинг температуры в доме, на улице и теплоносителя отопительного котла (список сенсоров этим не ограничивается, вы можете добавить ещё) с контролем допустимых диапазонов и уведомлениями о выходе за их пределы
  • управление отопительным котлом – то есть поддержание заданной температуры в доме на заданном уровне
  • автономная охранно-пожарная сигнализация с оповещением в Telegram и возможностью подключения проводных и беспроводных (433 MHz) датчиков дверей, окон, движения, дыма, протечки воды, утечки газа, угарного газа и т. д.
  • возможность автоматического управления нагрузкой посредством реле – например это может быть управление освещением по датчикам движения или управление краном с электроприводом для перекрытия водопровода при аварии

 


В начале я предоставлю на GitHub готовый “стартовый” проект с описанной выше логикой, а в дальнейшем вы сможете доработать “прикладную” логику под любые свои сценарии – алгоритмы автоматизации вы можете придумать свои, возможности ESP-IDF позволяют вам создать любые, самые сложные сценарии. Предложенное устройство вы можете рассматривать лишь как стартовый вариант для творчества.

Прошивка не имеет web-интерфейса, все настройки осуществляются через файл конфигурации проекта или в run-time через mqtt. Просто не вижу особого смысла тратить на web-интерфейс время, силы и байты.

В одной статье всё сразу рассказать не получится, поэтому будет сразу серия статей:

  1. В этой я опишу планируемый функционал и возможности, своего рода это можно считать анонсом технических возможностей
  2. В следующей статье будут приведены список необходимых компонентов, схема соединений и печатная плата (устройство мелкосерийное, мной собрано уже несколько экземпляров), но его можно собрать и на макетке для пайки
  3. Затем обсудим, как создать прошивку на основе готового проекта с GitHub, не вникая во внутренности прошивки – просто настроив файл конфигурации под ваши параметры. Для начала это будет только телеметрия – удаленный мониторинг температуры, влажности и чего-нибудь ещё (по желанию).
  4. Установим и настроим для использования с устройством один из клиентов MQTT для Android. Никаких приложений для смартфона самому создавать не придется.
  5. После этого добавим в устройство логику, позволяющий ему работать в качестве термостата для управления отопительным котлом и поддержания температуры.
  6. При желании в устройство можно будет достаточно легко добавить функции охранно-пожарной сигнализации на пять проводных зон и неограниченное количество беспроводных, используя дешевые сенсоры 433 MHz
  7. Обсудим, как задействовать сенсоры ОПС (если вы решите их подключить) для управления освещением или иной домашней автоматизации.

Возможности прошивки “из коробки”

Предлагаемый вариант прошивки позволяет получить следующий функционал практически без необходимости программирования (вам потребуется только изменить настройки в файле конфигурации проекта):

Подключение к WiFi:

  • Подключение к нескольким WiFi-сетям (до пяти) с автоматическим выбором. Прошивка не имеет web-интерфейса для настройки подключения к wifi, всё необходимое настраивается только в конфигурационном файле. Несколько преднастроенных сетей позволяет переносить устройство из одной локации в другую без необходимости изменения прошивки.
  • Автоматическая синхронизация локального времени с серверами SNTP в сети интернет (вам не потребуется использовать модуль часов, хотя его можно и подключить, при необходимости).
  • Постоянный контроль доступа в сеть интернет с помощью пинга с сохранением истории.

Сенсоры:

  • На момент написания статьи доступны драйверы для сенсоров: DHT11-DHT22, MW33, AHT10-AHT21 (возможно и AHT25 будет работать – не проверял), DS18x20, Bh2750, BMP180, BME180, BME280, ВМЕ680, CCS811, HDC1080, HTU2x, SHT2x, SHT3x, Si7021, Capacitive Soil Moisture Sensor
  • Подключение сенсоров через две отдельные шины I2C, либо на выделенный GPIO (AM2302, DS18B20)
  • Встроенные фильтры данных для сенсоров: среднее и медиана с настраиваемой длиной буфера (настройку можно выполнять в том числе и после запуска устройства). Фильтры особенно актуальны для линейки DHTxx
  • Возможность настройки корректировки значений для сенсоров, например если вы имеет образцовый высокоточный термометр
  • Фиксация экстремумов (минимумов и максимумов) значений для сенсоров: за сутки, неделю и за всё время работы устройства
  • Автоматический мониторинг устройство заданных диапазонов – например при понижении температуры ниже допустимой (котёл отключился) устройство пришлет тревожное уведомление
  • Контроль состояния сенсоров – сбой, некорректные данные, обрыв кабеля и т.д. с оповещением в Telegram

MQTT клиент:

  • MQTT – это основной канал управления устройством. Но при использовании внешних сервисов типа Telegram->MQTT возможно управление непосредственно из Telegram
  • Поддержка двух MQTT-брокеров – основного и резервного (например локального и облачного).
  • Публикация данных с сенсоров вместе с временем измерения и со всеми экстремумами в одном топике в JSON-виде. Впрочем, можно легко перенастроить устройство на публикацию данных с сенсоров в простом виде
  • Возможность передачи данных с сенсоров на другие устройства через локальный брокер (необходимо внесение изменений в код) или получение данных с других устройств

Облачные сервисы

  • Уведомления в Telegram. Можно привязать до 4 отдельных каналов или чатов: обычный, сервисный, охрана и изменение параметров
  • Отправка данных на ThingSpeak, Народный мониторинг, Open Monitoring (по выбору, можно использовать несколько сервисов одновременно)

Охранно-пожарная сигнализация:

  • Гибкая возможность создания охранных зон с разными реакциями (необходимо внесение изменений в код прошивки)
  • Переключение режимов охраны через MQTT или с помощью 433 MHz пульта с Ali
  • Пять проводных зон с защитой от помех
  • Встроенный модуль приемника 433 MHz для использования беспроводных сенсоров с Ali
  • Встроенный зуммер для звуковых сигналов
  • Выходы для светозвукового оповещателя (маячка с сиреной) с открытым коллектором
  • Возможность совместного использования сенсоров ОПС для автоматики (необходимо внесение изменений в код прошивки)

Периферия:

  • Системный светодиод для индикации состояния устройства путем изменения частоты, количества вспышек и их интервала
  • Ночной режим по расписанию, когда все светодиоды и звуковые сигналы отключаются
  • Два встроенных реле для управления какой-либо нагрузкой
  • Два выхода с открытым коллектором до 0,5А, я их использую для подключения светозвукового оповещателя (маячка с сиреной), но их можно использовать для управления нагрузкой – например внешними реле на DIN-рейке (необходимо внесение изменений в код прошивки)
  • При управлении нагрузкой легко реализуется подсчет времени работы за сутки, неделю, месяц, год.

Удаленная отладка и обновления:

  • OTA (Over The Air) обновление прошивки без необходимости физического подключения к устройству
  • Уведомления в Telegram об изменениях состояния устройства, в том числе с настраиваемой задержкой (это позволяет пропускать кратковременные сбои и отключения различных сервисов)
  • При аварийной перезагрузке устройства в Telegram будет отправлена причина сбоя и стек вызовов, предшествующих сбою, что позволяет оперативно устранять ошибки
  • Публикация на MQTT и OpenMon системной информации, в том числе количество свободной памяти – это позволяет оперативно устранять утечки памяти, если вы что-то сделали “не так”
  • Публикация на MQTT списка задач с дополнительной информацией о стеке, что позволяет подобрать оптимальный размер стека для задач

Данная прошивка – отнюдь не конкурент ESP Easy, WiFi-IoT и прочим, “готовым” прошивкам. Это моя попытка совместить несовместимое – самый “низкоуровневый” для ESP32 framework (для обеспечения максимальной гибкости) и набор сервисов, которые на мой взгляд, должны быть в каждом устройстве “по умолчанию” – WiFi, MQTT, HTTPS и т.д. Если разобраться – все мои библиотеки – это только “обертки” для стандартных библиотек ESP-IDF, облегчающие работу. Поэтому в дальнейшем вы можете использовать весь функционал ESP-IDF без каких-либо ограничений.

Проект создан во VS Code и PlatformIO, в Arduino IDE он работать не будет. В заключение хотелось бы привести несколько скриншотов для понимания, что вы можете получить, используя данный проект.


Структура топиков

Устройство генерирует топики автоматически, для этого необходимо указать (в файле конфигурации):

  • локацию – расположение устройства, например village, office или адрес
  • название устройства – например home, garage, hood и т. д.
  • топики для сенсоров и функциональных частей

Вы можете использовать любой удобный вам клиент Mqtt с поддержкой JSON, я пользуюсь Mqtt Dash.

 


Уведомления

Чтобы не заморачиваться с push-уведомлениями, я использую уведомления в telegram. Оказалось, это очень удобно, нет необходимости отправлять одно и то же уведомление нескольким людям. Прошивка поддерживает до 4 каналов:

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

Пример настройки telegram-бота

Не обязательно использовать все 4 канала разными, можно объединить их в один или два

 


Сохранение графиков

Как я уже писал, прошивка позволяет отправлять данные на ThingSpeak, Народный мониторинг, Open Monitoring – вы можете использовать любое сочетание сервисов, один или несколько.

Пример накопления служебных данных (ping) на Open Monitoring


 


Удаленное обновление и отладка

Устройство поддерживает обновление прошивки “по воздуху”, через хостинг. Нет необходимости физического подключения к устройству, но требуется прямая ссылка на файл прошивки, которую может скачать устройство – файлообменники типа “Яндекс Диска”, увы, не подходят.

При перезагрузке в случае сбоя устройство пришлет трассировку стека на момент сбоя. Это позволяет найти причину ошибки и устранить её.

 


Термостат для газового котла с погодным регулированием

К газовым котлам имеется много видов разных термостатов, разной ценовой категории за EUR, USD, RUB, UAH и если у таких термостатов добавляется хоть какой-то интеллект в байтах, то с каждым байтом оного, цена растет все более и более.

Возможно кто-то термостат уже собирал сам, но количество собранных самостоятельно схем, не ошибусь если скажу, что это меньше 1-го процента от всего количества реализуемых через торговлю. Но на самом деле тут не все так сложно. Я  также долго пользовался покупным термостатом LT-08. Но как пользователь, могу сказать (и не только я), помимо положительных моментов есть и отрицательные: включение котла по команде термостата производится периодически и при некотором времени простоя котла радиаторы становятся холодными. В такие периоды, моему организму не совсем комфортно, вероятная причина такого дискомфорта отсутствие инфракрасного излучения от батарей.

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

Ну и конечно дело тут не только, в каком либо навороченном термостате, первым делом жилое помещение должно быть нормально утеплено.

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

Кто-то скажет, что тут еще придумаешь, да у меня котел и так микропроцессорный, да современные котлы в принципе для сегодняшнего дня полнофункциональны, и модернизировать там, что-либо пользователю — нечего. Но в первую очередь, производитель направляет большую часть функционала на безопасную работу и повышение КПД своего теплогенератора, за пользователями этих агрегатов только и остается выбор, какую температуру поддерживать в помещении. Вот тут можно и управлять своим агрегатом на свое усмотрение. Например, выбирать — топить постоянно, это будет полный комфорт, только на практике это получается накладно, или, исходя из реалий сегодняшнего дня (да и в ближайшем будущем)  приходится экономить, как я уже говорил топить  порционно, используя эту схему с привязкой к наружной температуре воздуха.

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

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

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

Схема, которую я предлагаю вашему вниманию, я думаю понравится и любителям МК, и любителям логических элементов, в частности микросхемы 555, к которой можно применить N-е количество вариантов настройки.

Основной состав схемы это МК Atmega-8 в корпусе TQFP-32 ЖК-индикатор16х2 и микросхема 556 (предвижу, как уже кто-то затопал ногами, «Фи» скоро микросхеме 50 лет, а ей всё находят применение. А что поделаешь, если вещь сделана удачно, так почему бы ее не применять…. Да и вкус у каждого, например, до сих пор люди слушают аудио треки на лампах, и видят при этом превосходство такого звука над цифрой…)

Задача схемы следить за температурой в помещении датчик U-1, это просто термостат вых. РВ7 (ниже определенного значения температуры 23.3°C (гистерезис 0.3°C) всегда включит котел на обогрев).

Датчик U-2, по температуре наружного воздуха происходит периодическое включение котла, с изменяемыми периодами паузы и отдельно периоды включения котла, вот здесь и используется микросхема 556. Таймеры IC1, IC2.

В данной схеме роль этих таймеров очень важна, таймеры IC1, IC2 , определяют периоды включения котла и периоды пауз, если вы понимаете принцип работы таких таймеров (NE555) вам не составит труда подкорректировать работу схемы под свои условия эксплуатации, без вмешательства в программу МК, в настройке работы этих таймеров, вам помогут реализованные в МК два измерителя, которые в % соотношении наглядно отображают работу таймеров IC1, IC2.

Зависимость работы таймеров от температуры, на графике можно показать примерно так:

U-3 датчик, установлен на вводе теплоносителя в котел (обратка), при превышении температуры 37.0°C (гистерезис 4.0°C ) котел получит команду на отключение ( данные от U-3 имеют приоритет над IC2 и над данными от U-1.

Принципиальная схема термостата (нажмите для увеличения):

Реализовано на МК Atmega-8.

Соблюдение температурных заданий и заданных условий (приоритетов) работы.

Показания на ЖКИ от датчиков U-1, U-3 , с точностью до 0. 1°C, показания датчика U-2 с точностью 1°C .
Распределение температурного диапазона на включение таймеров IC1, IC2. Отображение на ЖКИ в % соотношении, периода работы каждого из таймеров IC1, IC2.

Часть схемы с фоторезистором, вносит условие в работу МК день<-> ночь, это дает днем смещение температурного графика на 2°C по всему температурному диапазону (днем в сторону увеличения периода паузы IC1, и уменьшения периода включения таймера IC2).

Номиналы показание на схеме, цепи заряда конденсатора С-1 (таймер IC1) пауза от 30 минут до 240 минут.
Конденсатор С-2 (таймер IC2) период включения котла от 10 минут до 20 минут, как написано выше пользователь по своим условиям эксплуатации и своим расчетам может откорректировать эти периоды, заменив в линейке резисторов нужные номиналы (резисторы R1.1 – 1.9 и R2.1 – 2.9 перед монтажом на плату, стоит проверить по факту! на соответствие номинала).

Кстати, позволю себе заметить, что для реализации на практике таймером IC1, пауз  длительностью до 4 часов, в которых задействован непосредственно конденсатор С-1 емкостью 1000мкф. , тут не весь ширпотреб можно для этого применить, вот на фото конденсатор который справа (был новый, не б/у), при длительной паузе заряжался только до 12% и все. Проверка измерителем емкости, такой брак у меня не выявляет, конденсатор  звонится как полноценный 1000 мкф.

Все производимые действия внутри и на выходе МК отображаются на ЖКИ определёнными знаками и символами.

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

Варианты схемных решений.
С имеющейся прошивкой, в схеме можно применить и МК Atmega-8 в корпусе DIP-28, работать устройство будет полнофункционально, только не будет возможности визуально наблюдать на экране ЖКИ время заряда С1 и С2 в % соотношении.

Если есть необходимость использования реле для управления котлом конечный каскад схемы будет выглядеть так:

Устройство также может эксплуатироваться на один ЖКИ совместно с другими схемами. Управление этой функцией происходит с 1-й ноги МК (PD3) на ноль, отключается  инициализация активности ЖКИ (на печатной плате, для использования этой функции и согласования этой схемы с другими схемами, дополнительно установлены семь диодов 1n4148, если вам не требуется такое использование схемы, вместо этих диодов, просто установить перемычки). В это время все функции схемы, термостатов и погодного регулирования, продолжают работать в прежнем режиме.

Установки FUSE, которые соответствуют работе от внутреннего генератора 4MHz

Что отображают символы ЖКИ:

И немного фотографий устройства:

Работу схемы можно протестировать в proteus’е.
Архив проекта: схема, прошивка, proteus, печатная плата.

При написании статьи использовались некоторые материалы с сайта http://c2. at.ua

Список радиоэлементов
ОбозначениеТипНоминалКоличествоПримечаниеМагазинМой блокнот
МК AVR 8-бит

ATmega8

1В корпусе TQFP-32Поиск в магазине ОтронВ блокнот
Программируемый таймер и осциллятор

NE556

1Поиск в магазине ОтронВ блокнот
Линейный регулятор

LM7805

1Поиск в магазине ОтронВ блокнот
Датчик температуры

DS18B20

3Поиск в магазине ОтронВ блокнот
Биполярный транзистор

BC847

3Поиск в магазине ОтронВ блокнот
Оптопара1Или электромагнитное релеПоиск в магазине ОтронВ блокнот
Выпрямительный диод

1N4148

19Поиск в магазине ОтронВ блокнот
С1Электролитический конденсатор1000 мкФ1Поиск в магазине ОтронВ блокнот
С2Электролитический конденсатор330 мкФ1Поиск в магазине ОтронВ блокнот
Электролитический конденсатор100 мкФ1Поиск в магазине ОтронВ блокнот
Электролитический конденсатор470 мкФ1Поиск в магазине ОтронВ блокнот
Конденсатор0. 01 мкФ4Поиск в магазине ОтронВ блокнот
Конденсатор0.1 мкФ2Поиск в магазине ОтронВ блокнот
Конденсатор1 мкФ1Поиск в магазине ОтронВ блокнот
FR1Фоторезистор1Поиск в магазине ОтронВ блокнот
R1.1Резистор

330 кОм

2Поиск в магазине ОтронВ блокнот
R1.2Резистор

9.1 МОм

1Поиск в магазине ОтронВ блокнот
R1. 3Резистор

8 МОм

1Поиск в магазине ОтронВ блокнот
R1.4Резистор

6.8 МОм

1Поиск в магазине ОтронВ блокнот
R1.5Резистор

5.6 МОм

1Поиск в магазине ОтронВ блокнот
R1.6Резистор

4.3 МОм

1Поиск в магазине ОтронВ блокнот
R1.7Резистор

3.3 МОм

1Поиск в магазине ОтронВ блокнот
R1.8, R2.4Резистор

2.2 МОм

2Поиск в магазине ОтронВ блокнот
R1. 9Резистор

1.2 МОм

1Поиск в магазине ОтронВ блокнот
R2.1Резистор

220 кОм

1Поиск в магазине ОтронВ блокнот
R2.2Резистор

2.7 МОм

1Поиск в магазине ОтронВ блокнот
R2.3Резистор

2.4 МОм

1Поиск в магазине ОтронВ блокнот
R2.5Резистор

2 МОм

1Поиск в магазине ОтронВ блокнот
R2.6Подстроечный резистор1.8 МОм1Поиск в магазине ОтронВ блокнот
R2. 7Резистор

1.5 МОм

1Поиск в магазине ОтронВ блокнот
R2.8Резистор

1.3 МОм

1Поиск в магазине ОтронВ блокнот
R2.9Резистор

1.1 МОм

1Поиск в магазине ОтронВ блокнот
R3Резистор

4.7 кОм

1Поиск в магазине ОтронВ блокнот
Резистор

1 кОм

1Поиск в магазине ОтронВ блокнот
Резистор

3 кОм

1Поиск в магазине ОтронВ блокнот
Резистор

6. 8 кОм

3Поиск в магазине ОтронВ блокнот
Резистор

10 кОм

2Поиск в магазине ОтронВ блокнот
Резистор

27 кОм

1Поиск в магазине ОтронВ блокнот
Резистор

470 Ом

1Поиск в магазине ОтронВ блокнот
Резистор

680 кОм

2Поиск в магазине ОтронВ блокнот
Подстроечный резистор5 кОм1Поиск в магазине ОтронВ блокнот
Подстроечный резистор220 кОм1Поиск в магазине ОтронВ блокнот
LCD-дисплей16х21Поиск в магазине ОтронВ блокнот
Разьем для подключения программатора1Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Теги:
  • Термостат
  • Микроконтроллер
  • AVR
  • Sprint-Layout
  • Proteus

Контроллер Arduino OpenTherm — Проекты для хобби С моей точки зрения, система центрального отопления дома – это одна из первых вещей, которыми должна управлять система домашней автоматизации.

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

Главной частью каждой системы отопления является котел. Большинством котлов можно управлять с помощью простого термостата включения/выключения. Однако более новые котлы поддерживают модуляцию мощности и позволяют термостатам регулировать температуру отопительной воды. Котел будет использовать больше или меньше газа (электричества), при необходимости, чтобы достичь температуры воды, установленной термостатом. Использование простого устройства управления включением/выключением значительно снизит эффективность системы по сравнению с модулирующим термостатом.

OpenTherm (OT) — это стандартный протокол связи, используемый в системах центрального отопления для связи между котлом центрального отопления и термостатическим контроллером. Официальный веб-сайт www.opentherm.eu. Используя протокол OpenTherm, вы можете контролировать как температуру горячей воды в бойлере, так и температуру воды, используемой для отопления дома. Есть довольно много производителей, которые делают котлы, совместимые с OpenTherm. Спецификацию протокола версии 2.2 вы можете найти здесь. Котел и термостат следует подключать двумя проводами независимо от полярности. Уровни напряжения: Низкий уровень 7В, Высокий уровень — 15..18В.

Так что для управления котлом через ардуино нужно сделать переходник OpenTherm to TTL level. Я нашел схему DIY Opentherm Gateway, на базе PIC-контроллера, который позволяет отправлять команды OpenTherm на котел через последовательный порт. Мне было любопытно понять протокол OpenTherm и функции, которые он предоставляет, поэтому я решил реализовать только адаптерную часть этой схемы и управлять котлом напрямую с помощью Arduino.

Схема:


Печатная плата:


Печатная плата:


Реализация:

Выход последовательного порта:


Аппаратное обеспечение:

  • Оптопара PC817 x 2 9003 3 0. 2$
  • Транзистор PNP 0,1$
  • Диод 1N4148 x 4 0,1$
  • Стабилитрон 4V7 0,1$
  • Стабилитрон 15 В 0,1$
  • Стабилитрон 4V3 0,1$
  • 1/4 Вт 5% Резистор 100 Ом 0.01$
  • 1/4 Вт 5% Резистор 220 Ом 0,01$
  • 1/4 Вт, 5% Резистор 330 Ом x 2 0,01$
  • 1/4 Вт 5% Резистор 1 к5 Ом 0,01$
  • Arduino Mega 2560 R3 или любой совместимый с Arduino 2-7$

Программное обеспечение:

  • Программное обеспечение Arduino (IDE)
  • Простой эскиз

Соединения:

Для подключения адаптера мы можем использовать любой совместимый с Arduino контроллер, просто выберите случайным образом два контакта GPIO и обновите две константы (OT_IN_PIN и OT_OUT_PIN) в скетче. Я сделал печатную плату, совместимую с Arduino Mega, подключенную к 18, 19.контакты для данных и 5V, GND в качестве источника питания. Котел должен быть подключен к адаптеру (вместо термостата) двумя проводами с помощью винтовой клеммы.

Простой скетч позволяет отправлять OpenTherm запросы к котлу и получать ответы. Есть массив (запросов) базовых команд:

  • 0 — получить статус
  • 1 — установка температуры центрального отопления (64 или C в моем случае)
  • 25 — получить температуру котловой воды

Вы можете просто добавить другие команды, описанные в спецификации протокола, для управления котлом и просмотра ответов. Каждый запрос и ответ состоит из 64-битного фрейма, который имеет такую ​​структуру:

   P MGS-TYPE SPARE DATA-ID DATA-VALUE
   0 000 0000 00000000 00000000 00000000
    

Где P — бит четности, вы должны установить его в 1, если в запросе нечетное количество битов 1.
MGS-TYPE — 000 для запроса чтения и 001 для записи.
DATA-ID — идентификатор команды.
DATA-VALUE — 16-битное значение, специфичное для каждой команды.

Котел Buderus Logamax u072-24k:


Температура центрального отопления установлена ​​на 64 o C.

Адаптер OpenTherm в сборе:

Более подробную информацию о собранном адаптере OpenTherm вы можете найти здесь.
Чтобы купить его, пожалуйста, перейдите на страницу магазина.


контроллер OpenTherm котел Дистанционное управление термостат Ардуино Центральное отопление сделай сам Домашняя автоматизация ПК817 Будерус Логамакс u072

Обратно к списку


Управление центральным отоплением с помощью Arduino и Raspberry Pi – WEBLOG Грега Гигона

Грег разработка, Без рубрики 4 минуты

Когда Arduino и Raspberry Pi выпустили первые версии, я купил по одной каждой. Будучи любителем гаджетов и … ну, мужчиной, я немного поиграл со своими новыми игрушками и оставил их в ящике стола.

Прошло время, и ни с одним из них ничего особенного не произошло. Поскольку я становился все более недовольным контроллером центрального отопления в моем нынешнем доме, я решил достать из ящика ящика Ino и Pi и создать контроллер центрального отопления, которым я был бы доволен.

Этап проектирования

Первым требованием к новой системе управления отоплением было минимальное вмешательство в установку.

Циферблатный термостат, который есть у меня дома, работает как простой переключатель: включает отопление, когда температура падает ниже заданной; и отключение нагрева при повышении температуры выше другого заданного значения. Я решил использовать это простота в моем дизайне. Все, что мне нужно было сделать, это подключить один кабель 230 В к этому термостату (230 В, черт возьми).

Разобравшись с точкой входа, я вошел в бит контроллера. Плата Arduino будет управлять реле , которое будет просто включать/выключать нагрев. Для измерения температуры я выбрал цифровой термометр , который давал более стабильные показания, чем аналоговый (входит в стартовый комплект Arduino Uno). Я также добавил светодиод для индикации включения обогрева.

Используя последовательный порт, используемый для программирования Arduino, я решил, что плата будет отправлять обновления температуры и получать команды настройки от Pi через USB-соединение. Он также будет получать питание через то же самое. Это также решило проблему двух отдельных адаптеров питания для Arduino и Raspberry Pi.

Фаза сборки

Я пробовал несколько вещей, прежде чем пришел к следующему решению.

Электроника

Схема Arduino очень проста.

Три элемента, подключенных к Arduino с помощью пары резисторы , не много.

Светодиод не нужен, он указывает на включение обогрева.

Окончательный прототип выглядит не очень привлекательно, но все спрятано под мебелью и торчат только датчики температуры и немного светодиода.

Окончательный прототип моего контроллера

 

 

Программное обеспечение

Мне пришлось написать три отдельных части программного обеспечения:

  • Код Arduino, который считывает текущую температуру и управляет реле, https://github.com/greggigon / Главная-Температура-Контроллер/дерево/мастер/ардуино
  • Код Raspberry Pi, который взаимодействует с Arduino и предоставляет REST API для пользовательского интерфейса https://github.com/greggigon/Home-Temperature-Controller/tree/master/temperature-sensor-and-rest
  • Код пользовательского интерфейса
  • , простое веб-приложение, которое запускается на любом устройстве и взаимодействует с Pi через REST API https://github. com/greggigon/Home-Temperature-Controller/tree/master/ui/mobile-web-ui
  • .
Arduino

Для датчика температуры я добавил две дополнительные библиотеки: библиотеку протокола OneWire и библиотеку датчиков DallasTemperature. Я использую аппроксимацию 0,5 градуса по Цельсию для показания температуры.

Показания температуры отправляются через последовательный порт в каждом цикле. Arduino также ожидает число с плавающей запятой на последовательном порту. Полученное число указывает на желаемую комнатную температуру для Arduino.

Чтобы ограничить колебания показаний датчика, управление реле меняется после как минимум 10 успешных последовательных считываний одной и той же температуры с датчика.

Raspberry Pi

Программное обеспечение, работающее на Raspberry Pi, делает следующее:

  • Оно ожидает обновлений температуры от Arduino и сохраняет обновления в памяти (для последних обновлений) и в простой файловой базе данных h3 (для исторические данные),
  • Предоставляет REST API для пользовательского интерфейса для получения информации о температуре и получения новых настроек,
  • Планирует изменения температуры в соответствии с расписанием, хранящимся в файле JSON.

Я начал код в Python , но он работал медленно. Я провел простое сравнение времени выполнения алгоритмов простых чисел, и Java 8 превзошла Python. На одноядерном Raspberry Pi 1 был хороший стимул сменить платформу. Я выбрал язык программирования Kotlin, так как он был для меня новым, и я хотел его изучить.

В качестве основы для приложения, управляемого событиями, я выбираю Vert.x 3. Для связи через последовательный порт используется немного устаревшая библиотека RXTX.

Приложение для управления пользовательским интерфейсом/телефоном

Веб-приложение, которое я создаю, работает как на компьютерах, так и на мобильных устройствах. Я выбрал React в качестве UI-фреймворка с компонентами Material UI. Лот собран с помощью Webpack в небольшой набор файлов html/js.

Этап тестирования

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *