Ардуино: модуль реле. Управляем реле с помощью Arduino Скетч управления реле с датчиком движения

Для коммутации различного силового оборудования и прочих устройств посредством относительно небольшого напряжения используют реле. В классическом варианте простейшее реле состоит из катушки, на которую подается управляющее напряжение, и контакта, замыкающего или размыкающего цепь объекта управления. Помимо функции управления реле также обеспечивают защиту управляющей цепи благодаря гальванической развязке, поскольку между катушкой и контактом существует зазор, не позволяющий перетекать напряжению из одной цепи в другую. Начинающие радиолюбители, которые, возможно, недавно познакомились с популярной в наше время платой Arduino, заинтересованы в использовании реле в своих проектах, но не знают с чего начать.


Поэтому данный материал показывает простоту использования Arduino и реле. В первую очередь он рассчитан на новичков, знакомящихся с Arduino и собирающих на основе этой платы.



Для создания релейной схемы нам потребуется Arduino, один резистор на 1 КОм, один резистор на 10 КОм, один транзистор BC547, одно реле на 6 В или 12 В, один диод 1N4007, и в качестве объекта управления возьмем вентилятор на 12 В. Схема устройства:



После нажатия кнопки вентилятор должен включиться и вращаться до тех пор, пока кнопка не будет нажата снова. Скетч для такого алгоритма:


int pinButton = 8; int Relay = 2; int stateRelay = LOW; int stateButton; int previous = LOW; long time = 0; long debounce = 500; void setup() { pinMode(pinButton, INPUT); pinMode(Relay, OUTPUT); } void loop() { stateButton = digitalRead(pinButton); if(stateButton == HIGH && previous == LOW && millis() - time > debounce) { if(stateRelay == HIGH){ stateRelay = LOW; } else { stateRelay = HIGH; } time = millis(); } digitalWrite(Relay, stateRelay); previous == stateButton; }

Итак, как работает наша схема? После нажатия кнопки Arduino переведет вывод 2 в высокое логическое состояние, то есть на выводе будет напряжение 5 В. Это напряжение используется для открывания транзистора, который включит реле, после чего наша нагрузка (в данном случае вентилятор) будет питаться от основного источника питания.


Вы не можете использовать 5 В порта USB для питания транзистора и нагрузки, поскольку тока будет недостаточно. Поэтому нужно использовать внешнее питание Vcc напряжением 7-12 В для питания как Arduino, так и транзисторно-релейной цепи. Нагрузка использует свой источник питания. Можно, например, в качестве нагрузки использовать лампу и питать ее от 220 В. И ни в коем случае не соединяйте питание Arduino и питание нагрузки!


Теперь немного усложним нашу программу, добавив задержку при отключении реле. Переменная stayON здесь будет использоваться для задания периода задержки в миллисекундах (по умолчанию 5 секунд). В итоге после нажатия кнопки реле включится и по прошествии 5 секунд отключится. Код:


int pinButton = 8; int Relay = 2; int stateRelay = LOW; int stateButton; int previous = LOW; long time = 0; long debounce = 500; int stayON = 5000; //задержка на 5000 мс void setup() { pinMode(pinButton, INPUT); pinMode(Relay, OUTPUT); } void loop() { stateButton = digitalRead(pinButton); if(stateButton == HIGH && previous == LOW && millis() - time > debounce) { if(stateRelay == HIGH){ digitalWrite(Relay, LOW); } else { digitalWrite(Relay, HIGH); delay(stayON); digitalWrite(Relay, LOW); } time = millis(); } previous == stateButton; }

Теперь благодаря информации, приведенной в этом примере, вы смело можете вносить реле в ваши новые проекты с Arduino.


Еще одну схему управления вентилятором с помощью Arduino можно .

Подключить реле к Arduino достаточно просто. Для примера мы будем использовать Скетч и подключения из урока:

В схеме вместо светодиода с резистором подключим реле . Вот так выглядит схема подключения реле к Arduino UNO . К другим версиям например Arduino NANO схема не будет иметь отличий.

Как видим, схема не многим отключается от исходного примера.

Реле может управлять различными бытовыми приборами.

Пара фоток сделанных при снятии видео по данному уроку: .

Скетч можно взять из без изменений.

Для более красивого и читабельного кода заменим переменную ledPin на relayPin . Так же заменим вспомогательную переменную ledOn на relayOn . У нас получиться вот такой скетч управления реле .

Const int buttonPin = 2; // номер входа, подключенный к кнопке const int relayPin = 3; // номер выхода светодиода /* переменные */ boolean lastButten = LOW; // предыдущее состояние кнопки boolean currentButten = LOW; // текущее состояние кнопки boolean relayOn = false; // текущее состояние свтодиода void setup() // Функция setup() { // инициализируем пин, подключенный к реле, как выход pinMode(relayPin, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); } boolean debvance (boolean last) //убираем дребизг { boolean current = digitalRead (buttonPin); // считываем данные с кнопки if (last != current) // Если текущее состояние отличететься от предыдущего { delay (5); // Ждем 5 милисек. current = digitalRead (buttonPin); // Присваеваем текущее состояние кнопки return current; } } void loop() // Функция loop { currentButten = debvance (lastButten); // Передаем функции дребезга значение по умолчанию LOW if (lastButten == LOW && currentButten == HIGH) // Проверяем отпускали мы кнопку или нет { relayOn = !relayOn; // инвертируем значение } lastButten = currentButten; // Переприсваеваем прошлое состояние кнопки digitalWrite(relayPin, relayOn); // Включаем или выключаем реле (смотря что пришло после инверсии) delay (2); // Ждем 2 милисек. }

Вы должны понимать, что управлять реле можно и буз Arduino . Данный пример приведен для ознакомления.

Если подключить реле через кнопку с фиксацией . Вот по такой схеме.

То у нас все будет работать отлично. В качестве источника питания 5В можно использовать

Рано или поздно появляется желание поуправлять чем-то более мощным чем светодиод, либо создать нечто на подобие умного дома своими руками. В этом нам поможет такая радио деталь как реле. В данной статье рассмотрим как реле подключается к микроконтроллеру, как им управлять, а также устроим демонстрацию его работы на примере включения лампы накаливания.

Используемые компоненты (купить в Китае):

. Управляющая плата

Устройство и принцип работы реле

Рассмотрим устройство реле на широко распространенном в области Arduino реле фирмы SONGLE SRD-05VDC.

Данное реле управляется напряжением 5V и способно коммутировать до 10А 30V DC и 10A 250V AC.

Реле имеет две раздельных цепи: цепь управления, представленная контактами А1, А2 и управляемая цепь, контакты 1, 2, 3. Цепи никак не связаны между собой.

Между контактами А1 и А2 установлен металлический сердечник, при протекании тока по которому к нему притягивается подвижный якорь(2). Контакты же 1 и 3 неподвижны. Стоит отметить что якорь подпружинен и пока мы не пропустим ток через сердечник, якорь будет удерживается прижатым к контакту 3. При подаче тока, как уже говорилось, сердечник превращается в электромагнит и притягивается к контакту 1. При обесточивании пружина снова возвращает якорь к контакту 3.

Подключение модуля к Arduino

В большинстве реле модулей для Ардуино используется N-канальное управление, его мы и рассмотрим. Для примера возьмем одноканальный модуль.

Далее приведу примерную схему данного модуля. Необходимыми для управления реле являются следующие детали: резистор(R1) , p-n-p транзистор(VT1) , диод(VD1) и, непосредственно само реле(Rel1) . Оставшиеся два светодиода установлены для индикации. LED1 (красный) - индикация подачи питания на модуль, загорание LED2 (зеленый) свидетельствует о замыкании реле.

Рассмотрим как работает схема. При включении контроллера выводы находятся в высокоомном состоянии, транзистор не открыт. Так как у нас транзистор p-n-p типа, то для его открытия нужно подать на базу минус. Для этого используем функцию digitalWrite (pin, LOW ); .Теперь транзистор открыт и через управляющую цепь течет ток и реле срабатывает. Для отключения реле следует закрыть транзистор, подав на базу плюс, вызвав функцию digitalWrite (pin, HIGH );. Можно сказать что управление реле модуля ничем не отличается от управления обычным светодиодом.

Модуль имеет 3 вывода (стандарта 2.54мм):

VCC: "+" питания

GND: "-" питания

IN: вывод входного сигнала

Подключение модуля предельно просто:

VCC на + 5 вольт на Ардуино.

GND на любой из GND пинов--- ардуино.

IN на любой из цифровых входов/выходов ардуино (в примерах подсоединено к 4).

Переходим непосредственно к скетчу. В данном примере реле будет включаться и выключаться с интервалом в 2 секунды.

пример программного кода:

// Реле модуль подключен к цифровому выводу 4 int Relay = 4; void setup () { pinMode (Relay, OUTPUT ); } void loop () { digitalWrite (Relay, LOW ); // реле включено delay (2000); digitalWrite (Relay, HIGH ); // реле выключено delay (2000); }

Для подключения лампы накаливания следует поставить реле в разрыв одного из проводов.

На нашем модуле контакты 1, 2, 3 расположены таким образом. Для подключения лампы накаливания следует поставить реле в разрыв одного из проводов.

Должно получиться так как показано на рисунке.

Пример включения лампы накаливания в связке с

P.S. Более дорогие модули имеют на своем борту еще и оптрон, который позволяет получить кроме развязки между управляемой и управляющей цепями реле еще и полную гальваническую развязку непосредственно между контроллером и цепью управления реле.

Подключить на прямую к Arduino мощную нагрузку, например лампу освещения или электронасос не получится. Микроконтроллер не обеспечивает необходимую мощность, для работы такой нагрузки. Ток, который может протекать через выходы Arduino, не превышает 10-15 мА. На помощь приходит реле, с помощью которого можно коммутировать большой ток. К тому же, если нагрузка питается от переменного тока, например 220v, то без реле ни как вообще не обойтись. Для подключения мощных нагрузок к Arduino через реле, обычно используют реле модули.

В зависимости от количества коммутируемых нагрузок, применяют одно-, двух-, трёх-, четырёх- и более канальные реле модули.

Свои, одно и четырёх канальные модули, я купил на Aliexpress, за $ 0,5 и $ 2.09 соответственно.

Устройство реле модуля для Arduino, на примере 4-х канального модуля HL-54S V1.0.

Рассмотрим более детально устройство данного модуля, по данной схеме обычно строятся все многоканальные модули.

Принципиальная схема модуля .

Для защиты выводов Ардуино от скачков напряжения в катушке реле, применяется транзистор J3Y и оптрон 817C. Обратите внимание, сигнал с пина In подаётся на катод оптрона. Это значит, для того что бы реле замкнуло контакты, нужно подать на пин In логический 0 (инвертированный сигнал).

Так же бывают модули, у которых сигнал с пина In подаётся на анод оптрона. В таком случае, нужно подать логическую 1 на пин In , для срабатывания реле.

Мощность нагрузки, которую могут включать / отключать модули, ограничивается установленными на плате реле.

В данном случае используются электромеханические реле Songle SRD-05VDC-SL-C , имеющее следующие характеристики:

Рабочее напряжение: 5 В
Рабочий ток катушки: 71 мА
Максимальный коммутируемый ток: 10А
Максимальное коммутируемое постоянное напряжение: 28 В
Максимальное коммутируемое переменное напряжение : 250 В
Рабочий температурный режим: от -25 до +70°C

Реле Songle SRD-05VDC-SL-C имеет 5 контактов. 1 и 2 питание реле. Группа контактов 3 и 4 представляют из себя нормально разомкнутые контакты (NO ), группа контактов 3 и 5 - нормально замкнутые (NC ).

Подобные реле бывают на различные напряжения: 3, 5, 6, 9, 12, 24, 48 В. В данном случае используется 5-вольтовый вариант, что позволяет питать реле-модуль непосредственно от Arduino.

На плате имеется перемычка (JDVcc ), для питания реле либо от Arduino, либо от отдельного источника питания.

Пинами In1 , In2 , In3 , In4 модуль подключается к цифровым выводам Arduino.

Подключение реле модуля HL-54S V1.0 к Arduino.

Поскольку у нас модуль с 5-вольтовыми реле, подключим его по такой схеме, питание возьмём от самой Ардуино. В примере подключу одно реле, в качестве нагрузки буду использовать лампочку на 220 в.

Для питания реле модуля от Arduino, перемычка должна замыкать пины «Vcc » и «JDVcc », обычно по-умолчанию она там и установлена.

Если у вас реле не на 5 вольт, питать от Ардуино модуль нельзя, питание нужно брать от отдельного источника.

Нижеприведённая схема показывает, как подключить питание модуля от отдельного источника. По такой схеме нужно подключать реле, рассчитанное на питание от более или менее чем 5 В. Для 5-вольтовых реле эта схема так же будет более предпочтительная.

При таком подключении нужно убрать перемычку между пинами «Vcc » и «JDVcc ». Далее пин «JDVcc » подключить к «+ » внешнего источника питания, пин «Gnd » подключить к «- » источника питания. Пин «Gnd », который в предыдущей схеме подключался к пину «Gnd » Ардуино, в данной схеме не подключается. В моём примере, внешний источник питания 5 В, если ваше реле рассчитано на другое напряжение (3, 12 ,24 В), выбираете соответствующее внешнее питание.

Скетч для управления реле модулем через Ардуино.

Зальём в Ардуино скетч, который будет сам включать и отключать лампочку (мигалка).

int relayPin = 7;

void setup() {
pinMode(relayPin, OUTPUT);
}

void loop() {
digitalWrite(relayPin, LOW);
delay(5000);
digitalWrite(relayPin, HIGH);
delay(5000);
}

В строке int relayPin = 7; указываем номер цифрового пина Arduino , к которому подключали пин In1 реле модуля. Можно подключить на любой цифровой пин и указать его в этой строке.

В строке delay(5000); можно менять значение времени, при котором лампочка будет гореть и при котором будет погашена.

В строке digitalWrite(relayPin, LOW); указано, при подаче логического нуля (LOW ), реле-модуль замкнёт контакты и лампочка будет гореть.

В строке digitalWrite(relayPin, HIGH); указано, при подаче логической единицы (HIGH ), реле-модуль разомкнёт контакты и лампочка погаснет.

Как видим, в строке digitalWrite(relayPin, LOW); оставили параметр LOW . Если реле замкнёт контакты и лампочка загорится, значит на пин In1 вам нужно подавать логический нуль, как и у меня. Если лампочка не загорится, зальём скетч, в котором заменим параметр LOW на HIGH.


Результат скетча на видео.

Теперь давайте добавим в схему тактовую кнопку и при нажатии на неё, реле-модуль будет включать лампочку.

Кнопку подключаем вместе с подтягивающим резистором на 10к, который не позволит внешним наводкам влиять на работу схемы.

Заливаем скетч

В строкеif(digitalRead(14)==HIGH) задаём номер цифрового пина, на котором подключена кнопка. Подключать можно на любой свободный. В примере эта аналоговый пин A0 , его же можно использовать в качестве цифрового 14 пина.

В строке delay(300); задаётся значение в миллисекундах. Это значение указывает, через какое время после нажатия или отпускание кнопки, нужно производить действия. Это защита от дребезга контактов.

Для информации! Все аналоговые входы от A0 (нумеруется как 14) до A5 (19), можно использовать как цифровые (Digital PWM ).

В заключении результат выполнения скетча на видео.

Более дешёвые реле-модули могут не содержать в своей схеме оптрона, как например в моём случае с одноканальным модулем.



Схема одноканального реле-модуля . Производитель сэкономил на оптроне, из-за чего Ардуино плата лишилась гальванической развязки. Для работы такой платы, на пин In нужно подавать логический нуль.

Подключение реле модуля к Arduino Due.

Arduino Due работает от 3,3 вольт, это максимальное напряжение, которое может быть на его вводах / выводах. Если будет более высокое напряжение, плата может сгореть.

Возникает вопрос, как подключить к реле модуль?

Убираем перемычку JDVcc. Подключаем пин «Vcc » на плате реле модуля к пину «3,3V » Arduino. Если реле рассчитано на 5 вольт, соединяем пин «GND » платы реле модуля, с пином «GND » Arduino Due. Пин «JDVcc » подключаем к пину «5V » на плате Arduino Due. Если реле рассчитано на другое напряжение, то питание к реле подключаем как на рисунке, в примере это 5 вольт. Если у вас многоканальный реле модуль, пожалуйста проверьте что бы «JDVcc » подключен к одной стороне всех реле. Оптопара активируется сигналом 3,3 В, которая в свою очередь активирует транзистор, используемый для включения реле.

Твердотельное реле из симистора для коммутации мощной нагрузки через Ардуино

С помощью Ардуино. Но как быть, если мы задумаем управлять устройствами, подключенными к бытовой сети? Напомню, что даже небольшая настольная лампа питается от источника переменного тока с напряжением 220 Вольт. Обычный полевой транзистор, который мы использовали в схеме с двигателем уже не подойдет. Чтобы управлять мощной нагрузкой да еще и с переменным током воспользуемся реле. Это такое электромеханическое устройство, которое механическим способом замыкает цепь нагрузки с помощью электромагнита. Посмотрим на внутренности: Принцип действия реле следующий. Подаем напряжение на электромагнитную катушку. В катушке возникает поле, которое притягивает металлическую лапку. В свою очередь, лапка механически замыкает контакты нагрузки. У реле есть два основных применения. Во-первых, мы можем подав всего 5 Вольт на катушку, замкнуть цепь очень мощной нагрузки. Например, реле, используемое в уроках для Ардуино, может включить холодильник или стиральную машину. Во-вторых, некоторые виды реле могут одновременно замкнуть и разомкнуть сразу несколько разных цепей с разным напряжением.

На этом уроке мы будем работать не с отдельным реле, а с целым релейным модулем. Помимо самого реле, модуль содержит еще и оптоэлектронную развязку с транзистором, которые защищают выводы Ардуино от скачков напряжения на катушке.
У одинарного модуля реле есть всего три контакта. Подключим их по следующей схеме. Кстати, вход реле является инвертированным. Это означает, что высокий уровень на контакте In выключит катушку реле, а низкий уровень — включит.

Принципиальная схема


Внешний вид макета


2. Программа для Ардуино

Напишем простую программу, которая будет включать лампу на 3 секунды, а затем гасить на 1 секунду. const int relPin = 3; void setup() { pinMode(relPin, OUTPUT); } void loop() { digitalWrite(relPin, HIGH); delay(1000); digitalWrite(relPin, LOW); delay(3000); } Загружаем программу на Ардуино. Теперь подключаем питание к лампе и к реле. Наконец, подаем питание на контроллер.

3. Автоматический светильник или уличный фонарь

С помощью контроллера, реле и датчика света можно сделать несложный автоматический светильник. Контроллер будет зажигать лампу в момент, когда уровень света на датчике станет меньше заданного значения. В качестве датчика используем готовый модуль на основе . Подключим все три устройства по следующей схеме.

Принципиальная схема


Внешний вид макета


4. Программа автоматического светильника

Аналоговый вывод датчика дает значения в диапазоне от 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); } Загружаем программу на Ардуино и проводим эксперимент. Лучше всего это делать ночью.

Задания

1. Музыка реле. Как известно, электромеханическое реле издает щелчок при срабатывании. Попробуйте воспользоваться этим для проигрывания какой-нибудь несложной мелодии. 2. Управление двигателем. Имея два трехконтактных реле, таких же как в этом уроке, можно собрать схему для изменения направления вращения двигателя.