¿Gran caída de voltaje al conectar la salida al pin del microcontrolador?

3

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.

    
pregunta Sam

3 respuestas

4

¿Está absolutamente seguro de que el pin / puerto está configurado como una entrada analógica y no una salida digital que se ha configurado en un nivel bajo?

Una baja digital accidental en el puerto podría ser lo que está cargando la salida del detector de pico.

No soy un experto en su arquitectura particular, pero en general, los pines de micro E / S se multiplexan; debe establecer registros de manera explícita para configurarlos como entradas, salidas o canales ADC. La configuración de un ADC interno aún requiere que configure manualmente su pin de entrada de manera apropiada.

    
respondido por el Adam Lawrence
4
  1. Si DDRA = 0xFF es todas las salidas.
  2. Si no ha escrito en PORTA , se establecerá de forma predeterminada en 0x00 , por lo que todos los pines estarán bajos.
  3. El ADC simplemente funciona (TM), por lo que leerá felizmente el resultado de la pelea de salida baja con el preamplificador / rectificador tan alegremente como lo haría con cualquier otro voltaje en el pin.
  4. No tiene que hacer nada para que el ADC funcione, excepto para hacer las entradas de los pines ...
respondido por el Joey
1

¿Comprueba que no haya un menú desplegable interno dentro del mcu que esté habilitado para ese pin?

    
respondido por el Johan

Lea otras preguntas en las etiquetas