Содержание
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
Кстати, существуют другие типы коммутирующих устройств, например, оптроны. Эти устройства не имеют механических частей, что существенно повышает их износоустойчивость и скорость срабатывания. Кроме того, они имеют меньший размер и меньшее энергопотребление.
Реле SRD-05VDC-SL-C описание и схема
Реле – это электромеханическое устройство, которое служит для замыкания и размыкания электрической цепи с помощью электромагнита. Принцип работы силового реле srd-05vdc очень прост. При подаче управляющего напряжения на электромагнитную катушку, в ней возникает электромагнитное поле, которое притягивает металлическую лапку и контакты мощной нагрузки замыкаются.
Если контакты реле замыкаются при подаче управляющего напряжения, то такое реле называют замыкающим. Если при подаче управляющего напряжения контакты реле размыкаются, а в нормальном состоянии контакты сомкнуты, то реле называется размыкающим. Также реле бывают постоянного и переменного тока, одноканальными, многоканальными и переключающими. Принцип действия у всех одинаковый.
Согласно характеристикам реле SRD-05VDC-SL-C, для переключения контактов достаточно около 5 Вольт 20 мА, выводы на Ардуино способны выдавать до 40 мА. Таким образом с помощью Ардуино мы можем управлять не только лампой накаливания, но и любым бытовым прибором — обогревателем, холодильником и т.д. Полевые транзисторы на Ардуино могут управлять токами только до 100 Вольт.
Переключение режимов с помощью кнопки
Для того, чтобы определить, была ли нажата кнопка, надо просто зафиксировать факт ее нажатия и сохранить признак в специальной переменной.
Факт нажатия мы определяем с помощью функции digitalRead(). В результате мы получим HIGH (1, TRUE) или LOW(0, FALSE), в зависимости от того, как подключили кнопку. Если мы подключаем кнопку с помощью внутреннего подтягивающего резистора, то нажатие кнопки приведет к появлению на входе уровня 0 (FALSE).
Для хранения информации о нажатии на кнопку можно использовать переменную типа boolean:
boolean keyPressed = digitalRead(PIN_BUTTON)==LOW;
Почему мы используем такую конструкцию, а не сделали так:
boolean keyPressed = digitalRead(PIN_BUTTON);
Все дело в том, что digitalRead() может вернуть HIGH, но оно не будет означать нажатие кнопки. В случае использования схемы с подтягивающим резистором HIGH будет означать, что кнопка, наоборот, не нажата. В первом варианте (digitalRead(PIN_BUTTON)==LOW ) мы сразу сравнили вход с нужным нам значением и определили, что кнопка нажата, хотя и на входе сейчас низкий уровень сигнала. И сохранили в переменную статус кнопки. Старайтесь явно указывать все выполняемые вами логические операции, чтобы делать свой код более прозрачным и избежать лишних глупых ошибок.
Как переключать режимы работы после нажатия кнопки?
Часто возникает ситуация, когда мы с помощью кнопок должны учитывать факт не только нажатия, но и отпускания кнопки. Например, нажав и отпустив кнопку, мы можем включить свет или переключить режим работы схемы. Другими словами, нам нужно как-то зафиксировать в коде факт нажатия на кнопку и использовать информацию в дальнейшем, даже если кнопка уже не нажата. Давайте посмотрим, как это можно сделать.
Логика работы программы очень проста:
- Запоминаем факт нажатия в служебной переменной.
- Ожидаем, пока не пройдут явления, связанные с дребезгом.
- Ожидаем факта отпускания кнопки.
- Запоминаем факт отпускания и устанавливаем в отдельной переменной признак того, что кнопка была полноценно нажата.
- Очищаем служебную переменную.
Как определить нажатие нескольких кнопок?
Нужно просто запомнить состояние каждой из кнопок в соответствующей переменной или в массиве ардуино. Здесь главное понимать, что каждая новая кнопка – это занятый пин. Поэтому если количество кнопок у вас будет большим, то возможно возникновение дефицита свободных контактов. Альтернативным вариантом является использование подключения кнопок на один аналоговый пин по схеме с резистивным делителем. Об этом мы поговорим в следующих статьях.
Основные принципы работы устройства
Рассматриваемый нами проект цифрового счетчика посетителей основан на использовании таких компонентов как датчики, двигатели, плата Arduino Uno и т.д. Этот счетчик будет способен подсчитывать количество посетителей в двух (обоих) направлениях. То есть он будет увеличивать счетчик посетителей когда человек проходит в центр/офис/стадион через входные ворота и уменьшать счетчик посетителей когда человек выходит из центра/офиса/стадиона через выходные ворота. Кроме указанных применений подобный счетчик можно также использовать на автопарковках и других общественных местах.
Проект разделен на 4 части: датчики, контроллер, дисплей для отображения числа посетителей и ворота. Датчик будет обнаруживать проходящих людей и подавать соответствующий сигнал на контроллер, который будет увеличивать или уменьшать счетчик посетителей в зависимости от того, вошел человек или вышел. Затем контроллер выдает команду на ЖК дисплей отобразить текущее количество посетителей.
Принцип обнаружения человека инфракрасным датчиком основан на том, что проходящий человек прерывает поток света на некоторое время и это прерывание света обнаруживается приемным инфракрасным датчиком.
Примеры
Рассмотрим тестовый пример, который отправляет строку Hello from #<счётчик>:
Отправка
#include <Gyver433.h> Gyver433_TX<2> tx; // указали пин void setup() { } char data[] = "Hello from #xx"; // строка для отправки byte count = 0; // счётчик для отправки void loop() { // добавляем счётчик в строку data = (count / 10) + '0'; data = (count % 10) + '0'; if (++count >= 100) count = 0; tx.sendData(data); delay(100); }
Приём
#include <Gyver433.h> Gyver433_RX<2, 20> rx; // указали пин и размер буфера void setup() { Serial.begin(9600); attachInterrupt(0, isr, CHANGE); // прерывание пина радио по CHANGE } // спец. тикер вызывается в прерывании void isr() { rx.tickISR(); } void loop() { if (rx.gotData()) { // если успешно принято больше 0 Serial.write(rx.buffer, rx.size); // выводим Serial.println(); } }
Библиотека позволяет отправлять данные любого типа (массив, структура) любой длины, что охватывает все возможные сценарии работы с радио.
About Relay
A relay is a programmable electrical switch, which can be controlled by Arduino or any micro-controller. It is used to programmatically control on/off the devices, which use the high voltage and/or high current.
It is a bridge between Arduino and high voltage devices.
WARNING
When you are making projects that are connected to mains voltage, you need to know what you are doing, otherwise, you may shock yourself. This is a serious topic, and we want you to be safe. If you’re NOT 100% sure what you are doing, do yourself a favor and don’t touch anything. Ask someone who knows!
Although some kinds of relays support both DC and AC devices, We highly recommend you to use a DC device (≤24V) for testing.
Relay Pinout
Relay has two groups of pins: low voltage group and high voltage group.
-
Pins in the low voltage group are connected to Arduino, including three pins:
-
GND pin: needs to be connected to GND (0V)
-
VCC pin: needs to be connected to VCC (5V)
-
IN pin: receives the control signal from Arduino
-
-
Pins in the high voltage group are connected to high voltage a device, including three pins (usually in screw terminal):
-
COM pin: is the common pin. It is used in both normally open mode and normally closed mode
-
NO pin: is normally open pin. It is used in the normally open mode
-
NC pin: is normally closed pin. It is used in the normally closed mode
-
In practice, we usually do NOT use all of the pins in the high voltage group. We use only two of them:
-
We use only COM pin and NO pin if we use normally open mode.
-
We use only COM pin and NC pin if we use normally closed mode.
※ NOTE THAT:
The order of the relay’s pins can vary between manufacturers. ALWAYS use the labels printed on the relay. Look closely!
Some relay module only has two pin in high voltage group.
How It Works
The relay can work with two modes: normally open mode and normally closed mode. These modes are the opposite.
The “normally” means “if IN pin is connected to LOW (0V)”.
Normally Open Mode
To use this mode, we need to connect the high voltage device to the COM pin and NO pin.
-
If the IN pin is connected to LOW (0V), the switch is open. The device is OFF (or inactive).
-
If the IN pin is connected to HIGH (5V), the switch is closed. The device is ON (or active).
Normally Closed Mode
To use this mode, we need to connect the high voltage device to the COM pin and NC pin.
-
If the IN pin is connected to LOW (0V), the switch is closed. The device is ON (or active).
-
If the IN pin is connected to HIGH (5V), the switch is open. The device is OFF (or inactive).
Which mode should I use?
You can choose any of them.
Controlling a relay is simple. We just need:
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
Кстати, существуют другие типы коммутирующих устройств, например, оптроны. Эти устройства не имеют механических частей, что существенно повышает их износоустойчивость и скорость срабатывания. Кроме того, они имеют меньший размер и меньшее энергопотребление.
1Принцип действияи виды реле
Реле – это электромеханическое устройство для замыкания и размыкания электрической цепи. В классическом варианте реле содержит электромагнит, который управляет размыканием или замыканием контактов. Если в нормальном положении контакты реле разомкнуты, а при подаче управляющего напряжения замыкаются, такое реле называется замыкающим. Если в нормальном состоянии контакты реле сомкнуты, а при подаче управляющего напряжения размыкаются, такой тип реле называется размыкающим.
Принцип действия замыкающего реле
Кроме того, существует множество других видов реле: переключающие, одноканальные, многоканальные, реле постоянного или переменного тока, и другие.
УРОК 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 секунду.
Пример программного кода:
// Реле модуль подключен к цифровому выводу 5
int Relays = 5;
void setup
()
{
pinMode(Relays, OUTPUT);
}
void loop
()
{
digitalWrite(Relays, LOW); // реле включено
delay(1000);
digitalWrite(Relays, HIGH); // реле выключено
delay(1000);
}
Для подключения лампы накаливания следует поставить реле в разрыв одного из проводов.
На нашем модуле контакты 1, 2, 3 расположены таким образом. Для подключения лампы накаливания следует поставить реле в разрыв одного из проводов.
Должно получиться так как показано на рисунке.
Как использовать релейный модуль с устройствами высокого напряжения
Сначала давайте посмотрим на принципиальную схему. Как описано ранее, мы будем использовать адаптер 5 В в качестве отдельного источника питания для электромагнита, подключенного к JDVcc и заземляющему выводу. Вывод Arduino 5V будет подключен к выводу Vcc модуля, а вывод 7 к входному выводу In1 для управления реле. Теперь для части «высокое напряжение» нам понадобится вилка, розетка и кабель с двумя проводами. Один из двух проводов будет обрезан и подключен к общему и нормально разомкнутому контакту выходного разъема модуля. Таким образом, в этой конфигурации, когда мы активируем реле, мы получим замкнутую и рабочую высоковольтную цепь.
Ниже коснемся того, как сделать кабель. Нам нужны вилка, розетка и кабель. Аккуратно обрезаем кабель и обрезаем один из проводов, как показано на рисунке ниже. Подключаем их к нормально разомкнутым контактам релейного модуля. Также подключаем концы кабеля к вилке и розетке.
Окончательный вид кабеля, готового к использованию, ниже. Прежде чем использовать кабель, убедитесь, что он работает правильно. Вы можете проверить это с помощью мультиметра или сначала проверить его при низком напряжении.
Реле
Реле — это электромеханические устройства, используемые для управления питанием подключенных устройств.
С помощью реле, вы можете легко использовать Arduino для управления мощностью практически любого типа электрических устройств.
Схема, показанная ниже, использует светодиод в качестве выходного устройства.
Внутри реле находится электромагнитная катушка, которая приводит в действие высоковольтный выключатель при протекании тока через цепь.
При отсутствии тока, проходящего через катушку, реле находится в нормально замкнутом состоянии:
Когда выключатель закрыт, ток течет через катушку, и электромагнитное поле, создаваемое катушкой, приводит к тому, что высоковольтная клемма переключается в нормально открытое положение:
При работе с индуктивными нагрузками, такими как реле, соленоиды, двигатели или шаговые двигатели, важно защитить Вашу цепь от обратного ЭДС. Обратный ЭДС возникает, когда электромагнитное поле, окружающее катушку, падает обратно в катушку
Это вызывает большой обратный ток в катушке, который может повредить другие компоненты в цепи
Обратный ЭДС возникает, когда электромагнитное поле, окружающее катушку, падает обратно в катушку. Это вызывает большой обратный ток в катушке, который может повредить другие компоненты в цепи.
Для предотвращения обратного электромагнитного поля, диод должен быть размещен параллельно катушке.
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 В постоянного тока. То есть его можно использовать, например, для управления освещением квартиры.
Управление реле Ардуино Уно / Нано
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- блок питания 12 Вольт;
- светодиодная лента;
- провода «папа-папа» и «папа-мама».
Соберите схему, как показано на картинке ниже. Подобная схема использовалась в проекте Светильник с управлением от пульта, где светодиодная лента включалась при помощи реле. Модуль имеет три контакта для управления от микроконтроллера Ардуино и два контакта для подключения мощной электрической цепи. Схема подключения реле к Ардуино УНО, Нано или Ардуино Мега ничем не отличается:
GND — GND
VCC — 5V
In — любой цифровой порт
Схема подключения реле srd-05vdc-sl к Ардуино Уно
После сборки электрической схемы, загрузите следующий скетч в микроконтроллер. Данная программа ничем не отличается от скетча для мигания светодиода на Ардуино, мы только поменяли в скетче порт и задали большее время задержки.
Скетч для управления реле от Ардуино
void setup() { pinMode(3, OUTPUT); // объявляем пин 3 как выход } void loop() { digitalWrite(3, HIGH); // замыкаем реле delay(3000); // ждем 3 секунды digitalWrite(3, LOW); // размыкаем реле delay(1000); // ждем 1 секунду }
После загрузки скетча включите блок питания в цепь. Реле при этом должно устанавливаться в разрыве одного из проводов, идущего к LED ленте. Для безопасности лучше устанавливать реле в провод заземления. К минусам реле следует отнести щелчки при замыкании/размыкании контакта, поэтому для включения LED ленты и других приборов до 40 Вольт удобнее использовать транзисторы.
Подключение нагрузки
В качестве теста будем управлять сетевым фильтром, к которому в будущем можно подключить любую бытовую электронику с вилкой на конце и потребляем тока до 15 А.
- Возьмите сетевой фильтр, разрежьте провод питания посередине и зачистите контакты от изоляции.
-
Скоммутируйте сетевой фильтр с реле:
- Подключите один провод со стороны вилки к контакту .
- Подключите один провод со стороны розеток от фильтра к контакту .
- Соедините второй провод со стороны вилки и второй со стороны розеток от фильтра между собой. Для хорошей изоляции контактов используйте изоленту.
Нагрузка подключена, теперь можно подключать модуль реле к управляющим платформам.
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. Вот как это всё выглядит у меня. Реле громко пощёлкивают раз в секунду, а светодиоды весело моргают.
Кстати, существуют другие типы коммутирующих устройств, например, оптроны. Эти устройства не имеют механических частей, что существенно повышает их износоустойчивость и скорость срабатывания. Кроме того, они имеют меньший размер и меньшее энергопотребление.
Скачать техническое описание (datasheet) реле SRD-05VDC-SL-C
Цифровые пины на Arduino могут принимать значения high или low. Именно это свойство используется для управления большинством внешних двигателей, датчиков и т.п.
Но иногда возникают ограничения, связанные с тем, что устройсва требуют большие токи, чем может предоставить Arduino. Судя по спеку, платы Arduino предоставляют нам в распоряжение всего лишь 20 мА.
Если вы слишком часто будете работать с токами, которые превышают эти рекомендации, у вас не толь будет ненадежная электрическая цепь, но можно повредить и ваш контроллер Arduino.
Вместо этого вам надо подключать необходимую силу тока. Один из вариантов — использовать реле. Кроме этого, порой вам понадобятся и транзисторы, например, TIP122, который рассмотрен в этой статье.
Пример для Arduino
В качестве мозга для управления реле рассмотрим платформу Arduino Uno.
Схема подключения
Подключите мини-реле к цифровому пину платформы Arduino. Для любителей надёжности, линии питания и управление реле мы вывели на специальный клеммник.
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield. А для коммуникации используйте трёхпроводной шлейф «мама-папа», который идёт в комплекте с реле.
А если вы уже отладили устройство и планируете упаковать всю конструкцию в корпус, рекомендуем взять Srew Shield и надёжно зафиксировать все сигналы через соединительные провода «мама-папа».
Исходный код
Прошейте платформу Arduino скетчем приведённым ниже.
- relayBlink.ino
-
// пин подключения реле #define RELAY_PIN 8 void setup() { // настраиваем пин реле в режим выхода pinMode(RELAY_PIN, OUTPUT); } void loop() { // подаём на пин реле «высокий уровень» digitalWrite(RELAY_PIN, HIGH); // ждём одну секунду delay(1000); // подаём на пин реле «низкий уровень» digitalWrite(RELAY_PIN, LOW); // ждём одну секунду delay(2000); }
После загрузки скетча реле начнёт по циклу включатся на одну секунду и выключаться на две.
Скетч
После того, как все подключено в соответствии с электрической схемой выше, загрузите этот код в ваш Arduino:
После загрузки и компиляции кода, установите потенциометр 10K на минимум.
Реле включит свет, когда фоторезистор будет темным (покрытым). А когда управление установлено на минимальный уровень, реле включит свет, а затем выключит, как только вернется свет (закат на рассвет).
Однако, если вы хотите, чтобы свет появился в темноте, оставьте его включенным на некоторое время, а затем выключите до восхода солнца.
Отрегулируйте потенциометр 10K, чтобы контролировать, как долго свет будет гореть после наступления темноты. Таймер активируется, как только регулятор выше 0V (нуля вольт).
Слегка повернув вверх, регулятор времени включит свет на несколько минут, прежде чем снова выключится. При полном включении таймера свет останется включенным примерно на 4 часа до его выключения.
По истечении времени все автоматически сбрасывается, и свет становится доступным. При полном выключении регулятора (до нуля вольт) свет включается в темноте и остается включенным до тех пор, пока свет не вернется (от захода солнца до восхода солнца).
Если вам необходимо вручную перезагрузить устройство, подумайте о добавлении кнопочного переключателя для заземления кнопки сброса (RST).
Пример для Raspberry Pi
В качестве мозга для управления реле рассмотрим одноплатный компьютер Raspberry Pi.
Схема подключения
Подключите мини-реле к пину компьютера Raspberry Pi. Для любителей надёжности, линии питания и управление реле мы вывели на специальный клеммник.
Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Cap, которая одевается сверху на малину методом бутерброда. А для коммуникации используйте трёхпроводной шлейф «мама-папа», который идёт в комплекте с реле.
Исходный код
Прошейте платформу Arduino скетчем приведённым ниже.
- relayBlink.py
-
# библиотека для работы с методами языка Wiring import wiringpi as wp # инициализация WiringPi wp.wiringPiSetup() # пин 10 в режим входа wp.pinMode(10, ) while (True): # подаём на пин 10 «высокий» уровень wp.digitalWrite(10, 1) # ждём одну секунду wp.delay(500) # подаём на пин 10 «низкий» уровень wp.digitalWrite(7, ) # ждём две секунды wp.delay(2000)
После запуска скрипта реле начнёт по циклу включатся на одну секунду и выключаться на две.
Программа автоматического светильника
Аналоговый вывод датчика дает значения в диапазоне от 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
Кстати, существуют другие типы коммутирующих устройств, например, оптроны. Эти устройства не имеют механических частей, что существенно повышает их износоустойчивость и скорость срабатывания. Кроме того, они имеют меньший размер и меньшее энергопотребление.