¿Qué calcula esta herramienta?
Un convertidor analógico-digital representa un voltaje mediante un número discreto. La resolución en bits determina cuántos niveles puede distinguir el sistema entre cero y la referencia.
V = ADC × Vref / (2ⁿ − 1)
Calcula el valor máximo 2ⁿ−1 y multiplica la lectura por Vref dividido entre ese máximo. La fórmula ideal no incluye errores de offset, ganancia, ruido ni no linealidad del ADC real.
Ejemplo resuelto
Para un ADC de 12 bits, Vref = 3.3 V y lectura 2048, el voltaje ideal es aproximadamente 1.65 V.
Recomendaciones prácticas
- Usa la Vref real medida cuando busques mayor exactitud.
- No asumas que todos los ADC llegan exactamente a 0 V y Vref.
- Promedio y filtrado pueden reducir ruido, pero también afectan la respuesta temporal.
Cuándo resulta útil
Conversión entre cuentas digitales y voltaje para microcontroladores, adquisición de datos y sensores analógicos.
Error común que conviene evitar
La resolución teórica no garantiza la precisión real: referencia, ruido, INL/DNL y acondicionamiento también influyen.
Fórmulas completas del ADC
Un ADC de n bits divide el intervalo entre 0 V y Vref en 2ⁿ niveles y devuelve un código entero de 0 a 2ⁿ − 1:
- Código a voltaje: V = código · Vref / (2ⁿ − 1)
- Voltaje a código: código = redondeo(V · (2ⁿ − 1) / Vref)
- Resolución (LSB): LSB = Vref / 2ⁿ
- Error de cuantización: ±½ LSB
- Número de niveles: 2ⁿ
- Con divisor de entrada: Vreal = VADC · (R1 + R2) / R2
Algunas hojas de datos usan 2ⁿ en el denominador en lugar de 2ⁿ − 1. La diferencia es de un LSB como máximo; elige una convención y mantenla en todo el programa.
Tabla de resolución según los bits
| Bits | Niveles | Código máximo | LSB con 3.3 V | LSB con 5 V |
|---|---|---|---|---|
| 8 | 256 | 255 | 12.89 mV | 19.53 mV |
| 10 | 1024 | 1023 | 3.22 mV | 4.88 mV |
| 12 | 4096 | 4095 | 0.806 mV | 1.22 mV |
| 16 | 65 536 | 65 535 | 50.4 µV | 76.3 µV |
| 24 | 16 777 216 | 16 777 215 | 0.197 µV | 0.298 µV |
El LSB se calcula como Vref / 2ⁿ. En la práctica, el ruido hace que los últimos bits de un ADC de 16 o 24 bits no sean estables.
Ejemplos resueltos
Arduino Uno (10 bits, 5 V). Una lectura de 512 equivale a V = 512 × 5 / 1023 ≈ 2.502 V.
Sensor LM35 con ADC de 12 bits y 3.3 V. El LM35 entrega 10 mV/°C. Si la lectura es 310: V = 310 × 3.3 / 4095 ≈ 0.2498 V, es decir, unos 25.0 °C. Cada escalón del ADC equivale a 0.806 mV, o 0.08 °C.
Del voltaje al código. ¿Qué lectura esperas para 1.2 V en un ADC de 12 bits con 3.3 V? código = 1.2 × 4095 / 3.3 ≈ 1489.
Errores comunes
- Suponer que Vref es exacta: si la referencia es la alimentación USB, puede ser 4.8 V en lugar de 5 V, un error del 4 % en todas las lecturas. Mide Vref o usa una referencia de precisión.
- Superar Vref o la alimentación: el ADC satura en el código máximo y una tensión por encima de la alimentación puede dañar el pin. Usa un divisor de voltaje.
- Fuente de alta impedancia: el capacitor de muestreo interno no llega a cargarse y la lectura sale baja; añade un capacitor o un seguidor de tensión.
- Confundir resolución con exactitud: 12 bits no garantizan 12 bits de precisión; los errores de offset, ganancia y no linealidad se suman.
- Mezclar enteros en el código: en C, 512 * 5 / 1023 con enteros da 2; usa aritmética de punto flotante.
Preguntas frecuentes
¿Qué resolución tiene el ADC de mi microcontrolador?
Depende del chip: el ATmega328P del Arduino Uno tiene 10 bits y muchos microcontroladores modernos, 12 bits. Revisa la hoja de datos y la configuración del software, porque algunos permiten elegir la resolución.
¿Cómo mejoro la precisión de las lecturas?
Usa una referencia estable, promedia varias muestras, filtra la entrada con un filtro RC y ajusta el rango de la señal al de Vref con un amplificador.
¿Qué frecuencia de muestreo necesito?
Más del doble de la frecuencia más alta que contenga la señal (criterio de Nyquist). En la práctica se usa bastante más, junto con un filtro antialiasing.
Para entender cómo funciona un ADC por dentro, los tipos de convertidores y la relación señal-ruido, lee la guía del ADC.
Herramienta educativa. Verifica tolerancias, hojas de datos y condiciones reales antes de usar los resultados en diseños de seguridad, potencia o aplicaciones críticas.