¿Puedo cambiar entre dos referencias analógicas para leer señales con diferentes rangos con el ATmega328P?

4

Quiero leer dos voltajes de diferentes rangos con un ADmega328P ADC con la mayor resolución posible:

  1. La primera señal varía de 0 a 1V. Es la salida de un Sensor de temperatura LM35DZ . Quería usar la referencia analógica interna de 1 V para obtener la mayor resolución de ADC posible.

  2. La segunda señal es el voltaje de la batería, que varía de 0 a 5V. Se lo comunico a este Circuito de protección contra descarga excesiva que Russell McMahon propuso y, en base a esa lectura, se apagará. el circuito si los niveles de batería son demasiado bajos. Para leer esta señal, tengo que usar la referencia de voltaje ADC 5V.

Mis preguntas son:

  1. ¿Es correcto si sigo cambiando la referencia de voltaje ADC de la referencia interna de 1V a la de 5V para hacer una lectura y luego la otra?

  2. Cuando cambio a la referencia interna de 1 V, ¿la otra señal de 5 V dañará la otra entrada analógica? Tengo la impresión de que la referencia de 1 V sería un límite para el ADC y que la 5V en la otra entrada violaría esto de alguna manera.

  3. En realidad intenté cambiar entre la referencia de 1V y 5V, pero cuando lo hago, la lectura de la primera señal (con un rango de 0 a 1V) comienza a fluctuar. ¿Porqué es eso? Intenté darle tiempo al ADC para establecerse (10 a 50 ms), pero eso no funcionó. ¿Cómo obtengo una lectura estable después de cambiar la referencia analógica?

pregunta Ricardo

3 respuestas

2
  1. No hay problema en absoluto.
  2. No.
  3. Tomar múltiples lecturas y promediarlas. Además, la referencia de voltaje interno no es maravillosamente estable. Mejor usar un chip de referencia de voltaje externo. A menudo utilizo un chip DAC MCP4821 / MCP4822 para poder programar una referencia de voltaje precisa hasta una resolución de 500 µV.
respondido por el Majenko
2

Otra opción es construir un divisor resistivo simple para que la entrada de mayor voltaje lo divida hasta el rango ADC. De esta manera, incluso si el voltaje es más alto que el voltaje de suministro para la parte (es decir, que se obtiene de antes del regulador de voltaje), aún puede obtener una buena lectura del voltaje. La desventaja de esto es que puede tener que preocuparse por las tolerancias de la resistencia y los coeficientes de temperatura si necesita una precisión extrema. Este método también le permite leer todas las señales de entrada con la misma referencia (posiblemente de muy alta precisión).

    
respondido por el alex.forencich
1

De la hoja de datos:

  

AVCC o un voltaje de referencia interno de 1.1V se pueden conectar a la   PIN de AREF escribiendo en los bits de REFSn en el Registro ADMUX. los   la referencia de tensión interna puede ser así desacoplada por un externo   Condensador en el pin AREF para mejorar la inmunidad al ruido.

También asegúrate de seguir esto:

  

Por defecto, el circuito de aproximación sucesiva requiere una entrada   frecuencia de reloj entre 50kHz y 200kHz para obtener la máxima resolución.

Y esto:

  

Cuando el voltaje de referencia de intervalo de banda se utiliza como entrada al ADC,   Tomará un cierto tiempo para que el voltaje se estabilice. Si no   estabilizado, el primer valor leído después de la primera conversión puede ser   mal.

Solo para elaborar un poco de la última cita de la hoja de datos ... Como puede ver, Atmel no le da una cifra exacta de cuánto dura este "cierto tiempo". La razón simple de esto es que depende de su voltaje, de la tapa que usó para desacoplar el AREF y probablemente la temperatura del sistema. junto con otros factores. Lo que hice en ese momento fue tomar varias lecturas y cuando la diferencia absoluta entre 10 lecturas consecutivas fue inferior a un cierto delta, decidí que la referencia estaba estabilizada. Por supuesto, esto estaba usando una entrada de CC constante, de lo contrario no tendría mucho sentido. Otro enfoque más simple es tomar un alcance y probar el pin AREF. Debería poder activar el alcance en otro pin en el momento en que intercambie las referencias de voltaje y luego medir cuánto tarda la señal en estabilizarse. Una vez que haya averiguado esto, puede establecer un retraso en su código justo después del cambio de referencia.

    
respondido por el user34920

Lea otras preguntas en las etiquetas