Calibración ADC en ATTiny88

Estoy escribiendo una aplicación integrada para ATtiny88: una de sus tareas es medir los voltajes de dos baterías de automóvil de 12 V conectadas en serie.

El microcontrolador se alimenta con alrededor de 4,5-5 V (LM317), los voltajes medidos (~24 V y ~12 V) se conectan a dos canales ADC a través de divisores de voltaje adecuados. En mi aplicación, tengo que usar una referencia de banda prohibida interna teóricamente igual a 1.1 V.

Probablemente debería hacer algún tipo de procedimiento de calibración, así que ahora mismo pensé en algo como esto:

  1. Aplique exactamente 24 V (12 V) desde una fuente de alimentación externa estabilizada al divisor de tensión.
  2. Calcule el coeficiente de ganancia para cada canal utilizado (24 (12) / valor medio del canal ADC)
  3. Almacene estos coeficientes en EEPROM y utilícelos como un factor de escala para calcular los voltajes medidos.

Traté de medir la referencia de banda prohibida interna (uno de los canales ADC está conectado internamente), pero siempre devuelve 1023, el valor máximo para un ADC de 10 bits.

Mi pregunta es, ¿cómo medir los voltajes con mayor precisión? El voltaje de referencia de banda prohibida probablemente varía entre diferentes chips (la hoja de datos dice 1- 1.2 V). ¿Hay alguna forma mejor de hacer la calibración que la que estoy haciendo ahora mismo? Por favor ayuda.

Respuestas (2)

La referencia de banda prohibida define el límite superior del rango del ADC, por lo que siempre obtendrá una lectura de 1023. Incluso dividirlo no ayuda, ya que el ADC siempre medirá una fracción fija de su referencia.

  • Como ya está disponible en un pin, solo mida con precisión el voltaje de referencia interno.
  • Aplique un voltaje a una entrada ADC libre. Si bien esto desacopla su voltaje del resto del circuito, asume que las entradas tienen características idénticas. Y necesita un código adicional para leer ese ADC.
  • Aplique un voltaje a la entrada ADC utilizada.
  • Aplique un voltaje a la entrada de 24V de su divisor de voltaje. Esta es la mejor solución de calibración, ya que también corrige errores debido a la precisión de sus resistencias divisoras de voltaje. (El error en el peor de los casos se puede estimar como el doble de la precisión, es decir, 2 % si usa resistencias al 1 %. Así que mejor use 0,1 %).

Si bien el último punto permite calibrar el ADC para un cierto voltaje con la mayor precisión, también puede realizar la medición para varios voltajes. De esta manera, descubrirá si hay un desplazamiento (0V no lo es 0x0000), una no linealidad u otro efecto. Aquí hay un resultado de mi trabajo:

ingrese la descripción de la imagen aquí

Esta es una calibración de un ADC bipolar de 16 bits con algunos componentes electrónicos aguas arriba, que también tienen un impacto en el rendimiento de la medición. En general, la linealidad está bien y puede usar una función lineal para convertir la lectura de ADC en voltaje y viceversa. Sin embargo, el residuo (diferencia entre la lectura y el valor ADC esperado) muestra esta curva en forma de onda. El efecto no es grande, pero está ahí.

Tenga en cuenta también que no utilicé el valor más alto y el más bajo para calcular la función, ya que esto doblaría hacia abajo el lado izquierdo y doblaría hacia arriba el lado derecho del residuo y daría menos precisión. En su lugar, la función se determina de modo que se ajuste bien a las lecturas en todo el rango. (Podría haber elegido algo no lineal para obtener mejores resultados)

Bien, supongo que eso es más de lo que necesitas saber. Un último punto:

Piense siempre en qué precisión es alcanzable y factible. Su ADC tiene un rango dinámico de 0.1% (1/1023), por lo que debe tener en cuenta cuando usa resistencias de 1% para el divisor, pero las resistencias de 0.1% estarían bien. Y si su multímetro tiene una precisión del 3%, eso es lo mejor que puede obtener para su calibración. Finalmente, el 0,1 % de 24 V es 24 mV, así que decida cuánta precisión necesita.

La referencia de banda prohibida interna no es muy precisa, simplemente es estable (es decir, no cambiará mucho con la temperatura ni durante la vida útil del chip). Por lo tanto, deberá calibrar usando un voltaje conocido y almacenarlo en el dispositivo como lo describió.

Dado que el ADC tiene una buena linealidad por diseño, puede usar prácticamente cualquier voltaje para calcular el factor de escala siempre que sepa cuál es.

Otra opción, aunque más costosa, es adaptar una referencia de banda prohibida externa al circuito y usarla como referencia para el ADC.