Элементы платы
Реле
На Relay Shield установлены 4 электромеханических реле, имеющих нормально замкнутый (normal closed, NC) и нормально разомкнутый (normal open, NO) контакты. Если на управляющей обмотке реле отсутствует напряжение, то между нормально замкнутым и коммутируемым контактами есть электрическая связь, а между нормально разомкнутым и коммутируемым — нет. При подаче напряжения на управляющую обмотку нормально разомкнутый контакт замыкается, а нормально замкнутый — размыкается.
Характеристики используемых реле
- Ток обмотки: 80 мА
- Максимальное коммутируемое напряжение: 30 В постоянного тока; 250 В переменного тока
- Максимальный коммутируемый ток: 5 А (NO), 3 А (NC)
- Рекомендованная частота переключения: до 1 Гц
- Время жизни: не менее 50000 переключений
Нагрузка
Нагрузка к реле подключается через колодки под винт. Контакт от источника напряжения подключается к выводу COM, а нагрузка — к контакту NO или NC, в зависимости от задачи которую должно выполнять реле.
Чаще всего реле используется для замыкания внешней цепи при подаче напряжения на управляющую обмотку. При таком способе даже если напряжение на Arduino по какой-то причине пропадёт, управляемая нагрузка будет автоматически отключена.
Схема подключения нагрузки к колодкам при этом будет следующей:
Используемые пины
Для управлением реле используются контакты 4, 5, 6 и 7 Arduino.
Реле | Контакт Arduino |
---|---|
Реле 1 | 7 |
Реле 2 | 6 |
Реле 3 | 5 |
Реле 4 | 4 |
При установке логической единицы на контакте Arduino срабатывает соответствующее реле. При этом напряжение логической единицы может быть как 5 В, так и 3,3 В.
При подаче на контакт Arduino логического нуля или при исчезновении напряжения на Arduino, реле возвращается в нормальное положение.
Контакты выбора управляющих пинов
Индикатор состояния и обвязка реле
Микроконтроллер не может напрямую управлять реле: оно потребляет слишком большой ток и порождает выбросы обратного напряжения при отключении. Поэтому каждое реле подключено к управляющим контактам через транзистор, а обратный диод защищает остальную схему от выбросов напряжения.
Между транзистором и обратным диодом находится индикатор состояния реле — светодиод. Светодиод горит если на реле подано напряжение. Если реле находится в нормальном состоянии — светодиод не горит.
Ограничения питания логической части
Отдельное реле в замкнутом состоянии потребляет 80 мА из логической цепи в 5 вольт. Все 4 реле при одновременном включении потребляют 320 мА. Если этот сценарий возможен в вашем проекте, необходимо удостовериться, что необходимый ток доступен.
Иными словами, все реле одновременно могут не работать в одном из следующих случаев.
- Вы питаете Arduino от USB-порта с пределом по току в 200 мА, например, от разветвителя в клавиатуре. Используйте полноценный USB 2.0 или USB 3.0, чтобы обеспечить стабильное питание от USB
- Вы питаете Arduino внешним источником питания с высоким входным напряжением. Несмотря на то, что линейный регулятор напряжения на плате Arduino выдаёт до 800 мА, их можно получить только, если обеспечена температура регулятора в 25 °C. Излишек напряжения линейный регулятор превращает в рассеиваемое тепло, компонент нагревается, предельный ток снижается. В этом случае используйте либо источник питания на 7–8 вольт вместо 8+, либо установите радиатор на регулятор напряжения, либо подавайте ровные 5 вольт непосредственно на пины 5V и GND или в порт USB.
Пример скетча датчика освещенности на фоторезисторе
Мы подключили схему с фоторезистором к ардуино, убедились, что все сделали правильно. Теперь осталось запрограммировать контроллер.
Написать скетч для датчика освещенности довольно просто. Нам нужно только снять текущее значение напряжения с того аналогового пина, к которому подключен датчик. Делается это с помощью известной нам всем функции analogRead(). Затем мы можем выполнять какие-то действия, в зависимости от уровня освещенности.
Давайте напишем скетч для датчика освещенности, включающего или выключающего светодиод, подключенный по следующей схеме.
Алгоритм работы таков:
- Определяем уровень сигнала с аналогового пина.
- Сравниваем уровень с пороговым значением. Максимально значение будет соответствовать темноте, минимальное – максимальной освещенности. Пороговое значение выберем равное 300.
- Если уровень меньше порогового – темно, нужно включать светодиод.
- Иначе – выключаем светодиод.
#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); } void loop() { int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); if (val < 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }
Прикрывая фоторезистор (руками или светонепроницаемым предметом), можем наблюдать включение и выключение светодиода. Изменяя в коде пороговый параметр, можем заставлять включать/выключать лампочку при разном уровне освещения.
При монтаже постарайтесь расположить фоторезистор и светодиод максимально далеко друг от друга, чтобы на датчик освещенности попадало меньше света от яркого светодиода.
УРОК 13. ARDUINO И РЕЛЕ
В этом опыте, мы будем управлять реле, точнее сказать не мы, а ардуино, и для этого попробуем воспользоваться полученными знаниями из предыдущих 12 уроков. Реле это электрически управляемый, механический переключатель. Внутри этого простенького на первый взгляд, пластмассового корпуса, находится мощный электромагнит, и когда он получает заряд энергии, происходит срабатывание, в результате чего якорь притягивается к электро магниту, контактная группа замыкает или размыкает цепь питания нагрузки. В этой схеме вы узнаете, как управлять реле, придав Arduino еще больше способностей!
На тот случай, если у вас в наборе идет не просто реле, а именно модуль, т.е уже собранная схема на печатной плате, Вам не нужно собирать схему (см. ниже), а нужно правильно подключить модуль к плате Arduino.
Реле и Электронный модуль Реле для Arduino на 5V.
VCC — питание +5 Вольт
GND — общий (земля) — минус.
IN1 — управление
NO — нормально разомкнутый (Normally Open)
NC — нормально замкнутый (Normally Closed)
COM — обший (Common)
К контактам NC и NO подключаются светодиоды, общий COM подключается к + питания (+5V), GND к земле (-), VCC к +5 Вольт, IN1 (управление, обозначение может быть другим) к порту ардуино Pin 2.
Когда реле выключено, общий контакт «COM» (common) будет подключен к нормально замкнутому контакту «NC» (Normally Closed). Когда же реле сработает «общий» контакт COM соединится с «нормально разомкнутым» контактом «NO» (Normally Open).
Принципиальная схема Arduino и Реле. Урок 13
Выше, вы видите саму принципиальную схему к уроку 13, думаю сложностей возникнуть не должно, при правильном соединении, т.е соблюдая указания маркировки и «полюсность», все должно получиться.
Для этого опыта вам понадобится:
1. Arduino UNO — 1 шт.
2. Реле или «Электронный модуль Реле» — 1 шт.
3. Транзистор 2N222A — 1 шт.
4. Диод 1N4148 — 1 шт.
5. Резистор 330 Ом.
6. Светодиоды различных цветов — 2 шт.
7. Соединительные провода.
8. Макетная плата.
Далее идет схема электрических соединений к уроку 13.
Cхема электрических соединений макетной платы и Arduino. Уроку 13. Arduino и Реле
Скачать код к опыту 13. Скетч и подробное описание (Обязательно прочтите весь скетч!):
Набор для экспериментов ArduinoKit
Код программы для опыта №13: sketch 13
Вид созданного урока на макетной схеме:
Arduino и Реле. Урок 13
В результате проделанного опыта Вы должны увидеть…
Вы должны услышать щелчки переключающегося реле, а также увидеть два светодиода по переменно загорающимися с секундным интервалом. Если этого нет, — проверьте правильно ли вы собрали схему, и загружен ли код в Arduino.
Возможные трудности:
Светодиоды не светятся
Дважды проверьте правильность установки светодиодов, — длинный вывод является плюсовым контактом..
Не слышны щелчки реле
Проверьте правильность подключение реле и транзистора.
Срабатывает через раз
Проверьте надежность подключение реле, у реле, если это не электронный модуль очень короткие выводы, попробуйте слегка придавить его в макетную плату.
Всем удачи! Ждём ваши комментарии к ARDUINO УРОК 13 — ARDUINO УПРАВЛЯЕТ РЕЛЕ.
2018-09-19T15:18:27+03:00Arduino уроки|
Просадка напряжения
Пытаясь найти объективную причину зависания, я стал грешить на некачественный блок питания и просадку напряжения при включении реле, особенно когда несколько реле включаются одновременно, ведь зависания происходили не так часто, а всего лишь 1-2 раза в месяц.
Первым делом решил добавить 2 конденсатора по 1000 мкф в надежде, что они уменьшат просадку напряжения при срабатывании реле. Первый поставил параллельно выходу с блока питания (там кстати уже был свой конденсатор, но второй лишним не будет, подумал я), а второй — установил параллельно выходу +5V на плате ардуино, откуда как раз берется питание для реле. С этого же выхода питается и сам микроконтроллер. Складывается логичная ситуация — когда все реле включаются одновременно, микроконтроллеру не хватает напряжения и он зависает.
После добавление конденсаторов зависания практически прекратились, но все же, 1 раз в месяц могло и зависнуть.
Реле Ардуино: распиновка, характеристики
Реле – это электромеханическое устройство, которое служит для замыкания и размыкания электрической цепи с помощью электромагнита. Принцип работы силового реле srd-05vdc очень прост. При подаче управляющего напряжения на электромагнитную катушку, в ней возникает электромагнитное поле, которое притягивает металлическую лапку и контакты мощной нагрузки замыкаются.
Реле SRD-05VDC-SL-C Ардуино: распиновка, характеристики
Если контакты реле замыкаются при подаче управляющего напряжения, то такое реле называют замыкающим. Если при подаче управляющего напряжения контакты реле размыкаются, а в нормальном состоянии контакты сомкнуты, то реле называется размыкающим. Также реле бывают постоянного и переменного тока, одноканальными, многоканальными и переключающими. Принцип действия у всех одинаковый.
Согласно характеристикам реле SRD-05VDC-SL-C, для переключения контактов достаточно около 5 Вольт 20 мА, выводы на Ардуино способны выдавать до 40 мА. Таким образом с помощью Ардуино мы можем управлять не только лампой накаливания, но и любым бытовым прибором — обогревателем, холодильником и т.д. Полевые транзисторы на Ардуино могут управлять токами только до 100 Вольт.
Пример для Espruino
В качестве мозга для управления реле рассмотрим платформу Iskra JS.
Схема подключения
Подключите мини-реле к цифровому пину платформы Iskra JS. Для любителей надёжности, линии питания и управление реле мы вывели на специальный клеммник.
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield. А для коммуникации используйте трёхпроводной шлейф «мама-папа», который идёт в комплекте с реле.
А если вы уже отладили устройство и планируете упаковать всю конструкцию в корпус, рекомендуем взять Srew Shield и надёжно зафиксировать все сигналы через соединительные провода «мама-папа».
Исходный код
Прошейте платформу Iskra JS скриптом приведённым ниже.
- relayBlink.js
-
// создаём объект для работы с реле на пине P8 var myRelay = require("@amperka/led").connect(P8); // включаем реле на одну секунду и выключаем на две секунды // далее процесс повторяется myRelay.blink(1, 2);
Мигание светодиода после нажатия на кнопку
В предыдущем примере со светодиодами мы подключили кнопку к плате ардуино и поняли, как она работает. Светодиод включался и выключался, но делал это в совершенно пассивном режиме – сам контроллер здесь был абсолютно лишним, его можно было бы заменить батарейками. Поэтому давайте сделаем наш новый проект более «интеллектуальным»: при нажатии на кнопку заставим светодиод непрерывно мигать. Обычной схемой с лампочкой и выключателем этого уже не сделаешь – мы будем использовать мощь нашего микроконтроллера для решения этой пусть и простой, но не тривиальной задачи.
Полная схема проекта изображена на рисунке:
Фрагмент схемы со светодиодом уже хорошо нам знаком. Мы собрали обычный маячок со светодиодом и ограничительным резистором. А вот во второй части мы видим знакомую нам кнопку и еще один резистор. Пока не будем вдаваться в подробности, просто соберем схему и закачаем в ардуино простой скетч. Все элементы схемы идут в самых простых стартовых наборах ардуино.
/* Скетч для схемы с использованием тактовой кнопки и светодиода Светодиод мигает, пока нажата кнопка. Кнопка подтянута к земле, нажатию соответствует HIGH на входе */ const int PIN_BUTTON = 2; const int PIN_LED = 13; void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); } void loop() { // Получаем состояние кнопки int buttonState = digitalRead(PIN_BUTTON); Serial.println(buttonState); // Если кнопка не нажата, то ничего не делаем if (!buttonState) { delay(50); return; } // Этот блок кода будет выполняться, если кнопка нажата // Мигаем светодиодом digitalWrite(PIN_LED, HIGH); delay(1000); digitalWrite(PIN_LED, LOW); delay(1000); }
Нажимаем и держим – светодиод мигает. Отпускаем – он гаснет. Именно то , что хотели. Хлопаем от радости в ладоши и приступаем к анализу того, что сделали.
Давайте посмотрим на скетч. В нем мы видим довольно простую логику.
- Определяем, нажата ли кнопка.
- Если кнопка не нажата, то просто выходим из метода loop, ничего не включая и не меняя.
- Если кнопка нажата, то выполняем мигание, используя фрагмент стандартного скетча:
- Включаем светодиод, подавая напряжение на нужный порт
- Делаем нужную паузу при включенном светодиоде
- Выключаем светодиод
- Делаем нужную паузу при выключенном светодиоде
Логика поведения кнопки в скетче может зависеть от способа подключения с подтягивающим резистором. Об этом мы поговорим в следующей статье.
Wrapping Up
Controlling a relay module with the Arduino is as simple as controlling an output – you just need to send HIGH or LOW signals using an Arduino digital pin. With the relay module you can control almost any AC electronics appliances (not just lamps).
We hope you’ve found this guide useful. If you like this project, you may also like our premium Arduino course:
Arduino Step-by-step Projects: Build 25 Projects
We have more than 60 free tutorials and projects with the Arduino. If you’re looking for a guide for a specific module, we probably have what you’re looking for.
60+ Arduino Projects and Tutorials
Finally, you can also get access to our FREE resources here.
Thanks for reading.
January 15, 2019
Шаг 5: Готово!
На изготовление одного модуля реле у меня ушло около 20 минут. Это быстро, недорого, а также экономит ваше время (при заказе онлайн доставка займёт минимум день, а поход в магазин занимает также больше 20 минут).
Подключить на прямую к Arduino мощную нагрузку, например лампу освещения или электронасос не получится. Микроконтроллер не обеспечивает необходимую мощность, для работы такой нагрузки. Ток, который может протекать через выходы Arduino, не превышает 10-15 мА. На помощь приходит реле, с помощью которого можно коммутировать большой ток. К тому же, если нагрузка питается от переменного тока, например 220v, то без реле ни как вообще не обойтись. Для подключения мощных нагрузок к Arduino через реле, обычно используют реле модули.
В зависимости от количества коммутируемых нагрузок, применяют одно-, двух-, трёх-, четырёх- и более канальные реле модули.
Свои, одно и четырёх канальные модули, я купил на Aliexpress, за $ 0,5 и $ 2.09 соответственно.
Устройство реле модуля для Arduino, на примере 4-х канального модуля HL-54S V1.0.
Рассмотрим более детально устройство данного модуля, по данной схеме обычно строятся все многоканальные модули.
Принципиальная схема модуля
.
Для защиты выводов Ардуино от скачков напряжения в катушке реле, применяется транзистор J3Y и оптрон 817C
Обратите внимание, сигнал с пина In
подаётся на катод оптрона. Это значит, для того что бы реле замкнуло контакты, нужно подать на пин
In
логический (инвертированный сигнал).
Принципиальная схема
Для лучшего понимания работы с реле Ардуино давайте рассмотрим принципиальную схему релейного модуля в этой конфигурации. Таким образом, мы можем видеть ниже, что 5 вольт от нашего микроконтроллера, подключенного к выводу Vcc для активации реле через оптрон, также подключены к выводу JDVcc, который питает электромагнит реле. Таким образом, в этом случае мы не получили изоляции между реле и микроконтроллером.
Чтобы изолировать микроконтроллер от реле, нам нужно снять перемычку и подключить отдельный источник питания для электромагнита к JDVcc и контакту заземления. Теперь с этой конфигурацией микроконтроллер не имеет физического соединения с реле, он просто использует светодиодную подсветку ИС оптопары для активации реле.
Есть еще одна вещь, которую следует отметить в этой принципиальной схеме. Входные контакты модуля работают в обратном порядке. Как мы видим, реле будет активировано, когда входной контакт будет НИЗКИМ, потому что таким образом ток сможет течь от VCC к входному контакту, который является низким или заземленным, светодиод загорится и активирует реле. Когда входной вывод будет ВЫСОКИМ, ток не будет течь, поэтому светодиод не загорится и реле не будет активировано.
Предупреждение о высоком напряжении! Прежде чем мы продолжим изучение этого урока, предупреждаем вас, что будет использоваться высокое напряжение, которое в случае неправильного использования может привести к серьезным травмам или смерти. Поэтому будьте очень осторожны в том, что вы делаете! Проект ArduinoPlus.ru не несет никакой ответственности за любые ваши действия.
Переменный ток
Симистор как вкл/выкл
Симистор – радиоэлемент, похожий на транзистор, но может работать на переменном токе. Высокое напряжение – штука опасная, поэтому для управления симистором используется оптопара с симисторным выходом. Простейшая схема подключения выглядит вот так:
Для управления нагрузкой только в режиме вкл/выкл желательно ставить оптопару с детектором нуля (напримерMOC306x), она будет сама отключать и включать нагрузку только в моменты перехода напряжения в сети через 0, что сильно уменьшает помехи в сети. Также здесь стоят резисторы: 220 Ом – для ограничения тока на светодиод оптопары (смотри характеристики оптопары, как подбирать резистор я писал выше). И резистор между оптопарой и симистором: 220-470 Ом с мощностью 1-2 Вт (будет греться). Симистор нужно брать с хорошим запасом по току, чтобы меньше грелся. Также симисторы бывают серии BTA и BTB, у BTA корпус (металлическая часть) изолирован и рекомендуется брать именно их, чтобы не шарахало током от радиатора. Распиновка компонентов:
У китайцев есть готовые модули с симистором и всей обвязкой. Кстати да, симистор греется под нагрузкой! Наличие радиатора обязательно, начиная с 200 Ватт.
Симистор как диммер
Для плавного управления нагрузкой переменного тока задача сильно усложняется: нужно ловить момент переключения напряжения, засекать время и выключать симистор, отсекая часть синусоиды, это называется фазовым управлением.
Для этой схемы нужна оптопара без детектора нуля, например серии MOC302x. Схема такой поделки может выглядеть вот так:
Резисторы 51к обязательно мощные, так как на них будет выделяться 1 Ватт: гасим лишнее напряжение, чтобы не сжечь светодиод оптопары детектора нуля. Также готовый модуль можно купить на Али. Выглядит он вот так и имеет пины питания, пин контроля симистора и вывод детектора нуля. Как со всем этим работать – смотрите видос ниже:
Где-то существует китайская библиотека для управления таким модулем, но она мне не очень понравилась. Привожу два примера для ручного управления таким диммером на базе библиотеки GyverTimers: одноканальный и многоканальный. В многоканальном режиме достаточно подключить к Ардуино выход детектора нуля только с одного модуля, а вот управляющие пины уже указать в скетче. Рассмотренные ниже примеры можно чуть оптимизировать, заменив digitalWrite() на быстрый аналог.
Источник
Скетч управления реле с датчиком движения
В реальных проектах изменение состояния реле должно происходить в ответ на какую то реакцию среды. Например, в ответ на сигнал сработавшего датчика движения можно включить свет, замкнув цепь с помощью реле. В данном скетче мы рассмотрим такой вариант подключения.
Схема подключения реле
Следует понимать, что в реальных проектах обходятся вообще без ардуино – просто подключая сигнальный выход датчика к реле.
Пример скетча
В данном примере мы добавим в цикл loop проверку состояния PIR датчика с помощью функции digitalRead (). Если мы получаем HIGH, то это означает сработку датчика и мы выполняем действие – включаем реле. Если к нему присоединить лампочку, то она загорится. Но, как и в прошлом примере, можно просто послушать щелчки.
/* Скетч для управления реле ардуино с помощью PIR датчика PIN_RELAY содержит номер пина, к которому подключено реле, которым мы будем управлять PIN_PIR содержит номер пина с подключенным PIR-сенсором В функции setup устанавливаем начальное положение реле (закрытое) В теле функции loop проверяем наличия высокого уровня сигнала от датчика с помощью функции digitalRead Для отладки текущее значение датчика выводим в окно монитора порта */ #define PIN_RELAY 8 // Определяем пин, используемый для подключения реле #define PIN_PIR 5 // Определяем пин, используемый для подключения PIR-датчика // В этой функции определяем первоначальные установки void setup() { Serial.begin(9600); pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал } void loop() { int val = digitalRead(PIN_PIR); // Считваем значение с датчика движения в отдельную переменную if (val == HIGH) { Serial.println("Датчик сработал"); digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала } else { digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала } delay(1000); // Проверяем значения один раз в секунду. }
Пример использования
- relayClick.ino
-
//Определяем на каких пинах находятся реле #define RELAY_1 7 #define RELAY_2 6 #define RELAY_3 5 #define RELAY_4 4 void setup() { // Конфигурируем нужные пины на выход for (int i = 4; i <= 7; ++i) { pinMode(i, OUTPUT); } } void loop() { //Включаем реле 1 на 5 секунд digitalWrite(RELAY_1, HIGH); delay(5000); //Отключаем реле 1 digitalWrite(RELAY_1, LOW); //через секунду включаем реле 2 на 5 секунд delay(1000); digitalWrite(RELAY_2, HIGH); delay(5000); digitalWrite(RELAY_2, LOW); //Повторим с оставшимися реле то же самое delay(1000); digitalWrite(RELAY_3, HIGH); delay(5000); digitalWrite(RELAY_3, LOW); delay(1000); digitalWrite(RELAY_4, HIGH); delay(5000); digitalWrite(RELAY_4, LOW); delay(1000); }
1Принцип действияи виды реле
Реле – это электромеханическое устройство для замыкания и размыкания электрической цепи. В классическом варианте реле содержит электромагнит, который управляет размыканием или замыканием контактов. Если в нормальном положении контакты реле разомкнуты, а при подаче управляющего напряжения замыкаются, такое реле называется замыкающим. Если в нормальном состоянии контакты реле сомкнуты, а при подаче управляющего напряжения размыкаются, такой тип реле называется размыкающим.
Принцип действия замыкающего реле
Кроме того, существует множество других видов реле: переключающие, одноканальные, многоканальные, реле постоянного или переменного тока, и другие.
Реле Ардуино: распиновка, характеристики
Реле – это электромеханическое устройство, которое служит для замыкания и размыкания электрической цепи с помощью электромагнита. Принцип работы силового реле srd-05vdc очень прост. При подаче управляющего напряжения на электромагнитную катушку, в ней возникает электромагнитное поле, которое притягивает металлическую лапку и контакты мощной нагрузки замыкаются.
Реле SRD-05VDC-SL-C Ардуино: распиновка, характеристики
Если контакты реле замыкаются при подаче управляющего напряжения, то такое реле называют замыкающим. Если при подаче управляющего напряжения контакты реле размыкаются, а в нормальном состоянии контакты сомкнуты, то реле называется размыкающим. Также реле бывают постоянного и переменного тока, одноканальными, многоканальными и переключающими. Принцип действия у всех одинаковый.
Согласно характеристикам реле SRD-05VDC-SL-C, для переключения контактов достаточно около 5 Вольт 20 мА, выводы на Ардуино способны выдавать до 40 мА. Таким образом с помощью Ардуино мы можем управлять не только лампой накаливания, но и любым бытовым прибором — обогревателем, холодильником и т.д. Полевые транзисторы на Ардуино могут управлять токами только до 100 Вольт.
Пояснения к использованию и программа для Arduino, TIP122 и автоматического реле
В этом примере мы соберем небольшую схему, в которой Arduino используется для управления автоматическим реле. После загрузки скетча на микроконтроллер, реле включится на две секунды и отключится на две секунды. Это будет продолжаться, пока вы не отключите питание от вашей платы Arduino.
Схема подключения соответствует той, которую мы рассмотрели выше. Ниже представлен ее более наглядный вариант.
Скопируйте, вставьте скетч в Arduino IDE и загрузите его на Arduino.
Перед загрузкой программы отключите внешний источник питания.
// Тест: TIP122 и Arduino
int nRelayDrive = 0; // пин 0 у нас для управления реле
pinMode(nRelayDrive, OUTPUT); // объявляем реле в качестве выхода
digitalWrite(nRelayDrive, LOW); // включаем реле
digitalWrite(nRelayDrive, HIGH); // отключаем реле
2Схема подключения модуля реле SRD-05VDC-SL-C
Будем использовать модуль с двумя одинаковыми реле типа SRD-05VDC-SL-C или аналогичный.
Модуль имеет 4 разъёма: силовые разъёмы K1 и K2, управляющий разъём и разъём для подачи внешнего питания (с джампером).
Реле типа SRD-05VDC-SL-C имеет три контакта для подключения нагрузки: два крайних неподвижных, а средний – переключающийся. Именно средний контакт является своего рода «ключом», который коммутирует цепи тем или иным образом. На модуле есть подсказка, какой именно контакт реле является нормально замкнутым: маркировка «K1» и «K2» соединяет средний контакт с крайним левым (на фото). Подача управляющего напряжения на вход IN1 или IN2 (слаботочный управляющий разъём) заставит реле скоммутировать средний контакт контактной группы K1 или K2 с правым (силовой разъём). Ток, достаточный для переключения реле – около 20 мА, цифровые выводы Arduino могут выдавать до 40 мА.
Разъёмы модуля реле SRD-05VDC-SL-C
Разъём для подачи внешнего питания используется для того, чтобы обеспечить гальваническую развязку платы Arduino и модуля реле. По умолчанию, на разъёме между штырьками JD-VCC и VCC имеется перемычка. Когда она установлена, модуль использует для питания напряжение, поданное на вывод VCC управляющего разъёма, а плата Arduino не имеет гальванической развязки с модулем. Если нужно обеспечить гальваническую развязку модуля и Arduino, необходимо подавать питание на модуль через разъём внешнего питания. Для этого убирается перемычка, и дополнительное питание подаётся на контакты JD-VCC и GND. При этом питание на вывод VCC управляющего разъёма также подаётся (от +5 В Arduino).
Кстати, реле может коммутировать не только слаботочную нагрузку, как в нашем примере. С помощью реле можно замыкать и размыкать достаточно большие нагрузки. Какие именно – нужно смотреть в техническом описании к конкретному реле. Например, данное реле SRD-05VDC-SL-C может коммутировать сети с током до 10 А и напряжением до 250 В переменного тока или до 30 В постоянного тока. То есть его можно использовать, например, для управления освещением квартиры.
Программа автоматического светильника
Аналоговый вывод датчика дает значения в диапазоне от 0 до 1023. Причем, 0 — для максимального уровня света и 1023 для полной темноты. Сначала нам нужно определиться при каком уровне света включать лампу, а при каком выключать. В нашей лаборатории при свете дня датчик показывает значение L = 120, а ночью около L = 700. Будем включать реле при L > 600, и выключать при L < 200. Вспомним как работать с аналоговыми входами и напишем программу.
const int photoPin = A5; const int relPin = 3; void setup() { pinMode(photoPin, INPUT); pinMode(relPin, OUTPUT); } void loop() { if( analogRead(photoPin) < 200 ) digitalWrite(relPin, HIGH); if( analogRead(photoPin) > 600 ) digitalWrite(relPin, LOW); }
Загружаем программу на Ардуино и проводим эксперимент. Лучше всего это делать ночью.
3Скетч управления реле с помощью Arduino
Будем поочерёдно зажигать пару светодиодов одного цвета, и каждую секунду переключаться на пару другого цвета. Напишем вот такой скетч.
const int relay1 = 2; // пин управления 1-ым реле const int relay2 = 3; // пин управления 2-ым реле const int led1 = 4; // коммутируемый вывод - питание 1-го светодиода const int led2 = 5; // коммутируемый вывод - питание 2-го светодиода void setup() { pinMode(relay1, OUTPUT); pinMode(relay2, OUTPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); // установим оба реле в исходное положение: digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); // подадим питание на светодиоды: digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); } void loop() { // переключим оба реле: digitalWrite(relay1, LOW); digitalWrite(relay2, LOW); delay(1000); // переключим оба реле обратно: digitalWrite(relay1, HIGH); digitalWrite(relay2, HIGH); delay(1000); }
Если вы собирали не по приведённой схеме, а вместо D4 и D5 подключали центральную точку реле напрямую к питанию +5V, то от констант led1 и led2 и от всего связанного с ними кода в скетче можно совершенно безболезненно избавиться.
Теперь загрузим скетч в память Arduino. Вот как это всё выглядит у меня. Реле громко пощёлкивают раз в секунду, а светодиоды весело моргают.
Демонстрация работы Arduino с модулем реле SRD-05VDC-SL-C
Кстати, существуют другие типы коммутирующих устройств, например, оптроны. Эти устройства не имеют механических частей, что существенно повышает их износоустойчивость и скорость срабатывания. Кроме того, они имеют меньший размер и меньшее энергопотребление.
Принцип работы реле
Реле представляет собой электромагнитный переключатель, которое управляется малым значением тока, но может переключать значительно большие токи. Например, реле удобно использовать для включения/выключения различных устройств, работающих от переменного тока, при этом используя для управления ими постоянный ток небольшой величины. Одним из наиболее часто используемых реле являются реле SPDT типа (Single Pole Double Throw — однополюсное на два направления), которое имеет пять контактов (выводов), как показано на следующем рисунке.
Когда на катушку (обмотку) реле не подано никакого управляющего напряжения, то общий провод реле (COM) подсоединен к нормально замкнутому контакту (NC — normally closed contact). А если на катушку реле подано управляющее напряжение, то с помощью электромагнита происходит переподключение общего провода реле (COM) на нормально разомкнутый контакт (NO — normally open contact), что позволяет в этой цепи коммутировать достаточно большой ток. Реле бывают различных типов, мы в нашем проекте использовали реле на 6V и 7A-250VAC.
Реле обычно подключается в электрическую схему с помощью специальной схемы драйвера, состоящей из транзистора, диода и резистора. Транзистор используется для усиления тока чтобы полный ток (в нашем случае от батарейки на 9 В) смог протекать через катушку реле и запитывать ее. Резистор используется чтобы обеспечить управляющий ток для транзистора, а диод используется для предотвращения протекания тока в обратном направлении, когда транзистор закрыт. Здесь дело в том, что при внезапном отключении тока катушка может вызывать противоположно направленное электромагнитное поле (согласно правилу Ленца), которое будет приводить к появлению тока в обратном направлении, способного повредить электронные компоненты. Поэтому для предотвращения подобного эффекта в схеме используется диод. Этот модуль драйвера реле можно легко купить в магазине электронных компонентов, либо собрать его самому на макетной или перфорированной плате.
В нашем случае мы будем управлять реле с контакта A0 платы Arduino с помощью схемы управления реле, показанной на следующем рисунке:
Исходный код
Осталось написать простой код для нашего реле Ардуино и протестировать модуль на то, как он будет работать. Сам код достаточно простой, мы будем просто использовать контакт 7 для управления реле, поэтому мы определим его как выход и создадим программу, которая будет просто активировать и деактивировать реле каждые 3 секунды. Здесь я еще раз упомяну, что вход модуля работает обратно, поэтому низкий логический уровень на входе фактически активирует реле, и наоборот.
int in1 = 7; void setup() { pinMode(in1, OUTPUT); digitalWrite(in1, HIGH); } void loop() { digitalWrite(in1, LOW); delay(3000); digitalWrite(in1, HIGH); delay(3000); }
Были протестирована 3 устройства на основе данного примера. Сначала лампочка мощностью 100 Вт, затем настольная лампа и тепловентилятор. Все эти устройства работают на 220В. Таким образом возможно управлять любым высоковольтным устройством с помощью Arduino или любого другого микроконтроллера. И, конечно, возможности безграничны, например, мы можем управлять устройствами с помощью пульта дистанционного управления телевизора, Bluetooth, SMS, Интернета и так далее.
СОДЕРЖАНИЕ ►
Подключение модуля реле к Ардуино потребуется, если вы решите управлять с помощью микроконтроллера мощной нагрузкой или переменным током. Модуль реле SRD-05VDC-SL-C позволяет управлять электрическими цепями с переменным током до 250 Вольт и нагрузкой до 10 Ампер. Рассмотрим схему подключения реле, как управлять модулем для включения светодиодной ленты и лампы накаливания.
Подключение к сетевому питанию
У реле есть три контакта, предназначенных для подключения к сетевому питанию:
- COM (от «common») – это общий контакт.
- NO (от «normally open») – это нормально разомкнутый контакт. Общий контакт и нормально разомкнутый контакт между собой не соединены. Но когда вы включаете реле, эти контакты соединяются друг с другом, и потребитель начинает получать питание.
- NC (от «normally closed») – это нормально замкнутый контакт. Общий контакт и нормально замкнутый контакт соединены друг с другом, даже если реле выключено. Но когда вы включаете реле, цепь размыкается, и потребитель перестает получать питание.
Если вы хотите управлять, к примеру, лампой, то лучше использовать нормально разомкнутый контакт, потому что лампа не будет гореть всегда (но вы будете включать ее время от времени).
Схема датчика освещения на фоторезисторе и реле
Примеры скетча для работы с реле приведены в статье, посвященной программированию реле в ардуино. В данном случае, нам не нужно делать сложных телодвижений: после определения «темноты» мы просто включаем реле, подавай на его пин соответствующее значение.
#define PIN_RELAY 10 #define PIN_PHOTO_SENSOR A0 void setup() { pinMode(PIN_RELAY, OUTPUT); digitalWrite(PIN_RELAY, HIGH); } void loop() { int val = analogRead(PIN_PHOTO_SENSOR); if (val < 300) { // Светло, выключаем реле digitalWrite(PIN_RELAY, HIGH); } else { // Темновато, включаем лампочку digitalWrite(PIN_RELAY, LOW); } }