Регулятор оборотов вентилятора. Уже в первых экспериментах с

advertisement
Регулятор оборотов вентилятора.
Уже в первых экспериментах с коллекторным моторчиком и
батарейкой можно было заметить, что при частом попеременном
включении и выключении электромотора частота вращения его
ротора изменяется. То есть происходила регулировка скорости
вращения путём периодичного включения и отключения тока через
моторчик. Если изменять при этом время в подключённом
состоянии и длину паузы между подключениями, можно
регулировать скорость вращения мотора. Такой же эффект
проявляется практически с любым потребителем электрического
тока, имеющим определённую инерцию, т.е. способным запасать
энергию. Именно этот эффект положен в основу
принципа Широтно-Импульсной Модуляции (ШИМ), также
встречается английское сокращение - PWM (Pulse-Width Modulation). Широтно-Импульсная
Модуляция - это способ кодирования аналогового сигналa путём изменения ширины (длительности)
прямоугольных импульсов несущей частоты.
Рис. 1. Зависимость напряжения от скважности ШИМ.
На Рис. 1 синим цветом представлены типичные графики ШИМ сигнала. Так как при ШИМ
частота импульсов, а значит, и период (T), остаются неизменными, то при уменьшении ширины
импульса (t) увеличивается пауза между импульсами (эпюра "Б" на Рис. 1.) и наоборот: при расширении
импульса пауза сужается (эпюра "В" на Рис. 1.). Если сигнал ШИМ пропустить через фильтр низших
частот, то уровень постоянного напряжения на выходе фильтра будет определяться скважностью
импульсов ШИМ. Назначение фильтра - не пропускать несущую частоту ШИМ. Сам фильтр может
состоять из простейшей интегрирующей RC цепи, или же может отсутствовать вовсе, например, если
оконечная нагрузка имеет достаточную инерцию.
Таким образом, имея в расположении лишь два логических уровня, "единицу" и "ноль", можно
получить любое промежуточное значение аналогового сигнала. По принципу вышеизложенного и был
разработан регулятор вентилятора. Необходимость в данном устройстве появилась, когда у ребёнка
сгорела материнская плата на компьютере и пришлось поставить другую. С другим радиатором и
кулером на процессор. Новый кулер был без регулятора оборотов. Для обеспечения тишины работы
компьютера пришлось со своего компа снять залмовский регулятор и поставить ребёнку на
компьютер, всё лучшее детям . Теперь мой вентилятор начал шумно работать, а так как моя
материнка без корпуса и просто прибита гвоздём к стенке за монитором (Рис.2.), то создавался
дискомфорт при работе за компьютером. С этим надо было что то делать, что-нибудь простое и
дешевое. В результате чего и родилась данная схема.
Рис. 2. «Материнкой» внешний вид не испортишь.
Схема (Рис. 3.) состоит из стабилизатора на 5В, ключа, на транзисторе ВС547 (при
необходимости можно поставить более мощный ключ), и самого процессора управления на PIC12F675
(Можно использовать и PIC12F629, с минимальными изменениями в программе). Управление
оборотами производится кнопками S1 (убавить) и S2 (прибавить). При снятии напряжения регулятор
запоминает последние выставленные обороты. Подключается регулятор к разъёму вентилятора на
материнской плате. Провод оборотов вентилятора сквозной. Так как PIC12F675 имеет АЦП, то можно
вместо кнопок установить переменный резистор, изначально я так и делал.
Рис. 3. Схема регулятора.
Печатную плату я не стал разрабатывать, а собрал на макетной плате. Результат на Рис. 4. При
доработке регулятора начерчу печатную плату и выложу в дополнение к статье.
Теперь немного о программе. ШИМ организован программно, так как аппаратного модуля ШИМ
в данном контроллере нет. После инициализации контроллера программа проверяет в EEPROM
значение оборотов, на основе которой производит вычисление ШИМ. Запись в EEPROM производится
после нажатия любой из кнопок управления. Чтобы не терзать память, запись в неё производится с
задержкой 2-3 сек., когда установится необходимое значение оборотов.
Рис. 4. Внешний вид регулятора.
Как известно контроллер PIC12F675 не имеет интегрированного отладочного модуля. В
интернете эти модули иногда ошибочно называют «переходниками». Для отладки данного типа
контроллера необходим модуль AC162050. Его конечно в наличии нет, а поотлаживать очень хочется
 . Я в таких случаях собираю схему на отладочной плате, беру контроллер (в данном случае
PIC16F877A), который поддерживает внутрисхемную отладку и пишу программу под оба контроллера
одновременно. Вернее сначала под отлаживаемый контроллер (PIC16F877A), а потом изменения для
основного (PIC12F675). Для того, чтобы компилятор мог определить под какой контроллер
производить компиляцию имеются директивы IFDEF и ENDIF.
Ниже приведён пример конфигурации для разных контроллеров в одной программе.
Компилятор сам выбирает нужный кусок, в зависимости от того, какой контроллер указан в MPLab
(Configure -> Select Device). Не трудно догадаться под какой контроллер какой кусок программы
относится. Строка ErrorLevel -302,-205,-207 является общей, не зависимо какой контроллер
установлен.
IFDEF
__12F675
LIST
#Include
__config
p=12f675
<P12F675.INC>
01FC4h
ENDIF
;****************************************
IFDEF
__16F877A
LIST
p=16f877A
#Include
<P16F877A.INC>
__CONFIG
3731H
TRISIO
equ
0x06
GPIO
equ
0x86
ENDIF
;****************************************
ErrorLevel -302,-205,-207
Приведу ещё один пример инициализации контроллеров. Здесь всё, то же самое. Что находится между
директив IFDEF и ENDIF , относится к определённому контроллеру, а всё остальное является общим
кодом для обоих контроллеров.
;****************************************
START
movlw
.7
movwf
CMCON
bsf
STATUS,RP0
;****************************************
IFDEF
__12F675
call
3FFh
movwf
OSCCAL
movlw
b'00000110'
movwf
WPU
clrf
ANSEL
clrf
IOC
ENDIF
;****************************************
IFDEF
__16F877A
movlw
b'00001110'
movwf
ADCON1
ENDIF
;****************************************
movlw
b'00000000'
movwf
OPTION_REG
movlw
b'00000110'
movwf
TRISIO
bcf
STATUS,RP0
clrf
GPIO
clrf
Flag
call
EERD
; Чтение значения скорости из EEPROM.
В итоге получается одна программа под два вида контроллеров (можно и больше). Только не забываем
указать в MPLab (Configure -> Select Device), необходимый контроллер, под который надо её
скомпилировать.
Список использованных ресурсов: http://www.myrobot.ru
Download