Cómo dar entrada analógica desde un conector de 3.5 mm a FPGA (Spartan 3e)

0

Estoy trabajando en un proyecto de transmisión de voz utilizando Spartan 3e. Mi código funciona bien Mi problema es que proporciono una entrada analógica en el lado de CC mediante un potenciómetro y veo los cambios (como digitales) en los leds (la salida digital se asigna a los leds). Aquí está el problema, corté un auricular en dos y conecté el conector de 3.5 mm a mi teléfono para reproducir música. Hay 3 cables que son dorados, azules y rojos. El dorado está conectado al pin "GND", el rojo va al pin "Va" (en la entrada adc). No toqué el azul.

Cuando reproduzco música, no veo cambios en los leds a pesar del hecho de que sí vi usando un potenciómetro. Qué me estoy perdiendo ? ¿Tengo que configurar un circuito externo antes de enviar la señal analógica a la entrada Va?

Gracias de antemano.

    
pregunta CuriousPuppy

1 respuesta

2

Dos problemas:

  1. El ADC es (supongo) de 0 a 5 V. Su audio será mucho menor que esto.
  2. El ADC solo acepta señales positivas. Su audio es AC (corriente alterna). La polaridad alterna entre + y - con un valor promedio de cero.

Como mínimo, debe rectificar su señal y asegurarse de que la entrada ADC de su micro solo vea señales positivas entre cero y la tensión de entrada nominal máxima. Si coloca un diodo en el circuito (el extremo en forma de banda apuntando hacia el ADC) podría comenzar a funcionar, pero con los bajos voltajes solo obtendrá números bajos de su ADC.

Para un mejor trabajo, busque circuitos rectificadores de precisión. Querrá uno que le dé algo de ganancia: de 5 a 10 probablemente haga el truco.

[Editar]

Eché un vistazo a la hoja de datos y entiendo que el ADC está sesgado en medio V-max. Debes conectarte como se muestra aquí:

simular este circuito : esquema creado usando CircuitLab

Sin el condensador, su señal de audio será de +/- con respecto a 0 V. Si agrega el condensador y las resistencias, lo desviará hacia 1.65 V, igual que la referencia interna.

En tu software tendrás que ejecutar un bucle que

  • toma una lectura.
  • Resta al valor de sesgo (la mitad ADC máx.)
  • Obtenga el valor absoluto del resultado (elimine el signo - si está presente).
  • Promedio estos a lo largo de un cierto número de ciclos, ya que algunas veces muestrearás en un pico y otras veces cuando la señal de audio esté cruzando cero voltios.
respondido por el Transistor

Lea otras preguntas en las etiquetas