Пятница, 03 февраля 2012 21:54

Регулятор оборотов вентилятора. Featured

Written by
Rate this item
(0 votes)

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

 

 

 

 

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

Именно этот эффект положен в основу принципа Широтно-Импульсной Модуляции (ШИМ), также встречается английское сокращение - PWM (Pulse-Width Modulation). Широтно-Импульсная Модуляция - это способ кодирования аналогового сигналa путём изменения ширины (длительности) прямоугольных импульсов несущей частоты. На Рис. 1 синим цветом представлены типичные графики ШИМ сигнала. Так как при ШИМ частота импульсов, а значит, и период (T), остаются неизменными, то при уменьшении ширины импульса (t) увеличивается пауза между импульсами (эпюра "Б" на Рис. 1.) и наоборот: при расширении импульса пауза сужается (эпюра "В" на Рис. 1.). Если сигнал ШИМ пропустить через фильтр низших частот, то уровень постоянного напряжения на выходе фильтра будет определяться скважностью импульсов ШИМ. Назначение фильтра - не пропускать несущую частоту ШИМ. Сам фильтр может состоять из простейшей интегрирующей RC цепи, или же может отсутствовать вовсе, например, если оконечная нагрузка имеет достаточную инерцию. Таким образом, имея в расположении лишь два логических уровня, "единицу" и "ноль", можно получить любое промежуточное значение аналогового сигнала.

 

Рис.1. Зависимость напряжения от скважности ШИМ.

 

    По принципу вышеизложенного и был разработан регулятор вентилятора. Необходимость в данном устройстве появилась, когда у ребёнка сгорела материнская плата на компьютере и пришлось поставить другую. С другим радиатором и кулером на процессор. Новый кулер был без регулятора оборотов.  Для обеспечения тишины работы компьютера пришлось со своего компа снять залмовский регулятор  и поставить ребёнку на компьютер, всё лучшее детям :) . Теперь мой вентилятор начал шумно работать, а так как моя материнка без корпуса и просто прибита гвоздём к стенке за монитором (Рис.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        p=12f675
            #Include      
            __config    01FC4h 
ENDIF

;****************************************
IFDEF       __16F877A
            LIST        p=16f877A
            #Include      
            __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                      

Read 10503 times Last modified on Среда, 03 сентября 2014 14:37

Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru