Всем привет!
Недавно мы писали о том (раз, и два), что выпустили новую версию контроллера для автоматизации — Wiren Board 5. Сегодня мы подробно расскажем, пожалуй, о самом главном в контроллере — его модулях расширения.
Нашей первой идеей было сделать достаточно универсальный контроллер для домашней и коммерческой автоматизации — с разными проводными и беспроводными интерфейсами, RS-485, входами для подключения кнопок, реле и т. д. Преимуществом такого подхода является очень высокое отношение функциональность/цена: за небольшие деньги пользователь получает кучу интерфейсов.
Опыт применений первых версий контроллеров показал, что обычно используется только несколько интерфейсов.
Причем если используются проводные интерфейсы, то их быстро начинает не хватать: например, если счетчики и периферийные устройства подключаются по RS-485 и имеют разные протоколы, то часто они не совместимы и их надо подключать на разные порты. Если подключаются кнопки, счетчики и датчики с выходами “сухой контакт”, то соответствующих входов нужно очень много и их не хватает, и т. д.
Часто заказчики просят какие-то очень специфические функции. Конечно, можно “перерисовать” контроллер, чтобы реализовать нужную функциональность, но запуск новой ревизии оборудования, пусть даже с небольшими изменениями — это большое дело, работы на 2-3 месяцев:
Из-за этого очень хотелось бы иметь контроллер в виде:
Такая схема имеет следующие плюсы:
В результате долгих раздумий родилась модульная конструкция WB5.
Первый тип модулей — это напаиваемые на плату контроллера микросборки.
Про другие типы расскажем подробнее.
Эти модули устанавливаются вторым этажом внутрь корпуса на DIN-рейку:
Это маленькие платки, ставятся вертикально в контроллер. В контроллере Wiren Board 5 для них есть два слота, на каждый слот по три клеммника. На гребенки выведены питание, интерфейсы UART, SPI, I2C, GPIO. При сборке платы прижимаются корпусом сверху, так что выпасть от вибрации не смогут.
Уже разработаны:
-RS-232.
-CAN (Изолированный)
-RS-485 (Изолированный)
-АЦП — (скоро будет) входы напряжения, входы 0-20мА, датчики PT100 и PT1000
-ЦАП — выходы 0-10В
-3 входа "сухой контакт"
-GPS/Glonass
-Дополнительный 1-Wire
-Карта microSD
-Реле SPDT 6А
В основном они простые, про схемотехнику рассказывать особо нечего, поэтому идем дальше.
А вот про этот тип стоит рассказать подробней.
Часто возникают задачи, когда требуется большое количество каналов ввода-вывода — подключение импульсных счетчиков, управление контакторами и т. д. В этом случае, подключаем внешние, боковые модули, которые стыкуются к контроллеру последовательно до 8 штук.
Для модуля ввода-вывода нужны дополнительные GPIO. Проще всего это сделать с помощью так называемых GPIO расширителей по I2C. У нас используются расширители MCP23008 и MCP23016. У них есть три ножки для выставления адреса, таким образом возможно иметь до 8 устройств на шине. Адреса раздаются так — 000 100 010 001 — последовательно по модулям.
На модулях входов инвертируются адреса, и они получают адреса 111 011 101 110. Это позволяет подключать до 8 штук (4+4) и в перспективе автоматически определять их тип — вход это или выход.
Слева направо модули: входов/выходов TTL, “сухих контактов”, “High side switch”, “Входы 220V”, релейный блок.
Подробней о каждом:
8 Реле на 10А@230В, с защитой от искрения контактов на варисторах.
Чтобы уменьшить потребление и нагрев, после включения реле можно снизить ток на управляющей катушке в 2 раза. Простейший способ — использовать схему как на рисунке 1 — Включать реле двумя транзисторами, один с резистором. Подаем сигнал — открываются оба транзистора — течет номинальный ток, через время R1C1 транзистор Q1 закрывается — ток течет через R2. Уменьшив ток в 2 раза, уменьшаем потребление в 2 раза.
Более разумный способ управления реле — использовать ШИМ. Тогда, снизив ток в 2 раза, уменьшим потребление в 4 раза. Хорошо, когда есть микроконтроллер: у него много каналов шима, можно управлять им напрямую транзистором. Но что делать, если ШИМа нет? Надо его сделать. Возьмем 555-ый таймер, точнее его реинкарнацию MIC1557, и пусть он нам генерирует ШИМ со скважностью 50%. На диодах собираем логический элемент “ИЛИ”. Так при включении любого из реле таймер отключается и на реле поступает полные 5В.
Модуль для определения наличия напряжения в сети. 8 каналов.
Самое простое решение для мониторинга 220 V — оптрон с резистором. Проблема такого простого решения в том, что у оптронов большой разброс CTR (коэффициент передачи по току) и для надежной работы требуется хотя бы 1 ма тока, и срабатывать вход должен от 50В АС — в итоге на резисторе выделяется много тепла. А т. к. входов 8 — то на плате будет очень жарко.
Есть разные способы уменьшения нагрева. Например, можно использовать оптрон с транзисторным Дарлингтоновским выходом (большой CTR), а вместо резистора использовать конденсатор. Конденсатор мы ставить не стали, а использовали следующую хитрость: если посмотреть на характеристику оптронов “CTR от входного тока”, то видно, что кривая имеет пик при токе 1-2 ма. Поэтому если подавать ток короткими импульсами по 1 ма, можно обеспечить высокий CTR при низком среднем входном токе. Динистор и конденсатор формируют нам эти импульсы.
Пояснения по схеме: R4-R6 заряжают С2, при достижении ~35В срабатывает динистор, при этом R3 задает ток 1-2 ма через оптрон. D1 защищает оптрон от обратной полярности. R1 C1 усредняют импульсы.
Для подключения кнопок, импульсных счетчиков и т. д.
Вход срабатывает при замыкании на землю.
Есть групповая гальваническая изоляция. Защита от подачи напряжения до 30 В.
Это GPIO с защитой от перенапряжений на полифьюзе и защитном диоде. Уровни — 5V TTL.
Предназначен для управления низковольтной нагрузкой (на выход подает напряжение 12- 45В, ток до 0,5А).
Тут мы решили отойти от любимого принципа изобретать свой велосипед и использовали готовую микросхему типа интеллектуальный ключ BTS4880R. В микросхеме есть встроенная защита от перенапряжений, перегрева, короткого замыкания и т. д.
В этой статье мы рассказали про аппаратные решения, которые используются в модулях расширения и ввода-вывода для Wiren Board. В следующей статье расскажем про их применение, зачем они нужны и как в целом пользоваться контроллером.
Наша компания расширяется, и мы ищем в команду ещё одного системного программиста под Linux — разрабатывать ПО для наших устройств. Задачи интересные, условия гибкие, код пишем сразу на гитхаб. Подробности в описании вакансии.
К сожалению, не доступен сервер mySQL