Está en la página 1de 17

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica


Ingeniería en comunicaciones y electrónica

Laboratorio de microprocesadores
Proyecto Final
Nombre del proyecto: “Caja fuerte”
Objetivo

El alumno comprenderá el funcionamiento y desarrollo del convertidor analógico digital,


así como la comunicación EUSART realizando un proyecto en el cual incluya alguno de
ellos

Para acceder al contenido que hay en estas cajas fuertes es necesario saber la
contraseña.

 En las cajas fuertes antiguas (todavía se producen de este tipo) se utiliza una
especie de rueda que da vueltas a la izquierda y a la derecha. Hay que moverla
determinados golpecitos o "ticks" hacia ambos lados hasta que abra.

 En las cajas fuertes modernas se utilizan sistemas de seguridad electrónicos,


como son el digital una contraseña (por lo general numérica, aunque hay algunos
más modernos que permiten alfanuméricas) o algún método biométrico (lector de
huellas digitales, lector del iris, etc.).

Introducción teórica

Una caja fuerte o caja de seguridad es un compartimiento de seguridad ideado para que
su apertura sea muy difícil a personas no autorizadas y así poder guardar elementos de
valor.

COMPARADOR ANALÓGICO EN PICS

El CAD conversor analógico digital PIC permite medir señales analógicas en forma digital,
para ello el PIC cuenta con pines por donde le llegará la señal analógica, estos pines deben
configurarse como entradas analógicas, el conversor analógico digital PIC cuenta con un
circuito que carga un condensador interno al PIC con la tensión analógica que le está
llegando a la entrada analógica, luego la tensión almacenada en el condensador lo
convierte en un número binario de 10 bits que representará la tensión almacenada en el
condensador, este número binario se guarda en sus registros ADRESH y ADRESL de 8 bits
cada uno pero estos actúan como un solo registro de 16 bits, en el registro ADRESH se
guardan los bits más significativos y en el registro ADRESL se guardan los bits menos
significativos, el número que representa la tensión almacenada en el condensador y
guardado en forma binaria dentro de estos registros será de 10 bits para el PIC16F877A, la
cantidad de bits de este número depende del conversor analógico digital PIC del
microcontrolador PIC utilizado.
El CAD conversor analógico digital PIC necesita una tensión de referencia para poder
trabajar adecuadamente, esta tensión de referencia 𝑉𝑟𝑒𝑓 normalmente será la tensión a la
cual trabaja el PIC, aunque por programa se puede elegir otra diferente; a la relación que
hay entre la tensión de referencia 𝑉𝑟𝑒𝑓 y el máximo número binario de 8 bits 28-
1=255=11111111 o de 10 bits 210-1=1023=1111111111 que representará la tensión
analógica se le conoce como resolución, por ejemplo para el caso del PIC16F877A se
tendrá que la resolución del conversor analógico digital PIC será:

𝑉𝑟𝑒𝑓 𝑉𝑟𝑒𝑓
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ò𝑛: 10
=
(2 − 1) 1023

Si se toma como la 𝑉𝑟𝑒𝑓 =5V que es la tensión adecuada a la que trabaja el PIC16F877A
se tendrá que la resolución de su convertidor analógico digital PIC será:

5𝑉 5𝑉
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ò𝑛: =
(210 − 1) 1023

De donde:

𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ò𝑛: 0,004887585533 ≈ 0.0049𝑉

Luego para el caso del conversor de 10 bits con un voltaje de referencia de 5V será:

𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ò𝑛: 4,9𝑚𝑉

La resolución indica en este caso que a la tensión de referencia de 5V se le ha partido en


1023 partes iguales y cada una de esas partes equivalen a aproximadamente 4,9mV, al
utilizar esto en forma digital indicará que para un 0 será 0V, si el voltaje aumenta desde 0
en 4,9mV se tendrá un 1, si aumenta 2 veces 4,9mV se tendrá un 2, si aumenta 3 veces
4,9mV se tendrá un 3, si aumenta 4 veces 4,9mV se tendrá un 4 etc.

Esto quiere decir en este caso, que al utilizar el conversor analógico digital PIC, cada vez
que la tensión analógica que llegue por el pin configurado como entrada analógica aumente
en 4,9mV, el número que lo representa y almacenado en los registros ADRESH y ADRESL
aumentará en 1, por ejemplo cuando la tensión analógica es 0, el número binario que lo
representa será 0000000000, si la tensión analógica aumenta de 0 a 4,9mV el número
binario que lo representa será 0000000001, si la tensión analógica aumenta de 4,9mV a
9,8=2*4,9mV el número binario que representa este valor será 0000000010, si la tensión
analógica aumenta de 9,8V a 14,7=3*4,9mV el número binario que representa este valor
será 0000000011, y así hasta que la tensión analógica se haga igual a la tensión de
referencia, lo que ocurrirá cuando la tensión analógica aumente desde 0 de 4,9mV en
4,9mV unas 1023 veces lo cual es 1023*4,9mV que es un poquito más de 5V porque la
resolución se redondeó, el número binario que representa a los 5V será 1111111111.

El número binario que representará la tensión analógica la cual dependerá de la resolución,


puede leerse desde los registros ADRESH y ADRESL, guardarlo en una variable y luego
mediante operaciones matemáticas se puede hacer que represente el valor de la medida
analógica que está llegando a la entrada analógica del PIC, por ejemplo si se crea una
variable de 16 bits llamada medida analógica y en esta se guarda el número binario, y
suponiendo como se verá líneas abajo que se ha elegido una justificación a la derecha, en
el XC8 sería algo así:

Para la utilización del convertidor analógico digital PIC

se tienen 2 registros para su control, los que son el ADCON0 y el ADCON1, el CAD también
puede producir interrupciones para lo cual se utilizan los registros INTCON, PIE1 y PIR1,
algunos microcontroladores PIC tienen además otros registros relacionados con el
convertidor analógico digital PIC.

Para el almacenamiento de la tensión analógica en el condensador es necesario que pase


un tiempo, a este tiempo se le llama tiempo de adquisición el cual es de aproximadamente
de 20us

por lo que hay que esperar un tiempo mientras se carga el condensador, una vez
almacenada la tensión en el condensador, a la conversión del valor analógico a su
representación digital también le toma un tiempo al que se le llama tiempo de conversión,
el cual depende de la velocidad de la fuente de reloj que se selecciona para la conversión,
esta selección se hace por programa mediante una tabla que viene en la hoja de datos
como se verá más abajo, la hoja de datos recomienda que se debe seleccionar un tiempo
mínimo de conversión de 1,6us, entonces si es un poquito más mejor, por ejemplo 2us o
4us.

1. Conversor Analógico Digital PIC: El registro ADCON0

En la siguiente imagen se tiene el registro ADCON0 para el control del conversor analógico
digital PIC, se pueden ver los nombres que le corresponden a cada uno de sus bits.
Los bits 7 y 6 de este registro junto con el bit 6 del registro ADCON1 se elige el reloj, esto
es entre cuanto se fraccionará la frecuencia del oscilador utilizado para que se tenga un
tiempo de conversión adecuado, esto es el tiempo que tardará el PIC para realizar la
conversión, además de estas opciones el conversor analógico digital pic cuenta con su
propio oscilador formado por un circuito RC que también puede ser elegido mediante estos
bits, en la siguiente tabla se tienen los fraccionamientos del oscilador de acuerdo a los
valores que tomen estos bits o si se quiere utilizar el oscilador interno del CAD.

De acuerdo a la frecuencia del oscilador se obtendrá un tiempo para la conversión, ese


tiempo tiene que ser mayor a 1,6us para que al leer los registros ADRESH y ADRESL el
número obtenido represente en forma adecuada el valor de la señal analógica.

Por ejemplo, si se usa un cristal con una 𝐹𝑜𝑠𝑐 de 4Mhz, de la tabla se puede ver que si la
𝐹𝑜𝑠𝑐 se divide entre 2 se tendrá en el tiempo de conversión será de 0,5us, lo cual no llega a
los 1,6us mínimos, si se divide entre la 𝐹𝑜𝑠𝑐 4 se tendrá el tiempo de conversión será de
1us, con lo cual tampoco se llega a los 1,6us mínimos, si se divide la 𝐹𝑜𝑠𝑐 entre 8 se tendrá
en el tiempo de conversión será de 2us, con lo cual ya se ha logrado un tiempo de
conversión que sobrepasa los 1,6us mínimos que se necesita, por lo que en este caso se
elegiría esta opción para el tiempo de conversión y la combinación de bits serian 001,
aunque se pueden elegir otros siempre y cuando se obtengan tiempos de conversiones
mayores a los 1,6us.
Los bits 5, 4 y 3 son para elegir el canal analógico a utilizar, esto es el pin que previamente
mediante los bits 3,2,1 y 0 del registro ADCON1 se ha configurado como entrada analógica,
en el cual se leerá la señal analógica, el PIC16F877A cuenta con 8 entradas analógica, 5
de las cuales están en el puerto A y 3 en el puerto E, los pines de las entradas analógicas
se conocen como AN0, AN1, AN2, AN3, AN4, AN5, AN6 y AN7, la elección del canal a
leerse se hace de acuerdo a los valores de estos bits como se muestra en la siguiente tabla.

El bit 2 se pondrá a 1 para iniciar la conversión analógica digital PIC, cuando la


conversión de analógico a la digital termina este bit se pone a 0 en forma automática,
lo que indica que la conversión a terminado además de que si está habilitada las
interrupciones por el CAD pues se producirá una interrupción.

El bit 1 no es utilizado por lo que pondrá a 0.

El bit 0 es para activar o desactivar el conversor analógico digital PIC, cuando este
bit es puesto a 1 el conversor está activo y listo para usarse, si este bit es puesto a
0 el conversor estará apagado no pudiendo utilizarse.

2. Conversor Analógico Digital PIC: El registro ADCON1

En la siguiente imagen se tiene el registro ADCON1 para el control del conversor analógico
digital PIC, se pueden ver los nombres que le corresponden a cada uno de sus bits.
El bit 7 los registros ADRESH y ADRESL donde se guarda el número binario que representa
el valor de la señal analógica convertida hacen un total de 16 bits, pero el número de la
conversión solo está formado por 10 bits en este caso, por lo que 6 bits no representan
nada, luego mediante este bit se elige si los 10 bits donde se guarda este número son los
10 más significativos o los 10 menos significativos, si son los 10 bits menos significativos
se dice que la justificación es a la derecha y se elige esta opción poniendo este bit a 1, pero
si son los 10 bits más significativos se dice que la justificación es a la izquierda y se elige
esta opción poniendo este bit a 0; los 6 bits que no interesan siempre estarán a 0 en forma
automática.

000000xxxxxxxxxx donde las x pueden ser 0 o 1, siendo este caso la justificación a la


derecha cuando el bit 7 del registro ADCON1 es 1.

xxxxxxxxxx000000 donde las x pueden ser 0 o 1, siendo este caso la justificación a la


izquierda cuando el bit 7 del registro ADCON1 es 0.
El bit 6 junto con los bits 7 y 6 del registro ADCON0 se utiliza para obtener el tiempo de
conversión adecuado del CAD, el que tiene que ser mayor a 1,6us.
Los bits 5 y 4 no se utilizan por lo que se les pone a 0.
Los bits 3, 2, 1 y 0 son para elegir que pines serán utilizado, como entradas analógicas, se
puede elegir entre todas las entradas analógica o solo algunas, también si se quiere utilizar
un voltaje de referencia diferente al que trabaja el pic, para esto será necesario configurar
los bits de acuerdo a la siguiente tabla.
Communication EUSART

El USART (universal synchronous asynchronous receiver transmitter)

. Puede funcionar de forma síncrona (half duplex) o asíncrona (full duplex).

 Modo asíncrono:
1. Modo full-duplex (bidireccional).
2. Utiliza los pines:

• RC6/TX/CK: transmisión (salida).

• RC7/RX/CK: recepción (entrada).

3. Los datos enviados tienen tamaño de byte.


4. En el formato de la trama se añade un bit de Start=0 y un bit de Stop=1, y puede
añadirse un noveno bit de datos (ejemplo bit de paridad) a los 8 bits del dato:

5. Esta forma de comunicar serie usa la norma RS-232 / RS-485.


6. Los bits se transmiten a una frecuencia fija y normalizada.
7. Los bloques que configuran la USART en modo asíncrono son:
 Circuito de muestreo.
 Generador de baudios.
 Transmisor asíncrono.
 Receptor asíncrono.
8. La USART no soporta la generación de paridad por hardware.
9. En modo asíncrono la USART se para al entrar el micro en modo SLEEP

La comunicación de los microcontroladores PIC con el computador es de gran importancia


y para esto se ha incorporado un módulo con las características apropiadas para el
intercambio de información.

Este módulo es conocido como USART (Universal Synchronous Asynchronous Receiver


Transmitter). El módulo USART es compatible con el protocolo RS232 que también es muy
utilizado en las computadoras personales.
Este es uno de los dos módulos serie E/S, también llamado Interfaz de Comunicación Serie
SCI. El módulo USART de los microcontroladores PIC puede configurarse como un sistema
asincrónico full-dúplex que puede comunicarse con dispositivos periféricos, tales como
terminales CRT y computadoras personales, o puede configurarse como un sistema
sincrónico half-dúplex que puede comunicarse con otros dispositivos tales como
conversores A/D y D/A, EEPROMs serie, etc.

Los modos de operación disponibles son los siguientes:

Asincrónico (full-dúplex)
Sincrónico-Maestro (half-dúplex)
Sincrónico-Esclavo (half-dúplex)

Desarrollo

A continuación, se hará mención del desarrollo que se llevó acabo para logar este
proyecto en esta parte se hará de forma narrada pero ya con el programa, así como el
diagrama de flujo se entenderá de mejor forma

Para realizarlo se empezó por realizar el proceso de conversión analógico digital usando
un potenciómetro usando la terminal A0 como entrada y los puertos ADRESH Y ADRRSL
hacer una conversión de bits para así obtener solo 3 bits en lugar de 10 y tener números
de 0 a7 al girar el potenciómetro

El siguiente paso es usar la conversión serial EUSART dentro del mismo plc puenteando
RC7 y RC6 para así poder captar lo que se manda esta parte se realizó solo con el LCD
para poder enviar datos a la pantalla por medio de una función de decodificación que
dependiendo del valor que se mandara seria la función que esta realizaría

Y por último es coordinar todas las funcione anteriores que para este proyecto primero se
va mandar un mensaje al LCD por medio de comunicación serial para dar la bienvenida al
usurario seguido de esto se habilitara el convertidor analógico digital y por medio de un
Deep swith se seleccionara el número de del código que queramos elegir. Si el código es
correcto se desplegará un mensaje de que fue finalizada la operación y la caja está
abierta de lo contario se desplegará un mensaje de que la contraseña está mal

PROGRAMA

El programa se encuentra en la carpeta de este documente

Materiales
1 PIC 18F4550
1 potenciometro de 1MΩ
1 potenciometro de 10kΩ
10 resistencias de 1KΩ
3 leds de color azul
1 deep switch de 4 posicicones
1 LCD
cables de conexión
programa compilador MPLAB

Diagramas y cálculos

Para el programa que se realizó se necesita conectar el pic de la siguiente forma

Diagrama de flujo
inicio

Clave 0x10 dato0x11 datoa0x12


contraseñaA 0x20 contraseñaB 0x21
contraseña 0x22,AA 0x30 BB 0x31 CC 0x32
tx 0x40, datoenviado 0x42

Call confptos
call analógico
call configptosbueno

movlw 0x00
movwf tx
movff tx,TXREG;carga el valor a TXREG
call envia
call recibe
movlw 0x01
movwf tx
movff tx,TXREG;carga el valor a TXREG
call envia
call recibe

Call asignación
call compara

movf clave,W;; mueve el valor obtenido en el analogico digital al registro de trabajo


asignacion
movwf AA;w<-AA

No
PORTA,1 DobleA
=1

SI

Call analógico
movf clave,W;;
movwf AA

PORTA,2 No
=1 DobleB

SI

Call analógico
movf clave,W;;
movwf BB

No
PORTA,3 DobleB
=1

SI movf clave,W;;
movwf BB

Call analógico
COMPARADOR

Analógico
CLAVE=0

ADCON0,GO_DONE=1
RTIMER NO
ADRESH=0

NO
ADCON0,GO_DONE=0 NO
CERO ADRESH<0X80

SI
SI
UNO
COMPARADOR

NO
ADRESH=1

SI

NO
DOS ADRESH<0X80

SI

TRES

NO
ADRESH=02

ADRESH=03
SI
NO
NO ADRESH<0X80
CUATRO
SEIS ADRESH<0X80

SI SI
SIETE
CINCO
CERO dobleAA
GENIAL

CLAVE=0X00
W<-CLAVE
PORTD=0X00
AA<-W
TX=0X03
UNO dobleBB TX<-TXREG
CALL ENVIA
CLAVE=0X01 CALL RECIBE
W<-CLAVE
PORTD=0X01 BB<-W

DOS TX=0X02
dobleCC
TX<-TXREG
CALL ENVIA
CLAVE=0X02 W<-CLAVE CALL RECIBE
PORTD=0X02 CC<-W

TRES
COMPARA ERROR0

CLAVE=0X03
PORTD=0X03 TX=0X04
NO TX<-TXREG
AA=0X02 ERROR CALL ENVIA
CUATRO
CALL RECIBE
CLAVE=0X04 SI
PORTD=0X04 NO
ERROR BIENVENIDA
BB=0X06
CINCO
LCD (imprime las sig letras)
SI
CLAVE=0X05 W<-‘H ’
PORTD=0X05 W<-‘o ’
NO
W<-‘l ’
BB=0X05 ERROR
W<-‘a ’
SEIS
W<-‘ ’
W<-‘u ’
CLAVE=0X06 SI W<-‘s ’
PORTD=0X06 W<-‘u ’
GENIAL W<-‘a ’
W<-‘r ’
SIETE W<-‘i ’
W<-‘o

CLAVE=0X07
PORTD=0X07
Ingresecontraseña
Claveincorrecta

LCD (imprime las sig letras) LCD (imprime las sig letras)
W<-‘i ’ W<-‘c’
W<-‘n ’ W<-‘l ’
W<-‘ g’ W<-‘ a’
W<-‘r’ W<-‘v’
W<-‘e ’ W<-‘e ’
W<-‘s ’ W<-‘ ’
W<-‘e ’ W<-‘i’
W<-‘ ’ W<-‘n’
W<-‘ l ’ W<-‘c ’
W<-‘a ’ W<-‘ o’
W<-‘ ’ W<-‘ r’
W<-‘c ’ W<-‘r’
W<-‘o’ W<-‘ e’
W<-‘n’ W<-‘c ’
W<-‘t’ W<-‘t’
W<-‘r’ W<-‘a’
W<-‘a’
W<-‘s’
W<-‘e’
W<-‘ñ’
W<-‘a’ Cajónabierto

Clavecorrecta LCD (imprime las sig letras)


W<-‘c’
W<-‘a’
W<-‘j’
LCD (imprime las sig letras)
W<-‘o’
W<-‘c’
W<-‘n’
W<-‘l ’
W<-‘ ’
W<-‘ a’
W<-‘a’
W<-‘v’
W<-‘b’
W<-‘e ’
W<-‘i’
W<-‘ ’
W<-‘ e’
W<-‘c ’
W<-‘ r’
W<-‘ o’
W<-‘t’
W<-‘ r’
W<-‘ o’
W<-‘r’
W<-‘ e’
W<-‘c ’
W<-‘t’
W<-‘a’
ConfigptosBUENO Configptos DECODIFICA

ADCON=0X0F ADCON=0X01
CMCON=0X07 ADCON1=0X0E Datoenviado
TRISD=0X00 ADCON2=0XA7 =0
TRISC=0X00 CMCON=0X07
TRISB=0X00 TRISD=0X00
TRISA=0XFF TRISC=0XA0 no
bienvenida
TRISB=0X00
TRISA=0XFF
Datoenviado
=1
Recibe
ingresecontraseña
no

cajonabierto Datoenviado
PIR1,RCIF =2
=1
no
no

clavecorre
cta Datoenviado
Datoenviado<-RCREG =3

no

contraseñaincorrecta Datoenviado
=4
envia

no

NO
PIR1,TXIF
Datoenviado
=1 correcto
=5
NO
no
SI
return
TXSTA,TRM
T=1
SI

return
EUSART

TXSTA=0X024
RCSTA=0X90
BAUDCON=0X00
SPBRG=.25

Conclusiones

Existen varias formas de introducir una contraseña en una caja fuerte que pueden ser con
dígitos, configuraciones mecánicas, pero gracias al convertidor analógico digital se puede
introducir esta contraseña mediante variaciones de voltaje. El convertidor analógico digital
como se mencionó en la teoría cuenta con dos registros con un total de 10,donde
también se pudo reducir este valor a 3 bits y tener combinaciones más estables al girar el
potenciómetro y dígitos del 0 al 7 para una mejor funcionamiento para el usuario, de tal
forma se puede cambiar el rango dinámico para tener algunas variaciones y diferentes
formas de dicha combinación

en este proyecta del cajón con cerradura que se abre por combinación se utilizó también
la comunicación EUSART el propósito de usar esta comunicación era poder usar un
segundo pic ya que el primer diseño de este prototipo utilizaba más puertos de los que
contaba el pic pero al no contar con un segundo pic se optó por hacer una comunicación
serial de mandando y recibiendo dentro del mismo pic esta comunicación fue usada par a
mandar mensajes a un LCD igual que esto esta comunicación puede mandarse por wifi o
bluetooth. Se mandó números que fueron codificados por una subrutina que dependiendo
del valor del numero desplegaba cierto mensaje

Bibliografía

http://informatica.uv.es/~rmtnez/sbm/TEMA25-b&w.pdf

http://www.programarpicenc.com/articulos/usart-uart-de-los-microcontroladores-
pic-con-el-max232/

http://microcontroladores-mrelberni.com/analogico-digital-pic/