Implementación de filtro digital en C (incrustado)

1

Soy un recién graduado y mi nuevo proyecto en el trabajo consiste en tomar la señal de un micrófono electret y obtener valores SPL para 10 bandas de frecuencia estándar.

La amplificación / acondicionamiento analógico se completó, por lo que ahora estoy tratando de averiguar qué hacer en términos de muestreo / filtrado. Mis bandas de frecuencia son:

  • 31.5, 63, 125, 250, 500, 1000, 2000, 4000, 8000 y 16000 Hz

Decidí que debería poder usar una frecuencia de muestreo de 160 kHz (al parecer, se recomienda una tasa de Nyquist de 5-10 * de acuerdo con mis notas anteriores) y usar 10 filtros de paso de banda Butterworth de segundo orden que fueron diseñados usando mkfilter . Después de este punto no estoy seguro de cómo proceder.

¿Simplemente usaría el filtro de 16 kHz para cada muestra, el filtro de 8 kHz cada 2 muestras, el filtro de 4 kHz cada 4 muestras, etc.? (Estoy obteniendo estos números utilizando la tasa de 5 * Nyquist para cada banda, por ejemplo, 1 / (8000Hz * 2 * 5) / (1 / 160000Hz)). Luego convertiría los valores a presión y haría los cálculos necesarios para una medición de SPL. ¿Hay una mejor manera de abordar esto? ¿Mi entendimiento es correcto?

El hardware con el que estoy trabajando tiene un reloj de 48MHz y 32kB de flash y 4kB de RAM.

    
pregunta LPace

1 respuesta

1

No, si alimenta una señal que contiene frecuencias a 16 kHz, su filtro tendrá que muestrear al menos 2 * 16 kHz para todas las bandas todas . Si muestra solo a 160 kHz, tendrá que diseñar cada filtro para esa tasa de muestreo.

Puede utilizar una frecuencia de muestreo más baja para los filtros de frecuencia más baja, mientras mantiene la frecuencia de muestreo por encima de la frecuencia más alta actual (¿16 kHz?). Por lo tanto, tomar cada 2ª muestra y utilizar los 16 kHz (160 kHz de muestreo) funcionaría para 8 kHz, pero está en conflicto con la justificación para elegir el exceso de muestreo 5x en el primer lugar (eso no es estrictamente necesario; depende de los componentes de frecuencia más altos). en la señal).

Tenga en cuenta que si extendiera este pensamiento a la banda de 31.5 Hz, usaría cada 500a muestra == 160k / 500 = 320 Hz, lo cual no funcionaría con toda la señal, ya que contiene componentes para (¿y más allá? ) 16 kHz.

    
respondido por el jp314

Lea otras preguntas en las etiquetas