Нагрузки переменного тока окружают нас повсюду, потому что, по крайней мере, бытовая техника питается от сети. Поэтому мы часто сталкиваемся с ситуациями, когда нам хочется полностью контролировать (регулировать мощность) нагрузку переменного тока, такую как лампа, двигатель, пылесос... и т.д.
Мы должны знать, что управление нагрузкой переменного тока отличается от управления нагрузкой постоянного тока. Поэтому для этой цели следует использовать разные электронные схемы.
Предупреждение:
Эта схема подключается непосредственно к сети. Перед использованием устройства необходимо выполнить все меры предосторожности.
![]() |
|
Рисунок 1. | Синусоидальное напряжение сети (зеленые стрелки показывают точки пересечения нуля). |
На Рисунке 1 показана форма синусоидального напряжения в сети 50 Гц (иногда 60 Гц). Для работы регулятора (диммера) важны точки перехода сетевого напряжения через ноль (точки, в которых синусоида меняет свою полярность). Чтобы определить эти точки, необходимо использовать детектор перехода через ноль. На Рисунке 2 представлена полная принципиальная схема всего устройства.
![]() |
|
Рисунок 2. | Принципиальная схема цифрового диммера переменного тока. |
Элементы R1, R2, IC1, D1 и C3 образуют схему детектора перехода через ноль. Его конструкция обеспечивает надежную изоляцию (оптическую) от сетевого напряжения. Таким образом, мы можем рассчитывать на получение незашумленного сигнала, который можно смело подключать к входам/выходам Arduino. На Рисунке 3 показан выходной сигнал детектора перехода через ноль (вывод 4 оптоизолятора IC1). Конечно, можно использовать не только эту оптопару, но этот компонент я использую и в других конструкциях, где он неплохо справляется со своей задачей.
![]() |
|
Рисунок 3. | Выходной сигнал схемы детектора перехода через ноль. |
Итак, как уже понятно, мы будем использовать импульс перехода через ноль для основной управляющей схемы. Проще говоря, именно после запуска (перехода через ноль) мы должны решить, сколько мощности мы хотим передать в нагрузку. Это будет легче понять позже, после демонстрации кода Arduino и формы выходного напряжения.
IC3 – это симистор BT138. Нагрузка включена последовательно с симистором и сетью переменного тока, поэтому симистор определяет количество энергии, которое должно быть подано в нагрузку.
Внимание:
Монтажное основание симистора BT138 (по умолчанию оно используется для крепления радиатора) соединено с выводом 2. Это означает, что никогда не следует прикасаться к радиатору или прикручивать его к металлическому корпусу!
На элементах R4, R5 и C2 реализована снабберная цепь для оптоизолятора IC2, а на C1 и R7 – снабберная цепь для IC3 [1]. Эти компоненты упрощают совместимость устройства с различными нагрузками, например, индуктивными.
IC2 представляет собой оптосимистор, который обеспечивает надлежащую гальваническую развязку между стороной цифрового управления и линией переменного тока. Выбран оптосимистор типа MOC3021. Опять же, можно использовать другие оптосимисторы, но будьте осторожны и не используйте компоненты со встроенным детектором перехода через нуль. Эти компоненты предназначены для коммутации нагрузки переменного тока (ВКЛ/ВЫКЛ), а не для регулировки яркости.
На Рисунке 4 показана спроектированная разводка печатной платы. Дорожки, которые должны пропускать большие переменные токи, сделаны широкими и двусторонними. Кроме того, дорожки противоположных сторон соединены некоторым количеством переходных отверстий, чтобы уменьшить сопротивление и увеличить способность дорожки пропускать ток.
![]() |
|
Рисунок 4. | Разводка печатной платы диммера переменного тока. |
Все компоненты в корпусах DIP. Поэтому каждый может их быстро припаять и использовать схему в качестве модуля. Резисторы R2, R4, R5 и R7 рассчитаны на мощность 1 Вт. Резисторы R1 и R6 – четвертьваттные. В качестве С1 и С2 можно выбрать конденсаторы с диэлектриком из полиэфирной пленки, но убедитесь, что они рассчитаны на напряжение не менее 400 В. Конденсаторы на напряжение 250 В вроде бы подходят, но 250 В – это немного близко к границам входного напряжения. Поэтому 400 В – разумный выбор для напряжения конденсаторов. Расстояние между выводами конденсатора C1 составляет 10 мм. Для C2 это расстояние равно 10.5 мм. К1 – это разъем MKDSN с шагом контактов 5,08 мм (MKDSN-2.5/4-5.08). P1 – традиционная группа из 4-х штыревых контактов.
Под элементами IC1 и IC2 на печатной плате имеется вырез. Он обеспечивает лучшую гальваническую развязку между двумя участками платы.
На Рисунке 5 показан первый прототип печатной платы. Файлы Gerber проекта можно скачать по ссылке в конце статьи.
![]() |
|
Рисунок 5. | Первый прототип схемы. |
Прикрепленный радиатор рассчитан только на непродолжительные тесты. Для реального длительного использования необходимо использовать радиатор большего размера. Расположение симистора IC3 у края печатной платы значительно упрощает задачу установки радиатора.
Теперь пришло время подключить схему к плате Arduino и управлять нагрузкой переменного тока. Я выбрал Arduino Nano, которая имеет достаточно ресурсов для этого проекта, но вы можете использовать и другие платы. Пример кода Arduino для диммера переменного тока приведен ниже:
1. const byte ZCP = 2;
2. const unsigned int dim = 5000;
3. void setup() {
4. pinMode(ZCP, INPUT);
5. pinMode(10, OUTPUT);
6. digitalWrite(10, LOW);
7. }
8. void loop() {
9. if (digitalRead(ZCP) == HIGH)
10. Zero_Cross();
11. }
12. void Zero_Cross() {
13. digitalWrite(10, LOW);
14. delayMicroseconds(dim);
15. digitalWrite(10, HIGH);
16. }
Для проверки нашего диммера не обязательно писать сложный код. Существует два метода обнаружения импульсов детектора перехода через нуль: опрос и прерывание. В первой попытке я использовал прерывания, но столкнулся с мерцанием нагрузки в некоторых ситуациях. Мерцание – это раздражающая ситуация, которая случается с некоторыми диммерами. Причина в неправильной временнóй привязке. Как я уже говорил, точки пересечения нуля очень важны, и любой случайный сдвиг по времени приведет к нестабильности. Использование прерываний приводило к некоторому дрожанию, которое вызывало мерцание при определенных настройках диммера. Поэтому я остановился на методе опроса (строки с 8 по 11).
Все, что нам нужно сделать, это изменять время выключения симистора в обоих полупериодах, чтобы переменная «dim» определяла мощность, передаваемую в нагрузку. Для начала я установил диммер в среднее положение. Это означает, что симистор находится в выключенном состоянии в течение 5 мс. Итак, давайте подтвердим нашу теорию практикой, изучив форму напряжения на нагрузке.
Будьте осторожны: никогда не подключайте щупы осциллографа непосредственно к электрической сети. Земляной вывод щупа может образовать замкнутый контур с сетевой клеммой и взорвать все на своем пути, включая вашу схему, щуп, осциллограф или даже вас самих!
Существует несколько решений этой проблемы, например, использование изолятора или дифференциального щупа… и т. д. Я проверял выходное напряжение, используя обычный трансформатор (220 В/12 В). Подключения выполняйте в соответствии с Рисунком 6. Следует отметить, что нагрузка должна быть подключена, иначе вы не увидите истинной формы напряжения.
![]() |
|
Рисунок 6. | Подключение щупов и нагрузки. |
На Рисунке 7 показана форма выходного напряжения при диммировании 50%. Можно расширить код и добавить две кнопки для увеличения и уменьшения выходной мощности. Вы можете разработать код и изменить его в соответствии с вашей собственной платой Arduino и вашими конкретными потребностями.
![]() |
|
Рисунок 7. | Форма выходного напряжения при диммировании 50% (dim = 5000). |