proyecto: manejo de los convertidores analógico-digitales de 10 bits, con el microcontrolador 16F88.

 

VER VIDEO

MEDIRNIVELV.jpg (139452 bytes)

Descripción general: el microcontrolador 16F88 integra, entre otras muchas funciones, 7 canales de conversión A/D (CAD), cada uno con 10 bits de resolución. Los ADC (ó CAD) se utilizan para convertir señales analógicas de voltaje ó corriente, proporcionadas por sensores-trasmisores especializados en la variable que habrá de medirse y que típicamente tienen un rango de salida de 0-5 volts, en un valor binario que puede ser manejado digitalmente por el programa de aplicación del sistema microcontrolador.

En el ejemplo mostrado en la figura, un sensor-trasmisor de nivel toma la señal de un tanque de almacenamiento de agua y la convierte en una señal de voltaje entre 0 y 5 volts. Esta señal ingresa al CAD de 16F88 para ser convertida en un valor binario. Finalmente, el valor del nivel en metros es mostrado en un display LCD.

Empleando programación con ANSI C, es sencillo realizar la conversión del valor binario al valor real de la variable física, en las unidades deseadas, como por ejemplo metros de nivel de agua el caso de la aplicación mostrada. El manejo de variables de punto flotante permite incluir el número de dígitos enteros y decimales requeridos.

Tomando en cuenta que la resolución del CAD es de 10 bits, tendremos un rango de valores binarios manejados por el convertidor del 16F88 de entre 0000000000 (0 decimal) para un voltaje mínimo de 0 volts y 1111111111 (1023 en decimal), para el voltaje máximo de 5 volts. En el ejemplo que nos ocupa, el valor mínimo indicaría el tanque completamente vacío, mientras el valor máximo un valor de nivel del agua de 10 metros.

Si el CAD envía un valor de 1010111010 binario, ó 698 decimal, el sistema microcontrolador aplicará la fórmula que proporcione el fabricante del sensor-trasmisor de nivel para encontrar el nivel real, en este ejemplo, de 6.82 metros.

EMULACION DEL SENSOR-TRASMISOR CON UN POTENCIOMETRO DE PRECISION DE 25 VUELTAS:

CAD1.jpg (68557 bytes)

 

ERROR DE CUANTIZACIÓN:

QUANTIZATION ERROR.jpg (71083 bytes)

Al realizar la conversión analógico-digital, se introduce el llamado "error de cuantización", consecuencia de asignar valores binarios a un rango de valores analógicos. En la gráfica puede apreciarse en las líneas punteadas los valores binarios, mientras la curva en gris es la variable analógica. La curva en rojo es el resultado de la conversión, con el error de cuantización.

El error será menor mientras más bits tenga el convertidor. En un convertidor de 10 bits, como es el caso del microcontrolador 16F88, suponiendo un rango de valores de la variable analógica de 0 a 5 volts, el error es de aproximadamente 5 milivolts.

 

ADC009.jpg (78427 bytes)

CONEXION AL PUERTO AUXILIAR DE EVOLUPIC Bootloader 16F88. El potenciómetro se conecta a las señales RA3, 5 volts y tierra del puerto. No es necesario utilizar ninguna fuente externa.

 

Como un primer proyecto para usar el ADC, en el sistema EVOLUPIC Bootloader 16F88, realizaremos una emulación del sensor- trasmisor, conectando una resistencia variable de precisión de 10K y 25 vueltas a la entrada RA3 del 16F88. Girando el tornillo del potenciómetros podemos ajustar el voltaje de salida entre valores de 0 a 5 volts.

Use como referencia para realizar la conexión el siguiente documento: Puertos y conectores en EVOLUPIC Bootloader 16F88.

La señal de voltaje ingresa a una de las entradas analógicas del 16F88, en el pin RA3. En un primer programa de prueba, ADCF8810BITSTINY.asm, (incluya también la librería RETARDOS.INC) se proporciona la salida del valor de voltaje convertido a binario, en 10 bits, mostrando en los LEDS del puerto B, primeramente los 8 bits menos significativos y 2 segundos después, los 2 más significativos.

En los comentarios del programa se detalla la forma de incializar los registros de configuración para realizar la conversión y de leer el resultado de los 2 bits más significativos, del registro ADRESH y los menos significativos del registro ADRESL.

En un segundo programa de prueba, escrito en ANSI C para el sistema EVOLUPIC Bootloader 16F88, se muestra el resultado de la conversión a 10 bits, como un valor decimal (0...1023) en el LCD. Los archivos del proyecto para el compilador CCS se incluyen aquí: CONVERSION AD 10 BITS.ZIP. El programa actualiza la información cada segundo y proporciona una lectura con precisión de 1 bit de error.

Para el compilador HITECH, el archivo fuente es: HITECHCONVADCTINY.c y su archivo header: KEYH.h

 

PROGRAMAS DE PRUEBA PARA CIRCUITO CONVERTIDOR ADC

SISTEMA EB88

DESCRIPCION Y LINK

ADCF8810BITSTINY.asm Manejo del convertidor A/D, con 10 bits de resolución, lenguaje ensamblador, muestra resultado de la conversión en los leds del puerto B, primeramente los 8 bits menos significativos y dos segundos después, los 2 más significativos.
ADCF8810BITSTINY.hex  
SISTEMA EB88

DESCRIPCION Y LINK

CCSADC10BITSTINY.c Lee un valor binario de 10 bits del ADC y muestra valor decimal en LCD, ANSI C
CCSADC10BITSTINY.hex  
CCSADC10BITSTINY2.c Usa función de convertidor ADC "keyadc.h", muestra valor decimal en LCD.
CCSADC10BITSTINY2.hex  
CCSADC10BITSNIVELTINY2.c Muestra valor del nivel en metros, empleando variable de punto flotante.
CCSADC10BITSNIVELTINY2.hex  
HITECHCONVADCTINY.c Lee un valor binario de 10 bits del ADC y muestra valor decimal en LCD, ANSI C
HITECHCONVADCTINY.hex