Реле позволяет электрическому сигналу или импульсу включать (или выключать) электрический ток. Для управления реле используется низкое напряжение или слабый ток, чтобы с его помощью управлять высоким напряжением и/или сильным током.
В электромеханическом реле ток протекает через катушку, которая действует как электромагнит, замыкающий (или размыкающий) контакты силовой части реле. Кроме электромеханических существуют и твердотельные реле использующие твердотельную электронику (без катушки и механических движущихся частей).
Внешний вид, назначение контактов
Для удобства управления и подключения к Arduino реле устанавливаются на платы, где, кроме самого реле, расположены контакты для подключения нагрузки и другие элементы (рис. M3.1). На одной плате могут размещаться несколько реле.
Рис. M3.1. Назначение контактов одноканальных модулей реле
Основные характеристики
Наименование | Значение |
Рабочее напряжение, В | 5 |
Потребляемый ток при переключении контактов, мА | 5 |
Потребляемый ток в состоянии ожидания, мА | 10 ÷ 13 |
Рабочая частота, МГц | 13,56 |
Размеры (L×W×H), мм | 50×26×18,5 |
Максимальная нагрузка | AC 250 В/10 A DC 30 В/10 A |
Предупреждение
Модуль реле, входящий в набор, рассчитан на коммутирование небольших нагрузок. Вы можете подключать к нему бытовые приборы с рабочим напряжением 220 В, но нагрузка не должна превышать 3-х ампер (мощность до 660 Вт).
Имейте в виду, что мощность утюга составляет 1000÷1500 Вт, и поэтому такое реле не годится для создания устройства для включения/выключения утюга. Cуществуют специальные модули реле, рассчитанные на большие мощности.
Схема подключения
Рис. M3.2. Схема подключения реле
Программный код
Тестовая программа для включения и выключения лампочки через каждые 2 секунды приведена в листинге M3.1.
Листинг M3.1. Включение лампочки с помощью реле
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #define relayPin 2 //номер пина для управления реле void setup() { pinMode(relayPin, OUTPUT); //настройка пина реле на выход } void loop() { digitalWrite(relayPin, HIGH);// замыкаем реле delay(3000); // ждем 3 секунды digitalWrite(relayPin, LOW); // размыкаем реле delay(3000); // ждем 3 секунды } |
«Умный горшок»
С помощь модуля реле можно создать систему автоматического полива растений в цветочном горшке. Для этого, кроме модуля реле, мы задействуем микронасос, помещенный в банку с водой, и датчик влажности почвы (рис. M3.3). Как только влажность почвы опускается ниже заданных значений, Arduino включает микронасос и выключает его, когда почва становится снова достаточно влажной.
Систему можно усложнить, добавив датчик глубины, чтобы сигнализировать об окончании воды в банке и недопустить сгорания микронасоса.
Схема подключения
Рис. M3.3. Система автоматического полива цветочного горшка
Программный код
Листинг M3.2. Система автоматического полива цветочного горшка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | //определения // пин аналогового выхода датчика уровня воды #define pinWaterLevel A0 //пин аналогового выхода датчик влажности почвы #define pinSoilMoisture A1 //пин реле для управление насосом #define pinRelayPump 12 //константы const int delayPumpBefore=2; //время полива (в секундах) const int delayPumpAfter=30; //время после полива, чтобы //земля пропиталась (в секундах) const int minMoisture=600; //минимальный порог влажности почвы // переменные int aLevel = 0; // значение датчика уровня воды int aMoisture = 0; // состояние датчика влажности почвы int levels[3]={600,500,400}; //массив значений уровней воды //установки void setup() { //объявляем пин реле для включения насоса как выход: pinMode(pinRelayPump, OUTPUT); //объявляем пины датчиков глубины и влажности почвы как входы: pinMode(pinWaterLevel, INPUT); pinMode(pinSoilMoisture, INPUT); Serial.begin(9600); } void loop() { // считываем значение датчика уровня воды aLevel=analogRead(pinWaterLevel); // считываем состояния датчика влажности почвы aMoisture = analogRead (pinSoilMoisture); Serial.println(aMoisture); //выводим для тестирования delay(100); // если почва сухая, и вода в банке есть, то включаем полив if ((aMoisture >minMoisture)&&(aLevel>levels[2])) { digitalWrite(pinRelayPump, HIGH); //включаем насос delay(delayPumpBefore*1000); //задержка на полив digitalWrite(pinRelayPump, LOW); //выключаем насос delay(delayPumpAfter*1000); //задержка на слив воды из //шланга после выключения насоса } else { digitalWrite(pinRelayPump, LOW); } } |
Для адаптации программы к конкретному цветочному горшку надо произвести небольшую «тонкую настройку» системы:
- во-первых, следует правильно установить время полива (delayPumpBefore), которое определяется паузой между включением и выключением насоса. Чем больше горшок, тем больше должна быть пауза и, как следствие, время полива;
- во-вторых, надо установить правильное время после полива (delayPumpAfter), чтобы земля успела пропитаться, и система не включила повторный полив. Трубку подачи воды при этом удобно разместить рядом с датчиком влажности почвы, чтобы земля в районе датчика сразу пропитывалась.