Ingrese el sonido a arduino a través del conector del micrófono

3

Estoy diseñando un dispositivo que encenderá los LED usando un microcontrolador. Me gustaría que respondiera a una señal de audio, por lo que pensé que hay muchas formas de hacerlo: si puedo tomar muestras con precisión del voltaje de un micrófono o una señal analógica (salida de micrófono) lo suficientemente rápido ejecute un algoritmo de FFT en el microcontrolador y descubra la ganancia en cualquier frecuencia audible arbitraria, y encienda las luces a tono, u otras cosas divertidas de fantasía.

Si no se puede muestrear a 44 kHz, aún puedo obtener algunos datos significativos sujetos al aliasing. Necesitaré hojear algunos libros de texto en ese caso ...

Si mi microcontrolador es demasiado lento para hacer una transformada de Fourier, pensé que todavía podría crear un filtro de paso de banda de CA (puede hacerlo con dos condensadores y dos monitores) y amplificarlo para poder darle un par de microcontroladores. de entradas analógicas que representan ciertas intensidades de frecuencia.

Así que creo que estoy bastante seguro de cómo funciona este plan a nivel de imagen general, pero no estoy seguro de por dónde empezar a descubrir cómo cablear mis componentes. Tengo un par de amplificadores operacionales diferentes, algunos BJT, algunas resistencias surtidas. Mis surtidos condensadores todavía están en el correo. Tengo unos cuantos arduinos que con suerte serán suficientes para hacer prototipos. También tengo los materiales necesarios para imprimir mis propias placas de circuitos (laminado de cobre, ácido de grabado, impresora láser, hierro) y material para soldadura. Sin embargo, no tengo un osciloscopio ni un generador de funciones, solo un DMM y una fuente de alimentación de CC controlada por voltaje y corriente.

Por lo tanto, una señal de audio se transmite a través de dos cables. La diferencia de potencial entre los cables (y quizás hasta cierto punto la corriente) representa alguna función del desplazamiento de la presión del aire debido al sonido en el punto en el espacio ocupado por el micrófono. Esto se debe a los aspectos de diseño comunes de casi todos los altavoces y micrófonos. Esto significaría que este voltaje irá tanto positivo como negativo (sin polarización de CC, como lo entiendo) y, por lo tanto, requeriría una compensación, por lo que la lectura de la entrada analógica no recortará la mitad de la forma de onda. ¿Cuántos voltios sería la amplitud de la señal, por ejemplo, desde la salida de auriculares en una tarjeta de sonido? ¿Qué pasa con un iPod? ¿Puedo reproducir un mp3 de una onda sinusoidal en mi computadora y examinar el voltaje de CA en la toma de audio usando mi DMM? ¿Cómo puedo saber en qué rango de frecuencia el DMM realizará mediciones precisas de voltaje de CA?

    
pregunta Steven Lu

2 respuestas

2

Si el Arduino es algo así como un PIC µC, entonces no tiene esperanzas de muestrear a 44KHz. Los µC más simples tienen una tasa de muestreo bastante lenta (como 100 muestras por segundo).

Si quiere más rápido, entonces estaría mirando usar algo como un dsPIC que tiene un ADC de grado de audio real, o utilizar un ADC de audio externo que pueda enviar datos I²S a un µC que sea lo suficientemente rápido para responder. it.

Recientemente he realizado un trabajo similar al diseñar un amplificador controlado digitalmente.

Tuve la salida de la primera etapa del amplificador en una entrada analógica en el PIC de control para luego controlar un gráfico de barras de los LED para un simple medidor de VU.

Para una salida de una tarjeta de sonido de PC, probablemente esté viendo una oscilación de voltaje de 1 a 2 voltios. Para mi sistema no estaba demasiado preocupado por la frecuencia y eso, solo la pura amplitud de pico, por lo que pasé la señal a través de un pequeño diodo Shottky para recortar los voltajes negativos. Esto simplificó mucho mi diseño.

También estoy diseñando un pequeño analizador de frecuencia en este momento, y estoy considerando tener filtros de paso de banda seleccionables basados en amplificadores opcionales basados en este diseño: enlace que hasta ahora ha dado buenos resultados. Estoy variando algunos de los valores de resistencia mediante una combinación de potes digitales y multiplexores analógicos.

Sin duda, recomendaría al menos proteger sus entradas analógicas con amplificadores operacionales para limitar el voltaje máximo que reciben, por si acaso. No quieres que un pico de voltaje haga saltar tu Arduino, ¿verdad? Más fácil de reemplazar un amplificador operacional soplado.

¿Y en cuanto a una señal para probar? Hay muchos generadores de señal gratuitos para la PC disponibles para descargar si haces un poco de Google para ellos. Le permitirán seleccionar la forma de onda, la frecuencia, la amplitud, la fase, etc. Incluso permiten la suma de formas de onda para dar nuevas formas de onda si tiene suerte.

Incluso puede utilizar la tarjeta de sonido de su PC como un ámbito rudimentario, así como con el software adecuado y una pequeña sonda casera. Hay software y diseños para esto también en la red.

Ah, y recuerde aislar diferentes niveles / niveles de voltaje con capacitores en la señal de audio. Como regla general, si estoy cambiando los niveles de voltaje de la PSU, siempre introduzco un capacitor para aislar las etapas. Entonces, tuve uno en la señal de entrada, uno en la etapa 1 - > etapa 2 (+/- 5V a +/- 12V fuente de alimentación), una en la etapa 1 - > Entrada analógica, y otra de nuevo en la salida. No vale la pena arriesgarse con las compensaciones de CC perdidas que vagan en la parte incorrecta del circuito.

    
respondido por el Majenko
2

A menos que desee crear un analizador de espectro para todo el espectro de audio, comenzaría con un filtro de paso bajo. Por ejemplo, si sus efectos de luz deberían visualizar los bajos, bastará con un ancho de banda de unos pocos cientos de Hz. Y la FFT también computará más rápido. Dependiendo de la potencia de procesamiento y la frecuencia de reloj de su \ $ \ mu \ $ C, puede ser o no lo suficientemente rápido para hacer las FFT. Un DSP (con una instrucción bit-reversal ) puede ser una solución.
Incluso si realiza la FFT en todo el espectro, no tiene que hacerlo a 44.1 kHz (una FFT en cada muestra), ya que su ojo es demasiado lento para seguirlo. Podría, por ejemplo, muestrear a 44.1kHz pero calcular una FFT cada 50 ms.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas