FFT + sonido de filtrado = señal de disparo

3

Estoy tratando de FFT el sonido de entrada en vivo y filtrarlo para tener solo 350 a 500 HZ. Por lo tanto, mi objetivo es encender la luz LED solo cuando un sonido tiene una frecuencia entre 350 y 500. Miré los códigos FFT, pero no sé cómo filtrarlos y enviar la señal de salida.

Soy muy nuevo en el tablero de arduino. Se puede suponer que no sé nada sobre la placa arduino o la programación en C .. Por favor sea lo más específico posible .. Gracias.

    
pregunta Bri

2 respuestas

1

Yo sugeriría construir algún tipo de filtro de paso de banda seguido de un detector de picos y un comparador. Puede crear un filtro de paso de banda RLC o tal vez un filtro de paso de banda activo con un par de amplificadores operativos y algunos componentes pasivos. ¿Qué tan pronunciado debe ser el corte en el filtro? Si necesita un corte muy pronunciado, es probable que necesite un filtro activo.

Alternativamente, puede ejecutar la señal a través de un filtro de paso bajo RC, muestrearlo con el ADC Arduino y filtrarlo con un filtro de paso de banda DSP. Sé que Matlab tiene una caja de herramientas para construir filtros FIR e IIR; Yo sugeriría usar eso para calcular los coeficientes de filtro correctos. No creo que el Arduino le dé suficientes ciclos para realizar una FFT en tiempo real, y aún tendría que hacer el filtrado y muestreo de paso bajo con una FFT.

    
respondido por el alex.forencich
0

"Sólo 350Hz a 500Hz" es una imposibilidad práctica. Cualquier filtro que elimine totalmente las frecuencias por debajo y por encima de un cierto límite tomará un tiempo infinito para procesar la señal, por lo que dado que no ha especificado los parámetros fuera de banda, es un poco difícil asesorarlo. El conocimiento de filtrado digital que tengo puede ayudar un poco: -

Comosoyunchicodelaelectrónica,elfiltroLPdigitalemulaunfiltroRCsimple.Estefiltrosepuedeconfigurarparaunlímitedepasobajode500Hzysilafrecuenciademuestreo(lafrecuenciaconlaqueestárecolectandomuestrasdeADC)es(porejemplo)10kHz,T=100x10\$^{-6}\$,yCRserá\$\dfrac{1}{2\piF}\$=318x10\$^{-6}\$.

Esoledaunfiltrodepasobajodeprimerordenypuedemejorarloencascadaunoscuantosmásparadarleunacaídamáspronunciada.Paraobtenerunfiltrodepasoalto,uselamismatopologíaytengaencuentaquelasalidadepasoaltoestádisponiblecomosemuestraacontinuación:-

Hay algunas otras campanas y silbidos que se pueden aplicar para hacer que la inclinación del filtro sea más pronunciada, pero no entraré en ellos porque probablemente no sea necesario o demasiado profundo. Tenga en cuenta que "tiempo de muestra" y "tiempo de demora" son exactamente iguales en los dos diagramas. ¡No fui muy consistente en nombrarlos!

Una vez que haya filtrado adecuadamente la señal, debe calcular el RMS de la señal resultante y establecer un umbral para el disparo. Esto puede alimentar una salida Arduino (o cualquier MCU) para dirigir una señal al mundo exterior.

Para completar, muchos libros de filtros digitales mostrarán el filtro de esta manera: -

Matemáticamente es lo mismo, pero está reorganizado de acuerdo con la forma en que se muestra en muchos artículos sobre filtros IIC digitales (respuesta de impulso infinito). Prefiero las imágenes antes porque son más directamente relacionadas con el filtro CR analógico simple. Buena suerte.

    
respondido por el Andy aka

Lea otras preguntas en las etiquetas