Во время последнего ремонта квартиры я задумался об улучшении бытового уровня. Одним из осуществленных удобств был таймер для вытяжки в санузле. С одной стороны, это повысило комфорт, поскольку устройство само отключало вентилятор, с другой – положительно сказалось на экономии электричества. Далее изложено описание и реализация таймера. Его легко приспособить для кратковременного включения любой силовой нагрузки мощностью до 1 кВт.
Бытовой вытяжной вентилятор работает от сети переменного тока 230 Вольт и содержит двигатель мощностью 15 … 60 Вт. Поэтому при разработке таймера было решено использовать в качестве коммутирующего элемента симистор BT134. Он выдерживает постоянный ток до 4 Ампер и для такой нагрузки может работать без радиатора.
Управляющая часть выполнена на дешевом 8-выводном микроконтроллере. Это позволяет модифицировать программу под свои конкретные нужды. Например, добавить датчик влажности или изменить режим работы и отсчитываемый временной интервал.
В данном варианте реализованы два режима работы. После нажатия на кнопку таймер включает вентилятор и переходит в 1 режим, сигнализируя зеленым свечением светодиода. По истечении заданного времени (5 минут) вытяжка выключается. Если во время работы 1 режима повторно нажать кнопку, таймер перейдет во 2 режим, включив красный светодиод. В этом режиме вентилятор работает непрерывно, до очередного нажатия кнопки.
Схема электрическая принципиальная:
Источник питания выполнен на микросхеме LNK302 производства Power Integrations. Благодаря этому, получившийся ИП малогабаритен, с высоким КПД и малым числом деталей. В микросхеме реализованы все основные защиты: от КЗ, от обрыва обратной связи, от выбросов на входе, от перегрева. Подробно останавливаться на нем не буду, поскольку всю необходимую информацию, при желании, можно найти в даташите. Резисторы R4 и R3 образуют делитель, определяющий уровень стабилизации напряжения на выходе. Резисторы R1 и R2 используются в качестве предохранителя, поэтому желательно применять выводные МЛТ-0,25.
ВНИМАНИЕ! Источник питания имеет гальваническую связь с сетью 230 Вольт, поэтому все работы по монтажу и наладке должны проводиться при выключенном устройстве и с соблюдением техники безопасности!
Таймер и управляющая часть выполнена на микроконтроллере PIC12F629. К нему подключен двухцветный светодиод, кнопка и оптосимистор, управляющий ключом VS1. В цепи нагрузки установлен предохранитель, на схеме не обозначенный. Его величину подбирают исходя из параметров вентилятора.
Реализация конструкции зависит от конкретных условий. У меня, например, была свободная коробка от переключателя, поэтому было решено смонтировать таймер в нем. Под наружное оформление была приспособлена розетка для ТВ, купленная в магазине электротоваров. Из нее был выброшен антенный разъем, просверлен корпус для крепления двухцветного светодиода и подобрана кнопка. Затем разведена и изготовлена печатная плата. Поэтому будьте внимательны, может потребоваться корректировка прилагаемой печатной платы под Ваш случай.
Печатная плата изготовлена из одностороннего стеклотекстолита размером 45 х 45 мм. Некоторые элементы на ней продублированы SMD –корпусами, чтобы можно было устанавливать то, что есть в наличии. Я поставил SMD-дроссель, но если есть только выводной – можно просверлить под него отверстия в площадках.
Рисунок печатной платы (вид со стороны пайки):
Монтаж выводных элементов:
Монтаж SMD-элементов:
Исходный код программы:
title "TimerVent"
; Программа таймера для управления вытяжкой
errorlevel 0, -207, -302
#include <P12F629.inc>
CBLOCK 0x020 ;Определение переменных
tmp ; временные регистры
del, del_m ; для генерации задержки
cfg ; регистр конфигурации
time_h, time_l ; для отсчета периода работы
ENDC
__CONFIG _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
#define SET_LED_K bsf GPIO, 5 ; Зажечь красный светодиод
#define SET_LED_Z bsf GPIO, 4 ; Зажечь зеленый светодиод
#define ZERO_LED_K bcf GPIO, 5 ; Потушить красный светодиод
#define ZERO_LED_Z bcf GPIO, 4 ; Потушить зеленый светодиод
#define SET_MOTOR bsf GPIO, 2 ; Включить нагрузку (мотор)
KNOPKA equ 1 ; Кнопка подключена к порту 1
org 0
goto INIT ;Начало программы
DEL_MK movwf del ;Подпрограмма задержки (в микросекундах, 770 мкс max)
M1 decfsz del, F ;(Перед вызовом поместить величину задержки в W)
goto M1
return
DEL_M movwf del_m ;Подпрограмма задержки (в миллисекундах, 256 мс max)
movlw 0xa5 ;(Перед вызовом поместить величину задержки в W)
M2 call DEL_MK
call DEL_MK
decfsz del_m, F
goto M2
return
INIT bcf STATUS, RP0 ;Выбран банк 0
movlw B'00000111'
movwf CMCON ;Отключаем встроенные компараторы
clrf GPIO
bsf STATUS, RP0 ;Выбран банк 1
movlw B'00000010'
movwf WPU
movlw B'00000000'
movwf OPTION_REG
call 3FFh ;Загрузить константу калибровки генератора
movwf OSCCAL
movlw B'00000010'
movwf TRISIO
; movlw B'00000010'
; movwf IOCB
bcf STATUS, RP0 ;Выбран банк 0
clrf cfg
;----------------------[ ВЫБОР СЛЕДУЮЩЕГО РЕЖИМА ]--------------------------
SM btfsc GPIO, KNOPKA
goto SM
bcf T1CON, TMR1ON ;Выключить таймер 1
movf cfg, F
btfsc STATUS, Z
goto MOD1
btfsc cfg, 0
goto MOD2
OUTP clrf GPIO ;Подготовка к "выключению"
clrf cfg
movlw 0xfa ;Задержка на 0,5 секунд
call DEL_M
movlw 0xfa
call DEL_M
goto SM
;----------------------[ РЕЖИМ КОРОТКОЕ ВКЛЮЧЕНИЕ ]-------------------------
MOD1 clrf cfg
bsf cfg, 0
ZERO_LED_K
SET_LED_Z
SET_MOTOR
movlw 0xfa ;Задержка на 0,5 секунд
call DEL_M
movlw 0xfa
call DEL_M
movlw b'00110100' ;Конфигурирование таймера 1
movwf T1CON
clrf TMR1H
clrf TMR1L
clrf time_l
clrf time_h
bsf T1CON, TMR1ON ;Включить таймер 1
M3 btfss GPIO, KNOPKA
goto SM
btfss PIR1, TMR1IF ;Проверка переполнения
goto M3
bcf PIR1, TMR1IF ;Было переполнение, проверка счета
incf time_l, F
btfsc STATUS, Z
incf time_h, F
movlw 0x58 ;Младший байт счетчика времени
xorwf time_l, W
btfss STATUS, Z
goto M3
movlw 0x01 ;Старший байт счетчика времени
xorwf time_h, W
btfss STATUS, Z
goto M3
goto OUTP
;----------------------[ РЕЖИМ ПОСТОЯННО ВКЛЮЧЕН ]--------------------------
MOD2 clrf cfg
bsf cfg, 1
SET_LED_K
ZERO_LED_Z
SET_MOTOR
movlw 0xfa ;Задержка на 0,5 секунд
call DEL_M
movlw 0xfa
call DEL_M
M4 btfsc GPIO, KNOPKA
goto M4
goto OUTP
END
;---------------------------------------------------------------------------
; Таблица задержек для подпрограммы DEL_MK:
; 0x20 - 100 мкс
; 0xa5 - 500 мкс
;---------------------------------------------------------------------------
; Описание бит cfg:
; "0" - если установлен, активен режим "короткое включение" (зеленый)
; "1" - если установлен, активен режим "постоянно включен" (красный)
; "2" -
; "3" -
; "4" -
; "5" -
; "6" -
;---------------------------------------------------------------------------
Автор: GoldSerg