Регулятор силы света (диммер) на Arduino и симисторе

В современных домохозяйствах большинство устройств (лампочки, телевизоры, кондиционеры и т.д.) запитываются от напряжения переменного тока. Мы можем управлять включением и выключением этих устройств с помощью платы Arduino и реле, эти способы управления домашними электронными устройствами рассматривались на нашем сайте в проектах автоматизации дома. Но если нам нужно не просто управлять процессами включения/выключения устройств, а нужно еще, к примеру, регулировать яркость свечения лампы или частоту вращения вентилятора, то здесь нам необходимо использовать методы управления фазами и статические переключатели наподобие симисторов (TRIAC) для управления фазами напряжение переменного тока.

Внешний вид регулятора силы света на Arduino и симисторе

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

На нашем сайте вы можете также посмотреть проекты, в которых использовалась регулировка силы света:

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Оптопара MCT2E (купить на AliExpress).
  3. Оптопара MOC3021 (купить на AliExpress).
  4. Симистор (TRIAC) BT136 (купить на AliExpress).
  5. Понижающий трансформатор (12-0V, 500mA) (купить на AliExpress).
  6. Резисторы 1 кОм, 10 кОм, 330 Ом (купить на AliExpress).
  7. Потенциометр 10 кОм (купить на AliExpress).
  8. Лампа переменного тока с держателем (патроном).
  9. Соединительные провода.

Методика обнаружения перехода через ноль

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

Момент перехода через ноль сигнала переменного тока

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

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

Внешний вид, обозначение на схемах и распиновка симистора BT136

Принцип управления симистора переменным током показан на следующем рисунке.

Принцип управления симистора переменным током

Как показано на рисунке, мы можем переключать, к примеру, симистор на угле 90 градусов при помощи подачи отпирающего импульса на его управляющий вывод. В этом случае мы будем подавать ток на лампу только в половине времени положительной полуволны сигнала (на графике время t1), соответственно, лампа будет гореть вполовину мощности. Уменьшая или увеличивая это время мы можем заставить лампу гореть ярче или тусклее.

Частота сигнала переменного тока в нашей сети составляет 50 Гц, соответственно, период сигнала равен 1/f =20 миллисекунд. Значит, половина периода будет равна 10 мс. Поэтому мы можем изменять время t1 на приведенном графике для управления яркостью свечения лампы переменного тока в диапазоне от 0 до 10 мс (10000 мкс).

Оптопара

Внешний вид оптопары MOC3021

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

Схема проекта

Схема регулятора силы света (диммера) на Arduino и симисторе представлена на следующем рисунке.

Схема регулятора силы света (диммера) на Arduino и симисторе

Схема соединения симистора и оптопары показана на следующем рисунке.

Схема соединения симистора и оптопары

Эту схему мы собрали на перфорированной плате, у нас получилась конструкция следующего вида:

Соединение симистора и оптопары на перфорированной плате

Оптопару MCT2E и соединения с ней мы также разместили на перфорированной плате и подсоединили ее к понижающему трансформатору.

Оптопара MCT2E и соединения с ней на перфорированной плате

Конструкция всего проекта в сборе выглядит следующим образом:

Конструкция всего проекта в сборе

Объяснение программы для Arduino

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

В самом начале программы нам необходимо объявить используемые глобальные переменные. Симистор у нас подключен к контакту 4 платы Arduino. В переменной dim_val мы будем хранить значение шага диммирования (регулирования силы света), который мы далее будем использовать в программе.

Далее, в функции void setup() для контакта, к которому подключен симистор, мы зададим режим работы на вывод данных. Затем мы используем функцию attachInterrupt чтобы сконфигурировать контакт 2 на обработку внешнего прерывания. При срабатывании этого прерывания будет вызываться функция обработки прерывания zero_cross.

Внутри функции void loop() мы будем считывать аналоговое значение с потенциометра, подключенного к контакту A0 платы Arduino. Затем мы будем конвертировать это значение в диапазон 10-49. Чтобы вычислить этот диапазон нам пришлось сделать некоторые вычисления. Ранее мы говорили, что каждая половина цикла (периода) волны переменного тока в сети составляет 10 000 микросекунд. К примеру, мы хотим управлять регулировкой силы света с помощью 50 шагов (это значение является произвольным, его вы можете изменить по своему усмотрению). В этом случае мы использовали минимальный шаг, равный 10 (значения от до 9 не рекомендуются в силу ряда физических процессов). А в качестве максимального значения шага мы использовали значение 49.

Время каждого шага можно рассчитать следующим образом: 10000/50=200 микросекунд. В результате этих вычислений мы и написали следующий фрагмент кода:

Теперь все, что нам нужно сделать, это запрограммировать функцию обработки прерывания zero_cross. В ней мы время регулировки (dimming_time) рассчитываем при помощи умножения индивидуального времени шага на число шагов. Далее мы делаем задержку в программе на рассчитанное время и после этой задержки переключаем симистор с помощью небольшого импульса длительностью 10 микросекунд.

Тестирование работы проекта

На следующих трех рисунках показаны 3 степени регулировки яркости лампы переменного тока.

1. Маленький шаг регулировки.

Работа проекта при маленьком шаге регулировки

2. Средний шаг регулировки.

Работа проекта при среднем шаге регулировки

3. Максимальный шаг регулировки.

Работа проекта при максимальном шаге регулировки

Исходный код программы (скетча)

Видео, демонстрирующее работу схемы

(Проголосуй первым!)
Загрузка...
482 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *