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
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
pues en lo posible necesito ver tu codigo y tu montaje en proteus, seria de gran ayuda para mi...
ResponderEliminarme parece un buen proyecto ,pero oye nos pasrias tu codigo x fas espero respondas
ResponderEliminaroye me podrias ayudar con el codiga para la cerradura x favor echame la mano mi correo es denekrko@hotmail.com
ResponderEliminarx fas reponde
hola amigo buen proyecto est buenisimo no se si me podrias proporsionar el diagrama ma hexa para poder probarlo soy estudiante de electronica grasias por su respuesta
ResponderEliminarmarco_b7@hotmail.com
igual ke los demas amigos, soy de esimez y pues te agradeceria mucho si me podrias ayudar con el codigo para este proyecto porfaaaaaas!!!
ResponderEliminarMuy bueno el proyecto. Podrias pasar tu codigo para mirar
ResponderEliminarcorreo: edgar_elme@hotmail.com
Amigo está muy bueno el proyecto, me gustaria ponerlo en practica, pordias colaborarme con el codigo y la simulacion ?? mi email: cristian-reina@hotmail.com
ResponderEliminarDisculpa, tambien necesito el codigo, alguno de ustedes me lo podrian enviar?? por favor, es para mi proyecto (en lenguaje C si lo tiene), me seria de mucha ayuda, mi correo es bracho117@hotmail.com
ResponderEliminarhola muy bueno tu proyecto si puedes ayudar y me envias tu codigo mi correro es jose23080@gmail.com
ResponderEliminarPorfas me puedes mandar el codigo y el proteus, es para mi proyecto. Gracias
ResponderEliminarkluvi_vg_2@hotmail.com
Tengo un proyecto parecido, Por favor mandame el codigo, seria de gran ayuda. Gracias. j.loya3@hotmail.com
ResponderEliminarExcelente proyecto. Realmente agradecería que me pasaras el código del programa a mi correo edgar.sf94@hotmail.com.
ResponderEliminarMuy buen proyecto amigo. Si pudieras proporcionarme el código de tu programa se te agradecería mucho. mi correo es gxus.mf@gmail.com
ResponderEliminarHola me puedes mandar el codigo y el proteus, es para mi proyecto. Gracias
ResponderEliminarderiandar@gmail.com
oye me podrias ayudar con el codiga para la cerradura x favor echame la mano mi correo es ersq96@gmail.com
ResponderEliminarHola Me gusto tu proyecto.. podrias pasarme tu programacion seria de gran ayuda.. gracias
ResponderEliminarme podrias pasar el codigo y la simulacion en proteus porfa, mi correo es paul_hellsing_alucard@hotmail.com
ResponderEliminarHola, me parece muy interesante me podrias pasar el codigo y simulacion si no es inconveniente, gracias
ResponderEliminaroskaral69@gmail.com
Buenas tardes es muy interesante su proyecto... Pero me podrían pasar el código
ResponderEliminargualbertosoliz123@gmail.com