Управление скоростью вращения вентилятора с помощью Arduino и симистора

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

Внешний вид проекта управления скоростью вращения вентилятора с помощью Arduino и симистора

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

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

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

Принцип управления вентилятором переменного тока с помощью Arduino

Данный принцип управления мы разделим на следующие 4 части:

  1. Детектор перехода через ноль.
  2. Схема управления углом сдвига фаз.
  3. Потенциометр для управления скоростью вращения вентилятора.
  4. Схема генерации ШИМ сигнала.

Рассмотрим эти этапы более подробно.

1. Детектор перехода через ноль

В нашей домашней сети напряжение переменного тока составляет 220 В, которое изменяется с частотой 50 Гц. Полярность этого сигнала периодически изменяется: в первой половине периода ток течет в одном направлении – возрастает, достигает своего максимального значения, и затем снова уменьшается до нуля. Затем в следующем полупериоде ток начинает течь в обратном направлении (отрицательном), достигает своего максимума и затем снова возвращается к нулю. Для управления скоростью вращения вентилятора нам необходимо будет управлять пиковыми значениями тока в обоих полупериодах. Для этого нам необходимо будет знать точку перехода через ноль (zero voltage crossing) сигнала.

На рисунке ниже представлена схема детектора перехода через ноль, которая как раз и предназначена для обнаружения этой самой точки. В этой схеме на первом этапе напряжение понижается с 220 В до 9 В с помощью понижающего трансформатора и затем оно подается на контакты 1 и 2 оптопары 4N25. В составе оптопары 4N25 есть светодиод, который подключен к ее контактам 1 и 2. Следовательно, когда напряжение переменного тока приближается к нулю, светодиод в составе оптопары выключается, транзистор оптопары закрывается и на выходе схемы будет напряжение 5V. А когда напряжение переменного тока достигает своего максимума, светодиод в составе оптопары загорается, транзистор оптопары открывается, и на выходе схемы будет напряжение 0V. Таким образом, сигнал с выхода этой схемы можно непосредственно подавать на плату Arduino и с ее помощью можно будет обнаруживать эти переходы напряжения переменного тока через ноль.

Схема детектора перехода через ноль

2. Схема управления углом сдвига фаз

После обнаружения момента перехода сигнала через ноль нам необходимо будет управлять промежутками времени, в течение которых на двигатель вентилятора необходимо будет подавать напряжение, и промежутками, в течение которых на двигатель вентилятора не надо будет подавать напряжение (интервалы ON и OFF). Таким образом, мы получим своеобразный ШИМ сигнал, с помощью которого будет происходить управление скоростью вращения вентилятора. Для формирования этого сигнала в нашем проекте мы будем использовать симистор BT136, который отлично подходит на роль электронного переключателя мощности для сигнала переменного тока.

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

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

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

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

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

Оптопара

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

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

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

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

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

4. Схема генерации ШИМ сигнала.

На заключительном этапе импульс ШИМ сигнала подается на симистор, с помощью которого происходит его отпирание/запирание, и, соответственно, симистор производит управление скоростью вращения вентилятора путем регулировки количества мощности, подаваемого на него. ШИМ сигнал формируется платой Arduino. Более подробно о формировании ШИМ сигнала с помощью платы Arduino можно прочитать в этой статье.

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

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

Схема управления скоростью вращения вентилятора с помощью платы Arduino и симистора

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

Внешний вид конструкции нашего проекта

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

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

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

Первым делом в программе мы должны объявить все используемые переменные. В нашей схеме симистор BT136 подключен к контакту 6 платы Arduino. А в переменной speed_val мы будем хранить значение скорости вентилятора.

Далее, в функции setup мы зададим режим работы для контакта, к которому подключен симистор, на вывод данных. Затем мы сконфигурируем обработку сигнала прерывания на контакте 3 платы Arduino, с помощью функции attachInterrupt. На этот контакт будет подаваться сигнал с выхода схемы детектора обнаружения перехода сигнала через ноль. В качестве функции обработчика прерывания будет использоваться функция zero_crossing. Если вы мало знакомы с прерываниями, то на нашем сайте вы можете прочитать руководство по прерываниям в Arduino для начинающих.

Внутри функции loop мы будем считывать аналоговое значение напряжения с выхода потенциометра, подключенного к контакту A0, и преобразовывать его в диапазон 10-49 с помощью функции map.

Чтобы понять почему выбран этот диапазон, мы должны произвести ряд вычислений. Ранее в нашей статье мы говорили, что каждая половина цикла сигнала переменного тока частотой 50 Гц эквивалентна 10,000 микросекунд. Следовательно, управление скоростью вращения вентилятора мы можем осуществлять только с частотой 50 шагов (Гц), которое является обязательным и не может быть изменено в нашей программе. Следовательно, минимальным количеством шагов в нашем проекте мы выберем 10 поскольку значения 0-9 шагов будут обеспечивать примерно такой же уровень мощности, а в качестве максимального количества шагов мы выберем значение 49 поскольку максимальное значение 50 в большинстве случаев использовать не рекомендуют.

Длительность каждого шага определим по следующей формуле: 10000/50= 200 микросекунд.

На заключительном шаге запрограммируем функцию для обработки прерывания zero_crossing. В этой функции мы время регулировки (то есть часть времени из полного цикла сигнала переменного тока частотой 50 Гц, в течение которого подается напряжение на вентилятор) рассчитаем при помощи умножения длительности шага (200 микросекунд) на количество шагов. После окончания данного времени мы будем подавать на симистор импульс длительностью 10 микросекунд – его будет вполне достаточно чтобы включить (открыть) симистор.

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

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

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

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

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