2. DEFINICIÓN
Este módulo permite convertir señales continuas del mundo analógico al mundo
discreto o digital de 1 y 0; de esta manera la señal analógica se puede manipular
dentro del MCU. Conviene anotar que hay un solo conversor A/D que se
multiplexa con todos los pines A/D que se estén trabajando en el MCU, también
puede conmutar los diferentes voltajes de referencia.
3. FUNCIONAMIENTO
En la conversión de señales análogas a digitales se deben tener en cuenta varios
conceptos que trataremos a continuación:
4. RESOLUCIÓN
En este MCU el ADC (Conversor Análogo a Digital) es de 10 bits de resolución, y
esto significa que una señal de entrada que varía entre 0-5V si se divide en 210 =
1024 partes, cada parte equivale a una porción de 4.88mV (aprox. 5mV). Esta
resolución es 4 veces mejor que una resolución de 8 bits, como se muestra en la
siguiente tabla:
6. JUSTIFICACIÓN
En este módulo ADC, como es de 10 bits, el resultado se debe almacenar en 2
registros alto (high) ADRESH y bajo (low) ADRESL, cada uno de 8 bits; de esta
manera tenemos la posibilidad de presentar el valor de la conversión en dos
tipos de formato, justificado a la derecha (acostumbrado) y justificado a la
izquierda; como se ve en la siguiente figura, con el bit ADFM en el registro
ADCON1<7> se escoge el formato.
9. VOLTAJE DE REFERENCIA
El módulo ADC tiene 2 voltajes de referencia alto (high) y bajo (low), que pueden
ser seleccionados en una combinación de VDD, VSS, RA3/VREF+, RA2/VREF-, con
los bits PCFG3:PCGF0 en el registro ADCON1<3:0>. Como voltajes de referencia
la costumbre es usar Alto = VDD = 5V y Bajo = VSS = 0V, sin embargo, se podrán
seleccionar otros valores, teniendo en cuenta los rangos que usa.
10. SELECCIONANDO CLOCK
El tiempo por bit de conversión es definido como TAD. La conversión necesita un
mínimo de 12 TAD para 10 bits. La fuente de reloj es seleccionada por software;
las 7 posibles opciones para TAD son:
11. SELECCIONANDO CLOCK
Para la conversión correcta del módulo A/D, el reloj (TAD) debe ser seleccionado
para asegurar un mínimo tiempo de TAD de 1.6 microsegundos (μs).
12. TIEMPO DE ADQUISICIÓN
Este retardo de tiempo es el requerido antes que una conversión pueda
comenzar.
Para que el conversor A/D encuentre la exactitud especificada, se debe permitir
al condensador de retención de carga (CHOLD) que llegue a su carga total o
llegue al nivel de voltaje del canal de entrada.
13. CONFIGURACIÓN DE PINES DEL PUERTO
ANÁLOGO
Los registros ADCON y TRIS controlan la operación de los pines del puerto A/D.
Los pines de puerto que se desean como entradas análogas deben tener su bit
correspondiente en el registro TRIS configurado como entrada (puertos = 1
Entrada). Si se borra el bit del TRIS quedará como salida y el valor digital (VOH o
VOL) será convertido. La operación del módulo A/D es independiente del estado
de los bits CHS2:CHS0 y los bits del TRIS. Esto indica que el módulo A/D realiza
una operación de conversión sin importar la conexión seleccionada.
14. OPERACIÓN
El módulo ADC tiene 4 registros básicos de operación que son:
1. A/D Resultado Registro Alto (ADRESH) (1Eh)
2. A/D Resultado Registro Bajo (ADRESL) (9Eh)
3. A/D Control Registro 0 (ADCON0) (1Fh)
4. A/D Control Registro 1 (ADCON1) (9Fh)
16. OPERACIÓN
El registro ADCON0 controla la operación del módulo ADC, y el registro ADCON1
configura las funciones de los pines del puerto; los pines del puerto pueden ser
configurados como entradas análogas (RA3 puede ser el voltaje de referencia), o
como I/O digitales. Además, observamos ambos registros y sus bits.
18. OPERACIÓN
Cuando la conversión se completa el resultado es guardado en el par de
registros ADRESH:ADRESL, el bit de bandera GO/-DONE de registro ADCON0<2>
es borrado y el bit de bandera ADIF del registro PIR1 es puesto a uno. Después
que el A/D es configurado como se desea, se debe seleccionar el canal deseado,
y esperar el retardo de tiempo de adquisición antes que la conversión comience;
la entrada análoga debe ser programada como entrada en su pin
correspondiente en el registro TRIS. Tan pronto como el tiempo de retardo ha
terminado, una conversión A/D puede comenzar.
19. CONVERSIÓN A/D
Si durante una conversión se borra el bit GO/-DONE, la conversión se aborta; el
par de registros no son actualizados porque hay una conversión parcialmente
completada. O sea que los registros ADRESH:ADRESL siguen conteniendo los
valores de la última conversión completa. Después de que una conversión es
abortada, la adquisición siguiente comienza automáticamente. El bit GO/-DONE
puede ser puesto a uno en cualquier momento para comenzar la conversión
siguiente.
21. ADCON0
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, ademas 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.
23. ADCON0
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 numero obtenido represente en forma adecuada el valor
de la señal analógica.
24. ADCON0
Por ejemplo, si se usa un cristal con una Fosc de 4Mhz, de la tabla se puede ver
que si la Fosc se divide entre 2 se tendrá el el tiempo de conversión será de
0,5us, lo cual no llega a los 1,6us mínimos, si se divide entre la Fosc 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 Fosc entre 8 se tendrá el 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.
25. ADCON0
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.
27. ADCON0
El bit 2 se pondrá a 1 para iniciar la conversión analógica digital PIC, cuando la
conversión de analógico a 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.
29. ADCON1
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 mas 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
mas 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.
30. ADCON1
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.
31. ADCON1
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.
33. PROCEDIMIENTO DE USO
Para trabajar con el módulo A/D siga los pasos siguientes:
1. Configure el módulo A/D:
· Configure los pines de entradas análogas, pines digitales, voltaje de referencia
en los bits PCFG3:PCFG0 del registro ADCON1<3:0>.
· Seleccione el canal A/D que va a convertir en los bits CHS2:CHS0 del registro
ADCON0<5:3>
· Seleccione el clock de conversión en el bit ADCS2 del registro ADCON1<6> y los
bits ADCS1:ADCS0 en el registro ADCON0<7:6>.
34. PROCEDIMIENTO DE USO
· Prenda el módulo A/D con el bit ADON del registro ADCON0.
· Configure el pin A/D como entrada en el registro TRIS correspondiente (luego
de Reset por default en Entradas = ‘1’).
35. PROCEDIMIENTO DE USO
2. Espere el tiempo requerido de adquisición.
3. Comience la conversión:
· Ponga a uno el bit de la bandera GO/-DONE en el registro ADCON0<2>.
4. Espere que se complete la conversión, ya sea que:
· Pregunte por el bit GO/-DONE en el registro ADCON0<2>, hasta cuando éste
sea borrado (interrupción deshabilitada); o
· Espere la interrupción del A/D.
36. PROCEDIMIENTO DE USO
5. Lea el registro del resultado de conversión en el par de registros
ADRESH:ADRESL:
6. Para la próxima conversión vaya a los pasos 1 o 2 (si se requiere):
El tiempo de conversión por bit es definido como TAD.