El CAD conversor analógico digital PIC (no todos los PIC lo tienen, para los ejemplos se utilizará el PIC16F877A) el PIC16F877A),, 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 mas 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. Para la utilización del convertidor analógico digital PIC del PIC16F877A 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 PIC16F877A aproximadamente de 20us según la hoja de datos del PIC 16F877A, 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á mas 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 mas mejor, por ejemplo 2us o 4us. El registro 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 p ara 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.
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. 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.
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á l a 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 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. El registro 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.
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.