Устройство автоматизации систем водоснабжения с интерфейсом ModBus RTU RS485

26 апр. 2019 г.

Представляю вашему вниманию совместную разработку мою и Антона Бизяева

@Zoolu - устройство автоматизации, контроля, управления и защиты систем водоснабжения WaterUnit.

Создание проекта шло по двум направлениям:

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

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

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

Все измеряемые величины, настройки и уставки устройство передает и получает по команде с центрального устройства по протоколу ModBusRTU по сети RS485.

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

       Основные технические характеристики устройства:

  • Диапазон питающего напряжения устройства от 8В до 25В
  • Обмен по сети RS485 протоколом ModBusRTU предусмотрен на скорости 9600 бод. 8N1

    WaterUnit имеет следующие входы, выходы:

  • Два входа импульсных счетчиков со скоростью счета до 1 кГц (теоретически до 5 кГц).
  • Четыре входа датчика протечки воды.
  • Один вход термодатчика Датчик температуры термистор NTC-MF52-103/3950 10 кОм диапазон измеряемых температур от -30 до +95 градусов.
  • Три выхода реле с ШИМ питанием.
  • Реле для управления приводом (приводами) водоснабжения.
  • Реле терморегулятора.
  • Реле привода водопровода горячего водоснабжения.
  • Встроенная пищалка для местного оповещения об аварийной ситуации.
  • Две кнопки ручного управления
  • Встроенная кнопка ручного управления приводами водоснабжения “Приборка /Тест”.
  • Выносная кнопка с индикатором – для ручного управления реле терморегулятора (бойлера) “Бойлер”.

Два независимых счетчика имеют делители для счета непосредственно в единицах величины. В каждом счетчике предусмотрен восьми битный делитель входных импульсов, для преобразования числа импульсов в значение величины. Объем каждого счетчика 4 байта, т.е. максимальное число сосчитанной величины - 4 294 967 295. В случае снижения питания ниже критического уровня, значения счетчиков величины и текущие значения делителей сохраняются во флеш памяти микроконтроллера.

Значения счетчиков и делителей считываются и записываются двух байтными словами, в шестнадцатеричном виде. 

Четыре независимых входа датчиков протечки воды, сконфигурированы как входы с триггером Шмидта и имеют внешние подтягивающие резисторы сопротивлением 100 кОм. Столь высокое сопротивление выбрано для повышения чувствительности устройства. Наличие нескольких входов датчиков протечки позволяет удаленно, более конкретно определить место обнаружения протечки. Все входы датчиков равнозначны.

Применение ШИМ для управления выходами, позволило использовать в схеме устройства, реле с обмотками на рабоче напряжение от 3В до 24В включенными напрямую в цепь основного питания устройства. Такое решение позволило расширить диапазон рабочего питающего напряжения от 8 до 25В. И снизить дополнительно ток потребления, применив разные значения коэффициента ШИМ для включения реле и его удержания во включенном положении. В ячейке EEPROM c адресом 07h при программировании следует указать рабочее напряжение обмотки реле, применяемых пользователем в своем устройстве, для правильного выбора устройством коэффициентов ШИМ. Соответственно минимальное напряжение питания устройства будет равно напряжению питания обмоток реле, но не ниже 8В. (По умолчанию выбраны реле с рабочим напряжением обмотки 5В) Для нормальной работы реле в широком диапазоне питающих напряжений потребовалось ввести в устройство возможность измерения текущего значения величины питающего напряжения. Измерения так же необходимы для обнаружения уровня критического снижения напряжения, при котором происходит аварийное сохранение данных счетчиков величин и текущих значений делителей для последующего восстановления значений. Для снижения потребляемого тока, при критическом значении питающего напряжения, алгоритмом так же предусмотрено, выключение всех выходов, далее микроконтроллер, сохранив данные счетчиков, продолжает следить за уровнем питающего напряжения. При восстановлении питания работа устройства восстанавливается. Уровень критического напряжения при котором происходит аварийное сохранение, определен менее 7В Уровни включения устройства в работу 7.9В и более. Коль скоро устройство измеряет напряжение питания, решено, что его значение можно передавать по запросу центральному устройству управления. Значения возможных измеряемых величин от 7В до 25.5В с шагом 0.1В.  По протоколу ModBus.

Алгоритм работы реле

Реле для управления приводом (приводами) водоснабжения приводится в требуемое состояние «открыто», «закрыто» кнопкой «Приборка/Тест» при обнаружении протечки на любом из входов в автоматическом режиме, устройство переведет реле в положение вентилей «зарыто»

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

Реле привода водопровода горячего водоснабжения алгоритм работы в режиме автономного терморегулятора - такой же как и первое реле, в режиме работы терморегулятора для управления вентилем бойлера - при обнаружении протечки закрывает привод как и первое и второе реле, в автоматическом режиме работает в противофазе к приводу бойлера. (для перекрывания водопровода ГВС во время подключения к системе бойлера)

В WaterUnit терморегулятор может работать в режимах управления "нагреватель" или "охладитель", определяется это установкой значений уставок Твкл, Твыкл. Если Твкл. Меньше Твыкл. работает как нагреватель, наоборот охладитель. Если установить одинаковые значения, выход будет работать как управление нагревателем с гистерезисом 1 градус т.е. Твыкл.= Твкл.+1.

Выход пищалки, сигнализирует прерывистым сигналом с периодом 0.5 сек. об обнаружении протечки, или с периодом 0.25 сек. об аварии датчика температуры (КЗ или обрыв)

По команде с кнопки ручного управления приводами водоснабжения «Приборка/Тест», открываются или закрываются вентили систем водоснабжения, и на время «ручного режима» устройство перестает реагировать на датчики протечки воды.

Кнопка “Бойлер” предназначена для ручного переключения водопровода горячего водоснабжения с централизованного водоснабжения на местное снабжение горячей водой с водогрейного бойлера. Если по каким-то причинам автоматически выбранный режим ГВС не устраивает пользователя, используется эта кнопка, которой вручную устанавливается требуемый режим работы водоснабжением. На время «ручного режима» устройство не будет реагировать на значение температуры в водопроводе горячего водоснабжения. (Выше сказанное актуально только для режима работы терморегулятора "управление бойлером")

«Ручной режим»  действует в течении N мин. после последнего нажатия на кнопки. (По умолчанию N=15 мин. Значение хранится в ячейке EEPROM c адресом 08h и может быть установлено от 01h до FFh мин., с центрального устройства управления.) Далее режим установится в соответствии с алгоритмом автоматической работы. Если есть протечка, вентиля переведутся в закрытое состояние (если были открыты, конечно) а бойлер перейдет в режим в соответствии с уставками температуры или останется неизменным, если значение температуры центрального ГВС будет находиться внутри петли гистерезиса уставок температуры.

Центральному устройству доступна информация о текущем состоянии входов, выходов WaterUnit, возможно удаленное управление выходами, режимами работы устройства, настройка и снятия показаний счетчиков, значений текущей температуры и питающего напряжения. О всех параметрах устройство сообщает (по запросу) центральному модулю по сети RS485 протоколом ModBus RTU.

Следует отметить, что для защиты от случайной записи значений счетчиков и коэффициентов деления, введена команда ввода пароля (значение может быть установлено от 00h до FFh, по умолчанию пароль 0) После его ввода становится возможным ввод значений счетчиков величины и коэффициентов деления. так же становится возможным смена пароля. После смены коэффициентов деления текущие загруженные значения коэффициентов сбрасываются и загружаются новые. После ввода нового пароля и после выключения питания устройства смена параметров счетчика снова становится не доступной, до следующего ввода правильного пароля.

Так же стоит добавить, что удаленное управление выходами, возможно различными вариантами. Есть команды, (см. таблицу команд) по которым удаленно имитируется нажатие кнопок “Бойлер” или «Приборка/Тест» с соответствующим переключением выходов и блокировкой автоматики на N минут. Есть возможность управления выходами реле и пищалки напрямую, но необходимо помнить что для того что бы управление происходило по удаленным командам и не сбивалось работой автоматики, следует соответствующей командой отключить управление выхода от автоматического управления.

Перечень команд ModBus RTU, понимаемых устройством, сведен в таблицу.

Все линии входов устройства и цепь питания, снабжены схемами защиты от повышенного и обратного напряжения и фильтрами высокочастотных помех. Фильтры не установлены только в цепях входов высокоскоростных счетчиков импульсов. Поскольку скорости счетчиков вполне достаточно, что бы сосчитать импульсы дребезга механических контактов датчиков расхода воды, в счетчики добавлен управляемый программный фильтр коротких импульсов. Постоянная времени фильтра может быть выбрана от 100 мкс. до 25.6 мс. Чем больше значение постоянной времени фильтра тем ниже максимальная скорость счета. Теоретически получаем от 5 кГц до 20 Гц.

В устройстве имеются четыре светодиода. Светодиоды LED1 «синий» и LED3 «красный» включены когда соответствующие реле К1 и К3 выключены, индицируя, что вентили водоснабжения открыты. Для снижения потребляемой энергии устройством (учитывая, что водопроводы дольше открыты, чем закрыты) принято за открытое положение вентилей, выключенное состояние реле. Светодиод LED2 «желтый» индицирует состояния терморегулятора (Бойлера). Светодиод включен когда включено реле терморегулятора (Бойлера) К2. Вывод питания светодиода выведен на отдельную клемму для подключения внешних светодиодов (встроенных в выносную кнопку(и) «Бойлер»). Светодиод LED4 «зеленый» индикатор рабочего состояния WaterUnit. Он светится непрерывно, пока работает устройство. Светодиод мигает в противофазе с пищалкой индицируя состояние аварии, даже если звуковой сигнал удаленно отключен. Еще два светодиода сигнализируют состояние линий RX, TX последовательного интерфейса.

Конструкция печатной платы устройства WaterUnit разработана в онлайн системе проектирования EasyEDA. Плата проектировалась для размещения устройства

 в корпуc AD3-88 (128x90x25).

Ссылка на проект печатной платы



Интеграция WaterUnit в систему домашней автоматизации 

Для того что бы интегрировать WaterUnit в систему, нам понадобится прописать в конфигурационном файле configuration.yaml Хаб сети ModBus. Для управления вентилями ГВС, ХВС и бойлера пропишем переключатели, а для контроля температуры ГВС, значений счетчиков расхода воды, напряжения резервного питания и состояния датчиков протечек, пропишем несколько сенсоров.

modbus:
  name: hub1
  type: serial
  method: rtu
  port: /dev/ttyAMA0
  baudrate: 9600
  stopbits: 1
  bytesize: 8
  parity: N
  timeout: 1

switch:
  - platform: modbus
    scan_interval: 1
    coils:
    - name: Краны водопровода
      hub: hub1
      slave: 32
      coil: 4
    - name: Kран Бойлера
      hub: hub1
      slave: 32
      coil: 5

sensor:
# Waterunit
# Температура горячей воды
  - platform: modbus
    scan_interval: 30
    registers:
    - name: Температура ГВС
      hub: hub1
      slave: 32
      register: 4
      register_type: holding
      unit_of_measurement: °C
      count: 1
      scale: 0.003891
      offset: 0
      precision: 1
      data_type: int
# Напряжение резервного питания
    - name: U Резервного питания
      hub: hub1
      slave: 32
      register: 3
      register_type: holding
      unit_of_measurement: В
      count: 1
      scale: 0.1
      offset: 0
      precision: 1
# Счетчики
    - name: Счетчик ГВ
      hub: hub1
      slave: 32
      register: 6
      register_type: holding
      unit_of_measurement: Куб.М
      count: 1
      scale: 0.01
      offset: 0
      precision: 2

    - name: Счетчик ХВ
      hub: hub1
      slave: 32
      register: 5
      register_type: holding
      unit_of_measurement: Куб.М
      count: 1
      scale: 0.01
      offset: 0
      precision: 2
      
  - platform: modbus
    scan_interval: 1
# Для протечки читаем регистр для распарсивания
    - name: Input1
      hub: hub1
      slave: 32
      register_type: input
      register: 0 
      count: 1
      

Информацию с WaterUnit я пока у себя оформил вот так. Для датчиков протечки написал отдельно автоматизацию, которая в случае обнаружения протечки формирует уведомление. Потом планирую прикрутить оповещение в Телеграм. Как основной уровень оповещения, у меня физически сигнал от пищалки подается на один из шлейфов сигнализации, которая формирует СМС сообщение мне и в управляющую компанию.

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

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

Это уже коробочка со всеми проводами и даже под напряжением

А так смонтированы счетчики и вентили с электроприводами. Счетчики выдают один импульс на 10 литров потраченной воды

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

Пока у меня сообщения на веб страничку приходит  обычным уведомлением 

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

На фото изображен журнал событий Андроид приложения которое принимает эти СМС.


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

  1. Дмитрий Батюшин (ReD)

    не хватает фотоотчета к каждой статьи из этого цикла. 

  2. Александр Вайдуров (AlexAW)

    А фотоотчет куда прилепить? В коментарий? Ща порою старые фотки сниму свежие.

    • Олег Челбаев (sprut)
      Олег Челбаев (sprut) 22 дня назад

      Лучше статью дополнить, попроси модераторов вернуть на дооформление, из комментов не очень читается

  3. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 21 день назад
    Комментарий был удален
  4. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 21 день назад
    Комментарий был удален
  5. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 21 день назад
    Комментарий был удален
  6. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 21 день назад
    Комментарий был удален
  7. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 21 день назад
    Комментарий был удален
  8. Александр Вайдуров (AlexAW)
    Александр Вайдуров (AlexAW) отредактировано 21 день назад
    Комментарий был удален
  9. (meta11ist87)
    (meta11ist87) 22 дня назад

    Возможно ли приобрести какое-либо устройство из ваших прошлых устройств? Заказывать платы и гору рассыпухи, паять, не выгодно по времени

    • Александр Вайдуров (AlexAW)

      Вообще я не занимаюсь производством девайсов на продажу. Собираю Себе. Поскольку печатные платы китайцы по паре не делают (минимум 6 или 10 за те же деньги) есть несколько, печатных плат релейных блоков, и устройств контроля протечек, для самостоятельной сборки.

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

К списку статей

Скидки для сообщества

Wiren Board

+7 495 150-66-19
Промокод:
SPRUTHUB
Размер скидки:
10%
Не работает на блоки питания, антенны и т.п, не работает на демо-чемодан.

Разумный дом

+7 487 223-51-50
Промокод:
71
Размер скидки:
20%
Указывать в письме или комментарии к заказу

Gidrolock / Гидроресурс

+7 495 120-50-02
Промокод:
GIDROSPRUT
Размер скидки:
10%

Neptun | Система Нептун

+7 926 701-58-58
Промокод:
Sprut
Размер скидки:
25%

УЮТНЫЙ ДОМ

+7 495 797-21-74
Промокод:
SPRUT
Размер скидки:
5%

Похожие статьи

4 сент. 2018 г.
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
2 нояб. 2018 г.
Кнопка звонка с уведомлениями в HomeKit
15 окт. 2018 г.
Прошивка для Sonoff c нативным HomeKit
15 нояб. 2018 г.
Способы автоматизации механических ворот
27 окт. 2018 г.
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
1 окт. 2018 г.
Нативный HomeKit на ESP8266
15 июн. 2018 г.
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
27 авг. 2018 г.
Интегрируем ХА в HomeKit
2 окт. 2018 г.
Установка SDK для компиляции прошивок под HomeKit
24 авг. 2018 г.
Пошаговая установка HomeAssistant