Contenido
Sobremuestreo y diezmado: cuándo más muestras dan más bits
Sobremuestreo y diezmado explicados: por qué 4× muestras dan un bit, por qué necesita ruido real, cómo diezma un filtro CIC y qué no arregla el promedio.
El firmware promedia 256 lecturas de un ADC de 12 bits y reporta resultados de 16 bits. En una tarjeta los bits extra son reales: las lecturas se asientan en fracciones de cuenta. En otra, con una etapa de entrada más silenciosa, la salida de 16 bits avanza en saltos de exactamente 16, como si nada hubiera pasado. Mismo código, mismo convertidor. El sobremuestreo y diezmado solo agregan resolución cuando se cumplen sus condiciones, y la más importante es la que suena al revés: tiene que haber suficiente ruido. Aquí te explico de dónde sale la regla de “cuatro muestras por bit”, cuándo funciona, qué le hace el filtro de diezmado a tu señal y qué no se arregla con ningún promedio.
Puntos clave
- Promediar cuatro veces más muestras reduce el ruido blanco a la mitad y agrega cerca de un bit (6 dB). Sacar 16 bits de un convertidor de 12 bits requiere 256×.
- Necesita ruido. Si la entrada está entre dos códigos con menos de un LSB de ruido aleatorio, todas las muestras leen el mismo código y el promedio no agrega nada.
- El sobremuestreo mejora la resolución, no la exactitud: el offset, la ganancia y la no linealidad integral pasan intactos por el promedio.
- Un promedio simple es un filtro con nulos. Promediar exactamente un ciclo de la red (1/60 s en México, 1/50 s en países con red de 50 Hz) rechaza el zumbido y sus armónicos.
- Los filtros CIC (integrador-peine en cascada) diezman solo con sumadores y registros, pero sus registros crecen N·log₂(R) bits.
“Promedié 256 muestras y no gané nada”
La queja aparece dondequiera que alguien intenta sacarle más resolución al ADC de un microcontrolador, y la causa casi siempre es una de estas cuatro.
La entrada es demasiado silenciosa. Una referencia limpia, un sensor lento y una etapa de entrada bien filtrada pueden dejar al convertidor leyendo el mismo código siempre. Promediar números idénticos devuelve el mismo número.
El ruido no es aleatorio. La interferencia de un regulador conmutado o de un reloj está correlacionada consigo misma; promediarla no la reduce con la raíz cuadrada del número de muestras.
El problema era de exactitud, no de resolución. Un convertidor con tres LSB de INL sigue equivocado por tres LSB después de promediar, solo que con más dígitos.
La aritmética truncó. Sumar 256 valores de 12 bits requiere un acumulador de 20 bits; una variable de 16 bits se desborda sin avisar.
Cómo funcionan el sobremuestreo y el diezmado
El ruido de cuantización y la regla de cuatro
Un convertidor ideal de N bits divide su rango en escalones de tamaño q. Bernard Widrow y sus colegas, en su revisión de la teoría estadística de la cuantización en IEEE Transactions on Instrumentation and Measurement, describen cuándo el error de ese redondeo se comporta como un ruido aditivo, uniformemente distribuido, con potencia q²/12 y sin correlación con la señal. Cuando es así, el error de cuantización es una fuente de ruido más, repartida en la banda que va de DC a la mitad de la frecuencia de muestreo.
Si muestreas más rápido de lo que necesita la señal, esa potencia fija de ruido se reparte en una banda más ancha, y un filtro digital pasabajas puede quitar la parte que queda fuera del ancho de banda de tu señal. El tutorial MT-001 de Walt Kester para Analog Devices llama a esa mejora ganancia de procesamiento: 10 log₁₀(f_s / 2·BW) decibeles. Cada vez que duplicas la frecuencia de muestreo ganas unos 3 dB, o medio bit. Un factor de cuatro da 6 dB, un bit. La nota de aplicación AN118 de Silicon Labs lo convierte en la regla conocida: para ganar w bits, sobremuestrea 4^w veces. Pasar de 12 a 16 bits requiere 4⁴ = 256 muestras por resultado, así que un convertidor a 100 kS/s entrega unos 390 resultados de 16 bits por segundo.
Un ejemplo calculado de ganancia de procesamiento: un convertidor que muestrea a 1 MS/s, con una señal de interés por debajo de 1 kHz, tiene una ganancia de 10 log₁₀(1,000,000 / 2,000) ≈ 27 dB, unos 4.5 bits, si el filtro rechaza todo lo que está arriba de 1 kHz y el ruido es blanco.
Por qué necesita ruido
El modelo de ruido solo se sostiene cuando la entrada recorre varios códigos. La AN118 enlista las condiciones sin rodeos: el ruido debe ser aproximadamente blanco, lo bastante grande (alrededor de un LSB) para que el código cambie al azar entre muestras, y la entrada debe tener la misma probabilidad de caer en cualquier punto entre dos códigos vecinos. Si no se cumple, el error de cuantización es un offset fijo que depende de dónde está la entrada, y promediar no lo quita.
Una simulación ilustrativa corta lo deja ver. Toma una entrada que está 0.3 LSB arriba de un código. Sin ruido, todas las muestras leen ese código, y el promedio de 256 muestras tiene un error de 0.3 LSB. Agrega ruido gaussiano de 0.5 LSB RMS antes de cuantizar, y el promedio de 256 muestras sale en 0.30 LSB con una dispersión de unos ±0.036 LSB de un promedio a otro. El ruido hizo posible la resolución extra.
Cuando el ruido natural es muy pequeño, se agrega a propósito: es el dither. La AN118 señala que algunas aplicaciones inyectan ruido en la señal de forma deliberada por esta razón. El tutorial MT-004 de Kester sobre el ruido de entrada de los ADC va más allá: un convertidor que siempre muestra el mismo código no necesariamente es mejor; puede estar escondiendo información que un poco de ruido revelaría.
Lo que el promedio no arregla
Promediar reduce el error aleatorio. No hace nada contra los errores que se repiten igual en cada muestra: offset, error de ganancia y no linealidad integral. La AN118 dice directamente que el sobremuestreo no corrige la INL. La norma IEEE de terminología y métodos de prueba de ADC (IEEE Std 1241) trata esos errores estáticos aparte del ruido por la misma razón. Si tu problema es que la lectura está mal, y no que brinca, el sobremuestreo te va a dar un número equivocado más preciso.
El filtro de diezmado da forma al resultado
Diezmar son dos pasos: filtrar y luego quedarte con una de cada R muestras. El filtro es lo importante, porque todo lo que no quite por encima de la nueva frecuencia de Nyquist se dobla (aliasing) hacia la salida.
El filtro de diezmado más sencillo es un promedio por bloques de R muestras, también llamado filtro boxcar o sinc. Su respuesta en frecuencia tiene nulos en los múltiplos de f_s / R, y eso se puede aprovechar: promedia exactamente 100 muestras tomadas a 6 kS/s y la ventana dura 1/60 s, lo que pone nulos en 60 Hz y en cada uno de sus armónicos. En una planta de Monterrey o de Tijuana, con red de 60 Hz, es un filtro contra el zumbido sin costo extra; en Buenos Aires o Santiago, con red de 50 Hz, la ventana tendría que durar 1/50 s. La debilidad del boxcar es su caída lenta entre nulos, así que por sí solo es un filtro antialiasing modesto.
Para relaciones de diezmado más altas, el artículo de Eugene Hogenauer de 1981 en IEEE Transactions on Acoustics, Speech, and Signal Processing presentó el filtro integrador-peine en cascada (CIC): N integradores a la frecuencia alta, un cambio de frecuencia por R y N secciones peine a la frecuencia baja, sin un solo multiplicador. Equivale a N promedios boxcar en cascada, así que sus nulos caen en los mismos lugares y su rechazo entre ellos es mucho mejor. El costo es el crecimiento de los registros. Hogenauer mostró que los registros necesitan N·log₂(R·M) bits extra, donde M es el retardo diferencial; tres etapas que diezman por 64 con M = 1 necesitan 18 bits extra. Los filtros CIC también caen dentro de la banda de paso, por eso casi siempre los sigue un FIR corto de compensación a la frecuencia baja.
Los convertidores delta-sigma llevan la idea más lejos
Un ADC delta-sigma es el sobremuestreo llevado hasta el final: un cuantizador muy burdo corriendo a una frecuencia muy alta, un lazo de realimentación que empuja el ruido de cuantización hacia frecuencias altas (moldeo de ruido) y un filtro digital de diezmado, muchas veces un CIC seguido de etapas FIR, que lo elimina. El resultado es mucho más que el medio bit por duplicación del sobremuestreo simple, y por eso los convertidores de precisión para sensores son casi todos delta-sigma.
Métodos de sobremuestreo y diezmado, comparados
| Método | Qué mejora | Qué requiere | Costo de hardware | Cuidado con |
|---|---|---|---|---|
| Promedio simple (boxcar) | Ruido blanco, resolución | ~1 LSB de ruido aleatorio | Solo un acumulador | Antialiasing débil entre nulos |
| Promedio sobre un ciclo de la red | Zumbido de 50/60 Hz y armónicos | Número de muestras ajustado al periodo de la red | Acumulador, temporización | Deriva de la frecuencia de la red |
| Dither agregado | Hace funcionar el promedio en una entrada silenciosa | Fuente de ruido controlada | Pequeño | Agrega ruido si no se promedia |
| Diezmador CIC | Diezmado de relación alta, buen rechazo en nulos | Relación de diezmado entera | Solo sumadores y registros | Crecimiento de registros, caída en banda de paso |
| CIC + FIR de compensación | Banda de paso plana, corte abrupto | Segunda etapa a frecuencia baja | Multiplicadores a frecuencia baja | Latencia |
| ADC delta-sigma | Resolución por moldeo de ruido | Viene integrado en el convertidor | Dentro del chip | Latencia, asentamiento al cambiar de canal |
Qué hacer
Revisa el histograma antes de promediar
Captura unos miles de muestras de una entrada estable y grafica el histograma de códigos. Si abarca varios códigos y se ve más o menos gaussiano, el sobremuestreo va a funcionar. Si es una sola barra, necesitas dither u otro enfoque.
Dimensiona la relación según los bits que necesitas
Usa 4^w para w bits extra y verifica que la frecuencia de salida resultante siga cubriendo el ancho de banda de tu señal.
Dimensiona el acumulador
La suma de R muestras de N bits necesita N + log₂(R) bits. Para un CIC, usa el crecimiento de Hogenauer, N·log₂(R·M).
Elige la ventana para rechazar lo que sabes que está ahí
Si el zumbido de la red es la interferencia principal, haz que la ventana de promedio dure un número entero de ciclos de la frecuencia de la red de tu país.
Mide la exactitud por separado
Compara el resultado promediado con una referencia en varios puntos del rango. Si siempre está desviado, el problema es offset, ganancia o INL, y la solución es calibrar, no tomar más muestras.
Qué no hacer
No reportes el número de bits del resultado promediado como la exactitud del convertidor. Y no sobremuestrees una señal cuyo ruido lo domina un solo tono de interferencia; filtra o elimina primero el tono.
Cómo ponerlo en práctica
Si tienes una hora
Graba 4,096 muestras de una entrada estable con tu configuración actual, grafica el histograma y calcula la desviación estándar en LSB. Ese solo número te dice si el sobremuestreo puede ayudar.
Si tienes un sprint
Implementa el promedio con un acumulador del tamaño correcto, barre la relación de 1 a 1,024 y grafica el ruido contra la relación en ejes logarítmicos. La pendiente debería ser −½ (el ruido baja a la mitad por cada 4×); donde se aplana, algo distinto del ruido blanco tomó el control.
Si quieres que dure toda la vida del producto
Documenta la relación de sobremuestreo, el tipo de filtro y la suposición de ruido junto con el firmware, y agrega una prueba de producción que revise el histograma de ruido de entrada. Una revisión de componentes más silenciosa puede romper sin avisar la resolución extra.
La pregunta que debes hacerte: “¿Mi problema es de resolución o de exactitud, y ya revisé que haya suficiente ruido aleatorio para que el promedio ayude?”
Preguntas frecuentes
¿Qué son el sobremuestreo y el diezmado?
Sobremuestrear es muestrear mucho más rápido de lo que la señal necesita. Diezmar es filtrar con un pasabajas las muestras rápidas y quedarte con una de cada R, lo que produce una salida más lenta y de mayor resolución. Juntos cambian velocidad de muestreo por menos ruido y más resolución.
¿Cuántas muestras necesito para un bit extra?
Cuatro veces más, si el ruido es blanco y de al menos un LSB. Cada duplicación de la frecuencia de muestreo da unos 3 dB, así que 4× da 6 dB, un bit. Pasar de 12 a 16 bits requiere 256 muestras por resultado.
¿Por qué promediar no aumenta la resolución de mi ADC?
Casi siempre porque la entrada es demasiado silenciosa: cada muestra lee el mismo código, así que el promedio es ese mismo código. Promediar tampoco ayuda contra interferencia correlacionada ni contra errores estáticos como el offset y la no linealidad. Agregar un poco de dither puede hacerlo funcionar.
¿Qué es un filtro CIC?
Un filtro integrador-peine en cascada, presentado por Hogenauer en 1981, que diezma o interpola usando solo sumadores y registros. Se comporta como varios promedios móviles en cascada, con nulos en los múltiplos de la frecuencia de salida, y normalmente lo sigue un FIR corto para aplanar su banda de paso.
¿El sobremuestreo mejora la exactitud del ADC?
No. Mejora la resolución y reduce el ruido aleatorio, pero el offset, el error de ganancia y la no linealidad integral son iguales en cada muestra y pasan sin cambio por el promedio. Esos se corrigen calibrando.
Lecturas relacionadas: resolución vs exactitud de un ADC, muestreo, aliasing y filtrado y fuentes de ruido en sensores.
Fuentes
- Widrow, B., Kollár, I., y Liu, M.-C. (1996). “Statistical Theory of Quantization.” IEEE Transactions on Instrumentation and Measurement, 45(2), 353–361. https://doi.org/10.1109/19.492748
- Hogenauer, E. B. (1981). “An Economical Class of Digital Filters for Decimation and Interpolation.” IEEE Transactions on Acoustics, Speech, and Signal Processing, 29(2), 155–162. https://doi.org/10.1109/TASSP.1981.1163535
- IEEE (2023). IEEE Standard for Terminology and Test Methods for Analog-to-Digital Converters (IEEE Std 1241-2023). https://standards.ieee.org/ieee/1241/6797
- Silicon Laboratories (2013). “Improving ADC Resolution by Oversampling and Averaging.” Nota de aplicación AN118, rev. 1.3. https://silabs.com/documents/public/application-notes/an118.pdf
- Kester, W. (2008). “Taking the Mystery out of the Infamous Formula, ‘SNR = 6.02N + 1.76dB,’ and Why You Should Care.” Analog Devices, tutorial MT-001, rev. A. https://www.analog.com/media/en/training-seminars/tutorials/MT-001.pdf
- Kester, W. (2008). “The Good, the Bad, and the Ugly Aspects of ADC Input Noise: Is No Noise Good Noise?” Analog Devices, tutorial MT-004, rev. A. https://www.analog.com/media/en/training-seminars/tutorials/MT-004.pdf



