Electrónica, Electricidad y Sonido
Control de acceso
INDICE
(Faltan los planos del sistema y la programacion del PIC, ademas del apendice con las caracteristicas de los componentes)
-
Introducción
- Especificaciones iniciales
-
Diagrama de bloques
- Partes del sistema:
-
Microcontrolador PIC16C84
-
Pantalla LCD
- teclado matricial
- Fuente de alimentación
-
Lista de materiales y precios
- Planos OrCAD 4.20
Apéndice
Introducción
El sistema que vamos describir en las próximas paginas va a ser un sistema de seguridad que nos va a proteger una puerta de accesos no deseados mediante una clave. Esta clave va a ser introducida mediante un teclado hexadecimal de fácil uso por parte del usuario y visualizada en una pantalla lcd que nos va a indicar si el acceso a sido concedido o denegado. Nuestro sistema además se encargara de la apertura en el caso de que la contraseña suministrada sea correcta.
Este sistema nos va a ser extremadamente útil debido a su fácil manejo por parte del usuario que solo ha de teclear la contraseña suministrada por el sistema para acceder al recinto. Protegiendo así el acceso a sus bienes o restringiendo el paso a determinadas estancias o recintos.
Control de acceso
Especificaciones iniciales
El conjunto del equipo del sistema de acceso va a estar formado
Principalmente por un microcontrolador tipo PIC donde va a estar grabado el programa de funcionamiento de todo el sistema. También va a estar formado por una pantalla LCD que también consta de un microcontrolador
que controla el funcionamiento de la misma y de un teclado hexadecimal tipo matriz de dieciséis botones. El equipo también consta de un interface que va a unir el sistema de control al sistema de apertura de la puerta que va a ser de mas potencia que el de control.
Así todo el sistema va a constar de las siguientes partes:
-
microcontrolador PIC16C84
-
pantalla LCD de 32 por 2 caracteres
teclado matricial hexadecimal
Diagrama de bloques
Este diagrama de bloques nos va a indicar de manera gráfica las cuatro partes principales de las que esta compuesto nuestro control de acceso. En el también podemos observar las diferentes conexiones que existen entre los diferentes módulos.
De la fuente de alimentación van a salir dos líneas destinadas al PIC y a la pantalla LCD . También existe una conexión entre el PIC y el teclado matricial que va a ser el periférico que nos comunique con el usuario, este teclado será el encargado de recibir las instrucciones que nos va a dar el usuario cuando pretenda entrar al recinto. De este mismo PIC vamos a dar salida al otro periférico que nos comunica con el usuario, la pantalla LCD que va a ser la encargada de decir al usuario que su acceso ha sido concedido o denegado.
El sistema se pondrá en funcionamiento mediante la pulsación de la tecla “C” del teclado hexadecimal pidiendo la contraseña al usuario. Si la contraseña suministrada es correcta la pantalla lanzara el mensaje de que el acceso ha sido concedido, si no es correcta aparecerá el mensaje de que la contraseña no es correcta y de que lo vuelva a intentar. Si la contraseña es introducida tres veces de forma incorrecta el sistema se apagara y se deberá pulsar “C” para volver a iniciar el programa. De nuestro PIC que es el cerebro del sistema también saldrá una señal que mediante un relé se encargara de activar el circuito de potencia que nos abrirá la puerta.
PIC16C84
Su nombre viene de la abreviatura del ingles de periphal interface controller y son fabricados por la empresa Arizona Microchip Tecnology. Sus principales características son:
-
arquitectura hardware
-
utilizan el método PIPE-LINE
-
todas las instrucciones tienen la misma longitud
-
todas las instrucciones son ortogonales. Se puede acceder a cualquier registro y se utiliza el registro w
-
procesador RISC
-
arquitectura basada en bancos
-
gran cantidad de modelos
-
herramientas de soporte económicas (simuladores, emuladores, etc.)
-
líneas de entrada y salida de alta capacidad (20 a 25 mA )
-
sistema de reposo de bajo consumo “sleep”
-
sistema de “perro guardián” (warchdog) que sirve para controlar que el microcontrolador no se meta en un bucle cerrado y que le de un reset
-
sistema “POR” (power on reset), el sistema conmuta automáticamente y sé resetea cuando se produce un corte de alimentación.
Organización de la memoria
Pc <12.o> |
Stack level I |
Stack level II |
Reset vector 0000h |
Periphal interruptor 0004h |
3FFh |
1FFh |
Herramientas para el diseño con PIC
Para conseguir realizar proyectos con el microcontrolador PIC hay que disponer de algunas herramientas que permitan implementar el sistema físico y desarrollar el software necesario. A continuación especificaremos los diferentes pasos que hemos seguido en el desarrollo de nuestro proyecto.
1º Editamos el programa que va a seguir el pic, el cual adjuntamos en este apartado del proyecto.
2º Ensamblamos el programa fuente anteriormente compilado el cual tenemos que convertir a código maquina fuente editado con el ensamblador de Microchip MPASM.
3º Simulamos el programa comprobando que es correcto, esto lo realizamos con el compilador MPASM.
4º Una vez depurados los posibles errores que pudiera tener procedemos a la grabación de estas instrucciones en el PIC, para ello utilizamos el programa PICSTART.
Escritura del código fuente
El código fuente del lenguaje ensamblador esta estructurado en columnas. Cualquier texto que comience en la primera columna se considera una etiqueta y es una parte del campo de etiquetas. Las siguientes tres columnas contienen el campo de instrucciones, el campo de datos y el campo de comentarios. Los comentarios deben de empezar con “; ” y pueden ir tambien en la primera columna.
Campo de etiquetas
El programa MPASM nos va a permitir etiquetas de hasta 32 caracteres y puede ir seguida de “: ”, espacios, tabuladores o reglas. Deben de empezar con un carácter alfanumérico que pueden contener cualquier información con caracteres alfanuméricos.
Campo de datos
Los datos pueden ser un registro, un bit de un registro, una etiqueta o un numero constante llamado literal. Algunas instrucciones no llevan datos y cuando llevan múltiples datos deben separarse por comas.
Set de instrucciones
El set de instrucciones del microprocesador PIC16C84 es un conjunto de instrucciones que consta aproximadamente con unas cincuenta instrucciones, lo que lo convierte en uno de los que menos instrucciones posee y su por tanto de más fácil manejo. En el apéndice podrá encontrar este set de instrucciones.
Oscilador RC a 4MHz
Vamos a utilizar para nuestro pic un circuito resonante de tipo HS
(High Speed Crystal Resonator) que es el mas común para frecuencias superiores a 4 Mhz como es el caso que nos ocupa, el montaje que vamos a emplear en nuestro proyecto es el siguiente.
Circuito reset del PIC16C84
El circuito reset del pic va estar formado va a estar formado por una resistencia de 10K y otra 100 unida al pic atraves de su patilla de reset y todo ello conectado a masa atraves de un pulsador que va a ser el boton de reset del circuito.
Programación del PC
En la cabecera de cualquier programa que vayamos a desarrollar con los pic hemos de poner siempre los siguiente datos:
-
Fecha de realización del programa
-
Función que va a realizar el programa
-
Tipo de procesador que vamos a emplear
-
Nombre del programa
-
Nombre del realizador de dicho programa
-
Frecuencia a la que va a funcionar el circuito
-
Si hemos o no activado la función perro guardián
-
Si hemos activado o no la función de protección de código
Ejemplo de programa para pic:
;PRIMER PROGRAMA DE PIC
;CONTADOR DE 0 A 255 SACANDO EL DATO BINARIO A LOS LED
;13 DE NOVIEMBRE DE 1988.
;CUENTA.ASM
;PROGRAMA PARA PIC16C84
;RELOS DE INSTRUCCIÓN 1MHZ
;REVISIÓN 0:0
;VELOCIDAD DE RELOJ: 4MHZ
;PERRO GUARDIÁN: DESACTIVADO
;PROTECCIÓN DE CÓDIGO: OFF
LIST P=16C84
;*********************************IGUALDADES********************************
;************************IGUALDADES QUE DESIGNA LOS DESTINOS****************
w EQU 0
f EQU 1
;*****************IGUALDADES DE LA UCP Y DEL MAPA DE MEMORIA****************
PORTA EQU 05h ;PUERTO A
PORTB EQU 06h ;PUERTO B
TRISA EQU 85h ;REGISTRO DE CONTROL DEL PUERTO A
TRISB EQU 86h ;REGISTRO DE CONTROL DEL PUERTO B
STATUS EQU 03h ;REGISTRO DE ESTADO
RPO EQU 05h ;REGISTRO DE ESTADO BIT CINCO
;***************************************************************************
Contador1 EQU 0Ch
Contador2 EQU 0Dh
Contador3 EQU 0Eh
;***************************************************************************
ORG 00h ;DIRECCIÓN DEL VECTOR DE RESET
GOTO Inicializa ;COMIENZA EL PROGRAMA DESPUES
;DEL VECTOR DE INTERRUPCIÓN
ORG 05h ;UNA POSICIÓN DESPUES DE LA INTERRUPCIÓN
Inicializa BSF STATUS,RPO ;SELECCIÓN E LA PÁGINA 1
CLRF TRISB ;PUERTO B SALIDA
BCF STATUS,RPO ;VUELVE PÁGINA CERO
CLRF PORTB ;BORRA PUERTO B APAGA LED
CLRF Contador1 ;CONTADOR 1 A CERO
CLRF Contador2 ;CONTADOR 2 A CERO
Comienzo MOVLW 10h
MOVWF Contador3
INCF PORTB,f ;COLOCA A UNO EL BIT 0 PUERTO B
Retardo1 DECFSZ Contador1,f ;DECREMENTA CONTADOR1
GOTO Retardo1 ;REPITE HASTA QUE VALGA 0
DECFSZ Contador2,f
GOTO Retardo1
DECFSZ Contador3,f
GOTO Retardo1
GOTO Comienzo ;REPITE INDEFINIDAMENTE
END
Interrupciones del PIC16C84
Causas de interrupción:
El PIC16C84 tiene cuatro posibles causas de interrupción.
1º- activación de la patita RB0/INT
2º- por desbordamiento del TMR0
3º- por cambio de estado en una de las cuatro patitas de mas peso del
puerto b.
4º- finalización de escritura en E2PROM de datos.
Registro INTCON
Esta formado por las siguientes partes:
GIE | EEIE | TOIE | INTE | RBIE | TOIF | INTF | RBIF |
GIE: nos va a permitir si esta a 1 todas las interrupciones, si esta a 0 las prohibe.
EEIE: Si es 1 permite interrupción cuando se termina de escribir en la E2PROM, si es 0 nos prohibe esta interrupción.
TOIE: Si es 1 permite interrupción de desbordamiento del TMR0, un 0 lo anula.
INTE: Un 1 permite la interrupción al activarse la patita RB0/INT y un 0 lo prohibe.
RBIE: Un 1 permite la interrupción por cambio de estado en los bit RB7 a RB4,
TOIF: es el señalizador de sobrepasamiento del TMR0. Se va a poner a 1 cuando haya ocurrido el desbordamiento y permanecerá a 0 mientras no ocurra el mencionado desbordamiento.
INTF: es el señalizador de activación de la patita RB0/INT, se pondrá a 1 cuando se active y permanecerá en 0 el resto del tiempo.
RBIF: es el señalizador de estado de las patitas RB7 a RB4, nos va a dar un uno cuando ocurra algún cambio de estado en cualquiera de ellas y permanecerá a 0 el resto del tiempo que no se produzcan cambios.
El señalizador EEIF se encuentra en el bit cuatro del registro EECOM1 y nos indica si esta a 1, que la operación de escritura en la E2PROM ha finalizado.
Archivos de registro
TMR0: Tiene un temporizador llamado TMR0 que actúa de dos maneras diferentes:
1º- como contador de sucesos que están representados por los impulsos que se aplican a la patilla RA4/TOCK1. Al llegar al valor FF el contador se desborda activando un señalizador y provocando una interrupción.
2º- como temporizador, en este caso se va incrementando a cada ciclo de instrucción hasta que se desborda y pasa de FF a 00 avisando con un señalizador y provocando una interrupción.
Aparte del TMR0 existe otro temporizador que se denomina perro guardián (watchdog WDT), que se suele utilizar habitualmente para que nuestro programa no se cuelgue.
Registro option: Este registro tiene como misión principal controlar el TMR0 que ocupa la posición 81 de memoria de datos que equivale a la dirección 1 del banco 1.
RBPO | INTDG | TOCS | TOSE | PSA | PS2 | PS1 | PS0 |
PS2 | PS1 | PS0 | Divisor del TMR0 | WDT |
0 | 0 | 0 | 1:2 | 1:1 |
0 | 0 | 1 | 1:4 | 1:2 |
0 | 1 | 0 | 1:8 | 1:4 |
0 | 1 | 1 | 1:16 | 1:8 |
1 | 0 | 0 | 1:32 | 1:16 |
1 | 0 | 1 | 1:64 | 1:32 |
1 | 1 | 0 | 1:128 | 1:64 |
1 | 1 | 1 | 1:256 | 1:128 |
Debido a que la frecuencia de reloj puede ser muy elevado existe la posibilidad de dividir la frecuencia que ataca al TMR0 dependiendo de lo que haya en PS2, PS1 y PS0 la división será la que indica la tabla superior.
PSA: nos va a indicar la asignación del divisor de frecuencia, con un uno se le asigna WDT y con un cero a TMR0.
TOSE: nos indica el tipo de flanco en TOCK1, con un uno se incrementa el TMR0 en la flanco descendente y con un cero en el ascendente.
TOCS: nos indica el tipo de reloj del TMR0, uno con pulsos introducidos atraves de TOCK1 y con cero con el reloj interno.
INTEDOG: nos da el flanco activo de interrupción externa, uno en el ascendente y cero en el descendente.
RBP0: conecta resistencias PULL-UP en el puerto B, con uno se desactivan y con cero se activan.
Pantalla LCD
El modulo visualizador LCD que vamos a utilizar en este proyecto se compone de una pantalla de cristal liquido que consta de una matriz de 16 caracteres por dos líneas y con una resolución de 5x7 pixeles. Esta pantalla va a estar gobernada por un microcontrolador modelo Hitachi 44780 que es uno de los mas utilizados por este tipo de pantallas. Las características más notorias de esta pantalla son:
-
pantalla de caracteres ASCII, además de los caracteres kanji y los caracteres griegos.
-
Desplazamiento de los caracteres hacia cualquiera de los dos lados.
-
Proporciona la dirección de la posición absoluta o relativa del carácter.
-
Memoria de 40 caracteres por línea de pantalla.
-
Movimiento del cursor y cambio de su aspecto.
-
Permite que el usuario pueda programar ocho caracteres.
-
Conexión a un procesador usando un interface de 4 u 8 bis.
El consumo del modulo es muy reducido apenas de 7,5 mW y su
manejo lo hace ideal para nuestra aplicación. Posee catorce patitas y su alimentación es de +5v, y la regulación de contraste se hace mediante un potenciometro que nos va a dividir los 5 voltios de la alimentación
Conexión de 8 bits:
-
línea RS a 0 o a 1 según se desee modo comandos o caracteres
-
Línea R/W = 0m, para escritura.
-
Línea E = 1, para habilitar.
-
Escribir en el bus de datos del modulo LCD
-
Línea E = 0
Patita numero | Símbolo | función |
01 | VSS | Masa |
02 | VDD | +5v |
03 | VEE o VEE | Ajuste de contraste |
04 | I/D o RS | Selección modo |
05 | R/W | Lectura/escritura |
06 | E o EN | Validación 1=0 |
07 | DB0 | 1ª línea de datos LSB |
08 | DB1 | 2ª línea de datos |
09 | DB2 | 3ª línea de datos |
10 | DB3 | 4ª línea de datos |
11 | DB4 | 5ª línea de datos |
12 | DB5 | 6ª línea de datos |
13 | DB6 | 7ª línea de datos |
14 | DB7 | 8ª línea de datos MSB |
Lectura / escritura de la pantalla LCD
La línea R/W determina cuando vamos a leer o a escribir en la pantalla LCD. Así cuando se coloca a nivel alto el contenido de la memoria RAM de la LCD puede ser leído y si se coloca a nivel bajo puede escribirse en la misma. Es importante que antes de activar esta línea hemos de mandar un impulso de habilitacion al modulo para que comience a actuar.
La pantalla LCD consta de varios comandos que vamos a explicar a continuación:
Borra pantalla: este comando nos va a hacer desaparecer todos los caracteres de la pantalla y nos va a devolver el cursor a su posición inicial.
Cursor a casa: también devuelve la pantalla LCD a su posición original de la DDRAM, quedando su contenido intacto.
Modo introducción: Configura la dirección del cursor I/D. Cuando I = 1 incrementa la posicion del cursor y D = 0 realiza la operación contraria. Mientras S = 1 se especifica que hay desplazamiento de los caracteres por la pantalla. Esta operación se realiza durante la escritura de los datos.
Pantalla ON/OFF: coloca en movimiento el cursor en la pantalla de diferentes maneras, D lo hace por toda la pantalla, C cursor on-off y B hace parpadear al cursor en la posición de carácter.
Desplazamiento cursor/pantalla: S/C indica el movimiento del cursor o desplazamiento de la pantalla, dependiendo de R/L lo hace hacia la izquierda o hacia la derecha. El contenido de la DDRAM permanece en todo caso inalterado.
Función: DL nos va a indicar la longitud de datos en el interface de la pantalla N va a ser el numero de líneas y F el tipo de caracteres que vamos a emplear.
Dirección CGRAM: coloca el dato recibido o enviado en la DDRAM después de la ejecución de ese comando.
Bandera de ocupado BF: indica si existe una operación interna en curso y lee además la posición del contador. Si existe una operación interna no dejara que el PIC actúe sobre la DDRAM.
Escribe DDRAM: habilita la DDRAM para que se pueda escribir sobre ella.
Lee DDRAM: lo contrario, la habilita para que pueda ser leído su contenido por el PIC.
Nombre bit | Estado y | Funcionamiento |
I/D | 0= decrementa la posición del cursor | 1=incrementa la posición del cursor |
S | 0=sin desplazamiento | 1=con desplazamiento |
D | 0=pantalla off | 1=pantalla on |
C | 0= cursor off | 1=cursor on |
B | 0=parpadeo del cursor off | 1=parpadeo del cursor on |
S/C | 0=mueve el cursor | 1=desplaza la pantalla |
R/L | 0=desplaza a la derecha | 1=desplaza a la izquierda |
DL | 0=interface de 4 bits | 1=interface de 8 bits |
LINEAS | O=1/8 o 1/11 (una línea) | 1=1/16 (dos líneas) |
F-FUENTE | 0=5x7 puntos | 1=5x10 puntos |
BF | 0=puede aceptar instrucción | 1=operación interna en curso |
Inicialización
Antes de comenzar a utilizar nuestra pantalla LCD ha de ser inicializada. Para ello en su programa de inicialización debemos especificar la configuración que la pantalla va a tener. Un ejemplo típico de configuración podría ser el siguiente: 8 bits de datos, dos líneas de pantalla y 16 caracteres con una matriz de 5x7.
Direccionado
La DDRAM de las pantallas LCD no tiene un direccionamiento continuo y lineal pues el mapa depende de los caracteres y líneas que tenga el modulo.
Cada línea de la pantalla LCD tiene 40 caracteres de DDRAM de pantalla de datos asociados. Estas 40 posiciones están organizadas con un buffer de forma circular de tal forma que la ultima posición enlaza con primera, en nuestro caso solo son visibles 16 caracteres de los 40 disponibles por cada línea.
El primer caraceter escrito en la pantalla comienza en la posición 80h de la DDRAM. Al escribir otro carácter, la dirección se incrementa automáticamente a 81h ya que esta establecido el modo entrada para incrementar. Los siguientes caracteres rellenan posiciones sucesivas hasta A7h y eventualmente puede volver a C0h en la segunda línea.
Las posiciones de pantalla que sobrepasen la posición 8Fh no son visibles, para hacer visibles estos caracteres el contenido de la pantalla puede ser desplazado a la izquierda o la derecha.
Direccionamiento absoluto
Los caracteres pueden escribirse en una determinada posición de la pantalla LCD usando el comando de dirección de la DDRAM. Las igualdades han de incorporar el comando de direccionado de la DDRAM, su situación por defecto esta situada al principio de la memoria.
Direccionamiento relativo
Los movimientos de los caracteres pueden realizarse hacia la izquierda y hacia la derecha de la posición actual del cursor , para ello toma como referencia la posición actual del cursor y partir de ahí realiza el desplazamiento.
Teclado matricial
En nuestro proyecto vamos a utilizar un teclado matricial en lugar de los teclados de tipo lineal que tienen como principal desventaja el hecho de cada tecla tiene su propia línea de salida en lugar de funcionar como una matriz que es el caso que nos ocupa. Al utilizar menos línea su principal ventaja en nuestro diseño es que lo podremos controlar utilizando solo un puerto del pic. No necesitaremos de resistencias externas para el control de la intensidad del teclado ya que estas van incluidas en el propio teclado matricial.
Fuente de alimentación
El objetivo de la fuente de alimentación consiste en pasar de una tensión de red de 220v a una tensión final de alimentación de 5 v que nos van a servir para alimentar toda la parte de control del circuito.
Su funcionamiento es el siguiente:
Partimos de una tensión de red de 220v que mediante un transformador la
a llevar a un nivel de 12 voltios de alterna.
Esta tensión de 12 voltios la vamos a rectificar mediante un puente de diodos que nos va a dar a su salida una tensión de 12 voltios pulsatoria a una frecuencia el doble que la de red, es decir, 100 Hz.
Después de este rectificado la señal pasa por un condensador que nos va a filtrar la señal para pasarla a un nivel de continua en torno 17 voltios. Esta señal va pasar entonces al regulador de tensión que nos va filtrar y estabilizar este nivel a 5 voltios de continua. Este regulador que es un LM7805 necesita para su funcionamiento de dos pequeños condensadores de desacoplo de un valor de 100 nF a su entrada y a su salida.
La fuente de alimentación posee a su salida un diodo led de color rojo para indicar que el circuito esta funcionando, lo que también indica que la fuente se halla en perfecto estado, debido a que el mal funcionamiento de dicho diodo significaría una avería en la parte de alimentación. Esta característica ayudaría en una futura reparación del dispositivo.
PRESUPUESTO
-LISTA DE PRECIOS
COMPONENTE | VALOR | CANTIDAD | PRECIO | ||||
Transformador-T1 | 220\12 | 1 | 1.219 Pts | ||||
Puente de diodos-D1 | B250C | 1 | 27 Pts | ||||
C1 | 470uf | 1 | 179 Pts | ||||
C2,C4 | 100nf | 2 | 36 Pts | ||||
C5,C6,C7 | 27pf | 3 | 55 Pts | ||||
C3 | 22pf | 1 | 55 Pts | ||||
Regulador de tensión-U1 | LM7805 | 1 | 124 Pts | ||||
R5,R8,R9 | 100 | 3 | 7 Pts | ||||
R6 | 10k | 1 | 7 Pts | ||||
R1,R2,R3,R4 | 2k2 | 4 | 7 Pts | ||||
Potenciometro-R7 | 15k | 1 | 7 Pts | ||||
CRISTAL-Y1 | 4MHz | 1 | 77 Pts | ||||
PIC-U2 | 16C84 | 1 | 900 Pts | ||||
J1 | LCD-CON14 | 1 | 5.484 Pts | ||||
J2 | TECLADO-CON8 | 1 | 2.075 Pts | ||||
RED | CON2 | 1 | 25 Pts | ||||
DL1,DL2 | LED | 2 | 10 Pts | ||||
S1 | PULSADOR | 1 | 33 Pts | ||||
PRESUPUESTO TOTAL | 10.518 Pts |
CONTROL DE ACCESO
Descargar
Enviado por: | FrankSP |
Idioma: | castellano |
País: | España |