Электромеханическое реле 5 В 10 А и релейные модули для Arduino

Как устроено управление реле с вывода микроконтроллера, чем удобны готовые релейные модули и как подключить их к Arduino на примере автомата с монетоприёмником.
Зачем нужно реле и как оно работает
Электромагнитное реле — это выключатель, который позволяет микроконтроллеру управлять электроприборами. Когда на катушку подаётся напряжение, возникающее в ней поле притягивает металлический якорь, и тот замыкает контакты нагрузки. Для Arduino подходят реле с управляющим напряжением 5 В; они способны коммутировать до 10 А при 30 В постоянного тока или до 10 А при 250 В переменного.
Почему нельзя подключить катушку напрямую
Вывод Arduino не может отдать мощность, необходимую катушке, поэтому между ним и реле ставят транзистор, включённый по схеме с общим эмиттером и усиливающий управляющий ток. Между выводом платы и базой транзистора обязателен ограничительный резистор.

В варианте с npn-транзистором реле срабатывает при уровне HIGH на выводе и отпускает при LOW. Однако чаще встречается схема на pnp-транзисторе: в ней реле включается низким уровнем LOW.

Готовые релейные модули
На практике с Arduino используют готовые модули на 1–8 реле. Кроме транзисторной схемы управления на них установлена гальваническая развязка на оптронах, которая защищает контроллер от бросков напряжения на катушке. Каналы таких модулей включаются низким уровнем, а управляются сигналом 5 В.

| Управляющее напряжение | 5 В |
| Рабочий ток одного канала | 15–20 мА |
| Коммутируемая нагрузка | AC 250 В 10 А, DC 30 В 10 А |
| Число каналов | от 1 до 8 |
| Управление | низким уровнем (n-канальное) |
| Индикация состояния | светодиодная |
Подключение к плате Arduino
У модуля два интерфейса: один для контроллера, другой для нагрузок. У восьмиканальной платы со стороны контроллера 10 контактов: GND, VCC для +5 В и входы IN1–IN8 для управляющих сигналов. Нагрузки подключаются к 24 винтовым зажимам.
Питать модуль можно от самой платы Arduino либо от внешнего источника. Выбор определяется перемычкой Vcc — JD-Vcc. Если она установлена, питание берётся с Arduino. Если нужна полная оптическая изоляция, перемычку снимают, а внешний блок питания подключают к выводам JD-Vcc и Gnd модуля.

Пример: пылесос с монетоприёмником
В качестве примера рассмотрен пылесос самообслуживания, который включается на оплаченное время. Для проекта нужны Arduino Uno, макетная плата, релейный модуль, импульсный монетоприёмник CH-926, блок питания 12 В, резистор 4,7 кОм и провода.
Получив монету, монетоприёмник выдаёт на выход OUT серию импульсов; их количество задаётся при его настройке. Выход подключён к выводу 3 Arduino, и импульсы подсчитываются по прерыванию 1 по спаду сигнала (FALLING). Реле управляется с вывода 7, причём включённому состоянию соответствует 0, выключенному — 1, поскольку модуль срабатывает от низкого уровня.
Когда приём монеты завершён (на него отводится до 1200 мс), программа прибавляет к времени работы число импульсов, умноженное на заданную константу — стоимость одного импульса, в примере она равна 30, — и включает реле. Далее время отсчитывается в основном цикле; когда оно истекает, реле отключается и счётчики обнуляются. Ход работы выводится в последовательный порт на скорости 9600.
Чтобы повторные срабатывания не искажали подсчёт, обработчик на время обработки импульса отключает прерывание и после короткой паузы подключает его снова. Момент прихода первого импульса запоминается — от него и отсчитывается время приёма монеты. После выключения реле программа выдерживает паузу в три секунды, прежде чем принять следующую оплату.
Типичные неполадки
- Модуль не работает: проверить, подано ли питание и стоит ли перемычка Vcc — JD-Vcc.
- Реле не переключаются: проверить питание и соединение входов IN1–IN8 с платой Arduino.
- Скетч сбивается при включении или отключении нагрузки: это помехи, модуль следует запитать от внешнего источника.