- Простой вариант скетча управления реле
- Схема подключения
- Принципиальная схема
- Алгоритмы
- Отработка нажатия
- Дребезг контактов
- “Импульсное” удержание
- Другие возможности кнопки
- Модуль реле HL-52S для Ардуино
- Аналоговые клавиатуры
- Включение-выключение с помощью кнопки
- Обработка короткого нажатия на кнопку
- Комплектующие
- Скетч управления реле с датчиком движения
- Схема подключения реле
- Инструкция по подключению кнопки
- Без резистора
- С использованием подтягивающего резистора
- В режиме input-pullup
- Как использовать релейный модуль с устройствами высокого напряжения
- Видео
- Как переключать режимы кнопкой
- Схема подключения модуля реле SRD-05VDC-SL-C
- Скетч управления реле с помощью Arduino
Простой вариант скетча управления реле
Схема подключения
В этом примере используется стандартный релейный модуль Arduino, на котором уже установлены все элементы, необходимые для подключения. Схема подключения очень проста: релейный модуль подключается к выводу 5 платы Arduino. При этом для простоты мы можем даже не подключать реальную нагрузку: реле будет щелкать каждый раз при изменении состояния, мы услышим эти щелчки и поймем, что скетч работает.
Принципиальная схема
Чтобы лучше понять, как работает реле Arduino, давайте взглянем на принципиальную схему модуля реле в этой настройке. Итак, ниже мы видим, что 5 вольт нашего микроконтроллера, подключенные к выводу Vcc для активации реле через оптрон, также подключены к выводу JDVcc, который питает электромагнит реле. Итак, в этом случае мы не получили развязки между реле и микроконтроллером.
Чтобы изолировать микроконтроллер от реле, вам нужно снять перемычку и подключить отдельный источник питания для электромагнита к JDVcc и контакту заземления. Теперь, с этой конфигурацией, микроконтроллер не имеет физического соединения с реле, он просто использует светодиодную подсветку микросхемы оптопары для активации реле.
На этой схеме подключения следует обратить внимание еще на одну вещь. Входные контакты модуля работают в обратном порядке. Как вы можете видеть, реле активируется, когда входной контакт находится в НИЗКОМ состоянии, потому что в этом случае ток может течь от VCC к входному контакту, который имеет низкий уровень или на землю, светодиод загорится и активирует реле. Когда входной контакт ВЫСОКИЙ, ток не будет течь, поэтому светодиод не загорится, и реле не будет активировано.
Предупреждение о высоком напряжении! Прежде чем продолжить этот урок, мы предупреждаем вас, что будет использоваться высокое напряжение, которое при неправильном использовании может привести к серьезным травмам или смерти. Так что будьте очень осторожны в своих действиях! Проект ArduinoPlus.ru не несет ответственности за любые ваши действия.
Алгоритмы
Отработка нажатия
В большинстве реальных приложений работа с текущим состоянием кнопки очень неудобна, например, когда действие необходимо выполнить один раз при нажатии кнопки, например, при нажатии. Немного усложним конструкцию, добавив флаг, который будет запоминать состояние кнопки. Этот дизайн позволяет отслеживать нажатие и отпускание кнопки и реагировать на них один раз:
Дребезг контактов
Кнопка не идеальна и контакт не замыкается сразу, какое-то время «гремит». Запустив этот алгоритм, система запрашивает кнопку и условия примерно за 6 мкс, то есть кнопка запрашивается 166666 раз в секунду! Этого достаточно, чтобы сгенерировать несколько тысяч ложных срабатываний.
Устранить дребезг контактов можно как аппаратно, так и программно: аппаратно проблема решается за счет использования RC-цепи, то есть резистора (~ 1-10k) и конденсатора (~ 100nF). Похоже на то:
Программно вы можете ввести простейший таймер для нажатия, основанный на миллис (), время дребезга будет принято за 100 миллисекунд. Вот как будет выглядеть код:
Мы, конечно, рекомендуем использовать аппаратный метод, так как он не нагружает ядро лишними вычислениями. В 99,99% проектов программной защиты от отказов будет достаточно, поэтому смело используйте конструкцию millis().
“Импульсное” удержание
В устройствах с кнопочным управлением очень часто необходимо иметь возможность изменять значение либо одним щелчком по кнопке, либо «автоматически» с тем же шагом, удерживая его. Этот вариант реализован очень просто путем добавления еще одного условия к нашему предыдущему алгоритму, а именно: если кнопка была нажата, но еще не отпущена, и прошло больше времени, чем указано, условие вернет истину. В следующем примере частота «щелчков» при удерживании установлена на 500 миллисекунд (2 раза в секунду):
Непосредственно использовать этот код будет неудобно, чтобы можно было «обернуть» его в класс.
Другие возможности кнопки
Кнопка выглядит как простое устройство, дающее 0 и 1, но, соединив воображение и время, вы можете найти гораздо больше применений для обычной кнопки. В моей библиотеке GyverButton реализовано много интересных возможностей для работы с кнопкой, вот список:
- Работа с нормально закрытыми и нормально открытыми кнопками
- Работа с подключением PULL_UP и PULL_DOWN Опрос кнопки с программным обеспечением противодействия (настраиваемое время)
- Тренируйтесь нажимать, удерживать, отпускать, нажимать кнопку (+ настройка тайм-аута)
- Практикуйте одиночные, двойные и тройные жимы (выполняются отдельно)
- Обработка любого количества мер (функция возвращает количество мер)
- Функция изменения значения переменной с заданным шагом и заданным временным интервалом
- Возможность работы с «виртуальными» кнопками (все функции библиотеки используются для матричных и резистивных клавиатур)
Подробное описание библиотеки можно прочитать в заголовочном файле на странице библиотеки, там тоже много примеров.
Модуль реле HL-52S для Ардуино
В качестве примера для этого руководства по реле Arduino мы будем использовать 2-канальный релейный модуль HL-52S, который имеет 2 реле по 10 А при 250 и 125 В переменного тока и 10 А при 30 и 28 В постоянного тока. Выходной разъем высокого напряжения имеет 3 контакта, средний — общий, и, как вы можете видеть из маркировки, один из двух других контактов предназначен для нормально открытого соединения, а другой — для нормально закрытого соединения.
На одной стороне модуля у нас есть 2 набора контактов. Первый имеет 4 контакта, контакт заземления и контакт VCC для питания модуля, а также 2 входных контакта In1 и In2. Второй набор контактов имеет 3 контакта с перемычкой между JDVcc и Vcc.
Внимание! В этой конфигурации электромагнит реле питается непосредственно от платы Arduino, и если что-то пойдет не так с реле, микроконтроллер может быть поврежден.
Аналоговые клавиатуры
Аналоговые клавиатуры — довольно глубокая тема, достойная отдельного урока (у меня его пока нет). Более подробный урок доступен на сайте Codius.
Включение-выключение с помощью кнопки
Есть несколько вариантов включения и выключения:
- светодиод загорается при нажатии кнопки, гаснет при отпускании;
- светодиод загорается при нажатии, гаснет при повторном нажатии;
- светодиод загорается при длительном нажатии;
Для этих диаграмм вы можете использовать один и тот же скетч, внося только изменения в код.
Обработка короткого нажатия на кнопку
Прежде всего мы назовем контакты, к которым подключены элементы схемы, и создадим различные переменные, которыми можно будет управлять, нажимая кнопку и сохраняя состояние светодиодов. Затем в функции void Setup () мы настраиваем выводы светодиода как выходы, а кнопки как входы.
Затем для функции voidloop () напишите следующий код:
Первая строка включает и выключает зеленый светодиод, руководствуясь логической переменной Green_LED, в которой хранится его статус. Затем микроконтроллер считывает состояние кнопки: нажата или отпущена.
Далее у нас есть два условия. В первом условии код выполняется, если кнопка нажата, но не была нажата ранее. Второе условие будет выполнено, если кнопку отпустить.
Следовательно, при нажатии кнопки код первого условия будет выполнен один раз, так как переменная press_flag изменит свое значение на false только после того, как кнопка будет отпущена.
После загрузки скетча на Arduino светодиод будет включаться и выключаться при кратковременном нажатии кнопки.
Комплектующие
Компоненты, необходимые для этого руководства, перечислены ниже. Все комплектующие вы можете заказать в удобном интернет-магазине:
- Модуль реле 5V
- Плата Arduino
- Плата разработки и соединительные кабели
- Кабель, вилка, розетка
Скетч управления реле с датчиком движения
В реальных конструкциях изменение состояния реле должно происходить в ответ на какую-то реакцию окружающей среды. Например, в ответ на сигнал сработавшего датчика движения свет можно включить, замкнув цепь с помощью реле. В этом скетче мы рассмотрим этот вариант подключения.
Схема подключения реле
Следует понимать, что в реальных проектах обходятся без ардуино, просто подключив выход сигнала датчика к реле.
Инструкция по подключению кнопки
Платформы включают тактильные кнопки Arduino, состоящие из переключателя с 2 парами соединенных между собой контактов. Эта система не позволяет создавать более 1 коммутатора, но позволяет управлять 2 параллельными сегментами одновременно.
Без резистора
Перед подключением обратите внимание на разрыв контактов. По бокам квадратного датчика расположены 2 ножки, а в центре ножек создан переключатель. Для включения датчика нужно соединить 2 контактами как можно ближе друг к другу. Остальные 2 будут повторять первую пару.
С использованием подтягивающего резистора
В этой схеме датчик поднимается резистором на «плюс» и замыкает вход на «землю». Чтобы резистор правильно выполнял свою работу, необходимо добавить сопротивление 10 кОм, при таком значении он сможет притягивать контакт к «земле».
Есть 3 провода для подключения к платформе. Присоедините первую к одной из ножек, проложите резистор и заземлите. Следующий подключается ко второй ноге, к выводу Arduino с напряжением 5 вольт. Подключите последний к третьему, который не имеет контакта ни с одним из двух предыдущих, и подключите его ко второму цифровому устройству, которое будет считывать состояние кнопки.
На эскизе этой схемы нажатая кнопка обозначена как LOW, а кнопка, которая вернулась в исходное (отпущенное) положение, обозначена как HIGH.
В режиме input-pullup
Это позволяет обойтись без резистора при подключении и работе. В этом случае используется внутреннее сопротивление самой платы. Чтобы написать алгоритм, вам нужно определить контакт, к которому вы собираетесь подключить кнопку, как INPUT_PULLUP.
Существует альтернативная версия, в которой вывод OUTPUT может использоваться вместо указанной команды.
Как использовать релейный модуль с устройствами высокого напряжения
Давайте сначала взглянем на принципиальную схему. Как описано выше, мы будем использовать адаптер 5 В в качестве отдельного источника питания для электромагнита, подключенного к JDVcc и контакту заземления. Вывод Arduino 5V будет подключен к выводу Vcc модуля, а вывод 7 — к входному выводу In1 для управления реле. Теперь для «высоковольтной» части нам понадобится вилка, розетка и двухжильный кабель.
Один из двух проводов будет отрезан и подключен к общему и нормально разомкнутому контакту выходного разъема модуля. Следовательно, в этой конфигурации при активации реле мы получаем замкнутую и работающую цепь высокого напряжения.
Ниже мы коснемся того, как сделать кабель. Нам понадобится вилка, розетка и кабель. Аккуратно перерезаем кабель и перерезаем один из проводов, как показано на рисунке ниже. Подключаем их к нормально разомкнутым контактам релейного модуля. Так же подключаем концы кабеля к вилке и розетке.
Примечание! Обязательно используйте провода, отличные от желтого и зеленого, поскольку они предназначены для заземления.
Окончательный вид кабеля, готового к использованию, представлен ниже. Перед использованием убедитесь, что кабель исправен. Вы можете проверить это мультиметром или сначала проверить при низком напряжении.
Видео
Как переключать режимы кнопкой
Переключение между несколькими режимами осуществляется путем установки другого переменного режима. Его значение изменится при следующем нажатии на сенсор управления.
В некоторых ситуациях придется менять саму проводку.
Схема подключения модуля реле SRD-05VDC-SL-C
Мы будем использовать модуль с двумя идентичными реле типа SRD-05VDC-SL-C или аналогичный.
Модуль имеет 4 разъема: разъемы питания K1 и K2, разъем управления и разъем для внешнего питания (с перемычкой).
Реле типа SRD-05VDC-SL-C имеет три контакта для подключения нагрузки: два фиксированных конца и один центральный в коммутации. Это промежуточный контакт, который является своего рода «ключом», тем или иным образом переключающим цепи. На модуле есть подсказка, какой контакт реле нормально замкнут: маркировка «K1» и «K2» соединяет средний контакт с крайним левым контактом (на фото).
Подача управляющего напряжения на вход IN1 или IN2 (слаботочный управляющий разъем) заставит реле соединить центральный контакт контактной группы K1 или K2 с правым (разъемом питания). Ток, достаточный для переключения реле, составляет около 20 мА, цифровые контакты Arduino могут выдавать до 40 мА.
Разъем внешнего питания используется для обеспечения гальванической развязки между платой Arduino и модулем реле. По умолчанию на разъеме между выводами JD-VCC и VCC установлена перемычка. После установки модуль использует напряжение, приложенное к выводу VCC управляющего разъема для питания, и плата Arduino не гальванически изолирована от модуля.
Если вам необходимо обеспечить гальваническую развязку между модулем и Arduino, вам необходимо подать питание на модуль через разъем внешнего питания. Для этого снимается перемычка и на контакты JD-VCC и GND подается дополнительное питание. В этом случае питание также подается на вывод VCC управляющего разъема (от +5 В Arduino).
Кстати, реле может переключать не только слаботочную нагрузку, как в нашем примере. Реле можно использовать для включения и отключения довольно больших нагрузок. Какие именно — нужно искать в техническом описании того или иного реле. Например, это реле SRD-05VDC-SL-C может коммутировать сети с током до 10 А и напряжением до 250 В переменного тока или 30 В постоянного тока. То есть с его помощью можно, например, управлять освещением квартиры.
Скетч управления реле с помощью Arduino
Мы будем попеременно включать пару светодиодов одного цвета и каждую секунду переключаться на пару светодиодов другого цвета. Напишем этот скетч.
Если вы не собрали согласно схеме выше, но вместо D4 и D5 вы подключили центральную точку реле напрямую к источнику питания + 5V, вы можете полностью безболезненно исключить константы led1 и led2 и весь связанный с ними код в эскиз.
Теперь загрузим скетч в память Arduino. Мне все так кажется. Реле громко щелкают один раз в секунду, а светодиоды весело мигают.
Демонстрация работы Arduino с релейным модулем SRD-05VDC-SL-C
Кстати, есть и другие типы коммутационных устройств, например, оптопары. Эти устройства не имеют механических частей, что значительно увеличивает их долговечность и скорость срабатывания. Кроме того, они меньше по размеру и потребляют меньше энергии.
Читайте также: Воспроизведение звука на Ардуино: музыка и mp3-модуль с усилителем