Контроллер ввода/вывода для умного дома на основе ATmega328

Для подключения различных датчиков транзисторным, аналоговым или релейным выходом потребовался контроллер для того чтобы показания с этих датчиков завести на сервер умного дома. Для этой цели в принципе подойдет любой ПЛК  -Программи́руемый логи́ческий контро́ллер (от англ. programmable logic controller, сокр. PLC; более точный перевод на русский — контроллер с программируемой логикой), но их не бывает с протоколом MQTT, возможно плохо искал, но в ценовом диапазоне 5 000 руб. я не нашел.

Я изготовил контроллер самостоятельно взяв за основу всем известный микроконтроллер от ATMEL, ATmega328, а-ля Arduino. Данного микроконтроллера вполне достаточно для такого контроллера, ведь задача контроллера это просто передать показания его входов на сервер умного дома. который и будет принимать сценарные и логические решения по управлению оборудованием умного дома основываясь на показаниях датчиков, иными словами вся логика умного дома находится на севере.

Для связи с внешним миром используется протокол MQTT, ethernet контроллер используется от фирмы WizNet на чипе W5500.

Пример кода для контроллера на моей странице гитхаб.

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

Схема контроллера
Схема контроллера

Имеется 4 аналоговых входа  0…10 вольт, два из которых могут быть использованы как входы для токовой петли 4…20 мА. Входы имеют защиту от перенапряжения с помощью супрессоров на 12 вольт.

Два цифровых входа/выхода,  конфигурируется в коде. Есть возможность подключить внешние подтягивающие резисторы (10 кОм) полярность которых выбирается перемычками на плате для каждого порта отдельно. Данные порты могут использоваться, например для подключения цифровых датчиков температуры ds18b20, dht22.

Отдельно выведен UART (RX, TX), который может использоваться как порты ввода/вывода так и для программирования контроллера при загруженном бутлоадере в микроконтроллер.

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

  • Два релейных выхода с НЗ (нормально замкнутой) и НО (нормально открытой) группой контактов с нагрузкой до 10 ампер.
  • Два выхода со слаботочных твердотельных (полупроводниковых) реле CPC1018N или аналогичных.
  • Два MOSFET выхода на транзисторах IRL520, могут использоваться как ШИМ выход для подключения например небольшой светодиодной ленты. Транзисторы установлены без радиаторов охлаждения по-этому не следует злоупотреблять нагрузкой что бы не допустить перегрева и выхода их из строя.

В верхней части контроллера есть стабилизированный выход 12 вольт с максимальным током нагрузки 3 Ампера. Выход можно использовать для питания датчиков.

Распиновка контроллера
Распиновка контроллера

Таблица опций конфигурируемых перемычками.

Группа Описание Положение перемычки Значения опций
1 Выбор полярности дискретных входов

1-2 — Подтяжка входа к минусу (для активации входа необходимо подавать + )

2-3 — Подтяжка входа к плюсу (для активации входа необходимо подавать — )

2 Выбор источика питания для дискретных входов от 1 до 8 1-2 — Внешний источник питания

2-3 — Внутренний источник питания 12 В

3 Выбор источика питания для дискретных входов от 9 до 16 1-2 — Внутренний источник питания 12 В

2-3 — Зависит от выбора источника для входов 1-8

4 Выбор напряжения для катушки реле 5 или 12 вольт. 1-2 — Реле с катушкой на 12 Вольт

2-3 — Реле с катушкой на  5 Вольт

5 Выбор подтяжки цифрового входа/выхода 1-2 — Подтяжка к +5 В

2-3 — Подтяжка к земле

Для программирования микроконтроллера, с помощью программатора, имеется разъем для внутрисхемного программирования.
Распиновка разьема для програмирования микроконтроллера
Распиновка разьема для програмирования микроконтроллера

Подключение индуктивного датчика SN04 с транзисторным выходом NPN к контроллеру.

Перемычку выбора дискретного порта необходимо установить в положение 2-3 — Подтяжка входа к плюсу (для активации входа необходимо подавать минус (см. таблицу).

 

 

Отправить ответ

Оставьте первый комментарий!

avatar
wpDiscuz