Skip to main content

Модуль реле 5V для Arduino

Релейный модуль — это готовое решение для управления мощной нагрузкой (лампы, насосы, обогреватели 220V) от микроконтроллера. Модуль содержит реле, транзисторный ключ и защитный диод — всё, что нужно для безопасной работы.

Типы модулей

МодульКаналовРазмерПрименение
1-Channel150×26 ммОдин прибор
2-Channel250×40 ммДва прибора
4-Channel475×55 ммУмный дом
8-Channel8140×55 ммАвтоматизация
16-Channel16190×110 ммПромышленность

Характеристики типичного модуля

ПараметрЗначение
Напряжение катушки5V DC
Ток катушки70-90 мА
Контакты AC250V / 10A
Контакты DC30V / 10A
Время срабатывания~10 мс
УправлениеLOW или HIGH (зависит от модуля)
ИзоляцияОптопара (на некоторых модулях)

Распиновка модуля

Сторона управления (низковольтная)

┌─────────────────────────────┐
│    RELAY MODULE 5V          │
│                             │
│  VCC  GND  IN1  [IN2] [IN3] │
│   │    │    │               │
│   5V  GND  GPIO             │
└─────────────────────────────┘
  • VCC — питание модуля (5V)
  • GND — земля (общая с Arduino)
  • IN1, IN2… — входы управления (GPIO)

Сторона нагрузки (высоковольтная)

      ┌─────────┐
 COM ─┤         ├─ NC (Normally Closed)
      │  RELAY  │
      │         ├─ NO (Normally Open)
      └─────────┘
  • COM — общий контакт
  • NO (Normally Open) — разомкнут, пока реле выключено
  • NC (Normally Closed) — замкнут, пока реле выключено

Схема подключения

Базовая схема (управление лампой 220V)

Arduino                        Relay Module                   Нагрузка 220V
                                                              
   5V ────────────────────────── VCC                          
  GND ────────────────────────── GND                              ┌────┐
   D7 ────────────────────────── IN1                              │💡  │
                                  │                           L ──┤LAMP├── N
                                  │                               └────┘
                                COM ─────── Фаза (L) ────────────────┘
                                 NO ────────────────────────────────┘

⚠️ ВНИМАНИЕ: Работа с 220V опасна для жизни! Все подключения выполняйте при отключённом питании. Используйте изолированные провода и клеммники.

Схема с оптоизоляцией

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

Arduino 5V ────────────────────── VCC (логика)
Arduino GND ───────────────────── GND (логика)
Arduino D7 ────────────────────── IN1
             ┌──────────────────────┼─── JD-VCC (питание реле)
             │                      │
Внешний 5V ──┴──────────────────────┴─── GND (реле)

Когда нужна оптоизоляция:

  • Управление 220V нагрузкой рядом с чувствительной электроникой
  • Длинные провода до реле (помехи)
  • Требования безопасности

Код Arduino

Простое включение/выключение

#define RELAY_PIN 7

void setup() {
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, HIGH);  // Выключено (для LOW-active модуля)
}

void loop() {
  digitalWrite(RELAY_PIN, LOW);   // Реле ВКЛ
  delay(5000);                    // 5 секунд
  digitalWrite(RELAY_PIN, HIGH);  // Реле ВЫКЛ
  delay(2000);
}

Определение типа управления модуля

// Некоторые модули включаются по HIGH, другие по LOW
// Этот код определяет тип вашего модуля

#define RELAY_PIN 7

void setup() {
  Serial.begin(9600);
  pinMode(RELAY_PIN, OUTPUT);
  
  Serial.println("Тест модуля реле");
  Serial.println("Слышите щелчок при HIGH или LOW?");
  
  Serial.println("Подаём HIGH...");
  digitalWrite(RELAY_PIN, HIGH);
  delay(2000);
  
  Serial.println("Подаём LOW...");
  digitalWrite(RELAY_PIN, LOW);
  delay(2000);
  
  Serial.println("Тест завершён");
}

void loop() {}

Класс для управления реле

class RelayModule {
private:
  uint8_t pin_;
  bool activeLow_;  // true = включается по LOW
  bool state_;
  
public:
  RelayModule(uint8_t pin, bool activeLow = true) 
    : pin_(pin), activeLow_(activeLow), state_(false) {
    pinMode(pin_, OUTPUT);
    off();
  }
  
  void on() {
    state_ = true;
    digitalWrite(pin_, activeLow_ ? LOW : HIGH);
  }
  
  void off() {
    state_ = false;
    digitalWrite(pin_, activeLow_ ? HIGH : LOW);
  }
  
  void toggle() {
    state_ ? off() : on();
  }
  
  void set(bool state) {
    state ? on() : off();
  }
  
  bool isOn() const { return state_; }
};

// Использование:
RelayModule lamp(7, true);      // LOW-active
RelayModule pump(8, false);     // HIGH-active

void loop() {
  lamp.on();
  delay(1000);
  lamp.off();
  delay(1000);
}

Многоканальное управление

#define NUM_RELAYS 4
const int relayPins[NUM_RELAYS] = {4, 5, 6, 7};

void setup() {
  for (int i = 0; i < NUM_RELAYS; i++) {
    pinMode(relayPins[i], OUTPUT);
    digitalWrite(relayPins[i], HIGH);  // Все выключены
  }
}

void setRelay(int channel, bool state) {
  if (channel >= 0 && channel < NUM_RELAYS) {
    digitalWrite(relayPins[channel], state ? LOW : HIGH);
  }
}

void allOff() {
  for (int i = 0; i < NUM_RELAYS; i++) {
    digitalWrite(relayPins[i], HIGH);
  }
}

void loop() {
  // Последовательное включение
  for (int i = 0; i < NUM_RELAYS; i++) {
    setRelay(i, true);
    delay(500);
  }
  delay(1000);
  allOff();
  delay(1000);
}

Защита и безопасность

1. Защита от дребезга контактов

При переключении контакты реле “дребезжат” несколько миллисекунд, создавая множественные импульсы.

Программное решение:

void safeRelaySwitch(int pin, bool state, unsigned long debounce = 50) {
  static unsigned long lastSwitch = 0;
  
  if (millis() - lastSwitch > debounce) {
    digitalWrite(pin, state ? LOW : HIGH);
    lastSwitch = millis();
  }
}

2. Защита от одновременного включения

Для некоторых нагрузок (например, реверс мотора) нельзя включать два реле одновременно:

class InterlockRelays {
private:
  uint8_t pinA_, pinB_;
  
public:
  InterlockRelays(uint8_t pinA, uint8_t pinB) : pinA_(pinA), pinB_(pinB) {
    pinMode(pinA_, OUTPUT);
    pinMode(pinB_, OUTPUT);
    allOff();
  }
  
  void allOff() {
    digitalWrite(pinA_, HIGH);
    digitalWrite(pinB_, HIGH);
  }
  
  void activateA() {
    digitalWrite(pinB_, HIGH);  // Сначала выключить B!
    delay(50);                  // Пауза для размыкания
    digitalWrite(pinA_, LOW);
  }
  
  void activateB() {
    digitalWrite(pinA_, HIGH);  // Сначала выключить A!
    delay(50);
    digitalWrite(pinB_, LOW);
  }
};

3. Ограничение тока при включении

Некоторые нагрузки (лампы накаливания, моторы) имеют пусковой ток в 5-10 раз выше номинального. Реле на 10A может не выдержать.

Решение: Использовать soft-start или реле с запасом (16A для 10A нагрузки).

Типичные проблемы

Реле щёлкает, но нагрузка не включается

  1. Проверьте подключение COM и NO/NC
  2. Проверьте напряжение на контактах (мультиметром)
  3. Возможно, контакты окислились — несколько раз переключите реле

Реле не срабатывает

  1. Проверьте питание модуля (должно быть 5V)
  2. Проверьте GPIO (подайте 5V напрямую на IN)
  3. Возможно, модуль LOW-active, а вы подаёте HIGH

Arduino перезагружается при включении реле

  1. Реле потребляет ~70-90 мА — много для одного GPIO!
  2. Решение: Питайте VCC модуля от внешнего 5V, а не от Arduino

Помехи при переключении

  1. Добавьте конденсатор 100 мкФ на питание модуля
  2. Используйте модуль с оптоизоляцией
  3. Разнесите силовые и сигнальные провода

Альтернативы реле

ТехнологияПлюсыМинусыКогда использовать
Реле (ЭМР)Изоляция, низкое сопротивлениеИзнос, щелчки, медленно220V, редкие переключения
SSR (твердотельное)Бесшумно, долговечноГреется, дорожеЧастые переключения
MOSFETБыстро, дёшево, ШИМНет изоляции, только DCDC-нагрузки, моторы
СимисторДёшево, ACНет изоляцииДиммеры, AC-нагрузки

Применение

  1. 💡 Умный дом — управление светом, розетками
  2. 🚿 Системы полива — насосы, клапаны
  3. 🌡️ Терморегуляция — обогреватели, вентиляторы
  4. 🔔 Сигнализация — сирены, замки
  5. 🏭 Автоматизация — станки, конвейеры