Frecuencia de lectura de una señal de audio desde un dispositivo Android

3

Estoy haciendo un proyecto que lee la frecuencia de las señales de audio generadas desde el dispositivo Android a través del conector para auriculares. El conector de audio está conectado al microcontrolador Atmega como se muestra en la figura .!

Estoy utilizando el comparador analógico para comparar entre un voltaje de referencia 2.61v y la señal de audio (polarizado DC; AC + 2.5v). El rango de la señal de audio es de 200 mv p-p, por lo que, después de la polarización de CC, será de 2.3 a 2.7. Cuando la entrada del comparador 1 pasa 2.61 (voltio de referencia), un temporizador comienza a medir la frecuencia. Pero el problema es que no estoy obteniendo una lectura de frecuencia estable. Por ejemplo, si la señal es 1000Hz, la leo entre 4000 y 5000 Hz. Los valores siempre cambian. A veces, el comparador genera uno durante unos pocos microsegundos, incluso si no hay señal de audio (la salida debería ser cero). !!

Creo que el problema es uno de estos:

  1. La fuente de alimentación tiene una ondulación alta, por lo que no puedo leer correctamente las señales de bajo nivel.
  2. Debería usar un condensador de bloqueo superior C2 como 10uF en lugar de 100nF.
  3. El 200 mv está en el rango de señales de ruido, debería amplificarlo antes de leer.
  4. El divisor de voltaje debe usar valores altos de resistencias como 3MOhm como en el proyecto de secuestro a continuación.

¿Qué piensas?

Esto es similar al proyecto de secuestro propuesto por UMICH. Su esquema se muestra a continuación.

    
pregunta yasserbn

2 respuestas

1

Hay algunas cosas que faltan aquí. Tal vez demasiadas preguntas para un comentario, pero tal vez lo suficiente como para ayudarte a ver dónde va mal.

En primer lugar, una señal pico a pico de 200 mV a 2.5V dará un rango de 2.4V a 2.6V, no de 2.3V a 2.7V. A menos que quiera decir que es de 400mV p-p o 200mV de amplitud. Asumiremos que se trata de una onda sinusoidal de 400mV p-p 1kHz, ya que la otra no funcionaría excepto para medir el ruido.

Cuando dices que un temporizador comienza a medir la frecuencia, ¿estás viendo cuánto tiempo la señal está por encima de tu referencia de 2.61 V? ¿Qué esperas encontrar? ¿Un pulso 314ns desde el comparador? ¿O simplemente estás esperando el siguiente flanco ascendente del comparador? ¿En qué resolución de tiempo estás midiendo? ¿Cuál es tu cálculo?

¿El comparador tiene histéresis? Si es así, ¿lo estás explicando?

¿Tienes algún código para este proyecto? ¿Nos lo puedes mostrar?

Debería saber que su método solo funcionará para señales de tonos puros y es muy susceptible al ruido. No conocemos su aplicación definitiva, por lo que es difícil sugerir alternativas.

    
respondido por el Samuel
0

Traje un osciloscopio para diagnosticar el problema y me di cuenta de lo que está pasando:

Estoy usando un comparador para comparar entre dos valores. La referencia que es 2.61v y la señal de audio que está después de agregar el DC (2.3 - 2.7 v). Cuando la señal de audio pasa a 2.61v, el temporizador comienza a contar hasta que la señal de audio pasa de nuevo a 2.61. Entonces, el valor del temporizador será la T de la señal.

Eso se ve muy bien. ¡¡No realmente !!

Hay un ruido de mi fuente de alimentación de 5 V alrededor de 50 mv p-p (muy alta frecuencia). Esto hace que el voltaje de referencia de 2.61v oscile. En el momento en que la señal de audio es 2.61, la salida del comparador puede oscilar varias veces debido al ruido de la tensión de referencia. Por eso estoy leyendo valores de una frecuencia más alta de lo que debería ser.

Tenga en cuenta que esto solo ocurre con señales de muy bajo voltaje como nuestro caso. En otras palabras, el ruido es 50mv p-p y mi señal es 400mv p-p, por lo que el rango de detección de bordes es 1/8 T fuera de la señal y eso es mucho tiempo. Si amplifico la señal o supongo que el p-p voltio es 5v, entonces el rango de detección de borde es 1/100 fuera de la señal. En tal caso, el problema apenas puede ocurrir, especialmente con altas frecuencias.

Me pregunto cómo ese trabajo de investigación (proyecto de secuestro) mide la frecuencia de esta manera. Una cosa es que él está usando 3 resistencias de Mega Ohm para divisor de voltaje. ¿Elimina el ruido?

Creo que la solución es cualquiera

1) use la referencia de voltaje interno (debería estar bien regulado) pero no puede funcionar con mi pequeña señal.

2) o use el ADC para leer la señal y compararla con un valor de referencia.

    
respondido por el yasserbn

Lea otras preguntas en las etiquetas