
Интернет-магазин «Неглупый Дом»
Готовые модули реле для Arduino (как уже многократно используемый на сайте KY-019) уже содержат внутри себя транзистор-драйвер и защитный диод. В этом проекте то же самое собирается вручную из отдельных деталей — "голого" электромагнитного реле SRD-05VDC и транзистора TIP122 — чтобы наглядно показать, что на самом деле происходит внутри готового модуля и почему там обязательно присутствует именно диод, а не просто транзистор.
Катушка электромагнитного реле — это по сути обмотка, то есть индуктивность: подавая на неё ток через транзистор, якорь реле притягивается, замыкая силовые контакты. Проблема возникает в момент выключения — резко оборвать ток в катушке невозможно без последствий, индуктивность "сопротивляется" резкому изменению тока и генерирует короткий, но очень высоковольтный обратный импульс напряжения (обратный выброс, самоиндукция), который без защиты способен мгновенно пробить и вывести из строя управляющий транзистор.
Решение — обычный выпрямительный диод, включённый параллельно катушке реле в обратной полярности относительно рабочего тока. Пока ток через катушку течёт в нормальном направлении, диод заперт и не мешает работе. В момент выключения транзистора индуктивность пытается продолжить ток в том же направлении — и находит для этого замкнутый контур именно через диод, вместо того чтобы пробивать транзистор высоким напряжением. TIP122 — Дарлингтон-транзистор, способный управлять катушкой реле (ток обычно десятки-сотни миллиампер) от слабого сигнала пина Arduino через ограничивающий резистор базы.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, которые указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
const int RELAY_DRIVER_PIN = 4;
void setup() {
Serial.begin(9600);
pinMode(RELAY_DRIVER_PIN, OUTPUT);
digitalWrite(RELAY_DRIVER_PIN, LOW);
}
void loop() {
digitalWrite(RELAY_DRIVER_PIN, HIGH); // включаем реле через TIP122
Serial.println("Реле включено");
delay(2000);
digitalWrite(RELAY_DRIVER_PIN, LOW); // выключаем — именно в этот момент важен защитный диод
Serial.println("Реле выключено");
delay(2000);
}
Дополнительных библиотек не требуется — код идентичен управлению готовым модулем реле, вся разница именно в физической сборке, а не в программе. Это специально показывает, что программная часть одинакова что с готовым модулем, что с собранным вручную драйвером — вся сложность именно в электрической схеме.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 134 ₽ 121 ₽ (экономия 13 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.