BIENVENIDO





lunes, 6 de junio de 2011

PROYECTO: CERRADURA ELECTRÓNICA

*      EQUIPO
·         Computadora.
·         Tarjeta de desarrollo PIC
·         Fuente de +5V


*      MATERIAL

·         PIC 18F4550
·         Cable USB
·         Cables de conexión.
·         Teclado matricial
·         LCD
·         Relevadores de 5V
·         Solenoide
·         Zumbador
·         Resistencias de 100ohms y 4.7Kohms
·         Leds
·         Placa
·         Headers
·         Selenoide
·         Borneras
·         Cables planos
·         Transistores 2N3904
·         Pinzas de punta y corte





*      INTRODUCCIÓN
El proyecto consiste en una cerradura electrónica que es controlada mediante un teclado matricial en el cual se introduce una clave de acceso, que posteriormente leerá el micro.
Al inicializar todo el sistema la LCD simplemente muestra los mensajes de bienvenida y al terminar estos muestra un mensaje que pide introducir el NIP para activar la cerradura electrónica.
Se pueden presentar los siguientes casos:

·         Si la contraseña que se introduce es correcta se desplegara en la LCD el mensaje “Acceso confirmado”, dando la orden de abrir la cerradura, mediante un relevador que activa el solenoide que abrirá la puerta.
·          Si la contraseña que se introduce es incorrecta se desplegara en la  LCD el mensaje de “Acceso denegado” y la cerradura electrónica no abrirá indicando que se ha digitalizado una contraseña errónea.
·         Si se  introduce tres veces continuas una contraseña errónea se activara una alarma que sonara en cuatro ocasiones seguidas.

Este proyecto podemos implementarlo como dispositivo de seguridad, además de ser económico y de muy buena calidad.
                                       



*      DESARROLLO

 En el proyecto usamos la estrategia de divide y vencerás, es decir, fuimos trabajando cada una de las partes que en conjunto constituyen nuestro proyecto y al final simplemente las enlazamos.

 Teclado matricial: 

El primer paso fue desarrollar un programa en lenguaje C para leer datos de un teclado matricial. El programa mostraba los datos leídos por dicho teclado en un display de 7 segmentos.  De esta manera comprendimos como mostrar el dato introducido por medio de la tecla presionada en un Display. Esto nos serviría para introducir la contraseña mediante el teclado para activar la cerradura.

El teclado matricial es un dispositivo de entrada que consiste en un arreglo matricial de 16 interruptores. Dispone de un conector de 8 pines: 4 filas y 4 columnas.  Debe conocerse en primera instancia cuales pines son para las filas y cuales son para las columnas para su buen funcionamiento en el programa. 

1.       El PIC 18F4550 ya está preparado para conectar un teclado matricial al implementar las resistencias de Pull Up en el puerto B, resistencias internas que protegen al micro de cortos. Para habilitarlas es mediante el registro INCONT2 en el bit 7 puesto en cero; de este modo quedaran habilitadas para el puerto B y solo faltara configurar que nible usaremos como salida y cual como entrada.

2.        Los bits configurados como entrada, están a ‘1’ lógico mientras que las salidas están a ‘0’ lógico. Cuando se presiona una tecla se conecta una fila con una columna. La manera de averiguar la tecla presionada consiste en enviar un nivel lógico a una de las filas (diferente al nivel de las filas restantes) y buscar la columna por la que se recibe el mismo nivel lógico. De esta manera se obtiene la fila y columna al igual que en una matriz. 

3.       El principio de funcionamiento se basa en enviar mediante 4 pines del puerto (los cuatro primeros o los cuatro últimos) una combinación y leer los siguientes 4 pines para ver si hubo algún cambio en la lectura, si no lo hubo nos indica que no se presionó tecla alguna, pero si hubo un cambio hay que rastrear la tecla se presionó mediante un "código".

4.       La implementación de un retardo para evitar anti rebotes es esencial, ya que debemos tener presente que los botones son mecánicos y por lo cual existe una transición en cuanto tiempo para nosotros pero para el micro no, en el que se generan estas oscilaciones que nos pueden alterar las lecturas de fila y columna.
Algoritmo de búsqueda:

·         Los pines RB0-RB3 se configuran como Salidas. Los pines RB4-RB7 se configuran como Entradas.
·         Las filas del teclado se conectan a los pines RB0-RB3 y las columnas a los pines RB4-RB7.
·         Se envía “0” a todas las filas.
·         Se envía “1” a la primera fila.
·         Se verifica el nivel lógico en cada una de las columnas. Si se pulsó una tecla de la primera fila se obtendrá un “1” en la columna correspondiente.
·         Si no se encuentra un “1” (no se pulsó tecla en la primera fila) se envía un  “1” a la siguiente fila (a las filas restantes se envía “0”).
·         Se verifican las columnas en busca del nivel lógico “1”.
·         El procedimiento continúa hasta completar las 4 filas.
·         Conociendo la fila por la que se envió “1” y conociendo la columna por la que se recibe “1” se puede conocer la tecla pulsada.

Pantalla LCD

El segundo paso fue escribir un programa que mostrara en un LCD cualquier tipo de mensaje que quisiéramos. En esta parte si tuvimos un poco de complicación en el caso de aprender como inicializar la LCD, ya que hay que seguir una serie de instrucciones con  los retardos adecuado para darle tiempo de su correcta inicialización y su buen funcionamiento. Las LCD comparten la misma configuración para la conexión externa y una serie de instrucciones que ya están integradas en el micro interno de la pantalla y las cuales nosotros solo configuramos para indicar como va a funcionar, como por ejemplo para configurar si vamos a trabajar en modo de 8 o 4 bits, si utilizaremos las 2 líneas de la LCD, si el cursor va a parpadear o no, si el texto se va a recorrer o no, en fin, instrucciones que tenemos que mandar una por una con sus retardos correspondientes, para darle tiempo de programarse.




Usamos la instrucción delay que ya está en MPLAB para generar un retardo de 5ms; retardo que usamos al final de cada instrucción y otro de 100 ms mediante el software pic timer calculator, el cual fue para inicializar la pantalla.

Usamos la configuración de 8 bits, que aunque ocupa más bits de un puerto es más fácil de manejar ya que mandamos todos los datos a la vez,  en lugar de hacerlo dos veces con cuatro bits.

El proceso de inicialización se muestra en el diagrama de flujo siguiente:



Una vez teniendo hechas las partes anteriores, lo que faltaba era unir ambos programas en uno solo, así que se enlazaron los códigos para hacer  que interactuaran en conjunto.

1.       Primero la LCD fue programada con los retardos correspondientes para desplegar los mensajes de bienvenida y en donde pide ingresar el NIP.

2.       Ya teniendo esta parte, modificamos el código para que en el momento en que la LCD pidiera introducir el nip,  ya pudiera reconocer y mostrar las teclas detectadas del teclado  en la pantalla.

3.       El paso siguiente fue mostrar un asterisco al momento que se presionaba un botón del teclado, para no mostrar los dígitos oprimidos, al mismo tiempo que se iba guardan el carácter presionado para comprarlo posteriormente con la contraseña que activa la cerradura. Se hizo un arreglo para solo permitir introducir cuatro dígitos seguidos.

4.       De acuerdo con lo que se presionara en el caso anterior nos llevaría a los diferentes casos posibles:

·         Si la contraseña que se introduce es correcta se desplegara en la LCD el mensaje “Acceso confirmado”, dando la orden de abrir la cerradura, mediante un relevador que activa el solenoide que abrirá la puerta.

·          Si la contraseña que se introduce es incorrecta se desplegara en la  LCD el mensaje de “Acceso denegado” y la cerradura electrónica no abrirá indicando que se ha digitalizado una contraseña errónea. Activando un led para mostrar que hay un error.

·         Si se  introduce tres veces continuas una contraseña errónea se activara una alarma que sonara un determinado tiempo, esto mediante una instrucciones que manda el pic a un relevador.






*     PCB



*      RESULTADO
 Principalmente todo del bosquejo fue armado en Protoboard, una vez funcionando ahí todo el sistema se procesó la placa y se usaron cables planos para evitar tener tanto cablerio conectado. Una vez diseñada la placa ya fue más fácil hacer una dimensión y la forma en que estarían conectados los componentes en la carcasa. Los resultados obtenidos se aprecian en las siguientes imágenes.