¿Cómo leer una señal de audio usando ATMega328?

Estaba tratando de usar el puerto A0 ATMega328 ADC para leer una señal. El hardware que utilicé fue:

La señal que obtuve parece ser solo la parte positiva de una onda sinusoidal. ¿Es posible que esta configuración no sea adecuada para la grabación de audio? ¿Qué tengo que cambiar?

Guau, venden componentes electrónicos de bricolaje sin siquiera darte el esquema. Seed Studio apesta.
Nombre falso: De acuerdo
@Fake ¿Conoces una alternativa mejor?
@Jader Todo depende de cuánto trabajo quieras hacer. Aquí hay algunas opciones: sparkfun.com/commerce/product_info.php?products_id=8635 sparkfun.com/commerce/product_info.php?products_id=8872
@Jader Dias - Sí, una placa de pruebas y un amplificador operacional.
El micrófono es "muy sensible", al menos...
@endolith lo compre y no es tan sensato jajaja

Respuestas (3)

Sin haber usado nunca ninguna de esas partes, déjame ver si puedo hacer una puñalada. ¿Tienes acceso a un oscopia? Si es así, es posible que desee verificar su señal antes de comenzar a construir algo.

Lo más probable es que su micrófono/amplificador emita una onda centrada alrededor de 0v, lo que significa que tiene voltajes + y -. Piense en una onda sinusoidal que fluctúe entre -1v y 1v. Para que su micro use esto, deberá agregar una compensación de CC de modo que su voltaje más negativo sea ligeramente superior a 0v y su voltaje más positivo esté ligeramente por debajo del máximo que su micro puede leer (probablemente alrededor de 5v).

Sin analizar más sus componentes, es difícil decirle específicamente lo que debe hacer para obtener su compensación de CC, pero tal vez esto lo ubique en la dirección correcta.

Withoutse escribe sin espacios
Corregido para ti.

¿Tiene un capacitor de polarización/bloqueo de CC en la entrada?

Entrada analógica con condensador de bloqueo de CC

La combinación de C con R establece la frecuencia más baja que puede pasar al ADC. La CC (la última frecuencia baja) está bloqueada, mientras que la CA pasa. En este caso, la frecuencia de corte sería de 1 Hz , que es bastante baja para el audio.

La polarización de CC la proporciona algo en el medio del rango de ADC, con poco ruido. Por ejemplo:

Fuente de polarización de CC

Esto produciría 2,5 V en CC, pero la CA está estrechamente acoplada a tierra por el condensador, por lo que filtra cualquier fluctuación en el suministro. Un condensador más grande mejoraría el ruido a frecuencias más bajas.

(Originalmente me vinculé a esta imagen , pero eso solo funcionaría si su suministro de 5 V no tiene ruido).

Buen esquema... Lo comprobaré.
¿Qué hace esto exactamente? C1 debe bloquear el componente de CC de la señal, pero ¿por qué es necesario? ¿El par R1/R2 sesga entonces la señal de modo que 0v se convierta en 2,5?
@blalor estrictamente hablando, 0V no se convierte en 2.5V. La regla general es que el componente DC de la señal se convierte en 2.5V
@blalor si pudiera colocar un capacitor infinitamente grande allí, vería que toda su señal se desplaza para centrarse alrededor de 0v. Por lo tanto, eliminando la compensación de CC. Este es un método común para asegurarse de que no haya ningún circuito que agregue una compensación no deseada. R1 y R2 luego simplemente agregan una compensación de CC conocida para fines de ADC en este caso. Dado que no podemos tener límites infinitamente grandes, nos conformamos con límites más pequeños que provocan que algunas de las frecuencias bajas se corten.
De todos modos, las tapas infinitamente grandes tardarían una eternidad en cargarse hasta el voltaje de polarización.
@endolith eh, solo esos problemas menores.
@endolith Realmente me gusta cómo se vinculó a wolframalpha, creo que es una gran idea para mostrarle a la gente las matemáticas que se incluyeron.
Lo hago mucho. Me encantan cosas como Google Calculator, Alpha y Qalculate que pueden hacer cálculos de forma libre con unidades y todo.
@endolith ¿de dónde es este esquema?
Solo una búsqueda de imágenes en Google, pero ahora no puedo encontrarlo.
@Jader: fue de aquí sites.google.com/site/ki4mcw/Home/arduino-tnc , pero en realidad no es un buen circuito. Lo redibujaré.
@endolith Monté su circuito y mantuvo el valor digital del componente de CC fijo como 688 (en una escala de 10 bits). Lo ideal sería 512, pero 688 es mucho mejor que lo que tenía antes (0). Luego me di cuenta de que el micrófono por sí solo no será suficiente para cambiar eso. Así que estoy agregando un Amp-Op al circuito
Para obtener 512, cambie la resistencia superior a alrededor de 16.8K. :D ¿El micrófono no cambia el valor en absoluto? En ese caso, entonces sí, necesitaría algo de ganancia de un amplificador operacional. Sin embargo, aún necesita usar este circuito de polarización en alguna parte.

La solución es usar un Amp-Op

Patas

En un circuito como este:

Circuito

Puede simularlo utilizando Java Circuit Simulator donde puede importar el siguiente código:

$ 1 5.0E-6 10.20027730826997 57 5.0 50
g 240 240 240 288 0
r 240 112 240 160 0 47000.0
r 240 192 240 240 0 47000.0
R 240 112 240 80 0 0 40.0 5.0 0.0 0.0 0.5
r 272 384 336 384 0 1000.0
R 176 384 144 384 0 1 40.0 0.5 0.0 0.0 0.5
w 176 384 192 384 0
c 192 384 256 384 0 1.0000000000000001E-7 -2.9572014071857935
c 192 176 192 240 0 1.0000000000000001E-7 2.5000000000001608
w 192 240 240 240 0
w 256 384 272 384 0
w 336 384 336 192 0
r 416 240 512 240 0 100000.0
w 512 240 512 176 0
w 192 176 240 192 0
w 416 240 416 192 0
w 240 192 240 160 0
a 416 176 512 176 1 5.0 0.0 1000000.0
w 416 160 240 160 0
w 336 192 416 192 0
o 13 64 0 35 20.0 9.765625E-5 0 -1

La ganancia será proporcional a la relación entre la resistencia de la resistencia de 100k y la de 1k.