Представляю вашему вниманию проект релейного блока для систем домашней автоматизации. Его основное предназначение – местное и (или) дистанционное управление требуемыми нагрузками. Местное управление четырьмя выходами осуществляется с четырех гальванически изолированных от внутреннего микроконтроллера входов. Дистанционное управление происходит по сети RS485 широко распространенным протоколом обмена ModBus RTU. Соответственно этот релейный блок будет легко интегрироваться в любой системе, которая поддерживает этот протокол. Особо он будет полезен для автоматизации домашнего освещения.
Релейный блок проектировался исходя из опыта эксплуатации «умного света» в квартире собранного на устройствах управления с сетевым протоколом Х10 передаваемым по питающим сетевым проводам. Отмечу – практически все меня устраивало! Устройства автономны, при отсутствии центрального блока выполняют заложенный в них алгоритм управления, самостоятельно. А с помощью централизованной системы управления, возможно, организовать различные сценарии освещения, удаленное управление освещением, имитацию присутствия и прочие вкусности типа «включения кофеварки по утрам» Подробно можете почитать про это в моем личном блоге тут. Но протокол Х10 имеет два существенных недостатка:
1. Команда с повтором передается довольно медленно, в течении одной секунды.
2. При наличии в сети высокочастотных или импульсных помех среда передачи становится недоступной. Устройства попросту глохнут.
Если с первым недостатком еще можно мириться, то со вторым в принципе не возможно!
Сначала я вдруг обнаружил, что у меня не всегда срабатывает выключатель в спальне, когда соседка выше этажом пылесосит свою квартиру. Эту беду я победил легко, установив специальный фильтр на вводе электросети в квартиру. Потом вдруг после включения света в кабинете перестали работать все выключатели в квартире. Причиной тому было высыхания электролитического конденсатора в сетевом выпрямителе одной из лампочек - экономок в люстре кабинета. И колебания тока внутреннего генератора преобразователя лампочки попадало в электрическую сеть. А поскольку в современном жилище большинство бытовых приборов имеют высокочастотные блоки питания, такая борьба за чистоту сети продолжается с завидной периодичностью.
Есть альтернатива устройства с беспроводным обменом или по отдельным проводам. Например, устройства KNXили HDL, но цены на них, на мой взгляд неприемлемые. Решил поискать что то подешевле Есть на АлиЭкспресс, устройства ввода вывода работающие по сети RS485 ModBus и даже цены приемлемые. Все хорошо, на первый взгляд. Принцип работы сети ModBus основан на том, что в сети одно головное устройство опрашивает все остальные. Получается для того что бы включить какой то выход по команде с какого то входа, это головное устройство должно спросить состояние входа и в зависимости от результата включить или выключить соответствующий выход. Крутит устройство управления домашней автоматикой опрос выключателей и датчиков, и рулит соответствующими выходами и реле. Но вдруг оно раз и остановилось? Ну мало ли сложное ведь, поломалось или просто повисло…. И все сидим без тепла и света. Клацаем выключателями и никакой реакции. Неее, так не пойдет. Мы уже это проходили.
Вывод устройства автоматизации в рамках выполнения своей задачи должны быть автономны. Выключатель управлять светом по заданному алгоритму, терморегулятор поддерживать температуру, регулятор уровня поддерживать уровень воды в требуемых интервалах, и т.д. и т.п. И дополнительно иметь возможности получать настройки и команды управления с внешней централизованной системы. Настроил местно или удаленно, и оно само по себе работает. Поломалось центральное управление, основной функционал не нарушился. Без веб интерфейса жили и еще поживем, пока починиться. Так вернее. Само устройство тоже может выйти из строя, но это локальная неисправность типа нет света в одной комнате, а не во всей квартире ничего не работает.
Именно эта философия и была заложена в основу проектирования алгоритма работы представляемого релейного блока
В текущей версии устройства реализовано:
Управление четырех выходов по принципу N вход управляет N выходом
Режимы работы входов могут изменяться. Вход может работать как Кнопка, как выключатель, как универсальный выключатель или вход вообще отключен от выхода. Универсальный выключатель работает как кнопка при кратковременном (менее 1 сек.) включении, и как выключатель, если включение было, более 1 сек.
Имеется еще пятый вход, который работает как кнопка "выключить/включить все". Короткое "нажатие" на эту кнопку приводит к выключению всех выходов, а если нажать и подержать более 1 сек. произойдет включение всех выходов. Без этого входа можно было бы, и обойтись, т.к. функцию включить выключить все, удобно реализовывать как некий сценарий освещения в центральном блоке управления. Но мой опыт эксплуатации «умного света» в квартире показывает, что сценарий выключить все является единственным востребованным всеми моими домочадцами. Действительно удобно при выходе из дома нажать на клавишу и быть уверенным, что весь свет и переноска (в которую обычно включается «утренние бытовые приборы» утюг плойка фен) выключены. Поэтому я добавил этот вход, (благо портов хватает) что бы обеспечить самостоятельное исполнение этого сценария устройством. Если устройств несколько этот вход у них объединяется. Я в своей квартире релейные блоки размещаю в распределительных коробках и в силовом электрощите. Еще при строительстве я раскидал восьми проводную витую пару UTP-5 между электрическим щитом и распределительными коробками параллельно с электрическими проводами. Пара питание пара RS485 остальное свободно так, что есть чем соединиться.
Так же в этой версии программы микроконтроллера устройства реализована возможность установить задержку включения и (или) выключения выхода (это может быть полезным например для управления вентилятором в ванной, или освещением от датчика движения). Задержка может быть установлена:
от 1 сек. до 256 сек. с шагом 1 сек.,
от 10 до 2560 сек. с шагом 10 сек. с точностью до минус один шаг.
Еще реализована возможность селективного выбора управления входами выходов. Для каждого входа можно отдельно настроить какие из 4 входов он будет включать какие выключать. (этот функционал может пригодится например при создании водоподъёмной установки где по двум датчикам уровня воды будет управляется одно реле включающее насос)
Выбор варианта задержки, и настроек селекции входов определяется установкой соответствующего бита в ячейки флагов в соответствующих регистрах управления(см таблицу Exel в архиве материалов к статье)
Настройка некоторых основных режимов может производиться с помощью кнопки программирования.
Так например для смены режимов необходимо установить требуемое сочетание входов и выходов (СМ таблицу) нажать и подержать кнопку программирования от 3 до 5 сек.Для удобства программирования при нажатии на кнопку программирования более 2 сек. временно все входы начинают работать как кнопки.
Если подержать кнопку программирования более 10 сек., в память устройства запишется текущее состояние выходов, которое будет устанавливаться при включении питания
Вход
Выход
Режим входа
0
0
Кнопка
0
1
Выключатель
1
0
Универсальный выключатель
1
1
Вход отключен от выхода
Для обеспечения централизованного управления реализован контроль и за состоянием входов и выходов, управление выходами и настройка режимов работы входов релейного блока по сети RS485 протоколом ModBus RTU.
Команды, которые принимает и передает блок, сведены в таблицу Exel.
Разработаны в среде EasyEDA печатные платы для размещения релейного блока в корпусе на DIN рейку шириной в два юнита. Открытый проект опубликован вот по этой ссылке. На этом же сайте можно заказать изготовление плат промышленного качества и там же заказать детали.
К проекту приложены файлы:
- HEX файлы для прошивки для микроконтроллера 16F628A;
- таблица Exel с описанием реализованных в устройстве команд Modbus RTU;
- дизайн проект релейного блока в Proteus;
- Краткое описание проекта
- Функциональная схема ПО релейного блока
Немного об интеграции релейных блоков в систему домашней автоматизации
Для того что бы интегрировать релейный блок(и) в систему, нам понадобится прописать в конфигурационном файле configuration.yaml Хаб сети ModBus. Для последовательного интерфейса это будет выглядеть как то так:
modbus: name: hub1 type: serial method: rtu port: /dev/ttyAMA0 baudrate: 9600 stopbits: 1 bytesize: 8 parity: N timeout: 1
После этого система выступает в качестве мастера сети ModBus.
Минимальная возможная частота опроса устройств в сети ModBus 1 секунда. По началу меня это огорчило, но когда я попробовал опросить сразу несколько релейных блоков указав у них минимальную периодичность 1 сек., выяснилось, что все эти устройства система опрашивает именно каждую секунду а время между опросами устройств где то в пределах 20 мс.
Получается, что с периодичностью в 1 секунду можно выполнить 30-50 ModBus запросов.
Для описания релейных блоков в качестве переключателей, из всего многообразия ModBus команд релейного блока нам понадобятся только команды битового чтения и записи состояния катушек (выходов) релейных блоков. Это в конфигурационном файле описывается примерно так:
switch: - platform: modbus scan_interval: 1 coils: - name: Кухня верхний свет hub: hub1 slave: 50 coil: 1 - name: Кухня локальный свет hub: hub1 slave: 50 coil: 3
После этого в системе появляется два переключателя switch.kukhnia_verkhnii_svet и switch.kukhnia_lokalnyi_svet, которые вы можете использовать на своих страницах управления.
Вот небольшое видео как работают релейные блоки в системе управления освещением в квартире, и как сказывается на задержках отображения периодичность опроса в одну секунду.
Небольшой фото отчет как это я использую эти релейные блоки у себя в квартире.
У меня в квартире релейные блоки задействованы в основном для управления освещением. Их установка производилась взамен используемых ранее релейных блоков с протоколом Х10 от компании "Разумный дом". Переключение делалось в рабочей системе, поэтому для того что бы не оставлять домочадцев без света надолго, я предварительные настройки (задержки, реакции выходов на "включить выключить все", состояние по умолчанию при включении питания) производил на рабочем столе, программой ModBus Pool. Всего у меня установлено шесть релейных блоков на все светильники в квартире. Тот что на фото слева, предназначен для установки в распредкоробку. Да, да, еще на стадии строительства я установил большие распредкоробки и кроме электрических проводов завел туда и витую пару. На правой картинке, если присмотреться, видно паразитную подсветку светодиодов блока управления, несмотря на то что дополнительно замотал черной изолентой.
Четыре релейных блока установлены в распредщите, Два диммерных Управляют освещением в коридоре и Гостинной. Третий релейник с симмисторным выходом, управляет освешением в кладовке и ванной, им же, каналами с установленной задержкой выключения управляется вентилятор в ванной и свет над входной дверью, запускаемый датчиком движения. Еще один релейный блок с выходом на обычных реле управляет переключением "день/ночь", сиреной, и парой шлейфов сигнализации (это пока так на пробу для активации СМС уведомлений).
сразу включается. Поэтому задействовал встроенную возможность "смеситель входов" и с одного входа, настроенного в режиме кнопка, управляю сразу тремя реле. На фото если присмотрется в правом нижнем углу виден микроконцевик, к поводку которого привязана веревочка. Дернешь за веревочку свет и включится.
Вот так пока выглядит веб страничка управления освещением.
Как только открыл статью показалось все сложно и непонятно, дочитавши до конца - многое разъяснилось
Спасибо, очень познавательно. А корпус каким образом делаете?
Брал https://www.aliexpress.com/item/Free-shipping-Small-Plastic-din-rail-enclosure/556051341.html">вот такие корпуса на алиэкспресс. Выпиливал под разъемы платы управления, фиксировал верхнюю плату парой капель термоклея. Можно использовать корпуса чуть по дороже D2MG там возни немного поменьше.
Про диммеры распишите, очень интересно)
и про ргб тоже почитал бы. Спасибо за работу, палец вверх прожал, в избранное добавил
Спасибо. Как будет свободное время напишу про диммеры.
Краткий фотоотчет
Что бы после монтажа система сразу заработала как мне нужно, я перед установкой релейных блоков в распред. щит производил предварительную настройку их с Modbus Poll-e. Настраивал задержки где нужно реакцию на "включить выключить все"... Всего у меня на весь свет в квартире установлено шесть релейных блоков. Тот что слева, без корпуса, подготовлен для установки в распредкоробку. Да да! Еще во время строительства я установил большие распредкоробки и затащил туда, кроме электричества еще и витуху.
Лень было крышку снимать. Если присмотреться то видно как светодиоды немного подсвечивают. Пришлось Черной изолентой дополнительно блок управления обматывать.
Четыре штуки стоят в распред. щите. Два диммертых блока один с симмисторным выходом и один (внизу) с релейным. Диммеры увы пока юзаю как обычный релейник в силу того что лампы накаливания ставить не хочу, а диммируемые светодиодки диммируются фигово. А те что не фигово стоят офигенных денег. Релейный блок с релейным выходом задействован в основном под сигналку, и для переключения "день,ночь" Что бы ночью в коридоре свет по датчику движения, подсвечивала только светодиодная лента в потолок. (Кстати справа от релейного блока в нижнем ряду стоит мой "сервер автоматики умного дома" собранный на малинке зеро)
Так выглядит в текущем полу чистовом варианте
А это 6 релейный блок в нем задействовано три реле для управления освещением кухонного гарнитура. Свет в потолок, Верхний свет и локальный свет. Все три реле включаются с одного входа настроенного в режиме кнопка. Там если присмотреться стоит концевой микро выключатель, а к его поводку привязана веревочка. Дернешь за веревочку свет и включится! ))).
Хотел трех клавишный радио выключатель пристроить, для отдельного управления светильниками, жена отказалась.
-Чего я буду по три раза тыкать пусть все включается, мне так удобней. Слово женщины закон! А мне душу греет, что я удаленно могу по отдельности включать.
Вот так пока удаленно рулится.