Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Подключите центральное отопление к Arduino

Компоненты и расходные материалы

Arduino UNO
× 1
Arduino OpenTherm shield
× 1
Источник питания 24 В
× 1

Об этом проекте

Вы когда-нибудь задумывались, когда и почему ваш котел работает и отапливает ваш дом? Вы хотите автоматизировать свою систему отопления с помощью Arduino? Щит OpenTherm разработан для вас. Это позволит вам контролировать и контролировать свой котел OpenTherm с помощью Arduino.

Фон

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

Поэтому я построил себе шлюз OpenTherm, который позволил мне перехватить связь между термостатом и котлом и разместить алгоритм, который либо запускал котел, либо использовал тепло от камина - [подробнее о регуляторе].

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

Для чего нужен щит?

  • Создайте собственный котел на базе Arduino с существующим термостатом OpenTherm. Вряд ли кто-нибудь сделает это, но это возможно.
  • Используйте экран, чтобы создать собственный термостат на базе Arduino. полностью взять на себя котел и отопление дома. Идеально подходит для домашней автоматизации. Для этого приложения требуется только внешний источник питания 5 В.
  • Поместите экран OpenTherm в линии между существующим котлом и термостатом и создайте монитор смотреть, когда и как котел отапливает ваш дом. Вы даже можете перехватить связь, например, для беспроводного управления отоплением.
  • OpenTherm позволяет использовать посредника ( шлюз ) устройство, которое взаимодействует как с котлом, так и с термостатом. Вот как я использовал экран для создания регулятора OpenTherm.

Доступные данные и команды

  • комнатная температура
  • заданное значение температуры в помещении
  • температура теплоносителя
  • температура возвратной воды
  • температура ГВС *
  • давление горячей воды *
  • расход ГВС *
  • наружная температура *
  • состояние котла (работает / не работает / ошибка)
  • уровень модуляции
  • температура выхлопных газов *
  • статистика, сколько времени работал котел

* обратите внимание, что они доступны только в том случае, если ваш котел оснащен необходимыми принадлежностями

Строим щит

Электронная схема основана на проекте шлюза OpenTherm, в котором используется микроконтроллер PIC. Я адаптировал его для Arduino и создал красивую компоновку, совместимую с Arduino UNO.

Вы можете использовать приведенную выше схему и файлы Gerber, чтобы создать щит самостоятельно. Я производю свои платы на PCBWay - Легкий способ создания прототипа печатной платы. Вы можете попросить их создать и отправить этих красивых голубых красавиц всего за неделю. Синяя паяльная маска стоит столько же, сколько и базовая зеленая! Мне также нравится их обслуживание клиентов, все в порядке. Или вы можете заказать готовый набор для самостоятельного изготовления.

Использование экрана для создания термостата

Первый пример покажет вам, как использовать экран для создания собственного термостата. Что вам понадобится:

  • Котел OpenTherm
  • Arduino UNO, WeMos D1 или любая совместимая с Arduino UNO плата. Единственное требование к плате - поддержка прерывания вывода на выводах 2 и 3.
  • Источник питания 5 В. В этой установке нет необходимости в источнике питания 24 В, поскольку он нужен только в том случае, если вы взаимодействуете с термостатом.

Подключите котел к Arduino OpenTherm Shield, как показано на рисунке выше, прикрепите экран к Arduino, и вы можете начать программирование. Библиотека ввода-вывода Arduino OpenTherm содержит следующий пример, показывающий, как взаимодействовать с бойлером.

  void loop () {if (OPENTHERM ::isIdle ()) {message.type =OT_MSGTYPE_READ_DATA; message.id =OT_MSGID_SLAVE_CONFIG; message.valueHB =0; message.valueLB =0; Serial.print ("->"); OPENTHERM ::printToSerial (сообщение); Serial.println (); OPENTHERM ::send (BOILER_OUT, сообщение); // отправляем сообщение котлу} else if (OPENTHERM ::isSent ()) {OPENTHERM ::listen (BOILER_IN, 800); // ждем ответа котла} else if (OPENTHERM ::getMessage (message)) {// котел ответил OPENTHERM ::stop (); Serial.print ("<-"); OPENTHERM ::printToSerial (сообщение); Serial.println (); Serial.println (); задержка (100); // минимальная задержка перед следующим обменом данными} else if (OPENTHERM ::isError ()) {OPENTHERM ::stop (); Serial.println ("<- Тайм-аут"); Serial.println (); }}  

Сначала проверьте, нет ли ожидающей команды с помощью OPENTHERM ::isIdle . Если нет, вы можете отправить следующий. В этом примере вы запрашиваете флаги конфигурации ведомого устройства. Если команда была успешно отправлена, вы должны начать прослушивание ответа от котла с помощью OPENTHERM ::listen вызов. Метод OPENTHERM ::getMessage вернет true, как только появится ожидающий ответ от ведомого устройства, и если что-то пошло не так или истекло время ожидания, метод OPENTHERM ::isError верните истину. Библиотека содержит структуру сообщений OpenTherm, которая содержит декодированные данные из протокола, поэтому вам вообще не нужно заботиться о форматах. Ознакомьтесь с исходным кодом, он хорошо документирован. Все типы сообщений перечислены в константах, или вы можете проверить документацию OpenTherm.

  struct OpenthermData {тип байта; идентификатор байта; байтовое значениеHB; байтовое значениеLB; float f88 (); void f88 (значение с плавающей запятой); uint16_t u16 (); void u16 (значение uint16_t); int16_t s16 (); void s16 (значение int16_t);}  

Использование экрана для создания монитора, шлюза или регулятора

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

  • термостат OpenTherm
  • Источник питания 24 В, 500 мА.

Подключите экран к шине между котлом и термостатом, как показано на рисунке выше. Вы можете видеть, что он прерывает шину между этими двумя устройствами. Теперь ваша связь прервана, если вы не загрузите программное обеспечение шлюза в свой Arduino, которое будет пересылать команды и ответы от термостата на котел и наоборот. Снова есть отличный пример в библиотеке ввода-вывода Arduino OpenTherm.

  void loop () {if (mode ==MODE_LISTEN_MASTER) {if (OPENTHERM ::isSent () || OPENTHERM ::isIdle () || OPENTHERM ::isError ()) {OPENTHERM ::listen ( THERMOSTAT_IN); } иначе, если (OPENTHERM ::getMessage (сообщение)) {Serial.print ("->"); OPENTHERM ::printToSerial (сообщение); Serial.println (); OPENTHERM ::send (BOILER_OUT, сообщение); // пересылка сообщения в режим котла =MODE_LISTEN_SLAVE; }} else if (mode ==MODE_LISTEN_SLAVE) {if (OPENTHERM ::isSent ()) {OPENTHERM ::listen (BOILER_IN, 800); // ответ необходимо отправить обратно через 800 мс} else if (OPENTHERM ::getMessage (message)) {Serial.print ("<-"); OPENTHERM ::printToSerial (сообщение); Serial.println (); Serial.println (); OPENTHERM ::отправить (THERMOSTAT_OUT, сообщение); // отправить сообщение обратно в режим термостата =MODE_LISTEN_MASTER; } иначе, если (OPENTHERM ::isError ()) {режим =MODE_LISTEN_MASTER; Serial.println ("<- Тайм-аут"); Serial.println (); }}}  

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

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

Код

Библиотека ввода-вывода Opentherm для Arduino
https://github.com/jpraus/arduino-opentherm

Схема


Производственный процесс

  1. Мониторинг моего котла центрального отопления
  2. Создание сети беспроводных датчиков в вашем доме
  3. Подключите датчик к Raspberry Pi, чтобы предупредить вас о появлении ядовитых газов!
  4. Создайте своего робота для видеостриминга, управляемого через Интернет, с помощью Arduino и Raspberry Pi
  5. Как подключить печать GrabCAD к вашему 3D-принтеру Stratasys
  6. Советы по повышению эффективности использования топочного мазута для вашего бизнеса
  7. Включение Alexa Control для потолочного вентилятора
  8. Arduino Spybot
  9. FlickMote
  10. Добавление анимированного (Marquee) освещения в свои проекты