ADC: cómo mejorar la precisión de las mediciones en un microcontrolador

Medir una señal analógica con un microcontrolador puede parecer una tarea sencilla. Conectar la señal a una entrada ADC, realizar una conversión y transformar el valor digital obtenido en una tensión debería ser suficiente.

Sin embargo, cuando pasamos de un prototipo a un equipo electrónico real, aparecen problemas que no siempre son evidentes.

Una señal que debería ser estable puede presentar pequeñas variaciones entre lecturas. El valor medido puede no coincidir exactamente con la tensión real o incluso cambiar cuando otro circuito del sistema comienza a funcionar.

Las causas pueden ser muy diferentes: ruido eléctrico, una referencia de tensión poco estable, una impedancia de entrada demasiado elevada, errores propios del ADC, problemas en la alimentación, un diseño de PCB mejorable o una calibración insuficiente.

Además, existe una idea muy extendida que conviene aclarar desde el principio:

Un ADC con más bits no necesariamente proporciona una medición más precisa.

La calidad de una medición analógica depende del sistema completo: desde la señal que llega al microcontrolador hasta el acondicionamiento, la PCB, la referencia de tensión, el ADC y el procesamiento realizado en firmware.

En este artículo veremos cómo mejorar la precisión de un ADC, cuáles son las principales fuentes de error y qué técnicas de hardware y firmware pueden utilizarse para conseguir mediciones más estables y fiables.

¿Qué es un ADC y cómo convierte una señal analógica?

Un ADC (Analog-to-Digital Converter) es el circuito encargado de convertir una tensión analógica en un valor digital que pueda procesar un microcontrolador.

Por ejemplo, podemos tener una señal comprendida entre 0 y 3,3 V.

El ADC divide ese rango de tensión en un determinado número de niveles y asigna un código digital a cada uno de ellos.

El número de niveles depende de la resolución del ADC.

Un ADC de:

  • 8 bits dispone de 256 niveles.
  • 10 bits dispone de 1024 niveles.
  • 12 bits dispone de 4096 niveles.
  • 16 bits dispone de 65.536 niveles.

De forma aproximada, la relación entre la tensión de entrada y el código obtenido puede expresarse como:

Código ADC ≈ Vin / VREF × (2ᴺ − 1)

donde:

  • Vin es la tensión de entrada.
  • VREF es la tensión de referencia.
  • N es el número de bits del ADC.

Por ejemplo, un ADC de 12 bits con una referencia de 3,3 V dispone de 4096 niveles.

La separación ideal entre niveles es del orden de:

LSB ≈ 3,3 V / 4096 ≈ 0,806 mV

Esto significa que el ADC puede distinguir cambios de tensión de aproximadamente 0,8 mV bajo el modelo ideal.

Pero aquí aparece una diferencia fundamental:

que el ADC tenga una resolución de 0,8 mV no significa que pueda medir una tensión con un error máximo de 0,8 mV.

Para entender por qué, primero debemos diferenciar varios conceptos.

Resolución, precisión y exactitud: no son lo mismo

Los términos resolución, precisión, exactitud y repetibilidad suelen utilizarse indistintamente, pero describen características diferentes de una medición.

Resolución

La resolución indica la capacidad del ADC para distinguir diferentes niveles de tensión.

Un ADC de mayor resolución dispone de más códigos digitales.

Exactitud

La exactitud indica cuánto se aproxima la medición al valor real.

Un ADC puede tener una resolución elevada y, aun así, presentar un error considerable.

Precisión

En este artículo utilizaremos el término precisión para referirnos de forma general al comportamiento de la medición y a su capacidad para proporcionar resultados consistentes y cercanos al valor esperado.

Repetibilidad

La repetibilidad indica cuánto se parecen las mediciones cuando repetimos una misma medida bajo las mismas condiciones.

Imaginemos que aplicamos exactamente 2,000 V a un ADC.

Si obtenemos:

1,982 V
1,983 V
1,982 V
1,983 V

las mediciones son muy repetibles, aunque existe un error respecto al valor real de 2,000 V.

En cambio, si obtenemos:

1,97 V
2,03 V
1,99 V
2,02 V

Tenemos una mayor variación entre las lecturas. Por tanto, antes de intentar mejorar una medición ADC debemos determinar qué tipo de error estamos intentando solucionar.

Principales fuentes de error de un ADC

La precisión de una medición ADC puede verse afectada por numerosos factores.

Entre los más importantes encontramos:

  • Error de offset.
  • Error de ganancia.
  • No linealidad.
  • Ruido.
  • Error de referencia.
  • Variaciones de alimentación.
  • Impedancia de la fuente.
  • Errores introducidos por el circuito de acondicionamiento.
  • Temperatura.
  • Errores asociados al propio diseño de la PCB.

Error de offset

El error de offset hace que la respuesta del ADC presente un desplazamiento respecto a la respuesta ideal.

En términos sencillos, podemos tener una señal cercana a cero y obtener un valor ligeramente diferente de cero.

Si este error permanece suficientemente estable, puede compensarse mediante calibración.

Error de ganancia

El error de ganancia afecta a la pendiente de la relación entre la tensión real y el valor medido.

Podemos tener una lectura prácticamente correcta cerca de cero y observar un error cada vez mayor a medida que aumenta la tensión.

Este tipo de error puede corregirse mediante una calibración adecuada de escala.

Error de linealidad

Un ADC ideal debería producir una relación perfectamente lineal entre la tensión de entrada y el código digital.

En un dispositivo real existen desviaciones.

Dos parámetros habituales para describirlas son:

  • INL (Integral Non-Linearity).
  • DNL (Differential Non-Linearity).

Estos parámetros suelen aparecer en la hoja de datos del ADC y permiten conocer hasta qué punto su comportamiento se aleja del ideal.

Ruido

El ruido es una de las causas más habituales de variación entre lecturas.

Podemos tener una señal estable de 1,500 V y obtener:

1,498 V
1,502 V
1,499 V
1,503 V
1,497 V

La tensión real no tiene por qué estar cambiando.

Puede ser el propio ruido del sistema el que esté modificando la lectura.

Error de referencia

El ADC necesita una referencia para determinar a qué tensión corresponde cada código.

Si la referencia cambia, la conversión también cambia.

Por eso, VREF es uno de los elementos fundamentales de cualquier sistema de medida basado en ADC.

Cómo mejorar la precisión de un ADC

Una vez identificadas las principales fuentes de error, podemos actuar sobre diferentes partes del sistema.

No existe una única solución. En un diseño real, normalmente se combinan varias técnicas de hardware y firmware.

Utilizar una referencia de tensión estable

La tensión de referencia, VREF, establece el rango de medida del ADC.

En un ADC ideal, el tamaño del paso depende directamente de la tensión de referencia y de la resolución utilizada.

Por ejemplo, con un ADC de 12 bits y una referencia de 3,3 V disponemos de 4096 niveles y un paso ideal de aproximadamente 0,806 mV.

Pero si la referencia no es exactamente 3,300 V o presenta variaciones, esas variaciones afectan directamente a la medición.

Podemos encontrar diferentes configuraciones.

Referencia interna

Muchos microcontroladores incorporan una referencia interna.

Su principal ventaja es simplificar el diseño, aunque su precisión y estabilidad dependen del dispositivo concreto.

Alimentación como referencia

En algunos microcontroladores el ADC puede utilizar la propia alimentación como referencia.

Es una solución sencilla, pero cualquier variación o ruido presente en la alimentación puede afectar directamente a la medición.

Referencia externa

Cuando necesitamos una mayor estabilidad puede utilizarse una referencia externa de precisión.

Esto permite disponer de una tensión específicamente diseñada para proporcionar una referencia estable al ADC.

Sin embargo, una referencia externa no soluciona por sí sola todos los problemas. El desacoplo, la alimentación, el layout y el ruido siguen siendo importantes.

Controlar la impedancia de entrada

Uno de los errores menos evidentes al utilizar un ADC está relacionado con la impedancia de la fuente.

Podemos imaginar el ADC como un voltímetro ideal con una impedancia de entrada infinita.

Pero un ADC real puede incorporar internamente un condensador de sample & hold.

Durante el proceso de muestreo, este condensador necesita cargarse hasta un valor relacionado con la tensión de entrada.

Si la fuente presenta una impedancia demasiado elevada, el condensador puede no tener suficiente tiempo para alcanzar correctamente la tensión de la señal.

Esto puede provocar un error de conversión.

El problema puede aparecer, por ejemplo, cuando utilizamos un divisor resistivo formado por resistencias de valores muy elevados.

Una posible solución es reducir la impedancia de la fuente o utilizar un buffer mediante un amplificador operacional.

La resistencia recomendada dependerá del ADC concreto y del tiempo de adquisición configurado. Por eso, siempre conviene consultar las especificaciones del microcontrolador.

Utilizar un filtro RC para reducir el ruido

Cuando una señal presenta ruido, una de las soluciones más sencillas consiste en colocar un filtro RC antes de la entrada analógica.

El circuito básico es:

Esquema filtro RC

La resistencia y el condensador forman un filtro paso bajo.

Su frecuencia de corte aproximada es:

fc = 1 / (2πRC)

Por ejemplo, con:

  • R = 1 kΩ
  • C = 100 nF

obtenemos aproximadamente:

fc ≈ 1,59 kHz

Las frecuencias superiores a esta frecuencia de corte se atenúan progresivamente.

Este tipo de filtro puede ser muy útil para reducir ruido de alta frecuencia antes de que llegue al ADC.

Pero existe un compromiso importante.

Si filtramos demasiado la señal, también podemos eliminar información que sí necesitamos medir.

Por eso, la frecuencia de corte debe elegirse teniendo en cuenta la velocidad con la que cambia la señal.

Además, la resistencia del filtro forma parte de la impedancia que ve el ADC. Por tanto, debemos comprobar que el circuito sigue siendo compatible con los requisitos de entrada del microcontrolador.

Mejorar la alimentación y el desacoplo

La calidad de la alimentación también puede afectar a las mediciones analógicas.

Un microcontrolador puede generar corrientes variables cuando cambia de estado, utiliza interfaces de comunicación rápidas o activa diferentes periféricos.

Estas variaciones pueden producir ruido en la alimentación.

Si la referencia del ADC depende directa o indirectamente de esa alimentación, parte de ese ruido puede terminar apareciendo en las mediciones.

Por ello es importante utilizar correctamente los condensadores de desacoplo recomendados por el fabricante.

También conviene colocar los condensadores cerca de los pines correspondientes y prestar atención a los recorridos de las corrientes de retorno.

En aplicaciones especialmente sensibles puede ser necesario estudiar por separado la alimentación de la parte analógica y la digital.

Cuidar la masa y el diseño de la PCB

El diseño de la PCB tiene una influencia directa sobre el comportamiento de las señales analógicas.

Los circuitos digitales generan corrientes de conmutación que pueden producir ruido. Si las corrientes de retorno comparten determinadas zonas con señales analógicas sensibles, pueden aparecer pequeñas variaciones de tensión que afectan a la medición.

Por eso debemos prestar atención a:

  • Recorridos de corriente.
  • Planos de masa.
  • Ubicación del ADC.
  • Ubicación de las señales analógicas.
  • Fuentes de ruido cercanas.
  • Convertidores DC/DC.
  • Señales digitales de alta velocidad.
  • Ubicación de la referencia de tensión.
  • Condensadores de desacoplo.

Esto no significa que siempre debamos crear una masa analógica y otra digital completamente separadas.

De hecho, una separación incorrecta puede generar problemas adicionales.

La estrategia adecuada depende del microcontrolador o ADC utilizado y del diseño completo de la PCB. Las recomendaciones de layout del fabricante deben formar parte del diseño.

En un proyecto electrónico profesional, estos aspectos deben analizarse desde las primeras fases del diseño del hardware y no únicamente cuando aparecen problemas durante las pruebas.

Una medición analógica precisa empieza mucho antes de llegar al ADC: empieza en el diseño del circuito y de la PCB.

Utilizar promediado y oversampling

También podemos mejorar el comportamiento de las mediciones mediante firmware.

Una de las técnicas más sencillas es realizar varias conversiones y calcular su promedio.

Por ejemplo:

Lectura 1 → 2047
Lectura 2 → 2049
Lectura 3 → 2046
Lectura 4 → 2050
Lectura 5 → 2048
Lectura 6 → 2047

En lugar de utilizar una única muestra, podemos calcular la media:

Media = (2047 + 2049 + 2046 + 2050 + 2048 + 2047) / 6

Esto reduce las variaciones aleatorias y proporciona una lectura más estable.

¿Qué diferencia hay entre promediado y oversampling?

El promediado y el oversampling están relacionados, pero no son exactamente lo mismo.

El promediado se utiliza principalmente para reducir ruido y estabilizar una lectura.

El oversampling, bajo determinadas condiciones, puede utilizarse para aumentar la resolución efectiva de una medición.

Para obtener información adicional mediante oversampling debe existir suficiente variación o ruido no correlacionado en la señal para que las muestras ocupen diferentes niveles del ADC.

Por tanto, realizar muchas lecturas y calcular una media no convierte automáticamente un ADC de 12 bits en uno de 16 bits.

Calibrar el ADC

Incluso después de diseñar correctamente el hardware podemos encontrar errores sistemáticos.

Aquí entra en juego la calibración.

Calibración de offset

Podemos aplicar una tensión conocida y determinar cuánto se desvía la lectura.

Por ejemplo:

Valor real:      0,000 V
Valor medido:    0,018 V

Offset:          +0,018 V

Posteriormente podemos compensar ese error en firmware.

Calibración de ganancia

También podemos aplicar una tensión conocida en un punto superior.

Por ejemplo:

Valor real:      2,500 V
Valor medido:    2,530 V

Con estos datos podemos calcular un factor de corrección.

Calibración en varios puntos

En aplicaciones donde se necesita mayor precisión puede utilizarse una calibración basada en varios puntos.

Esto permite obtener una relación más precisa entre el código del ADC y la magnitud real.

Una aproximación sencilla sería:

Vreal = ADC × ganancia + offset

Los valores de ganancia y offset se obtienen durante el proceso de calibración.

Diseñar correctamente los divisores resistivos

Los divisores resistivos son muy habituales cuando necesitamos medir una tensión superior al rango permitido por el ADC.

Por ejemplo, si queremos medir una señal de 0–10 V con un ADC que admite como máximo aproximadamente 3,3 V, podemos utilizar:

Esquema divisor de tensión para ADC

La tensión que llega al ADC es:

VADC = Vin × R2 / (R1 + R2)

Supongamos:

  • R1 = 20 kΩ
  • R2 = 10 kΩ

Para una entrada de 10 V:

VADC = 10 × 10 / (20 + 10) = 3,33 V

Hemos reducido la tensión para adaptarla aproximadamente al rango de un ADC de 3,3 V.

Pero el divisor introduce otros factores que debemos considerar.

Tolerancia

Si las resistencias tienen una tolerancia del 1 %, la relación real puede no ser exactamente la calculada.

Para mediciones más precisas puede ser necesario utilizar resistencias de mayor precisión.

Deriva térmica

La resistencia puede cambiar ligeramente con la temperatura.

En una medición de precisión, este efecto puede llegar a ser relevante.

Impedancia

El divisor también determina la impedancia que ve la entrada del ADC.

Si utilizamos resistencias excesivamente grandes, podemos empeorar el proceso de adquisición de la señal.

Por este motivo, el divisor debe diseñarse teniendo en cuenta simultáneamente:

rango de tensión + precisión + consumo + impedancia del ADC.

Utilizar un buffer con amplificador operacional

Cuando la impedancia del circuito de entrada es demasiado elevada, una solución habitual es utilizar un amplificador operacional como buffer.

El esquema conceptual sería:

adaptar impedancia de entrada mediante buffer con operacional

El amplificador puede presentar una impedancia de entrada elevada y una impedancia de salida baja.

Esto permite aislar el circuito que genera la señal del condensador de sample & hold del ADC.

Sin embargo, el amplificador operacional también introduce sus propios errores:

  • Offset.
  • Ruido.
  • Deriva térmica.
  • Limitaciones de alimentación.
  • Limitaciones de salida.

Por tanto, también debe seleccionarse de acuerdo con la precisión que necesita el sistema.

¿ADC de mayor resolución o mejor diseño?

Cuando una medición no es suficientemente buena, una reacción habitual es buscar un microcontrolador con un ADC de más bits.

A veces puede ser la solución adecuada.

Pero no siempre.

Imaginemos dos diseños.

Diseño A

ADC de 12 bits con:

  • Referencia estable.
  • Buena alimentación.
  • Filtro RC.
  • PCB correctamente diseñada.
  • Calibración.

Diseño B

ADC de 16 bits con:

  • Mucho ruido.
  • Referencia inestable.
  • Mala alimentación.
  • Señal sin filtrar.
  • Sin calibración.

Aunque el segundo ADC tenga cuatro bits más de resolución, no podemos asumir que proporcionará una medición más precisa.

La calidad de una medición depende del sistema completo.

Por eso, antes de cambiar de microcontrolador conviene identificar cuál es realmente el origen del error.

Ejemplo práctico: medir una señal de 0–10 V con un microcontrolador

Supongamos que queremos medir una señal industrial de 0 a 10 V utilizando un microcontrolador cuyo ADC trabaja entre 0 y 3,3 V.

No podemos conectar directamente la señal al ADC.

Necesitamos adaptar primero el rango.

Una solución sencilla es utilizar un divisor resistivo.

Por ejemplo:

Esquema divisor de tensión para ADC

La relación es:

VADC = Vin × 10 / 30

Por tanto:

  • 0 V → 0 V.
  • 5 V → 1,67 V.
  • 10 V → 3,33 V.

A continuación podemos añadir un filtro RC para reducir el ruido.

El circuito podría quedar conceptualmente así:

Esquema de flujo medida ADC


Para obtener una medición realmente precisa todavía debemos tener en cuenta:

  • Tolerancia de las resistencias.
  • Referencia del ADC.
  • Error propio del ADC.
  • Ruido.
  • Temperatura.
  • Impedancia de entrada.
  • Calibración.

Este ejemplo demuestra por qué la precisión no depende exclusivamente del ADC.

Protección de la entrada del ADC

Una entrada analógica conectada a un circuito externo puede recibir accidentalmente una tensión superior al máximo permitido.

Por ejemplo, si el ADC admite entre 0 y 3,3 V, una señal de 5 V aplicada directamente podría superar las condiciones permitidas por el microcontrolador.

Por ello, las entradas que salen al exterior pueden necesitar algún tipo de protección.

Dependiendo de la aplicación podemos utilizar:

  • Resistencias en serie.
  • Diodos de protección.
  • Diodos TVS.
  • Circuitos de clamping.
  • Limitadores de tensión.

Pero existe un aspecto importante:

la protección no debe introducir un error excesivo en la medición.

Una resistencia serie demasiado elevada puede afectar al tiempo de adquisición del ADC.

Un dispositivo de protección con corrientes de fuga elevadas también puede modificar una señal de alta impedancia.

Por tanto, la protección debe diseñarse conjuntamente con el circuito de medida.

Checklist para mejorar la precisión de un ADC

Antes de cambiar el microcontrolador, podemos revisar los siguientes puntos.

Checklist de las actuaciones que mejoran la precisión de la medida de un adc

Conclusión

Mejorar la precisión de un ADC no consiste simplemente en utilizar un convertidor con más bits.

Una medición analógica es el resultado de todo un sistema formado por:

señal → acondicionamiento → PCB → referencia → ADC → firmware → calibración.

Una referencia estable puede reducir los errores asociados a la tensión de referencia. Un buen diseño de PCB ayuda a reducir el ruido. Un filtro RC puede eliminar parte del ruido de alta frecuencia y un buffer puede solucionar problemas relacionados con la impedancia de la fuente.

En firmware, técnicas como el promediado, el oversampling y la calibración permiten mejorar todavía más el resultado.

Por eso, cuando un ADC no proporciona las mediciones esperadas, lo recomendable es analizar primero de dónde procede el error antes de asumir que necesitamos un ADC con mayor resolución.

En muchos casos, una mejora relativamente sencilla en la alimentación, el filtrado, el diseño de la PCB o la calibración puede proporcionar un resultado mucho mayor que simplemente pasar de un ADC de 12 bits a uno de 16 bits.

¿Tu ADC no proporciona la precisión esperada?

Cuando una medición analógica no ofrece el resultado esperado, cambiar directamente a un microcontrolador con un ADC de mayor resolución no siempre es la solución.

El origen del problema puede estar en la referencia de tensión, el acondicionamiento de señal, la alimentación, el layout de la PCB, el ruido o incluso en la calibración realizada en firmware.

En Kenso Circuits desarrollamos sistemas electrónicos a medida, desde el diseño del esquemático y el acondicionamiento de señales hasta el diseño de la PCB, firmware, prototipado y validación.

Trabajamos desde Valencia en proyectos de electrónica, sistemas embebidos, IoT y equipos industriales.

Si estás desarrollando un equipo electrónico y necesitas medir señales analógicas con precisión, podemos ayudarte a diseñar el hardware adecuado para tu aplicación.

Preguntas frecuentes sobre ADC y precisión de las mediciones

¿Tener un ADC de más bits significa medir con mayor precisión?

No necesariamente. Una mayor resolución proporciona más niveles de cuantificación, pero la precisión también depende del ruido, la referencia, la alimentación, el error propio del ADC, el diseño de la PCB y la calibración.

¿Cómo puedo reducir el ruido de una lectura ADC?

Se pueden combinar diferentes técnicas, como filtrado RC, un diseño adecuado de alimentación y masa, desacoplo, reducción de fuentes de interferencia y promediado de varias muestras.

¿Qué es el oversampling de un ADC?

Es una técnica que utiliza un número superior de muestras para mejorar la resolución efectiva bajo determinadas condiciones de ruido y variación de la señal.

¿Cuándo necesito un amplificador operacional antes del ADC?

Puede ser necesario cuando la fuente presenta una impedancia elevada o cuando necesitamos adaptar, amplificar o acondicionar la señal antes de introducirla en el ADC.

¿Por qué la referencia de tensión afecta a la precisión del ADC?

Porque el ADC utiliza VREF para determinar la relación entre la tensión de entrada y el código digital. Las variaciones de la referencia se reflejan directamente en la medición.

¿Cómo puedo medir una señal de 0–10 V con un microcontrolador de 3,3 V?

Una posibilidad es utilizar un divisor resistivo para adaptar la señal al rango permitido por el ADC. Dependiendo de la aplicación también pueden ser necesarios filtrado, protección, buffer y calibración.

¿El diseño de la PCB afecta a la medición de un ADC?

Sí. El ruido de alimentación, los retornos de corriente, las señales digitales de alta velocidad, los convertidores DC/DC y el diseño de masa pueden afectar al comportamiento de las mediciones analógicas.

Imagen de cabecera para articulo ADC: cómo mejorar la precisión de las mediciones en un microcontrolador

Si estás desarrollando un equipo electrónico y necesitas medir señales analógicas con precisión, podemos ayudarte a diseñar el hardware adecuado para tu aplicación.