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:
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.
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.
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:
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.