Construyendo un Conversor A/D de 3 canales

 

Proyecto: Conversor A/D 3 canales

Autor: TodoRobot

 

Introducción:

Un convertidor A/D (analógico/digital) posibilita el tratamiento de señales analógicas mediante un dispositivo digital como por ejemplo un microcontrolador.

Para ello, el Conversor A/D posee una o varias entradas analógicas y entrega su equivalente digital sobre un bus generalmente de 8 bits (ver Sensores en Robótica en la sección INFORMACION).

 

Teoría de funcionamiento de un conversor A/D:

Internamente un Conversor A/D consta de una etapa conversora D/A (digital analógica), una etapa amplificadora y una etapa comparadora.

Como vemos en la figura, la etapa D/A es del tipo R/2R. Esto es decir que consta de un conjunto de resistencias que van duplicando su valor comenzando con el valor mas bajo (R) en el bit mas significativo (bit 7 en este caso), y el mas alto corresponderá al bit menos significativo (bit 0). De esta forma, a la salida del conversor se obtendrá un valor analógico (entre 0 y 5v) proporcional al valor digital.

Este valor una vez amplificado está listo para ser introducido en la etapa comparadora, la cual es la encargada de verificar su igualdad con la señal analógica a ser convertida.

Existen dos métodos de conversión A/D:

Método Secuencial: Este método es el mas sencillo pero lento a la vez. Consiste en ir incrementando el valor digital (a la entrada del convertidor D/A) comenzando de 0 y terminando una vez que el comparadador delata que la salida del amplificador es igual a la entrada analógica. Este valor digital será el resultado de la conversión. El problema es que la velocidad de conversión se alarga a medida que la entrada analógica es mas elevada. Es decir, para convertir una señal equivalente a 10 (0A hexa) se necesitarán 10 pasos de testeos, en cambio con una señal equivalente a 127 (7F hexa) se necesitarán 127 comparaciones antes de detectar el valor.

Método de Aproximaciones Sucesivas: Este método es el mas usado y veloz, aunque requiere una programación algo mas compleja. Consiste en ir poniendo a "1" cada bit comenzando por el mas significativo. Por lo tanto, considerando que trabajamos con 8 bits de resolución, el primer paso es colocar a 1 el bit 7 (sería 1000000=128 en decimal) y realizar la comparación.

Si por ejemplo, el comparador indicase que la entrada analógica es menor que la salida del amplificador, significará que el valor es inferior a 128 con lo cual ya sabemos que estamos en la mitad inferior del byte (0 a 127) y por lo tanto el bit 7 debe ser apagado (poner a 0), esto ya evita tener que comprar la mitad superior (128 a 255). El paso siguiente será poner a 1 el bit 6 y de esta forma chekearemos si el valor está entre 0 y 63 o entre 64 y 127. Dependiendo de la salida del comparador se dejará en 1 o en 0 el bit 6. Y así sucesivamente se irán verificando los restantes bits (0 a 5). El resultado será el valor digital correspondiente a la conversión.

Este método solo requiere de 8 comparaciones (trabajando con resoluciones de 8 bits) para detectar cualquier valor de entrada a diferencia del método secuencial que requería de 256 comparaciones en el caso extremo.

 

Construcción práctica:

Para la construcción del conversor utilizaremos la Interfaz para el Puerto Paralelo , publicada en esta misma sección, para conectar el conversor a la PC y poder manejarlo mediante un pequeño programa.

En la siguiente figura podemos ver el circuito correspondiente a un conversor de 8 bits de resolución y tres entradas analógicas representadas por los tres potenciómetros (Pot1 a Pot3), en donde se aprecia claramente la tres etapas antes descriptas:

Ver archivo CIRCUITO.PDF

Los Jumpers J1, J2 y J3 se utilizan para seleccionar la cantidad de bits de resolución deseada (5 como mínimo y 8 como máximo). Para ello se debe tener en cuanta la siguiente tabla:

 

5 bits

6 bits

7 bits

8bits

J1

Abierto

Cerrado

Cerrado

Cerrado

J2

Abierto

Abierto

Cerrado

Cerrado

J3

Abierto

Abierto

Abierto

Cerrado

 

Software de conversión:

El siguiente diagrama de flujo ejemplifica un procedimiento adecuado para realizar una conversión mediante el método de Aproximaciones Sucesivas:

Ver archivo FLOWCHART.PDF

Si deseas bajar un ejemplo de programa realizado en Qbasic, puedes obtener el código fuente en el archivo CONVERSOR.BAS, o bien bajar directamente el ejecutable en el archivo CONVERSOR.EXE.

Este software presentará en pantalla el estado de cada entrada analógica representado en valores decimales.

Por ejemplo si trabajamos con una resolución de 8 bits, el valor de salida estará comprendido entre 0 y 255, correspondiendo el 0 a un valor de 0v y 255 a un valor de 12v (valor máximo de entrada).

Si trabajamos con resoluciones menores, también se reduce la sensibilidad del conversor, de esta manera si trabajamos con 7 bits, nuestra salida variará entre 0 y 127, donde como siempre 127 corresponderá a una entrada de 12v. Si trabajamos con 6 bits, la salida variará entre 0 y 63. Y por último trabajando solo con 5 bits, la salida solo variará entre 0 y 31.

Para probar su funcionamiento basta simplemente con mover el potenciómetro de entrada, el cual está conectado entre 12v y GND, y visualizar como varía el resultado de la conversión.

 

Utilización Práctica del Conversor A/D:

Los conversores A/D son muy útiles en robótica para la interpretación de todo tipo de sensores del tipo analógicos.

Un caso práctico de uso puede ser para la construcción de un brazo mecánico en el cual se desee utilizar motores DC en lugar de los motores Paso a Paso.

En este caso se necesitará de un sensor que nos permita saber la posición real del motor o bien del eje de la articulación. Para ello el sensor mas frecuentemente usado es un simple potenciómetro, este puede ser mecánicamente acoplado al eje de la articulación a sensar de tal manera que a medida que la articulación es movida, también se mueva el potenciómetro el cual al estar conectado a uno de los canales de entrada del conversor A/D nos brindará una posición lo suficientemente exacta para saber cuando detener el movimiento o bien accionarlo en uno u otro sentido.

 

.

..