Cálculo de la longitud de onda del sonido usando un Arduino

2

Estoy usando un Arduino Uno R3. Necesito medir la longitud de onda del sonido de una frecuencia particular (conocida). Sustituyendo en la ecuación:

Vsound = Frecuencia * Longitud de onda

... deseo calcular la velocidad del sonido en el medio. Como soy nuevo en Arduinos y en electrónica, planeo usar un altavoz para generar la frecuencia (conocida) del Arduino. También tengo un micrófono ADMP 401. Pero, ¿cómo se procesa / calculo la longitud de onda del sonido en el Arduino y empujo la velocidad de salida al monitor serie?

EDITAR: ¿Es posible simplemente tomar el audio grabado con el micrófono ADMP 401 y enviarlo a una computadora a través del bus serie?

    
pregunta shortstheory

4 respuestas

3

Configure el amplificador de entrada para que la forma de onda de audio se recorte en una onda cuadrada. Luego alimente esto en un pin y use una de las bibliotecas de medición de frecuencia, como esta: enlace

    
respondido por el Joe
2

Andrew Morton lo dijo, solo lo voy a decir y a ampliar.

Dado un solo punto de medición de la presión de sonido instantánea de algún tipo de transductor, lo único que puede derivar de eso es la frecuencia. La única forma de obtener la longitud de onda de manera independiente es duplicar su placer, duplicar su diversión: necesita saber la distancia exacta a la unidad de envío o necesita otro receptor. Lo que es más, con solo dos receptores, aún necesita ponerlos en línea recta con el remitente, con bastante distancia entre ellos para que pueda obtener un retraso significativo en la frecuencia entre los dos. Con tres, podría establecer la direccionalidad, pero todavía tienen que estar lo suficientemente separados para crear un notable lapso de tiempo para establecer la velocidad. Desde una sola unidad de medición, también debe tener en cuenta el tiempo que lleva obtener las muestras. Desde varias unidades, necesitas marcas de tiempo muy precisas.

Los cálculos de longitud de onda casi siempre dependen de usar un valor conocido de velocidad de transmisión a través de un medio dado. Los experimentos de Big Daddy para establecer la velocidad de la vibración a través de materiales sólidos son realmente un gran problema en la instalación, pero luego tenemos buenas tablas de valores conocidos para jugar en nuestros escritorios.

    
respondido por el Sean Boddy
2

Principio

Le propongo que use 2 micrófonos en lugar de uno. La idea es adquirir la señal en 2 ubicaciones diferentes, al mismo tiempo (en comparación con el período de la señal), y multiplicarlas para extraer la longitud de onda.

Adquirirás1señalporubicación.Lasegundaseñalseretrasaráunaciertacantidaddetiempo.Lollamamosdelta\$\delta\$.Digamosqueenelmicrófononúmero1,tenemosunaondasinusoidalpura\$mic1(t)=\sin(\omegat+\phi)\$ yenelmicrófononúmero2tenemos\$mic2(t)=\sin(\omegat+\phi-\delta)\$

Deltasolodependedelalongituddeondaporquefijamosladistanciaentrelos2micrófonos.Entonces,siobtenemosdelta,obtendremoslavelocidad.

Vea,porejemplo,silosmicrófonosdeladistancia2sonexactamenteigualesalamitaddelalongituddeunaonda,entoncestendríatalesseñales:

Nota: Considero que la amplitud es la misma entre los 2 micrófonos.

Ahora, considera usar esta fórmula

\ $ \ sin (a) \ sin (b) = 1/2 (\ cos (a-b) - \ cos (a + b)) \ $

  1. Haz esta multiplicación en el firmware

\ $ mic1 (t) * mic2 (t) = 1/2 (\ cos (\ delta) - \ cos (2 (\ omega t + \ phi) - \ delta)) \ $

  1. Mediante el filtro de paso bajo (o promediado) \ $ mic1 (t) * mic2 (t) \ $ solo obtendría la parte constante, que es

    \ $ 1/2 \ cos (\ delta) \ $

  2. Luego, calcular delta

    \ $ \ delta = \ arccos (2 * paso bajo (mic1 (t) * mic2 (t)) \ $

  3. Finalmente, conviértalo a radianes a metros

    \ $ \ lambda = \ delta / 2 \ pi * d \ $

    Vea esta imagen, donde tomo un delta de 1 rad, y un filtro de paso bajo de segundo orden de Butterworth.

Requisitos

  • Deben configurarse para estar en línea con la fuente de sonido
  • La distancia d entre ellos debe medirse con precisión, será su referencia en el dominio del espacio.
  • La distancia d entre ellos debe ser menor que 1/2 longitud de onda. Para su información, para una señal de 1 kHz sería ~ 17 cm máx.

Realización

  • Conecte la salida del micrófono a las entradas analógicas en la placa del arduino.
  • Si pudiera pagarlo, agregue un filtro de paso de banda entre los micrófonos y los arduinos. La frecuencia de corte está alrededor de la frecuencia de onda de origen.
  • Use la función AnalogRead () del Arduino para mic1 y la siguiente instrucción llama a la de mic2. Debido a que la lectura requiere 100 usec, es importante tenerlo en cuenta y usar una frecuencia lo suficientemente lenta (como 100 Hz) para minimizar el impacto de esta latencia.
respondido por el RawBean
0

La velocidad también depende ligeramente de la frecuencia, por lo que para las aproximaciones, puede medir el tiempo de retorno de eco de un pulso para una distancia conocida o usar wavelets de varias frecuencias con una relación s / n más alta sintonizada en Rx para bloquear el ruido. Alternativamente, puede usar un micrófono en cada extremo con un altavoz acoplado a un extremo, pero aún necesita distancia o alguna otra referencia, como la velocidad en el aire en una condición ambiental conocida.

    
respondido por el user38637

Lea otras preguntas en las etiquetas