Компьютерная грамотность
  • Главная
  • Windows
  • Скетч управление 16 канальным реле для arduino. Ардуино: модуль реле

Скетч управление 16 канальным реле для arduino. Ардуино: модуль реле

/*
*
* Набор для экспериментов ArduinoKit
* Код программы для опыта №13: sketch 13
*
* Реле
*
* Написано для сайта http://сайт
*
*
* Помощь сообщества Arduino.
* Посетите сайт http://www.arduino.cc
*
*
*
* ИСПОЛЬЗОВАНИЕ ТРАНЗИСТОРА ДЛЯ УПРАВЛЕНИЯ РЕЛЕ
*
* Реле это электрически управляемый механический переключатель.
* Реле может управлять гораздо большим напряжением и током, чем порты
* Arduino, или скажем транзистор, включенный в комплект набора. Если
* вы хотите использовать Arduino для управления лампой накаливания,
* кофеваркой, или другим электронным устройством работающим на 220V,
* реле это отличный способ сделать это.
* Реле спокойно справляется с переключением, коммутацией, больших
* напряжений, намного больших, чем может предложить порт Arduino.
* Мы будем использовать транзистор для того чтобы управлять реле,
* точно так же, как мы использовали транзистор для управления
* двигателем в опыте №12 (Стартовый набор, программиста и робототехника).
*
* Реле состоит из катушки, проволоки, металлического сердечника и
* переключающих контактов. При подаче питания на катушку, сердечник
* намагничивается, и притягивает якорь (рычажок), тем самым
* переключает контакты. Так как контакты реле полностью изолированы
* от Arduino, вы можете спокойно использовать реле для управления
* опасным напряжением, НО! Пожалуйста, делайте это, если вы уже
* знаете, и умеете, безопасно работать с высоким напряжением!
*
* Реле иметь три контакта, — COM (общий), NC (нормально замкнутый)
* и NO (нормально разомкнутый). Когда реле выключено, COM вывод
* подключен к выводу NC (нормально замкнутый), а когда включено,
* COM вывод подключается к NO (нормально разомкнутый).
*
* Этот код очень прост — он включает реле на одну секунду, затем
* выключает, ждет секунду и снова включает, как в опыте с мигающим
* светодиодом!
*
* Подключение оборудования:
*
* Транзистор:

* Транзистор имеет три вывода. Глядя на плоскую сторону,
* выводами вниз, назначения выводов будут следующими (слева
* на право): КОЛЛЕКТОР, БАЗА, ЭМИТЕР.
*
* Подключите БАЗУ через резистор 1К к цифровому порту 2.
*
* Подключите ЭМИТЕР к земле (GND).
*
* Катушка реле:
*
* Реле имеет контакты катушки, с помощью которых можно управлять
* реле и контакты для управления нагрузкой. На верхней или
* нижней части реле должен иметься рисунок, или символ,
* указывающий на контакты катушки.
*
* Подключение одну сторону катушки к коллектору транзистора.
*
* Подключение другую сторону катушки к питанию +5 Вольт.
*
* Диод:
*
* Реле имеет катушку, которую вы запитываете, для того чтобы
* притянуть якорь. При отключении питания, катушка генерирует
* всплеск напряжения, который может повредить транзистор. Этот
* диод защищает транзистор от всплеска напряжений.
*
* Подключите вывод диода, КАТОД, к питанию +5 Вольт.
*
* Подключите другой вывод диода, АНОД, к КОЛЛЕКТОРУ транзистора.
*
* Контакты реле и светодиодов:
*
* Контакты реле могут переключать все все что можно включить или
* выключить, но мы в этом уроке будем использовать контакты реле
* для включения и выключения светодиодов.
*
* Подключите общий вывод контактной группы релеCOMMON к резистору
* 330 Ом. Второй вывод резистора питанию +5 Вольт.
*
* Подключите вывод контактной группы реле NC (нормально замкнутый)
* к положительному (длинному) выводу светодиода LED 1.
*
* Подключите вывод контактной группы реле NO (нормально разомкнутый)
* к положительному (длинному) выводу второго светодиода — LED 2.
*
* Подключите отрицательные выводы (короткие ножки) обоих светодиодов
* к земле (GND).
*
*
*
* Комментарий к программе написан
* 26 ноября 2014
* специально для http://сайт
*
*
*/
const int relayPin = 2; // порт для управления транзистором
const int timeDelay = 1000; // задержка в мс, между вкл. и выкл.

// Вы можете уменьшить время задержки, но обратите внимание, что
// реле, будучи механическим устройством, будет изнашиваться
// быстрее, если частота переключений будет слишком частой.
void setup()
{
pinMode(relayPin, OUTPUT); // установить порт как исходящий
}
void loop()
{
digitalWrite(relayPin, HIGH); // включить реле

digitalWrite(relayPin, LOW); // выключить реле

delay(timeDelay); // пауза в 1 секунду

Подключить на прямую к 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 В, которая в свою очередь активирует транзистор, используемый для включения реле.

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

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

Сегодня расскажу о двух канальном модуле реле с оптической развязкой, который содержит два электромеханических реле, максимальным током до 10А (в реальности не выдерживают столько), а переключение осуществляется с помощью напряжения 5В.

Технические параметры

Напряжение питания: 5 В
Потребляемый ток: 30 мА … 40 мА
Сигнал включение: 0 В (низкий уровень)
Оптическая изоляция: есть
Количество реле: 2 шт.
Тип реле: электромеханическое
Коминальный ток нагрузки: 10 А
Коммутируемое напряжение: 250VAC, 30VDC
Габариты: 50.5мм x 32.5мм x 17м

Общие сведения

Данный модуль содержит два канала реле фирмы SONGLE модель SRD-05VDC-SL-C, переключение осуществляется с помощью напряжение 5В. Схематически модуль специально разработан для управления с помощью слаботочных плат, таких как arduino, raspberry и так далее, которые на выходе могут выдать ток не более 40 мА, так же для защиты добавлен оптопара EL817, которая реализует гальваническую развязку. Принципиальная схема 2-х канального модуля реле показана на рисунке ниже.


Двухкональный релейный модуль состоит из двух независимых частей за исключении питания Vcc и GND. При подключении к напряжения, вывод In1 находиться в высоком состоянии (лог 1), для переключения первого реле необходимо вывод In1 перевести в отрицательное состояние (лог 0), то есть закоротить цепь на землю. Через светодиод, которые находится в оптопаре начнет протекать ток и он засветится, следом откроет фототранзистор, через который так же начнет течь ток на базу транзистора Q1, который откроется и реле сработает. Вторая часть реле, работает аналогично, модуль может работать и от отдельного источника питания, необходимо убрать перемычку и подключить питание к JD-VCC и GND.

Назначение контактов
Модуль содержит четыре разъема, два слаботочных J1, J1 и два силовых K1 и K2, назначение каждого разъема и вывода можно посмотреть на рисунке ниже.


Разъем J1 используется для управления реле, шаг контактов 2,54 мм (PLS), разъем J2 используется для подключения внешнего источника питания, по умолчанию, между контактми JD-VCC и VCC установлена перемычка.

Габаритные размеры
На модуле предусмотрено четыре отверстия для установки, диаметр каждого 4 мм, габариты можно посмотреть на рисунке ниже.


Необходимые детали:
Arduino UNO R3 x 1 шт.
Провод DuPont x 1 шт.
Кабель USB 2.0 A-B x 1 шт.
Модуль реле 2-х канальный — 5V, 10A, 250V (lOW, OPTO) x 1 шт.

Подключение :
Для начала подключаем вывод VCC и GND к выводам Arduino 5V и GND. Выводы IN1 и IN2 можно подключить к любому выводу, в нашем случае подключены к цифровым выводам 5 и 6. В качестве примера использую светодиоды, схема подключения приведена на рисунке ниже:


/* Тестировалось на Arduino IDE 1.8 Дата тестирования 28.12.2016г. */ int in1 = 5; // Указываем, что вывод реле In1, подключен к реле цифровому выводу 5 int in2 = 6; // Указываем, что вывод реле In2, подключен к реле цифровому выводу 6 void setup() { pinMode(in1, OUTPUT); // Установим вывод 5 как выход pinMode(in2, OUTPUT); // Установим вывод 6 как выход } void loop() { digitalWrite(in1, HIGH); // Выключаем реле delay(2000); // Ждем 2с digitalWrite(in1, LOW); // Включаем реле delay(2000); // Ждем 2с digitalWrite(in2, HIGH); // Выключаем реле delay(2000); // Ждем 2с digitalWrite(in2, LOW); // Включаем реле }

Тестировалось на Arduino IDE 1.8

Дата тестирования 28.12.2016г.

int in1 = 5 ; // Указываем, что вывод реле In1, подключен к реле цифровому выводу 5

int in2 = 6 ; // Указываем, что вывод реле In2, подключен к реле цифровому выводу 6

void setup ()

pinMode (in1 , OUTPUT ) ; // Установим вывод 5 как выход

pinMode (in2 , OUTPUT ) ; // Установим вывод 6 как выход

void loop ()

digitalWrite (in1 , HIGH ) ; // Выключаем реле

delay (2000 ) ; // Ждем 2с

digitalWrite (in1 , LOW ) ; // Включаем реле

delay (2000 ) ; // Ждем 2с

digitalWrite (in2 , HIGH ) ; // Выключаем реле

delay (2000 ) ; // Ждем 2с

digitalWrite (in2 , LOW ) ; // Включаем реле

Подключить реле к 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В можно использовать

Лучшие статьи по теме