proyecto: manejo de los convertidores analógico-digitales de 10 bits, con el microcontrolador 16F88.
|
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:
ERROR DE CUANTIZACIÓN: 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. |
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 |