Таймер для вытяжки

в 9:19, , рубрики: сделай сам, Электроника для начинающих, метки:

Таймер для вытяжки

Во время последнего ремонта квартиры я задумался об улучшении бытового уровня. Одним из осуществленных удобств был таймер для вытяжки в санузле. С одной стороны, это повысило комфорт, поскольку устройство само отключало вентилятор, с другой – положительно сказалось на экономии электричества. Далее изложено описание и реализация таймера. Его легко приспособить для кратковременного включения любой силовой нагрузки мощностью до 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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js