Управление вентиляторами pwm или dc

Как поместить скрипт в автозагрузку

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

Для этого, в конец файла :

sudo nano /etc/rc.local

1 sudo nanoetcrc.local

Нужно поместить команду запуска скрипта перед строкой :

sudo ./home/pi/FanPiPwmLinear &

1 sudo.homepiFanPiPwmLinear&

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

Чтобы проверить факт запуска, после перезагрузки, нужно переключиться в терминал и проверить наличие процесса:

ps aux | grep -i FanPiPwmLinear

1 ps aux|grep-iFanPiPwmLinear

Как проверить?

Для проверки работоспособности скрипта нужно «разогреть» процессор до нужной температуры и посмотреть, как на это будет реагировать система охлаждения. «Нагревать» процессор можно с помощью утилит или . Вы можете установить эти утилиты с :

sudo apt-get install sysbench

1 sudo apt-get install sysbench

или

sudo apt-get install stress

1 sudo apt-get install stress

Запуск утилиты с задействованием 4 ядер:

sysbench —num-threads=4 —test=cpu —cpu-max-prime=20000 —validate run

1 sysbench—num-threads=4—test=cpu—cpu-max-prime=20000—validate run

или

sudo stress —cpu 4 —timeout 30s

1 sudo stress—cpu4—timeout30s

Температура процессора сразу начнет повышаться.

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

Управление вентилятором с помощью МОП транзистора

Вместо биполярного можно использовать полевой транзистор — MOSFET, то есть полевые транзисторы с изолированным затвором (они же МОП, они же МДП). Они удобны тем, что управляются исключительно напряжением: если напряжение на затворе больше порогового, то транзистор открывается. При этом управляющий ток через транзистор пока он открыт или закрыт не течёт. Это значительное преимущество перед биполярными транзисторами, у которых ток течёт всё время, пока открыт транзистор.

В дальнейшем мы будем использовать только n-канальные MOSFET. Это связано с тем, что n-канальные транзисторы дешевле, имеют лучшие характеристики и для управления N-канальным полевиком необходимо приложить положительное напряжение на затвор относительно истока.

Схема подключения вентилятора

Нагрузка подключена к стоку («сверху»). Если подключить её «снизу», то схема работать не будет. Дело в том, что транзистор открывается, если напряжение между затвором и истоком превышает пороговое. При подключении «снизу» нагрузка будет давать дополнительное падение напряжения, и транзистор может не открыться или открыться не полностью.

Резистор R1 на 100 Ом ограничивает ток заряда-разряда, а резистор R2 на 10 кОм — это стягивающий резистор, что в неопределенном состоянии «стягивает» потенциал к земле.

Кроме того, нужно помнить, что нагрузка индуктивная и нужен защитный диод D1.

N-канальные MOSFET с логическим уровнем управления

Один из минусов МОП транзисторов — это высокое пороговое напряжение затвора, больше 3.3 В. Тем не менее, существуют N-канальные транзисторы с логическим уровнем управления, например: IRL2505, FDN337N, ZVN4306A, 2N7000, PMV16XNR, NTZD3155C, IRLZ24NPBF, IRL520NPBF и т.п.

ЗАГРУЗКА ПРОШИВКИ

Загружать прошивку желательно до подключения компонентов, чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз, плата должна спокойно прошиться. В проектах с мощными потребителями в цепи питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.) необходимо подать на схему внешнее питание 5V перед подключением Arduino к компьютеру, потому что USB не обеспечит нужный ток, если например лента его потребует. Это может привести к выгоранию защитного диода на плате Arduino. Гайд по скачиванию и загрузке прошивки можно найти под спойлером на следующей строчке.

ИНСТРУКЦИЯ ПО ЗАГРУЗКЕ ПРОШИВКИ

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

2. Скачайте архив со страницы проекта. Если вы зашли с GitHub – кликните справа вверху Clone or download, затем Download ZIP. Это тот же самый архив!

3. Извлеките архив. Содержимое папки libraries перетащите в пустое место папки с библиотеками Arduino C:/Program Files (x86)/Arduino/libraries/

4. Папку с прошивкой из firmware положите по пути без русских букв . Если в папке с прошивкой несколько файлов – это вкладки, они откроются автоматически.

5. Настройте прошивку (если нужно), выберите свою плату, процессор. Подключите Arduino к компьютеру, выберите её COM порт и нажмите загрузить.

6. При возникновении ошибок или красного текста в логе обратитесь к 5-ому пункту гайда для новичков – “Разбор ошибок загрузки и компиляции“.

Можно ли устанавливать несколько вентиляторов

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

Трех- и четырехпиновые кулеры, у которых замеряется и регулируется частота вращения, при отсутствии свободных разъемов параллельно лучше не соединять. Вопрос здесь не только в нагрузочной способности питающих и управляющих линий. При вращении роторов, датчики Холла будут выдавать импульсы не в фазе, поэтому корректного измерения частоты вращения не получится. Система будет воспринимать данные, как аварийную ситуацию и соответственно на нее реагировать.

В завершении для наглядности рекомендуем серию тематических видеороликов.

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

Необходимость управления вентилятором

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

Процессоры в большинстве ранних компьютеров на базе x86, вплоть до некоторых из первых 486- х , не нуждались в активной вентиляции. Блокам питания требовалось принудительное охлаждение, а вентиляторы блоков питания также обеспечивали циркуляцию охлаждающего воздуха через остальную часть ПК в соответствии со стандартом ATX . Побочным продуктом повышенного тепловыделения является то, что вентиляторы должны перемещать все большее количество воздуха и, следовательно, должны быть более мощными. Поскольку они должны пропускать больше воздуха через одну и ту же область пространства, вентиляторы станут более шумными.

Вентиляторы, установленные в корпусе ПК, могут создавать шум до 70  дБ . Поскольку шум вентилятора увеличивается с пятой степенью скорости вращения вентилятора , уменьшение числа оборотов в минуту (об / мин) на небольшое количество потенциально означает значительное снижение шума вентилятора

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

Как получить температуру процессора

Существует несколько способов получить текущую температуру процессора.

Если вы используйте Armbian, вы можете использовать команду:

armbianmonitor -m

1 armbianmonitor-m

эта команда будет давать вам время работы, частоту и текущую температуру процессора каждые 6 секунд.

Есть еще одна команда, которая просто возвращает температуру процессора:

cat /sys/devices/virtual/thermal/thermal_zone1/temp

1 catsysdevicesvirtualthermalthermal_zone1temp

или

cat /sys/devices/virtual/thermal/thermal_zone0/temp

1 catsysdevicesvirtualthermalthermal_zone0temp

или

cat /sys/class/thermal/thermal_zone0/temp

1 catsysclassthermalthermal_zone0temp

Внутри SoC Allwinner есть два датчика, вы можете взять оба значения, чтобы получить среднюю температуру. На Raspberry Pi температура измеряется в миллиградусах, для перевода в градусы Цельсия нужно разделить полученное число на 1000:

В Raspberry Pi можно узнать температуру процессора при помощи ввода консольной команды:

vcgencmd measure_temp

1 vcgencmd measure_temp

Разгоняем кулер на видеокарте

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

Чтобы настроить вентилятор, нам понадобится специальное программное обеспечение:

  • RivaTuner для графических адаптеров nVidia.
  • Catalyst Control Center для видеокарт ATI/AMD Radeon.
  • MSIAfterburner – универсальное ПО для всех типов устройств и производителей.

Catalyst Control Center

Если на вашем ноутбуке или компьютере установлена видеоплата ATI Radeon, то для увеличения скорости вращения кулера нам понадобится Catalyst Control Center. Данная утилита обычно находится на диске с драйверами для графического адаптера и устанавливается автоматически вместе с ними. Если у вас ее нет, зайдите на оф. сайт производителя, найдите и скачайте ее оттуда. Для максимальной эффективности и комфорта рекомендуется скачивать последнюю версию ПО.

То есть, чтобы начать использование приложения необходимо:

  1. Установить на компьютер, после чего перезагрузить его;
  2. После того, как ОС будет загружена, клацаем правой мышкой на пустом участке рабочего стола;
  3. Откроется меню, в котором выбираем «Catalyst Control Center»;
  4. В новом окне отмечаем пункт «Дополнительно» и жмем кнопку «Далее».

Отобразится еще одно окно, в котором необходимо:

  • Нажать левой мышкой по стрелке, расположенной в верхнем левом углу программы, и отметить пункт ATI Overdrive;
  • В открывшемся окне находим изображения замка и снова нажимаем левой мышкой по нему.

Таким образом, вы разблокируете возможность работы с данным пунктом. Далее нужно поставить галочку напротив «Разрешить ручное управление вентилятором» или если у вас английская версия «Enable Manual Fan Control» и нажать «Применить» или «Apply». Теперь вы легко сможете увеличить скорость вращения кулера на видеокарте путем перемещения специального ползунка.

RivaTuner

Данная программа предназначена для регулировки скорости вращения кулера на видеокартах Nvidia. Кроме того в ней можно узнать текущую скорость. Чтобы настроить систему охлаждения на ноутбуке с ее помощью нужно сделать следующее:

Не удалось устранить проблему?Обратитесь за помощью к специалисту!

Решите мою проблему

  • Скачать приложение с интернета.
  • Установить на ноутбук и запустить.
  • В основном меню находим название установленной видеокарты и нажимаем на стрелочку около нее.
  • Далее нужно выбрать «Низкоуровневые системные настройки/Кулер».
  • После чего вы увидите пункт «Включить низкоуровневое управление кулером». Отметьте его.

Теперь при помощи стандартного ползунка вы можете самостоятельно изменить скорость вращении вентилятора на вашем графическом адаптере. После чего нажмите кнопку «Применить» для того, чтобы сохранить изменения.

MSIAfterburner

Утилита предназначена для мониторинга показаний тех или иных систем компьютера. С ее помощью вы можете повысить скорость кулера при достижении определенных температур. Данная программа поддерживает видеоадаптеры NVIDIA и ATI, и отлично работает с ОС Windows самых разных версий. Итак, разберем процесс работы с утилитой более подробно:

  1. Скачиваем ее с официального сайта;
  2. Открываем архив, выбрираем файл «MSIAfterburnerSetup» и установливаем программу;
  3. Открываем приложение и заходим в пункт меню «Settings». Язык интерфейса по умолчанию английский. Чтобы изменить его необходимо в том же окне найти пункт «Interface» и в графе «Language» выбрать русский;
  4. Далее находим установленную видеокарту и открываем вкладку «Кулер».

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

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

инструкция

youtu.be/Mb4MQU983vs

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

жесткого диска, видеокарты, оперативной памяти и т.д.

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

В этом вам поможет наш специалист.

ШИМ управление: Пример 1

Логика программы такова — при достижении заданных температур вентилятор включается с определённым коэффициентом заполнения, а отключается только тогда, когда температура ниже минимального порога:

  • 45 °C -> 35 %
  • 50 °C -> 50 %
  • 60 °C -> 75 %
  • 75 °C -> 100 %

#include <iostream>
#include <fstream>
#include <wiringPi.h>
#include <softPwm.h>
#include <unistd.h>

#define PIN 7
#define RANGE 100

#define PWM_VALUE1 35
#define PWM_VALUE2 50
#define PWM_VALUE3 75
#define PWM_VALUE4 100

#define TEMPERATURE_1 45
#define TEMPERATURE_2 50
#define TEMPERATURE_3 60
#define TEMPERATURE_4 70

using namespace std;

static int getTemperature() {
static fstream myfile;
int temperature = 0;
myfile.open(«/sys/devices/virtual/thermal/thermal_zone0/temp», ios_base::in);
myfile >> temperature;
myfile.close();
return temperature;
}

int main() {
int temperature;
bool pwmStopped = true;

try {
if (wiringPiSetup() == 0) {
while (1) {
temperature = getTemperature();

if (temperature > TEMPERATURE_4) {
if (pwmStopped) {
softPwmCreate(PIN, ((PWM_VALUE4 * RANGE) / 100), RANGE);
pwmStopped = false;
} else {
softPwmWrite(PIN, ((PWM_VALUE4 * RANGE) / 100));
}
} else if (temperature > TEMPERATURE_3) {
if (pwmStopped) {
softPwmCreate(PIN, ((PWM_VALUE3 * RANGE) / 100), RANGE);
pwmStopped = false;
} else {
softPwmWrite(PIN, ((PWM_VALUE3 * RANGE) / 100));
}
} else if (temperature > TEMPERATURE_2) {
if (pwmStopped) {
softPwmCreate(PIN, ((PWM_VALUE2 * RANGE) / 100), RANGE);
pwmStopped = false;
} else {
softPwmWrite(PIN, ((PWM_VALUE2 * RANGE) / 100));
}
} else if (temperature > TEMPERATURE_1) {
if (pwmStopped) {
softPwmCreate(PIN, ((PWM_VALUE1 * RANGE) / 100), RANGE);
pwmStopped = false;
} else {
softPwmWrite(PIN, ((PWM_VALUE1 * RANGE) / 100));
}
} else {
softPwmStop(PIN);
pwmStopped = true;
}

usleep(1000 * 1000);
}
}
} catch (exception& e) {
cerr << e.what() << endl;
}
return 0;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

#include <iostream>
#include <fstream>
#include <wiringPi.h>
#include <softPwm.h>
#include <unistd.h>
 
#define PIN               7
#define RANGE             100
 
#define PWM_VALUE1         35
#define PWM_VALUE2         50
#define PWM_VALUE3         75
#define PWM_VALUE4         100
 
#define TEMPERATURE_1      45
#define TEMPERATURE_2      50
#define TEMPERATURE_3      60
#define TEMPERATURE_4      70
 

usingnamespacestd;

staticintgetTemperature(){

staticfstream myfile;

inttemperature=;

myfile.open(«/sys/devices/virtual/thermal/thermal_zone0/temp»,ios_base::in);

myfile>>temperature;

myfile.close();

returntemperature;

}
 

intmain(){

inttemperature;

boolpwmStopped=true;

try{

if(wiringPiSetup()==){

while(1){

temperature=getTemperature();

if(temperature>TEMPERATURE_4){

if(pwmStopped){

softPwmCreate(PIN,((PWM_VALUE4*RANGE)100),RANGE);

pwmStopped=false;

}else{

softPwmWrite(PIN,((PWM_VALUE4*RANGE)100));

}

}elseif(temperature>TEMPERATURE_3){

if(pwmStopped){

softPwmCreate(PIN,((PWM_VALUE3*RANGE)100),RANGE);

pwmStopped=false;

}else{

softPwmWrite(PIN,((PWM_VALUE3*RANGE)100));

}

}elseif(temperature>TEMPERATURE_2){

if(pwmStopped){

softPwmCreate(PIN,((PWM_VALUE2*RANGE)100),RANGE);

pwmStopped=false;

}else{

softPwmWrite(PIN,((PWM_VALUE2*RANGE)100));

}

}elseif(temperature>TEMPERATURE_1){

if(pwmStopped){

softPwmCreate(PIN,((PWM_VALUE1*RANGE)100),RANGE);

pwmStopped=false;

}else{

softPwmWrite(PIN,((PWM_VALUE1*RANGE)100));

}

}else{

softPwmStop(PIN);

pwmStopped=true;

}

usleep(1000*1000);

}

}

}catch(exception&e){

cerr<<e.what()<<endl;

}

return;

}

Компиляция, сборка и запуск программы

Сознаём файл  и вставляем вышеприведённый код:

nano FanPiPWM.cpp

1 nano FanPiPWM.cpp

Компилируем и собираем программу:

g++ -Ofast -Wall FanPiPWM.cpp -lwiringPi -lpthread -o FanPiPWM

1 g++-Ofast-Wall FanPiPWM.cpp-lwiringPi-lpthread-oFanPiPWM

Запускаем:

./FanPiPWM

1 .FanPiPWM

если хотим запустить программу в фоновом режиме:

nohup ./FanPiPWM &

1 nohup.FanPiPWM&

На что нужно обращать внимание при выборе корпусного вентилятора

  • Размер корпусного вентилятора. Вы должны выбирать «вертушку» исходя из размера вашего корпуса, а точнее, судя по тому, какое место для него предназначено. Обычно стандартный размер (он же является диаметром вентилятора) для ПК равен 120 мм, что является всем привычной нормой. Однако существуют и более крупные и мелкие варианты. Так что дабы не купить вентилятор, который вам не подходит идеально в плане размера, лучше заранее ознакомьтесь с тем, какой именно будет соответствовать вашему корпусу.
  • Скорость вращения вентилятора. Чем большее количество оборотов в минуту совершает вентилятор, тем лучше осуществляется охлаждение. Однако если вы гонитесь в первую очередь именно за тишиной, то большое количество оборотов могут вам не прийтись по вкусу, ведь чем их больше, тем больше шума.
  • Уровень шума. Среднее значение работы вентилятора для корпуса составляет от 15 до 25 Дб. И если при 15 Дб вы практически не будете замечать его жужжания, то при 25-30 шум вертушки будет довольно ощутимым. Конечно, некоторые модели позволяют самостоятельно регулировать скорость вращения, а следовательно, и уровень шума, но об этом чуть позже.
  • Воздушный поток. Если коротко, то данный показатель даёт нам понять, какой именно объём воздуха тот или иной вентилятор способен «перегонять» через себя за определённую единицу времени. Как правило, показатель воздушного потока измеряется в cfm — кубический фут в минуту. Так что и брать за основу единицы времени будем именно одну минуту. И да, здесь тоже всё просто — чем больше показатель cfm, тем кулер лучше.
  • Тип подшипника. Всего различают 4 вида: подшипник скольжения (очень тихий, но крайне недолговечный); шарикоподшипник (очень долговечный, но шумный); гидродинамический (существенно улучшенная версия подшипника скольжения, которая идеальна в плане цены, уровня шума и долговечности); подшипник с магнитным центрированием (самый лучший подшипник из всех, но его цена неоправданно огромна).
  • Тип подключения. Последний критерий, который стоит учитывать. На сегодняшний день существует три типа подключения, а именно 3-pin, 4-pin и Molex. Но в чём же их отличие друг от друга? В том, что 3-pin и 4-pin подключаются напрямую к материнской плате, в то время как Molex соединён непосредственно с блоком питания. Преимущество подключения через 3-pin заключается в том, что мы можем регулировать скорость работы нашего вентилятора за счёт изменения напряжения.4-pin в этом плане ещё лучше, ведь такие корпусные вентиляторы способны сами выстраивать нужную скорость работы, которая будет наиболее оптимальна для системы в конкретный момент. Благодаря такому типу подключения ваша вертушка будет работать максимально тихо, если вы не используете ПК для решения каких-либо сложных задач, что очень здорово. Ну и в конце концов — Molex. Этот тип подключения по праву считается самым простым во всех смыслах. Из-за того, что в таком случае вентилятор для корпуса подключается напрямую к блоку питания, он всегда будет работать на максимальной скорости. И да, с одной стороны, это хорошо, ведь в таком случае охлаждение будет на достойном уровне, но с другой стороны, уровень шума будет довольно высоким, и мы не сможем совершенно никак его отрегулировать.

Как изменить скорость вращения кулера

Скорость вращения вентилятора, имеющего вход ШИМ (PWM) (вариант разъема с 4 пинами), регулируется изменением скважности импульсов, поступающих на этот вход от схемы управления. Частота может выбираться исходя из режима работы платы или всего компьютера, или в зависимости от температуры в контролируемой области

Если у кулера нет входа ШИМ (2 или 3 пина в разъеме), автоматическое регулирование невозможно. Но можно выбрать режим вращения вручную, изменяя напряжение питания. Удобно для этого использовать свободный разъем Molex. На нем присутствуют:

  • два земляных провода черного цвета;
  • желтый провод +12 вольт;
  • красный провод +5 вольт.

Это позволяет получить три комбинации напряжения:

  • подключением вентилятора к к желтому и черному проводу блока питания можно получить напряжение 12 вольт и максимальные обороты;
  • при соединении с красным и черным проводами на вентиляторе будет питание 5 вольт – минимальная частота вращения;
  • при соединении между красным и желтым проводами получается разность потенциалов в 7 вольт (12-5=7) и промежуточная частота вращения.


Варианты подключения вентилятора к разным уровням напряжения разъема Молекс.

Если существует острая необходимость работы кулера на сверхнизких оборотах, можно попробовать взять напряжение +3,3 вольта, например, с разъема SATA, но не факт, что при таком уровне вентилятору хватит крутящего момента, чтобы ротор начал вращаться.

Принцип работы ШИМ контроллера

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

Широтно-импульсная модуляция разделяется на два вида: аналоговая и цифровая. Каждый из видов имеет свои преимущества и схемотехнически может реализовываться разными способами.

Аналоговая ШИМ

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

Цифровая ШИМ

Широтно-импульсная модуляция в цифровой интерпретации является одной из многочисленных функций микроконтроллера (МК). Оперируя исключительно цифровыми данными, МК может формировать на своих выходах либо высокий (100%), либо низкий (0%) уровень напряжения. Однако в большинстве случаев для эффективного управления нагрузкой напряжение на выходе МК необходимо изменять. Например, регулировка скорости вращения двигателя, изменение яркости светодиода. Что делать, чтобы получить на выходе микроконтроллера любое значение напряжения в диапазоне от 0 до 100%?

Вопрос решается применением метода широтно-импульсной модуляции и, используя явление передискретизации, когда заданная частота переключения в несколько раз превышает реакцию управляемого устройства

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

Активное использование контроллеров на основе ШИМ обусловлено их неоспоримыми преимуществами:

Технически это реализуется с помощью ШИМ-контроллера – специализированной микросхемы, которая является «сердцем» любой цифровой системы управления. Активное использование контроллеров на основе ШИМ обусловлено их неоспоримыми преимуществами:

  • высокой эффективности преобразования сигнала;
  • стабильность работы;
  • экономии энергии, потребляемой нагрузкой;
  • низкой стоимости;
  • высокой надёжности всего устройства.

Получить на выводах микроконтроллера ШИМ сигнал можно двумя способами: аппаратно и программно. В каждом МК имеется встроенный таймер, который способен генерировать ШИМ импульсы на определённых выводах. Так достигается аппаратная реализация. Получение ШИМ сигнала с помощью программных команд имеет больше возможностей в плане разрешающей способности и позволяет задействовать большее количество выводов. Однако программный способ ведёт к высокой загрузке МК и занимает много памяти.

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

Управление вентилятором

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

Следующий простейший метод управления — термостатический или on/off. В этом случае вентилятор включается только тогда, когда требуется охлаждение. Условие включения вентилятора устанавливает пользователь, обычно это какое-то пороговое значение температуры.

Подходящий датчик для on/off управления — это ADM1032. Он имеет выход THERM, который управляется внутренним компаратором. В нормальном состоянии на этом выходе высокий логический уровень, а при превышении порогового температурного значения он переключается на низкий. На рисунке 3 показан пример цепи с использованием ADM1032.

Рисунок 3. Пример on/off управления

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

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

Рассмотрим, например, вентилятор на 12 вольт. Для запуска ему требуется не меньше 7 В и при этом напряжении он, вероятно, будет вращаться с половинной скоростью от своего максимального значения. Когда вентилятор запущен, для поддержания вращения требуется уже меньшее напряжение. Чтобы замедлить вентилятор, мы можем понижать напряжение питание, но до определенного предела, допустим, до 4-х вольт, после чего вентилятор остановится. Эти значения будут отличаться в зависимости от производителя, модели вентилятора и конкретного экземпляра.

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

Линейное управление вентилятором можно реализовать на микросхеме ADM1028. Она имеет управляющий аналоговый выход, интерфейс для подключения диодного температурного датчика, который обычно используется в процессорах и ПЛИС, и работает от напряжения 3 — 5.5 В. На рисунке 4 показан пример схемы для реализации линейного управления. Микросхема ADM1028 подключается ко входу DAC.

Рисунок 4. Схема для реализации линейного управления 12-и вольтового вентилятора

Линейный метод управления тише, чем предыдущие. Однако, как вы могли заметить, он обеспечивает маленький диапазон регулировки скорости вращения вентилятора. 12-и вольтовые вентиляторы при напряжении питания от 7 до 12 В, позволяют устанавливать скорость вращения от 1/2 от максимума до максимальной. 5-и вольтовые вентиляторы при запуске от 3,5 — 4 В, вращаются практически с максимальной скоростью и диапазон регулирования у них еще меньше. Кроме того, линейный метод регулирования не оптимален с точки зрения энергопотребления, потому что снижение напряжения питания вентилятора выполняется за счет рассеяния мощности на транзисторе (смотри рисунок 4). И последний недостаток — относительная дороговизна схемы управления.