Navigation Menu
Автоматическое управление освещением

Автоматическое управление освещением

27 Ноя 2007 в Проекты | Нет комментариев

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

  • при включении освещения выключателем свет включается немедленно;
  • при выключении освещения выключателем свет выключается с задержкой 30 секунд;
  • при открытии двери свет включается немедленно и выключается автоматически через 3 минуты

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

Стоит задача согласовать работу автоматики с датчиком сигнализации. Для этого использовано твердотельное реле КР293КП3Б, включенное последовательно нормально замкнутому контакту датчика движения, оконечный резистор шлейфа сигнализации пришлось немного уменьшить, чтобы ток через светодиод реле гальванической развязки был достаточный для уверенного срабатывания оптореле. В итоге получилась такая схема:

В основе схемы микроконтроллер  PIC12C509A, для гальванической развязки использованы два оптореле КР293КП3Б.

Программа получилась совсем небольшая и была написана на ассемблере:

*********************************************************; ** СЕКЦИЯ ЗАГОЛОВКА ** ; *********************************************************; PROCESSOR  PIC12C509A #include    P12C509A.INC __CONFIG   _MCLRE_OFF&_CP_OFF&_WDT_OFF&_IntRC_OSC ;Регистры общего назначения Reg_ EQU 08h Reg_2 EQU 09h Reg_3 EQU 0Ah Reg_4 EQU 0Bh ;********************************************************* ;** РАБОЧАЯ СЕКЦИЯ ** ;********************************************************* ORG 000h nop nop nop nop MOVWF OSCCAL ; запись калибровочной информации nop nop GOTO BEGIN ORG 030h ; помещаем программу по адресу 030h BEGIN CLRF GPIO ;предустановки CLRW MOVLW b'11111110' TRIS GPIO ; линия GP0 устанавливается на вывод ; остальные на ввод ;******************************************************** ;* ОСНОВНАЯ ПРОГРАММА * ;******************************************************** L1 BTFSC GPIO,02 ; пропустить если GPIO2 = 0 ;(ДАТЧИК НЕ СРАБОТАЛ) GOTO Delay_1 ; ВЫПОЛНИТЬ ПРОВЕРКУ НА ДРЕБЕЗГ BTFSS GPIO,01 ; пропустить если GPIO1 = 1 ; (ВЫКЛЮЧАТЕЛЬ НЕ ВКЛЮЧЕН) GOTO Delay_1 ; ВЫПОЛНИТЬ ПРОВЕРКУ НА ДРЕБЕЗГ BCF GPIO,00 ; **********ВЫКЛЮЧИТЬ СВЕТ******* GOTO L1 ; Возвращаемся и ЖДЕМ СОБЫТИЕ L2 ; ЗАДЕРЖКА АНТИДРЕБЕЗГ ОКОНЧЕНА ; ПРОВЕРЯЕМ СОСТОЯНИЕ КОНТАКТОВ BTFSS GPIO,01 ; пропустить если GPIO1 = 1 ; (ВЫКЛЮЧАТЕЛЬ НЕ ВКЛЮЧЕН) GOTO Delay_2 ; ВКЛЮЧИТЬ СВЕТ ПО ВЫКЛЮЧАТЕЛЮ, ; ВЫПОЛНИТЬ ЗАДЕРЖКУ 30 СЕКУНД BTFSC GPIO,02 ; пропустить если GPIO2 = 0 ; (ДАТЧИК НЕ СРАБОТАЛ) GOTO Delay_3 ; ВКЛЮЧИТЬ СВЕТ ПО ДАТЧИКУ ДВИЖЕНИЯ, ; ВЫПОЛНИТЬ ЗАДЕРЖКУ 2 МИНУТЫ GOTO L1 ;******************************************************** ;* АНТИДРЕБЕЗГ * ;* Задержка 500 000 машинных циклов * ;* Длительность задержки 0.5 секунд * ;******************************************************** ;задержка 0,5 секунд (500 000 циклов) Delay_1 movlw .85 movwf Reg_1 movlw .138 movwf Reg_2 movlw .3 movwf Reg_3 decfsz Reg_1,F goto $-1 decfsz Reg_2,F goto $-3 decfsz Reg_3,F goto $-5 GOTO L2 ;******************************************************** ;* Задержка 30 000 000 машинных циклов * ;* Длительность задержки 30 секунд * ;******************************************************** Delay_2 BSF GPIO,00 ; включить оптрон movlw .162 movwf Reg_1 movlw .49 movwf Reg_2 movlw .153 movwf Reg_3 decfsz Reg_1,F goto $-1 decfsz Reg_2,F goto $-3 BTFSS GPIO,01 ; пропустить если GPIO1 = 1 ; (ВЫКЛЮЧАТЕЛЬ НЕ ВКЛЮЧЕН) если ; включен то: начать отсчет GOTO Delay_2 ; времени задержки с начала decfsz Reg_3,F goto $-7 GOTO L1 ;******************************************************** ;* Задержка 180 000 000 машинных циклов * ;* Длительность задержки 3 минуты * ;******************************************************** Delay_3 BSF GPIO,00 ; включить оптрон movlw .215 movwf Reg_1 movlw .36 movwf Reg_2 movlw .146 movwf Reg_3 movlw .4 movwf Reg_4 decfsz Reg_1,F goto $-1 decfsz Reg_2,F goto $-3 BTFSC GPIO,02 ; пропустить если GPIO2 = 0 ; (ДАТЧИК выключен) если датчик ; включен то: начать отсчет GOTO Delay_3 ; времени задержки с начала decfsz Reg_3,F goto $-7 decfsz Reg_4,F goto $-9 GOTO L1 END

Скачать фал прошивки для микроконтроллера в формате HEX можно здесь

Для проверки была нарисована такая схема в программе симуляции Proteus:Выключатель SW1 является выключателем коридорного освещения, выключатель SW2 симулирует работу датчика движения. Скачать файл для Протеуса можно здесь

Схема была собрана на маленькой макетной плате и установлена в коридорный выключатель.

 

Оставить комментарий

avatar
  Подписаться  
Уведомление о