Luz por detector de movimiento y crepuscular Senpir

27
Luz por detector de movimiento y crepuscular “Senpir” Por Ángel Acaymo M. G. – Tenerife, España [email protected] INTRODUCCIÓN Alguna vez, en la entrada principal de una casa terrena o chalet, después de pasar por el jardín y antes de llegar a la puerta principal de la vivienda, por la noche podría ser molesto al intentar abrir la puerta en ausencia o insuficiente luz. A veces, es buena idea instalar un pequeño aparato electrónico hecho por uno mismo, un circuito capaz de realizar ciertas tareas y estar más cómodo en ciertas situaciones como ésta. Al caer la noche sería una buena idea que el circuito electrónico encienda la luz y se apague cuando empieza a llegar el Sol en las primeras horas de la mañana, por lo que se conoce como interruptor crepuscular. En caso de que no quiera consumir luz durante toda la noche o bien, utiliza las lámparas compactas también conocidas como lámparas de bajo consumo o otra posibilidad que sólo se encienda la lámpara al detectar la presencia de una persona al acercarse a la puerta principal, eso si, al entrar a la vivienda la lámpara se quedará un tiempo encendida seleccionado por la persona, por ejemplo, unos cinco minutos, después se apaga. Ambos modos lo puedes seleccionar en el propio circuito electrónico por el cual lo llamo y llamaré a partir de ahora, “Senpir”. Si lo deseas, puedes hacer el efecto contrario gracias al relé que ya tiene un conmutador e incluso en el propio sensor de movimiento. Este pequeño proyecto está pensado para éste tipo de aplicaciones o cualquier otra tarea como al encender la lámpara mientras vas a la barbacoa que tienes en el otro lado del jardín sin tocar el interruptor, al ser detectado por el sensor de movimiento (PIR), activa una alarma desde el jardín si entra un intruso, etc. Sabiendo que Senpir está controlado por un microcontrolador PIC, podría servir un pequeño proyecto de fin de curso para estudiantes de la rama electricidad- electrónica e incluso cualquier aficionado con un mínimo de conocimiento de electrónica básica. Senpir tiene dos circuitos impreso independiente, una de control y la otra de fuente de alimentación conectada entre sí con un conector y dentro de la misma caja. El motivo de diseñar dos placas diferentes en el mismo circuito electrónico de tipo módulos, es por si cualquier causa falla la placa de la fuente de alimentación, hay corte de la corriente eléctrica desde la red de la casa o por otros motivos, puedes sustituirla por otra placa o conectarla a una batería a parte e incluso en placas solares fotovoltaicas.

description

Interruptor crepuscular y de movimiento microcontrolado documentado paso a paso. Este documento te enseña a crear un dispositivo electrónico con un circuito capaz de encender la luz al caer la noche y de apagarla al salir el sol. Es un proyecto pensado para cualquier tipo de uso, ya sea el poder tener luz de un lado al otro de una casa sin necesidad de tocar el interruptor, hasta el activado de una alarma en caso de detección de intrusos.

Transcript of Luz por detector de movimiento y crepuscular Senpir

Page 1: Luz por detector de movimiento y crepuscular Senpir

Luz por detector de movimiento y crepuscular “Senpir”

Por Ángel Acaymo M. G. – Tenerife, Españ[email protected]

INTRODUCCIÓN

Alguna vez, en la entrada principal de una casa terrena o chalet, después de pasar por el jardín y antes de llegar a la puerta principal de la vivienda, por la noche podría ser molesto al intentar abrir la puerta en ausencia o insuficiente luz. A veces, es buena idea instalar un pequeño aparato electrónico hecho por uno mismo, un circuito capaz de realizar ciertas tareas y estar más cómodo en ciertas situaciones como ésta.

Al caer la noche sería una buena idea que el circuito electrónico encienda la luz y se apague cuando empieza a llegar el Sol en las primeras horas de la mañana, por lo que se conoce como interruptor crepuscular. En caso de que no quiera consumir luz durante toda la noche o bien, utiliza las lámparas compactas también conocidas como lámparas de bajo consumo o otra posibilidad que sólo se encienda la lámpara al detectar la presencia de una persona al acercarse a la puerta principal, eso si, al entrar a la vivienda la lámpara se quedará un tiempo encendida seleccionado por la persona, por ejemplo, unos cinco minutos, después se apaga. Ambos modos lo puedes seleccionar en el propio circuito electrónico por el cual lo llamo y llamaré a partir de ahora, “Senpir”. Si lo deseas, puedes hacer el efecto contrario gracias al relé que ya tiene un conmutador e incluso en el propio sensor de movimiento.

Este pequeño proyecto está pensado para éste tipo de aplicaciones o cualquier otra tarea como al encender la lámpara mientras vas a la barbacoa que tienes en el otro lado del jardín sin tocar el interruptor, al ser detectado por el sensor de movimiento (PIR), activa una alarma desde el jardín si entra un intruso, etc. Sabiendo que Senpir está controlado por un microcontrolador PIC, podría servir un pequeño proyecto de fin de curso para estudiantes de la rama electricidad-electrónica e incluso cualquier aficionado con un mínimo de conocimiento de electrónica básica.

Senpir tiene dos circuitos impreso independiente, una de control y la otra de fuente de alimentación conectada entre sí con un conector y dentro de la misma caja.

El motivo de diseñar dos placas diferentes en el mismo circuito electrónico de tipo módulos, es por si cualquier causa falla la placa de la fuente de alimentación, hay corte de la corriente eléctrica desde la red de la casa o por otros motivos, puedes sustituirla por otra placa o conectarla a una batería a parte e incluso en placas solares fotovoltaicas.

Page 2: Luz por detector de movimiento y crepuscular Senpir

Las características técnicas del Senpir son muy sencillas y entre ella destaca dos placas independientes:

- Fuente de alimentación con un transformador necesario para lograr una tensión fija y estabilizada mediante un regulador.

- Un Relé con un conmutador para la lámpara u otra aplicación.

- Un microcontrolador PIC que controla el circuito.

- Un sensor de Luz o LDR que detecta la presencia de la luz.

- Un sensor infrarrojo de movimiento o PIR.

Fig 1. Fotografía del Senpir.

Page 3: Luz por detector de movimiento y crepuscular Senpir

Fig 2. Componentes del circuito.

DISEÑO DEL CIRCUITO

El control central del circuito es un microcontrolador que controla no sólo el funcionamiento de de las señales de los sensores, de luz y movimiento sino los temporizadores para el relé y diodos led de aviso. Los microcontroladores incluyen microprocesador, memoria del programa, memoria de datos, puertos de entradas y salidas y otras características todo en el mismo encapsulado, ahí está claro la ventaja su reducido tamaño.

El proyecto se ha elegido el popular microcontrolador PIC 16F84A del fabricante Microchip Thecnology Inc. Es muy conocido, donde hay más información, ejemplos, proyectos para aprendizaje y fácil uso. El microcontrolador está desarrollado con un programa bajo el entorno de desarrollo llamado MPLAB que puedes descargar y usar gratuitamente en la Web del fabricante Microchip así como las hojas de datos de todos los dispositivos PIC entre otros periféricos, http://www.microchip.com

Page 4: Luz por detector de movimiento y crepuscular Senpir

DESCRIPCIÓN Y FUNCIONAMIENTO DEL HARDWARE

- Sensor de luz

El sensor LDR viene de la expresión inglesa Light Dependent Resistor. Son componentes pasivos cuya resistencia o su valor óhmico varía en función de la luz recibida. Con él puedes detectar la presencia de luz y oscuridad para activar o desactivar el relé de la lámpara. Al recibir más luz, baja su valor óhmico hasta que el microcontrolador lo detecte y ejecuta su tarea determinada.

- Sensor PIR

El sensor PIR “Passive Infra Red” es un dispositivo piroeléctrico que mide los cambios de niveles de radiación infrarroja emitida por los objetos de su entorno alrededor de seis metros. Cambia su estado lógico en una patilla conectado al microcontrolador. Este sensor es de muy bajo costo y pequeño, se suele utilizar en sistemas de alarmas, iluminación controlada por movimiento y aplicaciones de robótica.

Page 5: Luz por detector de movimiento y crepuscular Senpir

Fig 3. Detector de movimiento PIR.

Sus características técnicas son:

- Voltaje de alimentación: 5VDC.

- Visión máxima 6 metros.

- Estado en su salida TTL.

- Polaridad de salida seleccionable.

- Poco tiempo de calibración.

El sensor PIR sólo usa tres terminales, dos de alimentación y uno de datos que se conecta al microcontrolador.

Fig 4. Conexión del PIR al microcontrolador.

El circuito electrónico se instala dentro de la vivienda con los sensores al exterior. El sensor de luz se instala lejos de la lámpara o que no le dé luz sobre ella excepto la luz ambiente. El sensor de movimiento se instala bajo la lámpara sin que llegue el calor y luz directa ya que puede dar un funcionamiento no esperado.

La fuente de alimentación que tiene 5 voltios desde de la tensión continua de 12 voltios y al menos 1 amperio. En este circuito se encuentra un regulador de tensión 7805. En su entrada dispone de un puente de diodos rectificador de onda completa de 12 voltios con su condensador que hace de filtrado para obtener 12 voltios en continua. El regulador 7805 se encarga de estabilizar los 5 voltios de alimentación del otro circuito principal más los 12 voltios para alimentar el relé. Al final se encuentra un diodo Led de encendido.

Page 6: Luz por detector de movimiento y crepuscular Senpir

Fig 5. Esquema fuente de alimentación.

• Fig 6. Esquema eléctrico del circuito principal.

El circuito principal está controlado con un µC PIC 16F84A donde se comunican dos sensores como entrada, un relé como salida y un micro interruptor para controlar el tipo de configuración deseada y tiempos de encendido.

En las entradas del µC PIC 16F84A, está conectado un micro interruptor, sensor de luz y sensor de movimiento. El sensor de luz o LDR conectado al puerto RB3 (pin 9) como entrada, detecta el día y la noche con la finalidad de hacer un interruptor crepuscular, es decir, que sólo se enciende la lámpara o al caer la noche. Tiene un tiempo de veinte segundos para asegurarse que realmente es de noche o de día.

El sensor de movimiento o PIR, conectado al puerto RB1 (pin 7) como entrada. Tienen elementos fabricados de un material cristalino que genera una carga eléctrica cuando se expone a una radiación infrarroja. Los cambios de la

Page 7: Luz por detector de movimiento y crepuscular Senpir

cantidad de radiación producen cambios de voltaje los cuales son medidos por un amplificador. El sensor PIR contiene unos filtros especiales llamados lentes de Fresnel que enfocan las señales infrarrojas sobre el elemento sensor. Cuando las señales infrarrojas del ambiente donde se encuentra el sensor cambian rápidamente, el amplificador activa la salida para indicar movimiento. Esta salida se queda activa unos segundos permitiendo al micro controlador saber si hubo movimiento.

Funciona a 5VDC, gracias a que tiene un patillaje o pin que se conecta al micro controlador directamente, el sensor PIR funciona como un interruptor a la vez puedes cambiar mediante un jumper el estado lógico de la salida si deseas el efecto contrario.

En la salida RA3 (pin 2) del micro controlador dispone un relé de 12VDC para activar una lámpara o lámpara de la red (220VAC). En la base del transistor T1, pasa a conducción y activa el relé. Este circuito también aísla eléctricamente la carga del micro controlador. El valor de la potencia a controlar depende de los contactos del relé y varía mucho según el modelo, en este caso soporta 10 Amperios. El diodo paralelo al relé se incluye de protección de los transistores por la fuerza contraelectromotriz.

MicrointerruptorPin Puerto B ON OFF4 RB4 (Pin 10) PIR LDR3 RB5 (Pin 11) 5 m. 02 RB6 (Pin 12) 30 m. 01 RB7 (Pin 10) 1 h. 0

Tabla 1. Micro interruptor.

A su salida del puerto A, se visualiza los Led de avisos. Led verde visualiza que se ha elegido la opción interruptor crepuscular y el rojo visualiza que se ha elegido la opción del sensor de movimiento que puedes seleccionar en el microinterruptor Int_RB4 (pin 10). Le Led azul indica que está activado o desactivado el relé en el momento de conmutar así sabrás sin salir de casa su estado actual mirando el circuito o la caja donde lo tienes instalado, en cambio, el Led ambar o amarillo significa el encendido de la fuente de alimentación.

LedAmarillo Fuente alimentación

Verde LDRRojo PIRAzul Relé

Tabla 2. Indicadores de los Led.

Page 8: Luz por detector de movimiento y crepuscular Senpir

PROGRAMA DEL MICROCONTROLADOR 16F84A

El programa del PIC16F84A está escrito con el lenguaje ensamblador. Mediante el diagrama de flujo, es más fácil ver a simple vista un esquema completo sobre su funcionamiento paso por paso.

Inicio

PORTA = SalidaPORTB = Entrada

En principio Bombilla apagada

¿Int_RB4 activado?

LED Rojo = OFFLED Verde = ON

¿LDR en oscuridad?

Retardo 20 segundos

¿LDR aún en oscuridad?

Bombilla y LED Azul encendido

No

Si

No

Si

Retardo 20 segundos

¿LDR ilum. por el Sol?

Bombilla y LED Azul apagado

Si

No

LED Verde = OFFLED Rojo = ON

¿LDR en oscuridad?

Si

No

Bombilla y LED Azul apagado

¿PIR detectada presencia?

Bombilla y LED Azul apagado

Si

No

No

SiBombilla y LED Azul encendido

¿RB5 activado?

¿RB6 activado?

¿RB7 activado?

Retardo 5 minutos

Retardo 30 minutos

Retardo 1 hora

Si

Si

Si

No

No

No

FIN

Principal

Diagrama de flujo.

Fig 7. Diagrama de flujo.

Page 9: Luz por detector de movimiento y crepuscular Senpir

Fig 8. Cara componentes.

Fig 9. Cara pistas esquema.

Page 10: Luz por detector de movimiento y crepuscular Senpir

Fig 10. Cara pistas.

Page 11: Luz por detector de movimiento y crepuscular Senpir

Fig 11. Vista perspectiva.

Page 12: Luz por detector de movimiento y crepuscular Senpir

Fig 12. Vista trasera.

Page 13: Luz por detector de movimiento y crepuscular Senpir

Fig 13. Proyecto acabado.

Page 14: Luz por detector de movimiento y crepuscular Senpir

VÍDEOS

Vídeos del circuito Senpir funcionando con el PIC16F84A, también con código fuente para el PIC16F88.

1) Ver vídeo.

2) Ver vídeo.

Page 15: Luz por detector de movimiento y crepuscular Senpir

LISTA DE MATERIALES

Resistencias:

R1, R2, R3, R4, R11 = 10 KΩR5, R6, R7, R9 = 330 ΩR10 = 100 ΩR12 = 33 KΩ

Condensadores:

C1, C2 = 22 pF

Diodos:

D1 = Led 5 mm bicolor verde rojoD2 = Led 5 mm AzulD3 = 1N4148

Transistor:

T1 = 2N2222

Varios:

R = LDRX1 = 4MHZ (Cristal de cuarzo)DSW1 = 4 interruptoresP1 = 4K7 Ω PotenciómetroRL1 = 12VDC, 10Amp, 1 ConmutadorS1 = Botón resetJ1, J2, J4 = 2 bornesJ3 = 3 bornesJ5 = 4 bornesIC1 = PIC16F84A-04 (También compatible con PIC16F88)

Page 16: Luz por detector de movimiento y crepuscular Senpir

CÓDIGO FUENTE PIC16F84A

;¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬Senpir.asm¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬;; PROGRAMA: "Senpir". Luz por detector de movimiento y crepuscular.; AUTOR: Ángel Acaymo M. G.; E-MAIL; [email protected]; PROCESADOR: PIC16F84A; FRECUENCIA: 4 MHz; VERSIÓN: 1.00; DESCRIPCIÓN:;; Programa de un interruptor con sensor movimiento y de luz solar: Si es de noche,; mientras el sensor de movimiento (PIR) detecta la presencia de alguien; entorno a 6 metros, activa o se pone a 1 la entrada RA3 y la lámpara; se enciende. En caso de que sea de día detectado por la LDR, nunca se enciende; la lámpara. En la otra opción, cuando la LDR detecta la noche o falta de Sol,; la lámpara se enciende, cuando sea de día, la lámpara se apaga.; En los microinterruptores puedes activar el tiempo que tarda en apagarse la; lámpara después de ser detectado por el sensor Pir y de noche de un máximo; una hora y treinta y cinco minutos.;;¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

; DATOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

LIST P=16F84AINCLUDE <P16F84A.INC>__CONFIG 3FF1__idlocs 0001 ; ID, versión del programa.

CBLOCK 0x0CENDC

#DEFINE Led_verde PORTA,0 ; Led verde indica opción LDR seleccionada.#DEFINE Led_rojo PORTA,1 ; Led rojo indica opción PIR seleccionada.#DEFINE Led_azul PORTA,2 ; Led azul indica que el Relé está activado.#DEFINE lámpara PORTA,3 ; lámpara.#DEFINE PIR PORTB,1 ; Sensor PIR.#DEFINE LDR PORTB,3 ; Sensor LDR.#DEFINE Int_RB4 PORTB,4 ; Interruptor RB4.#DEFINE Int_RB5 PORTB,5 ; Interruptor RB5.#DEFINE Int_RB6 PORTB,6 ; Interruptor RB6.#DEFINE Int_RB7 PORTB,7 ; Interruptor RB7.

Page 17: Luz por detector de movimiento y crepuscular Senpir

; EEPROM ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0x2100 ; Comienza en la dirección 0 de la memoria EERPOM.; Datos nombre del archivo, versión del programa; y dirección del correo electrónico.

DE "Senpir.asm. v1.0. 25-03-2009. [email protected]", 0x00

; CÓDIGOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0Inicio

bsf STATUS,RP0 ; Accede al Banco 1.clrf PORTA ; Puerto A como salidas.movlw b'11111111' ; Las 8 líneas del puerto B se configura como entradas.movwf PORTBbcf STATUS,RP0 ; Accede al Banco 0.clrf PORTA ; Supuestamente la lámpara y Led apagadas.

Opcion_principalbtfss Int_RB4 ; ¿Bit 4 del PORTB es "1"? ¿Int_RB4 activado?goto Opcion_LDR ; No, activa modo LDR.goto Opcion_PIR ; Sí, activa modo PIR.

; INTERRUPTOR CREPUSCULAR LDR ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

Opcion_LDRbcf Led_rojo ; Se apaga el Led rojo.bsf Led_verde ; Enciende Led verde indicando modo LDR activado.btfss LDR ; ¿La entrada LDR es igual a 1?, ¿LDR en oscuridad?goto Apaga_la_lámpara ; No, la LDR está iluminada por el Sol. La lámpara se apaga.

Enciende_la_lámparacall Retardo_20_seg ; Espera 20 segundos para confirmar la oscuridad.btfss LDR ; ¿Entrada es igual a 1?, ¿LDR aún en oscuridad?goto Opcion_principal ; No, sale fuera.bsf lámpara ; Sí, enciende la lámpara.bsf Led_azul ; Led_azul activo.goto Opcion_principal

Apaga_la_lámparacall Retardo_20_seg ; Espera 20 segundos para confirmar la oscuridad.btfsc LDR ; ¿Entrada es = 0?, ¿LDR sigue iluminada por luz del sol?goto Opcion_principal ; No, sale fuera.bcf lámpara ; Sí, apaga lámpara.bcf Led_azul ; Led_azul indica que la lámpara está apagada.goto Opcion_principal

Page 18: Luz por detector de movimiento y crepuscular Senpir

; DETECTOR DE MOVIMIENTO ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

Opcion_PIRbcf Led_verde ; Apaga el Led verde de aviso.bsf Led_rojo ; Enciende Led rojo avisando que está activado el modo PIR.btfss LDR ; ¿La entrada LDR es igual a 1?, ¿LDR en oscuridad?goto lámpara_OFF ; No.btfss PIR ; ¿La entrada PIR es igual a 1?, ¿PIR ha detectado presencia?goto lámpara_OFF ; No, no ha detectado presencia o movimiento.

lámpara_ONbsf lámpara ; Sí, enciende la lámpara.bsf Led_azul ; Led_azul activo.btfss Int_RB5 ; ¿Bit 5 del PORTB es igual a 1?, ¿Activado el interruptor

RB5?goto RB6 ; No, salta a la línea siguiente.call Retardo_5_min ; Tiempo lámpara encendida 5 minutos.

RB6btfss Int_RB6 ; ¿Bit 6 del PORTB es igual a 1?, ¿Activado el interruptor

RB6?goto RB7call Retardo_30_min ; Tiempo lámpara encendida 30 minutos.

RB7btfss Int_RB7 ; ¿Bit 7 del PORTB es igual a 1?, ¿Activado el interruptor

RB7?goto Opcion_principalcall Retardo_1_hora ; Tiempo lámpara encendida 1 hora.goto Opcion_principal

lámpara_OFFbcf lámpara ; Apaga lámpara.bcf Led_azul ; Apaga Led_azul.goto Opcion_principal

; SUBRUTINAS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

; Retardo de 20 segundos ................................................................cblockret_00ret_01ret_02Nuloendc

Retardo_20_seg;19999992 ciclos

movlw 0xB5

Page 19: Luz por detector de movimiento y crepuscular Senpir

movwf ret_00movlw 0x99movwf ret_01movlw 0x2Cmovwf ret_02

Retardo_20_seg_0decfsz ret_00, fgoto $+2decfsz ret_01, fgoto $+2decfsz ret_02, fgoto Retardo_20_seg_0

;4 ciclosgoto $+1goto $+1

;4 ciclos (incluyendo call)return

; Retardo de 5 minutos ..................................................................cblockret_05ret_06ret_07ret_08endc

Retardo_5_min;299999995 ciclos

movlw 0x54movwf ret_05movlw 0xA1movwf ret_06movlw 0xFDmovwf ret_07movlw 0x02movwf ret_08

Retardo_5_min_0decfsz ret_05, fgoto $+2decfsz ret_06, fgoto $+2decfsz ret_07, fgoto $+2decfsz ret_08, fgoto Retardo_5_min_0

Page 20: Luz por detector de movimiento y crepuscular Senpir

;1 ciclonop

;4 ciclos (incluyendo call)return

; Retardo de 30 minutos .................................................................cblockret_09ret_10ret_11ret_12endc

Retardo_30_min;1799999989 ciclos

movlw 0xFEmovwf ret_09movlw 0xC2movwf ret_10movlw 0xECmovwf ret_11movlw 0x0Cmovwf ret_12

Retardo_30_min_0decfsz ret_09, fgoto $+2decfsz ret_10, fgoto $+2decfsz ret_11, fgoto $+2decfsz ret_12, fgoto Retardo_30_min_0

;7 ciclosgoto $+1goto $+1goto $+1nop

;4 ciclos (incluyendo call)return

; Retardo de 1 hora .....................................................................cblockret_13ret_14ret_15

Page 21: Luz por detector de movimiento y crepuscular Senpir

ret_16endc

Retardo_1_hora;3599999989 ciclos

movlw 0xFEmovwf ret_13movlw 0x84movwf ret_14movlw 0xD8movwf ret_15movlw 0x18movwf ret_16

Retardo_1_hora_0decfsz ret_13, fgoto $+2decfsz ret_14, fgoto $+2decfsz ret_15, fgoto $+2decfsz ret_16, fgoto Retardo_1_hora_0

;7 ciclosgoto $+1goto $+1goto $+1nop

;4 ciclos (incluyendo call)return

END

Page 22: Luz por detector de movimiento y crepuscular Senpir

CÓDIGO FUENTE PIC16F88

;¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬Senpir.asm¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬;; PROGRAMA: "Senpir". Luz por detector de movimiento y crepuscular.; AUTOR: Ángel Acaymo M. G.; E-MAIL; [email protected]; PROCESADOR: PIC16F88; FRECUENCIA: 4 MHz; VERSIÓN: 1.0; DESCRIPCIÓN:;; Programa de un interruptor con sensor movimiento y de luz solar:; Si es de noche,; mientras el sensor de movimiento (PIR) detecta la presencia de alguien ; entorno a 6 metros, activa o se pone a 1 la entrada RA3 y la lámpara; se enciende. En caso de que sea de día detectado por la LDR, nunca se ; enciende ; la lámpara. En la otra opción, cuando la LDR detecta la noche o falta de ; Sol, la lámpara se enciende, cuando sea de día, la lámpara se apaga.; En los microinterruptores puedes activar el tiempo que tarda en apagarse ; la lámpara después de ser detectado por el sensor Pir ; y de noche de un máximo una hora y treinta y cinco minutos.;;¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

; __CONFIG ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬;; _CP_OFF: Protección de código DESACTIVADO.; _DEBUG_OFF: Debug en circuito DESACTIVADO.; _WRT_PROTECT_OFF: Protección a escritura en memoria de programa DESACTIVADO.; _CPD_OFF: Protección de código de datos DESACTIVADO.; _LVP_OFF: Programación en baja tensión DESACTIVADO.; _BODEN_OFF: Reset por Brown-out DESACTIVADO.; _MCLRE_ON: Reset por pin externo ACTIVADO.; _PWRTE_ON: Retraso al reset ACTIVADO.; _WDT_OFF: Watchdog DESACTIVADO.; _XT_OSC: Oscilador externo del tipo XT.;---------------------------------------------------------------------------; _IESO_OFF: Modo de intercambio de externo a interno DESACTIVADO.; _FCMEN_OFF: Monitor de CLK DESACTIVADO.

; DATOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬LIST P=16F88INCLUDE <P16F88.INC>__CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF &

_LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF__idlocs 0001 ; ID, versión del programa.

CBLOCK 0x20ENDC

#DEFINE Led_verde PORTA,0 ; Led verde indica opción LDR seleccionada.

Page 23: Luz por detector de movimiento y crepuscular Senpir

#DEFINE Led_rojo PORTA,1 ; Led rojo indica opción PIR seleccionada.#DEFINE Led_azul PORTA,2 ; Led azul indica que el Relé está activado.#DEFINE lámpara PORTA,3 ; lámpara.#DEFINE PIR PORTB,1 ; Sensor PIR.#DEFINE LDR PORTB,3 ; Sensor LDR.#DEFINE Int_RB4 PORTB,4 ; Interruptor RB4.#DEFINE Int_RB5 PORTB,5 ; Interruptor RB5.#DEFINE Int_RB6 PORTB,6 ; Interruptor RB6.#DEFINE Int_RB7 PORTB,7 ; Interruptor RB7.

; EEPROM ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0x2100 ; Comienza en la dirección 0 de la memoria EERPOM.; Datos nombre del archivo, versión del programa; y dirección del correo electrónico.

DE "Senpir_16F88.asm. v1.0. 02-01-2010. [email protected]", 0x00

; CÓDIGOS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

ORG 0Inicio BANKSEL CMCON ; Cambio al banco 1. movlw b'00000111' ; .7 movwf CMCON ; Comparadores apagados.

clrf ANSEL ; Pines digitales.clrf TRISA ; PORTA como salida.movlw b'11111111'movwf TRISB ; PORTB como entrada.BANKSEL PORTA ; Cambio al banco 0.clrf PORTA ; Supuestamente la lámpara y Led apagadas.

Opcion_principalbtfss Int_RB4 ; ¿Bit 4 del PORTB es "1"? ¿Int_RB4 activado?goto Opcion_LDR ; No, activa modo LDR.goto Opcion_PIR ; Sí, activa modo PIR.

; INTERRUPTOR CREPUSCULAR LDR ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

Opcion_LDRbcf Led_rojo ; Se apaga el Led rojo.

bsf Led_verde ; Enciende Led verde indicando modo LDR activado.btfss LDR ; ¿La entrada LDR es igual a 1?, ¿LDR en oscuridad?goto Apaga_la_lámpara ; No, la LDR está iluminada por el Sol. La lámpara se

apaga.Enciende_la_lámpara

call Retardo_20_seg ; Espera 20 segundos para confirmar la oscuridad.btfss LDR ; ¿Entrada es igual a 1?, ¿LDR aún en oscuridad?goto Opcion_principal ; No, sale fuera.bsf lámpara ; Sí, enciende la lámpara.bsf Led_azul ; Led_azul activo.goto Opcion_principal

Apaga_la_lámparacall Retardo_20_seg ; Espera 20 segundos para confirmar la oscuridad.btfsc LDR ; ¿Entrada es = 0?, ¿LDR sigue iluminada por luz del

sol?goto Opcion_principal ; No, sale fuera.bcf lámpara ; Sí, apaga lámpara.

Page 24: Luz por detector de movimiento y crepuscular Senpir

bcf Led_azul ; Led_azul indica que la lámpara está apagada.goto Opcion_principal

; DETECTOR DE MOVIMIENTO ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

Opcion_PIRbcf Led_verde ; Apaga el Led verde de aviso.bsf Led_rojo ; Enciende Led rojo avisando que está activado el modo PIR.btfss LDR ; ¿La entrada LDR es igual a 1?, ¿LDR en oscuridad?goto lámpara_OFF ; No.btfss PIR ; ¿La entrada PIR es igual a 1?, ¿PIR ha detectado presencia?goto lámpara_OFF ; No, no ha detectado presencia o movimiento.

lámpara_ONbsf lámpara ; Sí, enciende la lámpara.bsf Led_azul ; Led_azul activo.btfss Int_RB5 ; ¿Bit 5 del PORTB es igual a 1?, ¿Activado el interruptor RB5?goto RB6 ; No, salta a la línea siguiente.call Retardo_5_min ; Tiempo lámpara encendida 5 minutos.

RB6btfss Int_RB6 ; ¿Bit 6 del PORTB es igual a 1?, ¿Activado el interruptor RB6?goto RB7call Retardo_30_min ; Tiempo lámpara encendida 30 minutos.

RB7btfss Int_RB7 ; ¿Bit 7 del PORTB es igual a 1?, ¿Activado el interruptor RB7?goto Opcion_principalcall Retardo_1_hora ; Tiempo lámpara encendida 1 hora.goto Opcion_principal

lámpara_OFFbcf lámpara ; Apaga lámpara.bcf Led_azul ; Apaga Led_azul.goto Opcion_principal

; SUBRUTINAS ¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬

; Retardo de 20 segundos ................................................cblockret_00ret_01ret_02Nuloendc

Retardo_20_seg;19999992 ciclos

movlw 0xB5movwf ret_00movlw 0x99movwf ret_01movlw 0x2Cmovwf ret_02

Retardo_20_seg_0decfsz ret_00, fgoto $+2decfsz ret_01, fgoto $+2decfsz ret_02, fgoto Retardo_20_seg_0

Page 25: Luz por detector de movimiento y crepuscular Senpir

;4 ciclosgoto $+1goto $+1

;4 ciclos (incluyendo call)return

; Retardo de 5 minutos ...............................................cblockret_05ret_06ret_07ret_08endc

Retardo_5_min;299999995 ciclos

movlw 0x54movwf ret_05movlw 0xA1movwf ret_06movlw 0xFDmovwf ret_07movlw 0x02movwf ret_08

Retardo_5_min_0decfsz ret_05, fgoto $+2decfsz ret_06, fgoto $+2decfsz ret_07, fgoto $+2decfsz ret_08, fgoto Retardo_5_min_0

;1 ciclonop

;4 ciclos (incluyendo call)return

; Retardo de 30 minutos ........................................................cblockret_09ret_10ret_11ret_12endc

Retardo_30_min;1799999989 ciclos

movlw 0xFEmovwf ret_09movlw 0xC2movwf ret_10movlw 0xECmovwf ret_11movlw 0x0C

Page 26: Luz por detector de movimiento y crepuscular Senpir

movwf ret_12Retardo_30_min_0

decfsz ret_09, fgoto $+2decfsz ret_10, fgoto $+2decfsz ret_11, fgoto $+2decfsz ret_12, fgoto Retardo_30_min_0

;7 ciclosgoto $+1goto $+1goto $+1nop

;4 ciclos (incluyendo call)return

; Retardo de 1 hora ...........................................................cblockret_13ret_14ret_15ret_16endc

Retardo_1_hora;3599999989 ciclos

movlw 0xFEmovwf ret_13movlw 0x84movwf ret_14movlw 0xD8movwf ret_15movlw 0x18movwf ret_16

Retardo_1_hora_0decfsz ret_13, fgoto $+2decfsz ret_14, fgoto $+2decfsz ret_15, fgoto $+2decfsz ret_16, fgoto Retardo_1_hora_0

;7 ciclosgoto $+1goto $+1goto $+1nop

;4 ciclos (incluyendo call)return

END

Page 27: Luz por detector de movimiento y crepuscular Senpir

Autor: Ángel Acaymo M. G.Versión: 2.00Publicado por primera vez: 16-11-2009Última actualización: 02-01-2010

www.electronica-pic.blogspot.comwww.abcdatos.com/tutoriales/tutorial/v875.htmlwww.pic16f84a.org