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
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