Ардуино pwm вентилятор

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

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

Предупреждение : в рассматриваемом проекте используется работа с напряжением переменного тока 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 и симистора.

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

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

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

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

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

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

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

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

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

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

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

Источник

Вентилятор на Arduino Uno, управляемый с помощью температуры

В этом проекте на Arduino мы будем управлять скоростью вращения вентилятора постоянного тока в соответствии с температурой в комнате и показывать изменения этих параметров (температуры и скорости вращения вентилятора) на жидкокристаллическом (ЖК) дисплее 16×2. В проекте будет происходить обмен данными между Arduino, ЖК дисплеем и датчиком температуры DHT11. Управлять скоростью вращения вентилятора постоянного тока мы будем с помощью широтно-импульсной (ШИМ) модуляции, с помощью которой можно управлять средним значением напряжения, подаваемого на вентилятор.

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

  1. Плата Arduino UNO (купить на AliExpress).
  2. Датчик температуры и влажности DHT11 (купить на AliExpress).
  3. Транзистор 2n2222 (купить на AliExpress).
  4. ЖК дисплей 16×2 (купить на AliExpress).
  5. Вентилятор постоянного тока.
  6. Резистор 1 кОм (купить на AliExpress).
  7. Батарейка на 9 В.
  8. Соединительные провода.

Принципы ШИМ модуляции

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

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

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

Пример ШИМ модуляции на цифровом осциллографе представлен на следующем рисунке.

Скорость вращения вентилятора и соответствующие ей значения ШИМ и ее коэффициента заполнения представлены в следующей таблице.

Температура Цикл занятости ШИМ Значение, передаваемое в функцию управления ШИМ в Arduino Скорость вращения вентилятора
менее 26 0% 0 выключен
26 20% 51 20%
27 40% 102 40%
28 60% 153 60%
29 80% 204 80%
больше 29 100% 255 100%

Что такое ШИМ? Простыми словами это такая технология, с помощью которой мы можем управлять напряжением или мощностью. К примеру, мы подаем на электродвигатель напряжение 5 Вольт, которое будет заставлять его вращаться с некоторой скоростью. Если после этого мы снизим подаваемое напряжение на 2 Вольта (т. е. до 3 Вольт), то скорость вращения электродвигателя также уменьшится. Более подробно об использовании ШИМ можно прочитать в следующей статье: управлению яркостью свечения светодиода с помощью ШИМ.

Основная идея ШИМ состоит в использовании цифровых импульсов с определенным коэффициентом заполнения (циклом занятости), который и будет отвечать за скорость вращения вентилятора.

К примеру, мы будем использовать ШИМ с коэффициентом заполнения 50% — это будет означать что на управляемое устройство мы будем подавать половину максимального напряжения импульса.

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

Duty Cycle= Ton/T

где T – общее время импульса Ton+Toff (сумма его активного и пассивного состояния)
Ton – время активного состояния импульса (означает 1 )
Toff – время пассивного состояния импульса (означает 0)

Более наглядно это представлено на следующих рисунках.

Работа схемы

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

ЖК дисплей подключен к плате Arduino в 4-битном режиме, более подробно об этом можно прочитать в статье про подключение ЖК дисплея к Arduino. Контакты ЖК дисплея RS, EN, D4, D5, D6 и D7 подсоединены к цифровым контактам Arduino 7, 6, 5, 4, 3 и 2. Датчик DHT11 подсоединен к контакту 12 Arduino через подтягивающий резистор. Контакт 9 Arduino используется для управления скоростью вращения вентилятора (с помощью транзистора).

Исходный код программы

Сначала мы произведем подключение библиотек для работы с ЖК дисплеем и датчиком температуры (dht), а затем инициализируем контакты для подключения ЖК дисплея, датчика температуры и вентилятора.

Затем инициализируем все остальные нужные нам вещи в секции setup. А затем в секции loop мы будем использовать dht-функции для считывания значений с датчика температуры, извлекать из этих значений температуру, переводить ее в температуру по шкале Цельсия и отображать ее значение на ЖК дисплее.

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

Для генерации ШИМ мы будем использовать функцию analogWrite(pin, PWM value). Мы будем использовать все 8 бит. Значение ШИМ будет эквивалентно аналоговому значения напряжения. То есть, к примеру, если мы хотим сгенерировать ШИМ с коэффициентом заполнения 20%, то мы в эту функцию (analogWrite) должны передать значение 255/5.

Источник

Adblock
detector