Симисторный регулятор мощности arduino. Световой диммер управляемый Arduino

Переключение нагрузки переменного тока с использованием Arduino довольно просто: используется либо механическое реле, либо твердотельное реле с оптически изолированным симистором. Становится немного сложнее, если необходимо уменьшать яркость лампы переменного тока используя Arduino: просто ограничивать ток симистором не представляется возможным из-за необходимости в мощном симисторе, и как следствие необходимости рассеивания большого количества тепла, а также это не эффективно с точки зрения использования энергии.

Правильным способом реализации является применение регулирования фазы: Симистор полностью открыт, но только в части синусоидальной волны переменного тока.
Можно просто открывать симистор на некоторое количество микросекунд при помощи Arduino, но проблема в том, что непредсказуемо в какой части синусоидальной волны симистор открывается и, следовательно, уровень затемнения непредсказуем. В синусоидальной волне необходима точка отсчета.

Для этого необходим детектор пересечения нуля. Это схема, которая сообщает Arduino (или другому микроконтроллеру), когда синусоидальная волна проходит через нуль и, следовательно, дает определенную точку на этой синусоидальной волне.

Открытие симистора на некоторое количество микросекунд, начиная от пересечения нуля, дает предсказуемый уровень затемнения.
Такую схему легко сделать: пересечение нуля берётся непосредственно из выпрямленного сетевого переменного тока - конечно через оптрон, и дает сигнал каждый раз, когда волна проходит через нуль. Так как синусоида сначала проходит двухфазное выпрямление, сигнал пересечения нуля подается независимо от того, вверх или вниз идет синусоидальная волна. Затем этот сигнал может быть использован для вызова прерывания Arduino.

Само собой разумеется, что должна быть гальваническая развязка между Arduino и сетью. Для тех, кто не понимает "гальваническая развязка", это значит "без металлических соединений", то есть ---> оптопарами.

Схема изображенная здесь делает именно это. Сетевое напряжение 220 Вольт идет к мостовому выпрямителю через два резистора 30кОм, который выдает двухфазный выпрямленный сигнал на оптрон 4N25. Светодиод в этом оптроне при низком уровне работает на частоте 100 Гц, а на коллекторе выходит сигнал высокого уровня с частотой 100 Гц в соответствии с синусоидальной волной. Сигнал с 4N25 подается на прерывающий вывод в Arduino (или другого микропроцессора). Программа прерываний дает сигнал определенной длины на один из портов ввода/вывода. Сигнал с порта ввода/вывода сигнала уходит в нашу схему и открывает светодиод в MOC3021, который запускает оптотиристор. Светодиод последовательно MOC3021 указывает, проходит ли ток через MOC3021. Имейте в виду, что при затемнении, свечение будет не очень видно из-за коротких вспышек. Если вы решили использовать тиристорный переключатель непрерывно, то светодиод будет гореть ясно.

Имейте в виду, что только обычные лампы накаливания действительно подходят для затемнения. Схема также будет работать с галогенной лампой, но это сократит срок службы галогенной лампы. Она не будет работать с любыми КЛЛ лампами, если они специально не сделаны с возможностью диммирования.

Если у вас есть оптрон H11AA11, то его использование описано ниже.
Предупреждение: Эта схема работает с напряжением 110-220В. Не делайте её, если вы не уверены в своих действиях. Отключайте её, прежде чем приблизиться к печатной плате. Радиатор симистора подключен к сети. Не прикасайтесь к нему во время работы и сделайте для него надлежащий корпус.

Эта схема безопасна, если она собрана человеком, который знает, что делает. Если вы понятия не имеете об этом или сомневаетесь в своих действиях, то вы можете погибнуть!

Материалы

Детектор пересечения нуля
4N25 или H11AA11 (см. текст).
Резистор 10кОм.
Мостовой выпрямитель 400В.
2x Резистор 30кОм 1/2 Вт (Скорее всего на каждом резисторе будет рассеиваться 200mW).
1 разъем.
Стабилитрон 5,1В(опционально).

Драйвер лампы
Светодиод
MOC3021
Резистор 220 Ом (я использовал 330 Ом, и всё хорошо работало).
Резистор 470 Ом-1кОм (Я закончил с использованием 560 Ом, и всё хорошо работало)
Симистор TIC206
1 разъем

Прочее
Кусок текстолит 6x3см.
Провода.

Плата

Я сделал плату при помощи и вытравил её в растворе солянной кислоты и перекиси водорода. В интернете есть много . Вы можете сделать плату, используя прилагаемый рисунок ПП. Сборка платы достаточно проста. Я использовал панельки для оптронов и мостового выпрямителя. Скачать рисунок платы и его зеркальную версию можно внизу статьи.

Примечание: рисунок платы имеет текст. В незеркальной версии рисунка текст зеркален, а в зеркальной версии рисунка текст не зеркален. Это правильно. При ЛУТ, отпечатанный рисунок переноситься непосредственно на медь, где он и выглядит правильно.

Я использовал TIC206. Он может выдавать 6 ампер. Имейте в виду, что проводники платы не выдержат 6 ампер. При подключении мощной нагрузки припаяйте провод на проводники от симистора к разъемам и на проводники ко вторым разъемам.

Если неясно значение контактов: сверху вниз по второй фотографии:
+5 вольт.
Сигнал прерывания (Digital Pin 2 Arduino).
Сигнал для симистор (выходит из Digital Pin 3 на Arduino).
GND.

ПРИМЕЧАНИЕ:
Если у вас есть оптрон H11AA11, то вам не нужен мостовой выпрямитель. H11AA11 имеет два не параллельных диода, и может работать с переменным током. Он совместим по выводам с 4N25, просто вставьте его в припоя и 2 перемычки между R5 и + и R7 и -.

Программа

Программа довольно проста. Нулевой Х сигнал генерируется в прерывании. Затем в прерывании симистор переключается на определенное время. Программа доступна ниже.

О программе: Теоретически в цикле можно было позволить переменной "i" начинается с "0 ". Однако, поскольку времени на прерывание мало, использование "0"(полностью вкл.) может немного испортить время. То же самое касается 128(полностью выкл.), хотя это кажется менее критичным. Точность "5" или, возможно, "1" является пределом настройки. Ваш диапазон может быть, например, от 2 до 126, вместо 0-128. Если у кого-то есть более точный способ настройки времени прерывания, я буду рад услышать его.

Результаты и применение

Посмотрите короткое видео о работе устройства, записанное на мобильный телефон.

Подобным способом можно сделать схему для смешивания RGB светодиодов. Это также возможно с текущей схемой, но необходимы две дополнительных симисторных схемы. Разумеется, нужен только один детектор пересечения нуля.

Также возможно сделать традиционную (назовем ей старомодной) гирлянду для рождественской елки, работающую непосредственно от 220 (или 110) вольт. Повесьте 3 провода с разными лампами на дерево и регулируйте их при помощи этой схемы с двумя дополнительными симисторными схемами.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
T1 Симистор TIC206 1 В блокнот
T4 Оптопара

MOC3021M

1 В блокнот
T5 Оптопара

4N25M

1 В блокнот
BR1 Диодный мост 400 В 1 В блокнот
Резистор

220 Ом

1 В блокнот
Резистор

1 кОм

1

Продолжение разработки контроллера, начатой в уроке 36. Напишем программу для регулятора мощности на элементе Пельтье. Узнаем что такое интегральный регулятор.

Охлаждающая способность элемента Пельтье (холодильная мощность) связана с электрической мощностью на элементе. Поэтому регулировка температуры в камере должна производиться за счет изменения электрической мощности на модуле Пельтье. Т.е. нам нужен регулятор ни напряжения, ни тока, а именно мощности.

Будем разрабатывать регулятор мощности, но сначала узнаем минимальные сведения о регуляторах.

Общие сведения о регуляторах.

Регулятор это устройство, которое поддерживает определенные параметры объекта на заданном уровне. Регулятор следит за состоянием объекта и вырабатывает управляющие воздействия для того, чтобы обеспечить стабильность параметра регулирования.

Я хорошо помню, что первая система регулирования, которую нам в институте представил преподаватель ТАУ (теория автоматического управления) был механизм поддержания уровня воды сливного бачка. Когда уровень воды достигает заданного значения, поплавок поднимается и клапан, связанный с его рычагом, перекрывает поток воды. Если уровень воды снизится, то поплавок опустится и клапан откроет воду.

В любом регуляторе надо четко выделить, что мы регулируем и с помощью чего мы регулируем. Т.е.

  • регулируемый параметр;
  • и регулирующий элемент.

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

Для нашего регулятора мощности:

  • регулируемый параметр – электрическая мощность на нагрузке;
  • регулирующий элемент – широтно-импульсный модулятор.

Кто-то задастся вопросом, что является регулирующим элементом в нашей системе – коэффициент заполнения ШИМ или ключевой транзистор электронной схемы. Алгоритм регулятора мы реализуем программным способом. Для программы регулирующий элемент – коэффициент заполнения ШИМ.

Подавляющее большинство регуляторов используют обратную связь для того чтобы узнать состояние регулируемого параметра и компенсировать внешние возмущения.

В нашем случае на регулятор поступает измеренная мощность с выхода системы и заданное значение мощности. По определенному алгоритму регулятор вычисляет значение коэффициента заполнения ШИМ, за счет которого и меняется мощность на нагрузке.

Как у всего на свете у регулятора есть критерии оценки качества. Это:

  • Скорость регулирования (быстродействие) – время уменьшения ошибки регулирования до заданной величины.
  • Точность регулирования – ошибка параметра регулирования в установившемся состоянии.
  • Устойчивость регулятора – отсутствие колебаний параметра регулирования.

И еще. Мы реализуем алгоритм регулирования программным способом. Это значит, что у нас будет дискретный по времени регулятор. Управление будет происходить в отдельные моменты времени. В программе контроллера мы определили временную дискретность регулятора мощности 20 мс.

Интегральный регулятор.

Другие законы регулирования мы рассмотрим в следующем уроке, когда будем разрабатывать ПИД (пропорционально-интегрально-дифференцирующий) регулятор температуры. Сейчас мы говорим только об интегральном законе регулирования.

Итак, мы должны поддерживать значение мощности на выходе, меняя ШИМ. Самый простой, интуитивный способ это:

  • сравнить заданную мощность с измеренной;
  • если заданное значение больше реального, то ШИМ увеличить на 1 ;
  • если заданное значение меньше реального, то ШИМ уменьшить на 1.

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

Для более качественного регулирования необходимо прибавлять к текущему значению ШИМ величину, зависящую от ошибки параметра регулирования.

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

  • Kw – коэффициент заполнения ШИМ;
  • Ki – интегральный коэффициент;
  • e(t) – ошибка рассогласования, т.е. разница между заданным и реальным значениями регулируемого параметра.

Выходная функция интегрального регулятора пропорциональна интегралу по времени от отклонения регулируемого параметра.

Интегральный регулятор это регулятор последовательного приближения. Большая ошибка – он изменяет ШИМ большими шагами. Маленькая ошибка он медленно ее компенсирует. Ошибка накапливается в интеграторе и сколь малой она не была бы, все равно со временем она окажет воздействие на регулирующий элемент.

В более понятном виде, близком к дискретной реализации схема интегрального регулятора выглядит так.

  • Вычисляется ошибка рассогласования e, как разность между заданной мощностью Pset и измеренной на выходе Preal: e = Pset – Preal.
  • Ошибка рассогласования e умножается на интегральный коэффициент Ki и накапливается в регистре-интеграторе RgI.
  • Целые разряды регистра поступают на широтно-импульсный модулятор.

Как правило, интегратор имеет достаточно большую разрядность с дробной частью. А ШИМ может воспринимать только целые значения. Здесь нет противоречия. Значения меньше еденицы постепенно накапливаются в интеграторе и переходят в целую часть, а значит и в ШИМ. Это позволяет при малых ошибках рассогласования или малом значении Ki уменьшать быстродействие регулятора. Малые значения будут долго переходить в целую часть.

Интегральные регуляторы обладают:

  • высокой точностью;
  • низкой скоростью регулирования;
  • посредственной устойчивостью, зависящей от скорости регулирования.

Почему для регулятора мощности на элементе Пельтье мы выбрали именно интегральный закон управления.

  • Элемент Пельтье меняет свои параметры в зависимости от температуры. Но происходит это крайне медленно. Быстрый регулятор нам просто не нужен.
  • Более того резкое изменение мощности на элементе Пельтье ведет к деградации полупроводниковых кристаллов модуля. Из-за резких изменений температуры в местах спайки полупроводников возникают механические напряжения, что ведет к снижению эффективности элемента и даже выходу его из строя. Поэтому как бы быстро не менял регулятор температуры заданное значение для регулятора мощности необходимо, чтобы изменение мощности на элементе Пельтье происходило плавно.
  • Есть еще конденсатор большой емкости на выходе регулятора, который также лучше заряжать медленно.

Например, при включении питания при не охлажденной камере холодильника регулятор температуры должен включить элемент на полную мощность. Необходимо, чтобы это произошло не мгновенно, а в течение нескольких секунд.

Ко всем этим требованиям идеально подходит именно интегральный регулятор. Более того коэффициент Ki мы специально снизим, чтобы обеспечить медленное изменение мощности на нагрузке.

Программа регулятора мощности.

Регулятор добавим в программу из предыдущего урока. Напомню, что в ней мы создали структуру программы контроллера и реализовали измерение напряжения, тока и мощности на нагрузке.

Нам нужны следующие переменные и константы:

float measureP; // измеренная мощность на нагрузке, Вт – эта переменная в программе уже есть.

float setPower; // заданная мощность
float regPwrInt=0; //
#define koeffRegPwrInt 0.05 //

Сам регулятор уместился в одну строку:

И еще надо перегрузить целую часть из интегратора в ШИМ:

analogWrite(9, (unsigned int) regPwrInt); // ШИМ

В принципе эта программа уже работает. Можно временно задать мощность равной, например, 5 Вт:

setPower = 5; // временно заданная мощность 5 Вт

вставить регулятор в цикл 20 мс и проверить. Но не хватает еще кое-каких операций.

Ограничение интегратора.

Мы работаем с реальной схемой. Допустим, задана мощность, которую регулятор не способен обеспечить, например, 50 Вт. Регулятор должен сформировать максимальный ШИМ. Но интегральное звено нашего регулятора будет продолжать увеличиваться. Когда оно превысит максимально-допустимое значение ШИМ (у нас это 255), ШИМ перестанет правильно работать. Скорее сбросится в 0 и опять начнет увеличиваться. Т.е. необходимо ввести ограничения интегрального звена. Оно не должно быть больше максимального значения ШИМ и не допустимо, чтобы оно стало отрицательным.

if (regPwrInt < 0) regPwrInt=0; // ограничение снизу
if (regPwrInt > ограничение сверху

"Мертвое время" ШИМ.

Есть еще одна тонкость работы с ШИМ. Импульсы на выходе ШИМ переключают реальный ключ. При уменьшении коэффициента заполнения импульсы включения ключа могут стать очень короткими. Для нашего ШИМ значение 1 соответствует импульсу длительностью 62,5 нс. За такое короткое время ключ не успеват открываться полностью и нормально работать не будет. Скорее всего при нашем низковольтном питании (12 В) беды не случится. Но в высоковольтных цепях источников питания (300 В и более) такая коммутация приводит к катастрофическим последствиям. Поэтому хороший стиль управления ШИМ – это запрет слишком коротких импульсов управления.

Введем два временных отрезка, на которых запретим работу ШИМ. Один отрезок вблизи нуля, второй около максимального значения. Общепринято длительность этих отрезков называть “мертвым временем” ШИМ (dead time). Алгоритм простой:

  • Если значение ШИМ меньше “мертвого времени”, то ШИМ равен 0.
  • Если значение ШИМ больше разницы максимального ШИМ и “мертвого времени”, то ШИМ равен максимальному значению.

Реализация этого алгоритма в программе выглядит так:


if (pwm < DEAD_TIME) pwm=0;
if (pwm >
analogWrite(9, pwm); // ШИМ

Я задал “мертвого времени” равным 500 нс:

#define DEAD_TIME 8 // мертвое время ШИМ (* 62,5 нс)

Выключение регулятора.

Последнее, что надо добавить это быстрое выключение регулятора. Я говорил, что регулятор должен медленно изменять мощность на элементе Пельтье. Но это не касается аварийного выключения. При setPower=0 будем выключать регулятор мгновенно.

Полностью программный блок интегрального регулятора мощности выглядит так:

//------------------ регулятор мощности
if (setPower != 0) {
regPwrInt = regPwrInt + (setPower - measureP) * koeffRegPwrInt;
if (regPwrInt < 0) regPwrInt=0; // ограничение снизу
if (regPwrInt > MAX_PWM) regPwrInt=MAX_PWM; // ограничение сверху
// мертвое время ШИМ
unsigned int pwm = (unsigned int)regPwrInt; // перевод в ШИМ
if (pwm < DEAD_TIME) pwm=0;
if (pwm > (MAX_PWM - DEAD_TIME)) pwm=MAX_PWM;
analogWrite(9, pwm); // ШИМ
}
else { // выключение
regPwrInt=0;
analogWrite(9, 0); // ШИМ
}

Serial.print(" p="); Serial.print(regPwrInt, 2); // интегральное звено регулятора мощности

И оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!

Проверка и настройка регулятора.

Теперь проверим работу регулятора на реальной нагрузке и определим интегральный коэффициент.

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

Сначала я задал интегральный коэффициент равным 0,1.

#define koeffRegPwrInt 0.1 // интегральный коэффициент регулятора мощности

Запустил монитор последовательного порта и увидел такую картину.

Регулятор работает. Заданную мощность (5 Вт) устанавливает за 14-15 сек.

Замкнул один резистор. Мощность резко изменилась, но регулятор за 5-6 сек привел ее в норму.

Работает устойчиво. Об устойчивости надо судить по изменению целой части интегрального звена, т.е. ШИМ. В идеальном регуляторе ШИМ должен меняться на 1. Ток, а значит, и мощность “скачут” из-за не очень точной дискретизации АЦП при малых значениях. В принципе этот коэффициент (0,1) нас устраивает. Но лучше увидеть границы устойчивой работы регулятора и задать его с запасом.

Установил интегральный коэффициент равным 1 и увидел следующее.

Мощность устанавливается на заданном уровне примерно за 1 сек и регулятор продолжает работать устойчиво.

Теперь коэффициент 10.

Работает еще быстрее, но ШИМ начал “скакать” на 2-5 единицы. Регулятор работает неустойчиво. Такой коэффициент использовать нельзя.

Чисто в демонстративных целях я задал коэффициент равным 20.

Колебания достигли 30 единиц ШИМ. Вот осциллограмма напряжения на выходе. Все пошло в разнос.

Выбирайте коэффициент сами. Я думаю, что он не должен превышать 0,5. Я пока установил медленный коэффициент 0,05.

Регулятор устанавливает заданную мощность 5 Вт за 30 сек. При большей мощности будет работать еще медленнее. Но тем лучше для элемента Пельтье. Да и коэффициент всегда можно изменить.

Резюме.

Ардуиноуправляемая энергия!

Внимание!

Есть в наличии

Купить оптом

Вы любите программировать микроконтроллеры!? Теперь вы легко можете решать задачи управления мощностью в сети 220В переменного тока. Мы сделали регулятор мощности, который легко подключить к микроконтроллеру, например, плате Ардуино (Arduino). Просто соедините ШИМ-выход микроконтроллера с нашим регулятором мощности и программно управляйте электроприборами: плавно включайте электродвигатели, регулируйте температуру нагрева и многое другое.

Внимание!

В некоторых инструкциях к устройству, в схеме подключения была допущена опечатка. В связи с невозможностью замены инструкции, во всех имеющихся упаковках, просим при подключении использовать схему с сайта.

Технические характеристики

Особенности

  • Питание от управляющей платы микроконтроллера
  • Возможность регулировки оборотов асинхронных двигателей.
  • Не создает помех в сеть 220В.

Принцип работы

Классический симисторный регулятор мощности с аналоговым входом управления, совместимым с ШИМ - выходами микроконтроллеров. Аналоговая часть модуля питается от вашей платы микроконтроллера (+Vcc). Допустимое напряжение питания +3,3...+5,0 В. При изменении сигнала на аналоговом входе регулятора от 0 до + Vcс мощность в нагрузке меняется от 0 до 100 %

Функции

  • управление мощностью нагрузки

Дополнительная информация

Обращаем ваше Внимание!

При эксплуатации модуля с нагрузкой более 3000 Вт необходимо усилить дорожки печатной платы, идущие к силовому элементу. Для этого необходимо напаять одножильный монтажный провод диаметром 1,5-2 мм от контактов клеммы НАГРУЗКА к контактам выводов СИЛОВОГО элемента.

Модуль рассчитан на работу с ШИМ сигналом частотой 300 Гц.

Проверьте исправность модуля
Снимите джампер.



Замкните перемычкой контакты +VCC и "управление". При этом должна увеличиваться яркость свечения лампы.
Замкните перемычкой контакты GND и "управление". При этом должна уменьшиться яркость свечения лампы.

Схемы

Комплект поставки

  • модуль MP248 - 1 шт. шт.
  • Инструкция - 1 шт. шт.

Подготовка к эксплуатации

  • ВНИМАНИЕ! Перед включением соблюдайте меры безопасности при работе с высоким напряжением.
  • Снимите джампер.
  • Подключите лампу накаливания к модулю.
  • Подключите питание 5В для низковольтной части схемы.
  • Подключите питание 220В для высоковольтной части схемы.
  • Замкните перемычкой контакты +VCC и управление. При этом должна увеличиваться яркость свечения лампы.
  • Замкните перемычкой контакты GND и управление. При этом должна уменьшиться яркость свечения лампы.
  • При установленном джампере включается инверсия управления.
  • Проверка завершена, приятной эксплуатации.

Меры предосторожности

  • Соблюдайте правила работы с высоким напряжением.
  • Соединения производите только при надежно обесточенной сети.
  • Перед использование разместите устройство в корпусе, например пластмассовой монтажной коробке достаточного размера.
  • Обеспечьте достаточную естественную вентиляцию и охлаждение модуля, особенно при управлении мощностями более 100Вт

Техническое обслуживание

  • На плате присутствует высокое напряжение, опасное для жизни. Соблюдайте меры безопасности при работе с электроустановками.

Вопросы и ответы

  • Добрый день! Я правильно понимаю, что управлевние мощностью возможно как с помощью ШИМ, так и аналоговым сигналом, при этом скважность выходного сигнала ШИМ на симистор будет соответствовать уровню аналогового сигнала в процентах от напряжения питания?
    • Этот модуль рассчитывался на работу с ШИМ Ардуино 300 Гц. С другими не пробовали. Но, в принципе, должно работать, потому что за основу берется аналоговый сигнал, а не длительность импульса и частота.
  • Добрый день! Можно ли данным устройством с Ардуино управлять оборотами э/двигателя постоянного тока 12В (вентилятор печки автомобиля)
    • Устройство предназначено для управления нагрузкой только в цепи переменного тока 220В.
  • В моем регуляторе без нагрузки 190 В, а под нагрузкой лампочка,еле светится спираль.
    • Проверьте наличие резистора R10 - 10кОм и электролитического конденсатора C5 - 100мкФх16В, по возможности установите их и проверьте работу устройства.
  • Добрый день. Приобрел у вас данный регулятор. Но почему то перемычка слева от входа управления не распаяна и отсутствует на входе конденсатор. И пока не перемкнул перемычку - регулятор на управление никак не реагировал. В инструкции про это - ни слова. Почему?
    • Вам необходимо установить C5 - 100мкФх16В, R10 - 10кОм Если такой возможности нет, сдавайте по месту приобретения на ее основании будет выполнен ремонт или замена на новый модуль..ru они подскажут ваши действия.
  • Добрый день. Можно ли данный регулятор использовать как и другие с переменным резистором? Или для управления всё же понадобится 5 в и перемычки(кнопки) на управляющий контакт?
    • Все верно, для использования в режиме диммера, потребуется внешнее питание 5В и кнопки.

Рассмотрим один интересный и полезный вопрос. Диммер для регулировки нагрузкой переменного тока при помощи arduino. То есть это плавный контроль таких сетевых приборов, как лампы, нагреватели в виде тэнов или тёплых полов.
Пару недель назад на втором канале, который полностью посвящен программированию arduino, вышел видос про управление нагрузкой постоянного тока при помощи шим- сигнала. То, что смотрите сейчас, тоже должно было выйти на том канале. Но решил опубликовать его.

Радиодетали, компоненты и приборы в этом китайском магазине .

Переменный ток в розетке представляет собой синусоиду, то есть напряжение меняется во времени постоянно, и каждые 10 миллисекунд равно нулю. Если смотрели видео про шим-сигнал, то поймете, что так взять и начать регулировать синусоиду не получится.

Устройство, которое будем делать, называется диммер. В него входят обычные синусоиды из розетки и выходят обрезанные. Диммер не пропускает часть синусоиды. И чем больше эта часть, тем меньше среднее напряжение. Изменяя промежутки, когда напряжение равно нулю, будем регулировать суммарное выходное напряжение. Открывает и закрывает напряжение такая железяка, как симистор. Они есть в разных корпусах и на разный ток. Например, крупный парнишка может пропустить через себя 40 ампер при напряжении 800 вольт. Что как бы около 30 квт.

Чтобы управлять симистором в нужные моменты времени, понадобится пакетик рассыпухи. Несколько резисторов и две оптопары. Всё это можно за копейки купить в любом магазине радиодеталей или на радиорынке. Для удобства подключения можно взять клеммы. А собирать всю схему можно на макетной плате. Схема подключения, выглядит следующим образом.

Симистор разрывает сеть 220в, arduino будет его открывать и закрывать через оптопару. То есть сама arduino будет оптически развязана сетевым напряжением в целях нашей безопасности. И важный момент. Чтобы вовремя открывать симистор, arduino должна знать, когда напряжение сети проходит через 0. Для этого стоит вторая оптопара, подключенная в противоположную сторону. И на выходе из нее получаем сигнал каждый раз, когда напряжение в сети проходит через 0. И управляем симистором через верхнюю оптопару. Алгоритм работы чуть позже.

Соберем схему в железе

В идеале такие вещи нужно делать на печатной платье. Об на канале скоро отдельный цикл видео уроков. Покажем, как разводить платы и как травить. Ну а пока не умеем делать печатные платы, есть ещё два пути. Первый, это собрать схему на макетной плате. Чем займемся через минуту. И второй – заказать изготовление плат у китайцев. Сделал несколько вариантов плат на платформе easyeda. Первая – на маленьком семисторе, вторая – на большом семисторе. И третья, это трехканальный диммер. У которого есть один общий вход и один общий выход детектора нуля. Три выхода под нагрузку и 3 pin под управление тремя симисторами arduino. Схему легко масштабировать и сделать диммер на любое число каналов.

Чтобы заказать платы, нужно вытащить из проекта gerber- файлы. Нажимаем кнопочку и попадаем на страницу заказа плат у сервиса easyeda. И нажимаем кнопочку скачать gerber- файлы. Они скачаются одним архивом. Идем на сайт сервиса lg psb. Это один из дешевых и крупнейших сервисов изготовления печатных плат в промышленных масштабах c доставкой. Для начала залогинимся на всякий случай. Переходим в корзину и добавляем новый заказ. И добавляем gerber- файл, то есть, тот самый архив. Плата однослойная. Выбираем один слой. Размеры, как можете видеть, поставились автоматически. Количество – мнимум можно заказать 5 штук. Толщина текстолита, цвет. Пусть красный. Это цвет маски, которой покрыта плата. Выбирается припой, которым будут покрыты дорожки. Это оловянно-свинцовый, безсвинцовый и ещё, который не знаем. Дальше толщина медной фольги не текстолите. Ну цена почему-то меняется в два раза. Идут золотые пальчики. Это гребенка вставлять плату в разъем. Потом можно получить плату в таком виде. И еще можно обрезать крайние контакты. Но ничего из этого не нужно. Всё сохраняем корзину. Как можете видеть, цена за 5 плат составляет 2 бакса. То есть это примерно 25 рублей за одну плату. Платы промышленного качества достанутся практически даром.

Единственное, доставка. Нужно указать свой адрес. Для удобства обычно пользуемся сервисом транслит, который переводит русские буквы в транслит. Ну и сама доставка. 30 долларов за курьерскую, и стандартная – 250 рублей за отправку по почте. Dhl, с физическим лицами не работают. Если нет знакомых фирмы, то лучше не связываться и подождать пару недель почтой. Оплатить это дело можно по paypal или банковской карты. В общем, печатные платы заказал, и пока они едут, соберем схему на макетке.

Данный проект сборки регулятора переменного тока относится к тем, которые можно собрать на макетной плате, глядя на разводку печатной платы. То есть вставляем компоненты в макетку точно так же, как на печатке. И соединяем все ногами самих компонентов. Вот, например, симистор дотягивается до обоих клеммников и до оптопары. Берем и запаиваем. А еще можно использовать лайфхак из видео про сварочник для аккумуляторов. То есть распечатать разводку платы, приклеить ее на макетку и паять, ориентируясь на дорожки. И спустя 10 минут работы пинцетом и паяльником получается плата. Компактная.
Для соединения использованы многие компоненты. Единственное, надо было соединить общий выход куском медного провода. Важный момент. Паяем с глицериновым флюсом, и его следы можно видеть. Он блестит. Диммер работать с напряжением в 220в и пробивать через флюс, и работать не стабильно. Или вообще сгорит. Поэтому берём зубную щетку и идём чистить. Ну а лишнее отрезаем ножницами по металлу, а ровняем край. И всё, готов диммер. Здорово и компактно.
На обрезке макетки, собрал вариант с большим парнем. Идет прямое подключение к симистору при помощи колодок. Левая – это выход, средняя – вход, а правая – общая для входа и выхода. К ней по схеме только один резистор. Сам симистор приклеен на двухсторонний скотч. В идеале колодки надо было привинтить. Ну и так сойдет. Всё. Припаяно просто, ногами резисторов. Это плата нужна в одном из следующих проектов. Попробуйте угадать в комментариях, что это может быть.
Сейчас наконец посмотрим на алгоритм, по которому работает управление симистором. Так вот, управлять симистором будем с arduino. Прошивки пишутся в специальной программе. Есть два важных момента. Первый – получение сигнала с выхода детектора нуля, который сообщает, что синусоида напряжения сети пересекает напряжение 0 вольт. Выход детектора нуля подключен к обработчику аппаратных прерываний. Это второй pin arduino. И pin подтянут к земле резистором на 10 килоом. Внутренняя подтяжка не справляется. Не знаем почему. В отличие от всех прошивок в интернете, алгоритм не использует задержки. То есть управление симистором не мешает выполнению остального кода программы. Реализована это при помощи таймера таймер-1. Так как использование обычных счетчиков приведет к некоторым мерцаниям через каждые несколько минут.
Для удобной работы с таймером используем шуструю библиотеку сайберлип. В общем, суть такая, как только обнаруживается переход через ноль снизу, это точка, таймер запускает на время диммирования, и прерывание перенастраивается на переход напряжения через ноль сверху вниз. И время пошло. После срабатывания таймера, симистор открывает ток на потребитель. Как только прерывание замещает переход через ноль сверху вниз, оно останавливает таймер и снова перенастраивается. А также выключает ток через симистор. И так повторяется 50 раз в секунду.

Для регулировки времени, через которое откроется симистор после пересекания через ноль, использован потенциометр. Переменные диммер должны принимать значения от 0 до 255. Это полная и минимальная яркость. И всё. Напомню, что все схемы и скетч можно скачать на странице проекта. Ссылка в описании под видео.

Диммер можно использовать не только для управления яркостью. Гораздо больший интерес представляет система управления нагревательным элементом с обратной связью. Для точного поддержания заданной температуры.
Также диммер можно использовать в системах, таких как умный дом, и контроль этого самого диммера через интернет. Для этого нужно уметь писать программы под windows, android или под веб.

Приехали китайские печатные платы. Повторимся, если вы физическое лицо, то заказывать лучше почтой. Через dhl пришлось прикрываться знакомой фирмой и переоформлять документы на таможне. В общем, такие симпатичные печатки. Если учесть, что они обошлись по 25 руб штука, надеемся, китайцам это хоть чуть-чуть выгодно. Иначе обидно.

Распаяли один диммер и подключаем его к arduino, также как раньше. Двигаем потенциометром, накал лампочки меняется от максимального до еле-еле тлеющего. На самом деле, интересное зрелище.

Наверное, всё видео хотелось посмотреть на реальную форму волны на выходе из диммера. Соответствует ли она картинкам, которые показывал. Воспользуемся дешевым китайским осциллографом, который умеет измерять напряжение до 12 вольт. Стоп. Так делать нельзя. Чтобы измерить сетевое напряжение, нужно воспользоваться штукой, как делитель напряжения. Подойдет соотношение 1 к 20. Чтобы резисторы не грелись, взял номиналы двести и десять килоом. Аккуратненько всё подключаем и только потом включаем в сеть. Это опасно для жизни. И видим ту же самую красоту, как на картинках. Видно, как напряжение в периодах синусоиды появляется, доходит до нуля и пропадает. Чтобы снова включится по таймеру следующим полупериуде. Великолепное зрелище!