Análisis de espectro de sonido, tonos de armónicos adversos, micropython, adafruit, fft

1

Explicación

En este proyecto de Micropython, quería construir un analizador de espectro de sonido barato / pequeño para identificar tonos específicos durante las pruebas. Inicialmente intenté conectar el sensor de sonido Adafruit con un ADC y RPI, pero luego enfrenté muchos problemas de tiempo y, por lo tanto, fui al microcontrolador ARM-M4, que es una solución bastante buena y directa. En git-hub, encontré un código FFT escrito en el ensamblador ARM por Peter Hinch, que me permitió obtener un cálculo de espectro de frecuencias a bordo de una matriz, basado en el algoritmo Cooley-Tukey.

Lasiguienteimagenilustraelespectro(arriba)enunahabitaciónsilenciosa,lagráficacentralmuestralosgradientescalculadosdeldominioylaúltimareactividaddelostonosespecíficos.Elsistemacapturacontinuamente2**10muestrasen0.1s>10Hz-5kHz,calculalaFFTyreenvíalamatrizdesalidaalaPCen15ms.

El problema se encuentra en los tonos armónicos que aparecen exactamente a 1,2,3,4,5, .. kHz (el gráfico se tomó en una habitación silenciosa). El segundo problema aparece cuando hay un poco más de ruido; los picos (gráfico inferior) aparecen alrededor de los tonos armónicos +/- 240Hz, ¿alias? La gráfica inferior muestra la reactividad de los tonos.

Intentado:

  • No hay poder; todas las frecuencias cero, excepto algunas frecuencias bajas muestran una amplitud menor.
  • Configuración de la FFT para muestras de 0.5s / 0.1s / 0.05s / 0.01s y 512/1024/2048; pero muestra los mismos picos a la misma frecuencia.
  • Tres canales ADC diferentes en el Pyboard.
  • Conexiones 3V3 y GND.
  • 2-5V regulado externo con conexión a tierra compartida (computadora portátil sin cargo). (lo empeora; más ruido)

¿Cuál es la causa más probable de este comportamiento? Circuito de placa / Electretamplificador / código FFT / alimentación USB?

¿Alternativas?

¿Alguien tiene experiencia o tiene una mejor alternativa para un análisis de espectro a bordo barato?

  • Amplificador de sensor de sonido Me (LM386).
  • Amplificador del sensor de sonido Grove (LM386).
  • Amplificador del sensor de sonido Adafruit (MAX4466).
pregunta Lean

1 respuesta

1

Como notó, y la tercera gráfica acentúa esto, el espaciado siempre es muy cercano a 1 kHz, pero se compensa con algo así como 240 Hz. Esto es indicativo de una señal de alias. Sería contra un armónico de la frecuencia de muestreo (suponiendo que sea de 10 kHz). Me gustaría tener un alcance de banda ancha si es posible y poner un lazo de cable en él (un círculo de un par de pulgadas de diámetro) para "oler" en busca de señales. La señal puede provenir de la placa, o puede ser de su monitor, la fuente de alimentación de la PC, un LED o una bombilla fluorescente o cualquier cosa con alimentación.

    
respondido por el catraeus

Lea otras preguntas en las etiquetas