Frecuencia de muestreo y decimación en microcontrolador

Hola a todos,

Luego de leer esto:
http://www.ti.com/lit/an/slyt626/slyt626.pdf
http://ww1.microchip.com/downloads/en/AppNotes/00699b.pdf
Me ha surgido una duda, ojala alguien que este fresco y/o sea experto en temas de procesamiento de señales pueda disiparla.

Curiosamente, asi como en esos pdf, voy a muestrear una señal de 1khz de ancho de banda con un adc de 12 bits. Definitivamente voy a colocar un filtro anti aliasing, será tipo bessel por su minimo rechazo en la banda de paso. El orden aun lo determinaré, pero será de 3ero o de 5to orden.

En el pdf de texas, usan un adc de 100ksps y un filtro anti alias de 10khz,
en el pdf de microchip usan un adc a 20ksps y un filtro anti alias de 1khz.

En el 1er caso priorizan la minimizacion de error en amplitud a 12 bits para la frecuencia de corte de 1khz. En ese caso, el filtro a 10khz tiene un error a 1khz de 0.004dB. Con la alta tasa de muestreo compensan el SNR que resulta algo de 50dB.

En el 2do caso, priorizan el SNR, el cual para 12 bits debe ser 74dB, con el fitro propuesto consiguen un SNR de 80dB, lo cual esta bueno para reducir el ruido de cuantizacion, pero tengo una baja de performance en la banda de paso, a 1khz ya tengo un 3dB de atenuacion, no es mucho pero quiero tener lo maximo posible del ancho de banda de interes.

Ahora, estos filtros me introducen un retardo, a medida que la frecuencia de corte baja y el orden aumenta, el retardo se incrementa. Quiero balancear todo.

En fin, el problema se complica un poco ya que el tiempo de procesamiento de mi algoritmo en el microcontrolador es de 50microsegundos. Esto me limita a una frecuencia de muestreo util de 20ksps. el adc del microcontrolador puede correr hasta a 1Msps, pero creo que eso sería si no tuviera nada mas que hacer. Con todas las interrupciones que hay en el programa creo que a 100ksps sería suficiente y prudente.

La SNR mejora con el aumento de la frecuencia de muestreo, sin embargo. Si aplico decimacion, sin implementar un filtro digital intermedio (lo cual me han sugerido otras app notes), esta SNR se mantiene alta? Mi sentido comun me dice que no.

Ahora, no puedo implementar un filtro digital propiamente dicho(porque eso me toma varios microsegundos mas y ya ando medio ajustado con tiempos) , pero promediar las lecturas tiene un efecto pasa bajas y en sí, sería algo asi como decimar... el sentido comun me dice que deberia tener un mejor rendimiento, pero eso esta escrito en algun sitio? Existe en algun lado algun reporte cuantitativo de como aumenta el SNR dependiendo del numero de muestras, o algo similar?

saludos
 
Para aprovechar el oversampling y mejorar el SNR es obligatorio un filtro digital.

Si en vez de hacer sampling a 2kHz lo haces a 4 (siendo la señal muestreada de 1kHz), se puede decimar y ganar 3dB.

La formula es simple, por cada duplicacion de la frecuencia de muestreo con decimacion ideal ganas 3dB. Por cada x4 de sampleo puedes ganar un bit. Tambien para eso necesitas el filtro, para que te entregue los bits adicionales que vas ganando por la decimacion, que si no, no ganas nada.

A lo que voy es que con 12bits el mejor SNR obtenible es de 74dB. La unica manera de mejorarlo es agregar bits, ya sea con un mejor ADC o realizando over sampling y decimacion
 
Última edición:
A ver, en el documento de microchip, para implementar el filtro antialiasing adecuado, se proponen 3 requisitos para el sistema de 12 bits, muestreado a 20ksps y con ancho de banda banda a 1khz.
1. frecuencia de corte a 1khz.
2. -74dB a la frecuencia de Nyquist (10khz en este caso).
3. El filtro tendrá ganancia unitaria no inversora.

He visto en http://elearning.vtu.ac.in/12/enotes/Ana_log_Mix_Mod_Des/Unit4-VPG..pdf que si se promedian lecturas, la SNR es 6.02N+1.76+10Log(K), donde K es el numero de muestras promediadas.

Mi pregunta es si la siguiente afirmacion es correcta:

<<En el inciso 2, el requerimiento de atenuacion a la frecuencia de nyquist es menor si se utiliza "averaging". Es decir, el filtro antialiasing debera tener una atenuacion de -74dB+10Log(K) a la frecuencia de Nyquist.>>
Se entiende que el hecho de promediar lecturas tiene un efecto pasa bajas + decimación.

Lo que significaría que, dado otro caso, donde el ancho de banda de la señal de interes es 1khz, muestrado a 12 bits, a 32ksps y se usara un promedio de 16 muestras, el filtro antialiasing necesario debe tener un rechazo de -74db+10Log(16)=-62db a 16Khz. Esto es correcto?
 
Última edición:
Yo personalmente no trabajo asi y distingo entre dos cosas para mi diferentes

El filtro anti aliasing esta para cancelar imagenes, como tal, suelo ponerlo en una frecuencia tal que la maxima frecuencia de interes este a una atenuacion de 3dB. El filtro anti aliasing no tiene nada que ver con el SNR, si la falta de linearidad en la banda de paso es un problema, eso se resuelve facilmente mediante calibracion ya que la variacion de la ganancia del filtro no es estrictamente un error, ya que es deterministico y por lo tanto corregible.

El filtro digital y su capacidad de mejorar el SNR a traves de decimacion no esta relacionado con las caracterisiticas del filtro anti aliazing

Obviamente que el filtro anti aliasing podria afectar el SNR si el de por si fuera ruidoso pero no suele ser el caso, el factor principal es la resolucion del ADC mejorable solo mediante decimacion
 
Atrás
Arriba