Alarma con sensores pic 16f84.

Hola a to2¡¡

Es la primera vez que ingreso en un foro de electronica y esto ha sido devido a que me encuentro bastante apurado con un programa que tengo que realizar.
Me han hablado muy bien de este foro y he estado mirandolo un poco antes. Lo que he visto me ha encantado la verdad por eso he decidido registarme.
Bueno si alguen pudiese tener unos minutos para ayudarme le estaria muy agradecido. Mi problema es que tengo un realizar programa con el pic 16f84 que y ando bastante perdidillo el programa consiste en un local con 4 sensores de movimiento que son S0=RA0-S1=RA1-S2=RA2-S3=RA3 junto con un teclado matricial el cual tiene un codigo para entrar "A5" entonces lo que tengo que programar es: Si el codigo esta en "on" no pasa nada y si el codigo por el contrario no esta en "on" al activarse un sensor cualquiera se enciende la alarma que es "RA4". Si pudiesen darme unas pautas para comenzar el programa se lo agradeceria.

Muchisimas gracias de antemano por todo si pueden ayudarme un poquillo les estaria muy agradecido muchisimas gracias.

Saludos a todos.
 
Si las entradas las situas en el puerto B puedes utilizar el sistema de interrupciones, por lo que te ahorras estar continuamente explorando las entradas, e incluso puedes ponerlo en modo sleep.
 
Cuando se anda perdido lo mejor es empezar con cosas sencillas y despues ya complicaras.


1.-Haz un blucle que lea las entradas del puerto B y encienda unos led en el puerto A.

Esto te obliga a configurar los puertos A y B, el A como salida (tris 0x00) y el B como entrada (tris 0xff)

Una vez configurado solo debes hacer un bucle sin fin que lea y escriva los puertos.

Recuerda que en el pic no puedes inyectarle mas de 5V, si los sensores te dan mas debes poner un divisor de tension o un zener o silinalres ya lo comentariamos)
 
Muchas gracias por buestra ayuda e podido resolver algo ahora mi problema biene a la hora de introducir el teclado matricial que la verdad m esta dndo bastantes problemas tanto que nose donde introducirlo ni como programarlo. He consultado algunas paginas pero no logro enterarme de como configurar este adecuandolo a mi proyecto os adjunto lo que e logrado hacer.

Muchas gracias y un saludo.
 
org 0

BSF ESTADO,5
MOVLW 0XFF
MOVWF PORTA
CLRF PORTB
BCF ESTADO,5
ALARMA BTFSS PORTA,0
GOTO SONIDO
BTFSS PORTA,1
GOTO SONIDO
BTFSS PORTA,2
GOTO SONIDO
BTFSS PORTA,3
GOTO SONIDO
GOTO SONIDO
SONIDO BSF PORTB,1
END.
 
marifloro, por lo que veo tu programa lee todas las entradas del puerto A, y si es 0 se activa la salida del puerto B, menos en el ultimo caso que sin importar como este, la alarma va a sonar igual... para que eso no pase tendrias que borrar los dos ultimos saltos.

otro error es que esto lo va a hacer una sola vez hasta que llegue al "END", despues de esto no lo va a hacer mas hasta que resetees... para que esto no pase tendrias qe poner un salto despues de "SONIDO BSF PORTB,1"...

para que lo veas mejor, te qedaria algo asi:

org 0

BSF ESTADO,5 ;Acceso al Banco 1
MOVLW 0XFF ;Carga b'11111111' al registro de trabajo
MOVWF PORTA ;Configura al puerto A como entrada
CLRF PORTB ;Configura al Puerto B como salida
BCF ESTADO,5 ;Acceso al Banco 0
ALARMA BTFSS PORTA,0 ;Revisa cada entrada del puerto A
GOTO SONIDO ;y si alguna entrada es 1
BTFSS PORTA,1 ;entonces activa la salida 1 del puerto B
GOTO SONIDO
BTFSS PORTA,2
GOTO SONIDO
BTFSS PORTA,3 ;Si PORTA,3 = 1 Salt a "GOTO ALARMA"
SONIDO BSF PORTB,1 ;No estan mas los saltos
GOTO ALARMA ;Esto hace un bucle infinito
END
 
Muchas gracias por tu ayuda manonline me has ayudado mucho ahora tengo una pequeña duda mas si me pudieses ayudar ya seria demasiado. Tengo que introducir un teclado matricial con un codigo el cual es A5 si este codigo esta activado no pasa nada pero si no esta activado cualquier sensor dectecta movimiento salta la alarma. He conseguido descubriri como funciona un teclado matricial lo unico es que nose donde puedo introducirlo en mi proyecto si m pudieses dar alguna pista.

Muchas gracias Manonline un saludo y disculpa las molestias.

Te adjunto el funcionamiento del teclado matricial.
 
Aqui adjunto el teclado matricial.

Haber si me puedes solucionar la duda muchas gracias.

Saludos.

Código:
KB_Port                        ;Inicializa la puerta B para las entradas del
                               ;teclado. Programa RB0-3 como salidas y RB4-7
                               ;entradas con las resistencias de polarizacion
                               ;habilitadas.           
                BSF     STATUS,RP0      ;Selecciona P gina 1             
                MOVLW   0F0h            ;PB4-7 como entradas  
                MOVWF   TRISB           ;y PB0-3 como salidas
                BSF     OPCION,RBPU     ;Habilita R de polarizacion en entradas
                BCF     STATUS,RP0      ;Vuelve a la p gina 0.
                RETURN                  ;Retorna.
                                        
KB_Scan                                 ;Escanea el teclado
                CLRF    Tecla           ;Borra Tecla y
                INCF    Tecla,f         ;prepara Tecla para primer c¢digo.
                MOVLW   0Eh             ;Saca 0 a la primera fila
                MOVWF   PORTB           ;de la Puerta B
                NOP                     ;Nada para estabilizaci¢n de señal.  
Cheq_Col        BTFSS   PORTB,4         ;Primera columna = 0        
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,5         ;Segunda columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,6         ;Tercera columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada, incrementa tecla.
                BTFSS   PORTB,7         ;Cuarta columna = 0
                GOTO    antirebotes     ;Sale si se ha pulsado tecla.
                INCF    Tecla,f         ;Si no tecla pulsada,incrementa Tecla.
                                        
Ultima_Tecla    MOVLW   d'17'           ;Carga W con el n£mero de Teclas + 1.
                SUBWF   Tecla,w         ;y lo compara con el valor actual de Tecla.
                BTFSC   STATUS,Z        ;Si Tecla + 1 = valor actual.
                GOTO    NTeclas         ;No ha sido pulsada ninguna tecla.
                BSF     STATUS,C        ;Pone a 1 Bit C.    
                RLF     PORTB,f     ;as¡ la Fila 1 pasa a 1 con la rotaci¢n a izqda.
                GOTO    Cheq_Col                                             
                                                            
NTeclas         CLRF    Tecla           ;Coloca variable Tecla a 0
                RETURN                  ;y regresa.         
                                                            
antirebotes	;ahora se espera a que la tecla sea soltada para evitar rebotes
		;y reactivaciones de tecla
		;esta parte puede ser eliminada si para nuestro proyecto no es necesaria
      		;o es un inconveniente.

Espera1         BTFSS   PORTB,4         ;Si no se suelta la tecla FILA 1
                GOTO    Espera1         ;vuelve a esperar. 
Espera2         BTFSS   PORTB,5         ;Si no se suelta la tecla FILA 2
                GOTO    Espera2         ;vuelve a esperar.
Espera3         BTFSS   PORTB,6         ;Si no se suelta la tecla FILA 3
                GOTO    Espera3         ;vuelve a esperar.              
Espera4         BTFSS   PORTB,7         ;Si no se suelta la tecla FILA 4
                GOTO    Espera4         ;vuelve a esperar.          
                
                MOVF    Tecla,w		;pone en w el numero contenido en la variable
                CALL    T_Conv          ;llama a la tabla de conversion y retorna
                MOVWF   Tecla  		;con el valor en hexadecimal y lo pone en la variable.
                RETURN       		;vuelve al programa principal que hizo la llamada.
                 
                             
T_Conv          ADDWF   PCL,1
                RETLW   '0'             ;Tecla nº0 = 0
                RETLW   '1'             ;Tecla nº1 = 1
                RETLW   '4'             ;Tecla nº2 = 4
                RETLW   '7'             ;Tecla nº3 = 7 
                RETLW   'A'             ;Tecla nº4 = A                       
                RETLW   '2'             ;Tecla nº5 = 2 
                RETLW   '5'             ;Tecla nº6 = 5 
                RETLW   '8'             ;Tecla nº7 = 8 
                RETLW   '0'             ;Tecla nº8 = 0 
                RETLW   '3'             ;Tecla nº9 = 3 
                RETLW   '6'             ;Tecla nº10 = 6
                RETLW   '9'             ;Tecla nº11 = 9
                RETLW   'B'             ;Tecla nº12 = B
                RETLW   'F'             ;Tecla nº13 = F
                RETLW   'E'             ;Tecla nº14 = E
                RETLW   'D'             ;Tecla nº15 = D
                RETLW   'C'             ;Tecla nº16 = C
 
amigos, estoy buscando un esquema electronico de una alarma completita con pic, y como yo no tengo idea de como hacerlo con pic's, pretendo que alguien me pueda ayudar.

solo el esquema, yo hago el pcb, todo lo q falte.

obviamente necesitaria el codigo fuente para programarlo.

les cuento q recien comienzo con pic's, tengo una interface casera linda, y el winpic800 v3.63
 
AMIGOS, realmente querria saber de algun sistema microcontrolado, con cualquier clase y tipo de PIC's, no puede ser que haya buscado por toda la red, y solo encontre 1 link medio relacionado con ell tema.

yo recien comienzo con el tema pic's, pero realmente si supiera compilar codigo fuente, etc, ya hubiese hecho algun sistema bien lindo de alarma, con varias funciones.

de ultima cualquier circuito con pic's me sirve, quiero empezar a programar y ensamblar.

los proyectos q tengo pensado son:

alarma completita
controlador para CNC 3D
controlador de servos.
 
DJ DRACO , la alarma con pic si la realizas con unos tiempos predefinidos es muy simple y facil de realizar.
Si quieres te ayudo en este tipo de alarma.
Te propongo estas caracteristicas, si quieres las modificas o añades algo mas:
Tiempo de salida 30 seg
tiempo de entrada 10 seg
Tiempo de funcionamiento de la sirena de 1minuto
Tiempo de reposo para volver a actuar sobre la sirena 5 minutos.
Salida para altavoz con sonido bitonal de 1khz y 1,5Khz
Salida par conectar otro tipo de sirena
salida para lampara con una cadencia de 2hz
salida para led indicador de tiempo de entrada
salida para led indicador de tiempo de salida
salida para led indicador de alarma activada
salida para una chichara que avisa del tiempo de salida y de entrada
Entrada para conectar al bombin de la llave de conexion y desconexion
1 entrada de disparo sin tiempo de entrada
1 entrada de alarma por sabotaje
3 entradas temporizadas

(todas las entradas se activan al abrir el circuito)
Podemos realizarlo con un pic 16f84.
Si te interesa sube tu el esquema con el pic aca en el foro, luego si no me interesa te cambiare los pines del pic.
 
muy buena tu propuesta, y me encantaria saber como hacerlo... pero no sep. si puedo subo una especie de esquema.

basicamente usariamos las entradas del pic para los sensores.
y las salidas las programamos para q le den señal a la sirena, y a una luz q se retarda unos 2 segundos.

me gusta la idea. voy a ver como le hago... :eek: :eek: :cry:

gracias
 
pepechip dijo:
DJ DRACO , la alarma con pic si la realizas con unos tiempos predefinidos es muy simple y facil de realizar.
Si quieres te ayudo en este tipo de alarma.
Te propongo estas caracteristicas, si quieres las modificas o añades algo mas:
Tiempo de salida 30 seg
tiempo de entrada 10 seg
Tiempo de funcionamiento de la sirena de 1minuto
Tiempo de reposo para volver a actuar sobre la sirena 5 minutos.
Salida para altavoz con sonido bitonal de 1khz y 1,5Khz
Salida par conectar otro tipo de sirena
salida para lampara con una cadencia de 2hz
salida para led indicador de tiempo de entrada
salida para led indicador de tiempo de salida
salida para led indicador de alarma activada
salida para una chichara que avisa del tiempo de salida y de entrada
Entrada para conectar al bombin de la llave de conexion y desconexion
1 entrada de disparo sin tiempo de entrada
1 entrada de alarma por sabotaje
3 entradas temporizadas

(todas las entradas se activan al abrir el circuito)
Podemos realizarlo con un pic 16f84.
Si te interesa sube tu el esquema con el pic aca en el foro, luego si no me interesa te cambiare los pines del pic.

Muy buena idea. Por cierto. ¿Qué tipo de temporizadores usa para el 16F84A, TIMER o retardos?
 
el pic tiene clock interno. tambien podriamos usar el 16f88 q tiene mejoras respecto al 84.

otro temita, hace muy poco que estoy viendo el tema de compuertas logicas, etc. no sabria bien como diseñar el esquema electronico con el pic. Es como q veo un pic y me bloqueo.

yo entiendo q las entradas (creo q son las RA) pueden tener estado logico 1 o 0, y q yo debo programarlo para q cuando el estado cambie ocurra algo, pero ese es justamente mi problema, no tengo idea ops:

podria intentar tirar un esquema, pero tengo miedo de confundir a los q sepan tan poco como yo...

toy haciendo el circuito, creo q esta bien, y para q se active el sistema cuando se le quita la tension de alimentación, tendria q colocar q la tension genere un estado 1 en una entrada, cosa q cuando se la quiten baje a 0 y ahi se active todo el sistema?
 
tanto las RA como las RB se pueden programar indistintamente como entradas y como salidas.

En cuanto a los retardos aun no me he planteado la forma de realizarlos.
 
Ojo con los retardos ya que el pic se queda como esclavo, es decir, no ejecuta otra operación hasta que acabe la primera. Con el TIMER al menos tiene interrupción. Si se te queda corto el TIMER hay PIC con varios TIMER.
 
entonces el circuito esta relativamente bien, yo tome todas las ra como entradas y las rb como salidas, de manera tal de tner 5 entradas maximo, y 8 salidas bien programaditas.

voy a seguir y ver el tema de los retardos.

sino, otra entrada q permita o no funcionar el circuito, con algun cd4013 y receptor fm para activar de lejos.
 
Atrás
Arriba