calibrando atmega328 adc

1

El siguiente circuito es lo que estoy usando para hacer un voltímetro usando un arduino para mi psu. Es un psu de 30v, por lo tanto mediré hasta 30v. No sé por qué sigo obteniendo valores aleatorios en el ADC. En un minuto son las 245, luego son las 1024, luego son 0 durante un tiempo. Solo salta por todo el lugar. Me dijeron que solo necesitaría suministrar 1 mA al pin analógico.

Avcc y vcc se desacoplaron a gnd utilizando 0.1uf cap no polarizado.

Aquí está el código de boceto que estoy usando para leer el valor del anuncio

 ![void setup()
    {
      // begin the serial communication
      Serial.begin(19200);
    }

    // variable to hold the analog input value
    int analogValue = 0; 

    void loop()
    {
      // read the analog input on pin 0
      analogValue = analogRead(0);   

      // print as an ASCII-encoded decimal
      Serial.print(analogValue);

      // print a terminal newline character so the AVR Voltmeter
      // will know that it has received the full string
      Serial.print('\n');

      // delay 1 second before the next reading:
      delay(1000);
    }][1]

    
pregunta Ageis

2 respuestas

1

Algunos pensamientos:

Supongo que la fuente de alimentación es DC en el rango de 0V - 30V. (es decir, sin tensiones negativas o de CA)

No sé mucho acerca de Arduinos, pero ¿tienes que configurar el pin a una entrada analógica? (Por ejemplo, como si tuvieras que usar un PIC) Estoy pensando que tal vez la rutina analogRead se encarga de eso. ¿También está ajustada correctamente la tensión de referencia del ADC? (Observo que hay un pin Aref flotando en su esquema)

EDITAR - Aref pin:

Atmel dice:

  

La tensión de referencia para el ADC (VREF   ) indica el rango de conversión para el ADC. Soltero   canales terminados que exceden VREF    resultará en códigos cercanos a 0x3FF. VREF    se puede seleccionar como   o bien AVCC   , referencia interna de 2.56V, o pin AREF externo.   AVCC    Está conectado al ADC a través de un interruptor pasivo. La referencia interna de 2.56V se genera a partir de la referencia de intervalo de banda interna (VBG) a través de un amplificador interno. En cualquier caso, la   El pin AREF externo está conectado directamente al ADC, y el voltaje de referencia se puede hacer   más inmune al ruido al conectar un capacitor entre el pin AREF y la tierra. VREF    puede   También debe medirse en el pin AREF con un voltímetro de alta impedancia. Tenga en cuenta que VREF    es un alto   fuente impedante, y solo una carga capacitiva debe estar conectada en un sistema.   Si el usuario tiene una fuente de voltaje fijo conectada al pin AREF, el usuario no puede usar el otro   Consulte las opciones de voltaje en la aplicación, ya que estarán en cortocircuito con el voltaje externo. Si no   se aplica voltaje externo al pin AREF, el usuario puede cambiar entre AVCC    y 2.56V como   selección de referencia. El primer resultado de conversión ADC después de cambiar la fuente de voltaje de referencia   puede ser inexacto y se recomienda al usuario que descarte este resultado.

Por lo tanto, si se selecciona la referencia externa, debe aplicarle un voltaje. De su comentario a continuación parece que este puede ser el caso. Intente conectarlo a AVcc (o lo que quiera que sea la parte superior del rango ADC)
Opcionalmente, puede agregar un límite de 100nF a tierra para reducir el ruido si es necesario también.

¿Su suministro de 5V es estable? ¿Tienes tapas de bypass presentes? (se menciona pero no se muestra en el esquema)

¿Está tu PSU compartiendo terreno con el Arduino? Si no, esto podría causar los problemas que está viendo.

    
respondido por el Oli Glaser
0

Usted sabe, ¿no sabe que los pines de entrada en el Arduino no están clasificados para 30 voltios? Espero que no estés aplicando directamente 30 voltios. Si lo ha hecho, es posible que haya destruido el ADC y esto tendría en cuenta los valores incorrectos / aleatorios.

Antes de intentar medir su PSU, ¿por qué no simplemente prueba el ADC de Arduino con una fuente estable y conocida, como una batería de 1.5V?

    
respondido por el JonnyBoats

Lea otras preguntas en las etiquetas