Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Управляем вентилятором с помощью Arduino
Хотите автоматизировать работу вентилятора? С помощью Arduino и датчика температуры LM35 это возможно!
При желании для визуализации значения температуры можно использовать LCD-дисплей. Для этого в код включена библиотека LiquidCrystal. Также следует для конкретного типа вентилятора подобрать свой транзистор. В данном случае используется широко распространенный BD139.
Важно задать требуемые значения tempMin и tempMax. Значение tempMin определяет теипературу, при которой вентилятор начинает вращаться, а tempMax представляет температуру, при достижении которой загорится красный светодиод, оповещающий о достижении максимальной температуры. Например, если установить tempMin=30, а tempMax=35, то кулер начнет вращаться при температуре 30°C, и достигнет максимальной скорости при температуре 35°C.
Текущее значение температуры сохраняется в переменной temp, а затем используются структуры if() для сравнения этой переменной с tempMin. Если temp меньше tempMin, то вентилятор отключается. Следующий if() сравнивает, больше ли temp значение minTemp и меньше tempMax. И если это так, то используется функция map() для преобразования temp из одного значения в другое. В нашем случае переменная fanSpeed будет иметь значение 32 при tempMin и 255 при tempMax. Этизначения применяются для управления скоростью вентилятора с помощью ШИМ и функции analogWrite().
fanLCD преобразует temp в диапазон от 0% до 100%, что соответствует полной остановки кулера и максимальной скорости вращения.
RoboCraft
Стоит у меня домашний сервер, и вот проблема: или шумит жутко, или перегревается и виснет. Немного подумав решил что соорудив управление куллерами с этой проблемой хоть не окончательно, но справлюсь.
Контроллер решил использовать в корпксе TQFP32 (ATMEGA168-20AU). Куллеры у меня немного различаются — один имеер 2 вывода (только питание), на втором есть 3й контакт — скорость вращения. Скорость вращения регулировать решил через ШИМ. Отображать решил в процентах. На управление решил сделать два режима:
1)Управляется автоматически, в зависимости от температуры. При 45С скорость 70%. При 50С скорость 78%. Третий показатель температуры задается переменным резистером, и включает вращение на 100%. При этом режиме отображается: текущая температура, заданная температура и скорость куллеров в процентах.
2)Ручное управление. Два потенциометра регулируют скорость вращения каждый своего куллера. При этом режиме отображается: Скорость вращения кулера с датчиком в оборотах в минуту (rpm), скорость вращения в процентах, текущая температура.
Выбор режима управления определяется переключателем, встроенным в один из переменных резистеров. Второй резистер в автоматическом режиме управляет выбором критической температуры. В ручном режиме каждый резистер управляет своим кулером.
Детали использовал:
HL1 = Светодиод по вкусу
HL2 = Светодиод по вкусу
IC1 = DS18B20
IC2 = ATMEGA168-20AU
LCD = WH1602M-YGH-CTK
M1 = Кулер 12v
M2 = Кулер 12В с датчиком
R1 = 1k
R2 = 10k
R3 = 4.7k
R4 = 50KПеременный с выключателем
R5 = 50KПеременный
R6 = 100
R7 = 100
R8 = 10k
R9 = 10k
S1 = Выключатель в резисторе
VD1 = диод любой smd
VD2 = диод любой smd
VD3 = диод любой smd
VD4 = диод любой smd
VT1 = КТ315б
VT2 = КТ315б
X = 16MHz
Схема spl7:
Плата lay
Скетч:
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Регулирование скорости вращения вентилятора с помощью Arduino и триака
Схема управления вентилятором на основе Arduino и симистора своими руками
Любое бытовое устройство легко включить или выключить с помощью переключателя или с помощью некоторого механизма управления, как мы это делали во многих проектах по автоматизации дома на базе Arduino. Но есть много приложений, где нам нужно частично контролировать мощность переменного тока, например, чтобы контролировать скорость вентилятора или интенсивность свечения лампы. В этом случае используется метод ШИМ, поэтому здесь мы узнаем, как использовать сгенерированный Arduino сигнал ШИМ для управления скоростью вентилятора переменного тока.
В этом проекте мы продемонстрируем управление скоростью вращения вентилятора переменного тока с использованием триака (симистора). Здесь метод управления фазой сигнала переменного тока используется для управления скоростью вентилятора переменного тока с использованием сигналов ШИМ, генерируемых Arduino.
Принцип работы можно разделить на четыре части. Они следующие:
- Детектор пересечения нуля
- Фазо-угловая схема управления
- Потенциометр для контроля скорости вращения вентилятора
- Схема генерации сигнала ШИМ
Источник переменного тока, который мы имеем дома, составляет 220 В переменного напряжения с частотой 50 Гц. Этот сигнал переменного тока имеет переменную природу и периодически меняет свою полярность. В первой половине каждого цикла он течет в одном направлении, достигая пикового напряжения, а затем уменьшается до нуля. Затем в следующем полупериоде он течет в альтернативном направлении (отрицательном) к пиковому напряжению, а затем снова обнуляется. Для управления скоростью вентилятора переменного тока необходимо отключить или контролировать пиковое напряжение обоих полупериодов. Для этого нам необходимо определить нулевую точку, с которой сигнал должен контролироваться / прерываться. Эта точка на кривой напряжения, где напряжение меняет направление, называется пересечением нулевого напряжения.
Схема, показанная далее, является схемой детектора пересечения нуля, которая используется для получения точки пересечения нуля. Сначала напряжение 220 В переменного тока понижается до 9 В с использованием понижающего трансформатора, а затем оно подается на оптопару 4N25. Оптрон 4N25 имеет встроенный светодиод с контактом 1 в качестве анода и контактом 2 в качестве катода. Таким образом, согласно схеме ниже, когда сигнал переменного тока приближается к точке пересечения нуля, встроенный в 4N25 светодиод выключается, и в результате выходной транзистор 4N25 также выключается, а вывод выходного импульса подтягивается до 5 В. Аналогично, когда сигнал постепенно увеличивается до пиковой точки, светодиод включается, и транзистор также включается с заземляющим контактом, подключенным к выходному контакту, что делает этот контакт напряжением 0 В. Используя этот импульс, точка пересечения нуля может быть обнаружена с помощью Arduino.
После определения точки пересечения нуля, теперь мы должны контролировать количество времени, в течение которого питание будет включено и выключено. Этот сигнал ШИМ будет определять величину напряжения, выводимого на двигатель переменного тока, который, в свою очередь, контролирует скорость. Здесь используется симистор BT136, который управляет напряжением переменного тока, так как он представляет собой силовой электронный переключатель для управления сигналом переменного напряжения. Симистор – это трехполюсный выключатель переменного тока, который может запускаться сигналом низкой энергии на его клемме затвора. В схеме триака мощность может регулироваться в обоих направлениях.
Как показано на рисунке выше, триак включается при угле 90 градусов при подаче на него небольшого сигнала импульса затвора. Время «t1» — это время задержки, которое дается в соответствии с требованием диммирования. Например, в этом случае угол включения составляет 90, следовательно, выходная мощность также будет уменьшена вдвое, и, следовательно, лампа также будет светиться с половиной интенсивности.
Мы знаем, что частота сигнала переменного тока здесь составляет 50 Гц. Таким образом, период времени будет 1/F, что составляет 20 мс. Для полупериода это будет 10 мс или 10000 микросекунд. Следовательно, для управления мощностью лампы переменного тока диапазон «t1» может варьироваться от 0 до 10000 микросекунд.
Оптрон, также известный как оптоизолятор, используется для поддержания изоляции между двумя электрическими цепями, такими как цепи сигналов постоянного и переменного тока. По сути, он состоит из светодиода, излучающего инфракрасный свет, и фотодатчика, который его обнаруживает. Здесь оптопара MOC3021 используется для развязки схемы управления вентилятором переменного тока от сигналов микроконтроллера, которые являются сигналами постоянного тока.
Также для изменения скорости вращения вентилятора переменного тока здесь используется потенциометр. Мы знаем, что потенциометр – это трехконтактное устройство, которое действует как делитель напряжения и обеспечивает изменяемый выход. Это изменяемое аналоговое выходное напряжение подается на аналоговый вход Arduino для установки значения скорости вентилятора.
На последнем этапе импульс ШИМ подается на триак в соответствии с требованиями к скорости, что, в свою очередь, изменяет время включения/выключения сигнала переменного тока и обеспечивает переменный выход для управления скоростью вентилятора. Здесь Arduino используется для генерации импульса ШИМ, который принимает входной сигнал от потенциометра и передает выходной сигнал ШИМ в цепь симистора и оптопару, которая дополнительно приводит в действие вентилятор переменного тока с желаемой скоростью.
Принципиальная схема системы управления скоростью вращения вентилятора на базе Arduino приведена далее.
После подключения схемы нам нужно написать код для Arduino, который сгенерирует сигнал ШИМ для управления синхронизацией включения/выключения сигнала переменного тока с помощью входа с потенциометра. Полный код этого проекта управления скоростью вращения вентилятора на основе Arduino следующий.
Управление скоростью кулера arduino
Четырёх-проводные вентиляторы для радиаторов охлаждения (CPU FAN) управляются ШИМ сигналом с материнской платы компьютера. Мы будем управлять этим вентилятором с помощью Arduino.
У четырёх-проводных вентиляторов два провода — это питание 12 вольт, 1 провод вывод сигнала с датчика скорости вращения и 1 провод ШИМ управление скоростью вращения. ШИМ — это широтно-импульсный модулированный сигнал, импульсный сигнал у которого частота импульсов не меняется, а меняется только ширина импульсов (скважность).
Рис. 1. Вентилятор для радиатора охлаждения процессора.
На разъёме вентилятора, изображённого на рис. 1 первая ножка слева, та где припаян чёрный провод. Цоколёвку разъёма вентилятора можно видеть на следующем рисунке.
Рис. 2. Схема подключения CPU-fan к Arduino.
Скетч 1. Программа для Arduino NANO или UNO плавно изменяющая скорость вращения CPU вентилятора. ШИМ 490 Гц.
Рис. 3. Осциллограмма ШИМ сигнала, управляющего скоростью вращения вентилятора.
Обратите внимание, на рис. 3, частота ШИМ сигнала, генерируемого функцией analogWrite(), равна 490 Гц. Если у Вас есть желание получить ШИМ сигнал с частотой 25 кГц, используйте следующий скетч.
Скетч 2. Программа для Arduino NANO или UNO плавно изменяющая скорость вращения CPU вентилятора. ШИМ 25 кГц.
Рис. 4. Осциллограмма ШИМ сигнала с частотой 25 кГц, управляющего скоростью вращения вентилятора.
Управление скоростью вращения вентилятора с помощью Arduino и симистора
В микроконтроллерной технике обычно для плавного управления чем-либо (интенсивность свечения лампы, скорость вращения двигателя, вентилятора и т.д.) используется широтно-импульсная модуляция (ШИМ). И подобные проекты мы уже рассматривали на нашем сайте, например, управление яркостью свечения светодиода, скоростью вращения вентилятора. Но в данной статье мы рассмотрим способ управления скоростью вращения вентилятора переменного тока с помощью платы Arduino и симистора (TRIAC).
Предупреждение : в рассматриваемом проекте используется работа с напряжением переменного тока 220 В, которое очень опасно для здоровья человека если не соблюдать требуемых мер безопасности. Будьте осторожны, не прикасайтесь голыми руками к компонентам проекта, которые могут оказаться под напряжением 220 В.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Оптопара 4N25 (для детектора перехода через ноль) (купить на AliExpress).
- Потенциометр 10 кОм (купить на AliExpress).
- Оптопара MOC3021 (купить на AliExpress).
- Понижающий трансформатор (0-9)V, 500 mA (купить на AliExpress).
- Симистор (TRIAC) BT136 (купить на AliExpress).
- Вентилятор переменного тока на 220 В.
- Соединительные провода.
- Резисторы (купить на AliExpress).
Принцип управления вентилятором переменного тока с помощью Arduino
Данный принцип управления мы разделим на следующие 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 мы будем хранить значение скорости вентилятора.