Está en la página 1de 6

Conversor Anlogo Digital

El convertidor Anlogo-Digital (ADC por sus siglas en ingls) es un dispositivo que toma
una seal anloga (corriente, voltaje, temperatura, presin, etc.), cuantifica la seal y le
asigna un valor que se muestra a su salida en formato digital.
Los ADC ms comunes son aquellos que convierten seales de voltaje o corriente a su
equivalente digital aunque podemos encontrarlos para medir diversidad de magnitudes
anlogas. Afortunadamente los Arduinos incluyen de fbrica uno o varios ADC que nos
permiten convertir niveles de voltaje a valores digitales.
En general hay tres cosas que nos interesa saber sobre un ADC:
1.
La resolucin
2.
El tiempo de conversin
3.
El rango de trabajo
Vamos ahora a revisar en detalle cada una de estas tres caractersticas.
La resolucin del convertidor

Uno de los mayores inconvenientes de convertir seales anlogas a su equivalente en


digital es que pasamos de una seal que por naturaleza es continua y sin cortes a un dato
discreto, que solo puede tener ciertos valores. Este proceso es conocido como
"cuantificacin".
Generalmente la cantidad de valores discretos en los que un ADC puede traducir una
seal anloga a digital se conoce como su resolucin y usualmente es medida en base al
nmero de bits que el ADC tiene a su salida. El nmero de bits representa la cantidad
mxima de valores discretos o de pasos que un ADC puede tener.
Supongamos por ejemplo que tenemos un convertidor ADC de 3 bits. Este convertidor
podr tener solo 8 valores diferentes a su salida. Esto significa que nuestros voltajes al
ser convertidos podran tener ms o menos la siguiente distribucin (asumiendo un voltaje
mximo de 5V):

Entrada anloga (V)


0.000 - 0.625
0.625 - 1.250
1.250 - 1.875
1.875 - 2.500
2.500 - 3.125
3.125 - 3.750
3.750 - 4.375
4.375 - 5.000

Salida digital
0
1
2
3
4
5
6
7

Para calcular el nmero de valores discretos que el ADC es capaz de convertir


utilizaremos esta frmula:

Seguramente ahora te estars preguntando: Qu tanta resolucin necesito? La


respuesta depende muchsimo de la aplicacin. Si por ejemplo ests fabricando un
"dimmer" digital posiblemente estos 8 pasos de resolucin sean ms que suficiente para
la esa aplicacin. Si en cambio ests haciendo un control en que requiere muchsima
precisin tener solo 8 pasos de conversin puede resultar desastroso.
El Arduino Mega que utilizaremos en este ejemplo posee 10 ADC con una resolucin de
10bits cada uno. Esto significa que para cada entrada anloga tenemos disponibles 1024
pasos o valores discretos, para la mayora de aplicaciones esto resulta ms que
suficiente.
El tiempo de conversin y la frecuencia de muestreo

Lastimosamente la conversin de una seal anloga a su equivalente valor digital no es


instantnea, esto significa que el convertidor tarda algn tiempo (usualmente muy
pequeo) en realizar el proceso de conversin. Esto limita el nmero de conversiones que
podemos realizar en una unidad de tiempo, a este nmero de conversiones que puede
realizar un ADC usualmente se le conoce como frecuencia de muestreo o en ingls
"sampling rate".
Podemos entender este parmetro como la precisin del convertidor en el tiempo. Un
ADC con un tiempo de conversin de 1 segundo es ms lento que uno que tarde

0.001segundos en hacer una conversin. La frecuencia de muestreo mxima del ADC se


calcula utilizando el inverso del tiempo de conversin:

Al igual que el parmetro de la resolucin, que la frecuencia de muestreo sea buena o


mala depende mucho de que tan rpido cambie el valor anlogo que deseamos medir.
Por ejemplo si tenemos una sonda que mide la humedad en el suelo, el valor a medir no
va a cambiar hasta que transcurran algunos minutos por lo que un ADC que tarde 1
segundo en realizar la conversin no nos va a dar mayor problema, por el contrario si
estamos queriendo convertir a digital una seal de audio, 1 segundo de tiempo de
conversin se queda sumamente corto para capturar las frecuencias que el oido puede
distinguir.
Una forma simple para elegir un ADC es que la frecuencia de muestreo sea "al menos" el
doble de la frecuencia de la seal que queremos convertir (ver Teorema de muestreo de
Nyquist-Shannon). Por ejemplo si queremos medir una seal que oscila a 60Hz lo menos
que necesitaremos es un ADC que logre tomar 120 muestras por segundo.
Segn la hoja de especificaciones del ATmega1280, el tiempo de conversin del ADC
vara entre 13s y 260s lo que implica una frecuencia de muestreo terica entre 3.8kHz
y 76.92kHz. Obviamente el ATmega1280 no es lo suficientemente rpido como para
alcanzar la mxima frecuencia de muestreo terica del ADC.
El rango de trabajo

La tercer caracterstica, pero no la menos importante, que debemos tomar en


consideracin al elegir un ADC es el rango de voltajes/corrientes que acepta en su
entrada, este parmetro es esencial para evitar "quemar" (literalmente) nuestro ADC.

La nica forma de saber el rango del ADC es revisando su hoja tcnica, usualmente
encontraremos el rango de valores de voltaje y de corriente aceptados en la entrada como
tambin las tolerancias aceptadas.
Para el Arduino Mega, segn las especificaciones tcnicas el rango de entrada va desde
0v hasta Vcc (5V).

Voltajes de referencia
El voltaje de referencia es un voltaje utilizado como valor "mximo" por el ADC para
realizar el proceso de conversin.

El Arduino Mega puede utilizar dos valores como referencia para realizar la conversin, el
primero es el voltaje de alimentacin (5V) y el otro es un voltaje externo en tanto este no
supere el voltaje de alimentacin (Vcc).

Para qu usar un voltaje de referencia externo? Si recuerdan, la resolucin de nuestro


ADC est limitada a un nmero de pasos predefinido por el fabricante. En el caso de que
la seal que deseamos medir tenga un valor menor al voltaje de alimentacin entonces el
rango de valores que podemos utilizar se reduce y por lo tanto reducimos tambin la
precisin.
Por ejemplo: Nuestra seal vara desde 0 a 2.5V. Si calculamos nuestro tamao de "paso"
para cada valor utilizando la referencia de la alimentacin (5V):

Pero si en cambio utilizamos el voltaje de referencia de 2.5V:

Puedes ver como el tamao de paso se reduce casi a la mitad utilizando el valor mximo
de voltaje medido como referencia, aumentando en consecuencia la precisin de los
valores medidos para esa seal en particular.
Qu hacer si quiero medir un voltaje mayor que el rango de entrada?
Un truco bsico es utilizar un divisor de voltaje. Para el divisor de voltaje se recomienda
utilizar resistencias de valores altos para que las corrientes se mantengan al mnimo. Por
ejemplo si quisieras medir 100V con un Arduino cuya entrada mxima son 5V:

Primero divides entre el voltaje mximo que quieres medir entre el voltaje de referencia
(5V) para encontrar el nmero de resistencias que deber tener tu divisor de voltaje:

Como tener un divisor de voltaje con 20 resistencias es un poco incmodo y ocupa mucho
espacio podras tener algo como lo siguiente:

En este caso estars midiendo 1/20 del voltaje. Solo ten cuidado con las tolerancias de
las resistencias. Si asumimos por ejemplo que la tolerancia de las resistencias es del 5%,
su valor real podria variar entre 0.95K y 1.05K es posible que tengas que utilizar un divisor
ms grande para as jugar seguro y luego agregas un pequeo factor de correccin
mediante software.

El dimmer digital
Ahora vamos a poner en prctica los conocimientos sobre ADC que hemos adquirido y
vamos a utilizar algunas funciones muy tiles del Arduino. En este caso vamos a fabricar
un dimmer de LED digital.

Un "dimmer" o un "atenuador" es un sencillo dispositivo que atenua la intensidad de una


luz. Seguramente ms de alguno ha utilizado o tienes uno de estos dispositivos en sus
hogares.
Atenuar un LED es un poco ms complicado, el problema es que los LED no funcionan
calentando un filamento como los focos incandescentes sino que convierten directamente
la energa elctrica en luz. Esto los hace muy eficientes, tan eficientes que si los hacemos
funcionar fuera de su rango ptimo de trabajo, por ejemplo reduciendo la corriente,

desperdiciaremos mucha energa en forma de calor y adicionalmente podramos notar


algunas diferencias en el color del LED en tanto reducimos su intensidad.
Una solucin sencilla muy prctica para atenuar LEDs con circuitos digitales es utilizar
"modulacin de pulsos". La ventaja de utilizar esta tcnica es que permite que el led
mantenga su color (ya que siempre funciona utilizando la misma corriente) y simplemente
cambia la intensidad de la luz emitida. Realmente lo que sucede es que el led se est
apagando y encendiendo muy rpidamente lo que reduce la cantidad de luz que emite,
esto ocurre tan rpido que nuestro ojo no lo nota y pareciera que el led est reduciendo su
intensidad. Afortunadamente Arduino ya incluye la funcionalidad para generar seales
PWM.
El circuito que utilizaremos en esta ocasin es sumamente sencillo, estos son los
materiales que vamos a necesitar:

1 x Arduino Leonardo
1 x Resistencia 330Ohm (o 470Ohm)
1 x Diodo Led
1 x Potenciometro (resistor variable) de 50K.
El diagrama del circuito es el siguiente:

También podría gustarte