Tengo un preamplificador de micrófono electret y un circuito detector de picos que funciona muy bien. El micrófono capta sonidos y obtengo un voltaje de CC constante que, dependiendo del volumen del sonido que escucha el micrófono, está en algún lugar entre 0 y ~ 3.5v
Necesito introducir esto en un pin ADC en un microcontrolador AVR para poder leer el volumen relativo que está recibiendo el micrófono.
El único problema es que cuando conecto el circuito al pin ADC en el microcontrolador, mi pico de voltaje cae de 3.5 a aproximadamente 100 mV.
Estoy conectando el preamplificador y el circuito del detector de picos a una placa STK de la que se está ejecutando el chip. Cuando la tarjeta está apagada, el voltaje máximo que estoy leyendo con un osciliscopio (y con un multímetro) es correcto, pero se reduce de forma masiva cuando lo enciendo. Sin embargo, sigo mostrando el mismo tipo de comportamiento que debería (el pico aumenta cuando hay ruido) pero necesito que el pico sea alrededor de 3.5v (no 100mV), ya que necesito una gran resolución en el valor de ADC que leo en mi software.
He conectado las conexiones a tierra de ambos circuitos a la conexión a tierra de la placa STK, por lo que no creo que ese sea el problema.
¿Alguien me puede dar algún tipo de idea sobre lo que podría salir mal? ¿Tiene algo que ver con la resistencia interna del microcontrolador? ¿Tal vez estoy poniendo demasiada corriente en el pin ADC? Realmente agradecería cualquier ayuda.
editar: estoy usando el pin A7 en un atmega16.
edición 2:
Este es el circuito de preamplificación que estoy usando: enlace
y este es el detector / rectificador de picos:
y el código para obtener el valor ADC:
unsigned int ADC_read(unsigned char ch)
{
ADMUX = 0b11000111;
ADCSRA|=(1<<ADSC); // start conversion
while(!(ADCSRA & (1<<ADIF))); // waiting for ADIF, conversion complete
{
ADCSRA|=(1<<ADIF); // clearing of ADIF, it is done by writing 1 to it
}
return (ADC);
}
No puedo ver cómo el código tendría ningún efecto.