Intentando entender el voltaje de preescalado para ADC con el menor error

5

Me estoy enseñando a mí mismo a la hora de diseñar un monitor de batería de 12V DC. Estoy usando un par de sensores de efecto Hall para rastrear la carga y el amp; Cargue la corriente y busque la mejor manera de medir el voltaje. [Un ATmega32u4 tomará lecturas sucesivas con el ADC, calculará un promedio de 1 segundo y lo pasará por USB para el registro y análisis.]

El problema del error con ADC realmente me tiene asustado. Es esencial que produzco datos significativos. Hay tantas fuentes de error, tanto en mi circuito como en el ADC, que se siente como jugar al wack-a-mole en la oscuridad. Estoy leyendo mucho sobre la calibración de la referencia del ADC, pero el primer paso es elegir un método para escalar la entrada.

Mi ventana de voltaje es 10-15V, específicamente un rango de 10.5V a 14.4V (3.9V). Se me ocurrieron dos enfoques que (con suerte) hacen lo que quiero:

  1. Un diodo Zener de 10 V en la entrada inversora de un amplificador operacional diferencial. Rechazando 10V, mi rango se convierte en 0.5V a 4.4V (3.9V) y usa casi todo el rango de mi ADC.
  2. Un divisor de voltaje de 20k: 10k. Escalado 3 veces, mi rango se convierte en 3.5V a 4.8V (1.3V)

Quería probarme a mí mismo qué método daría la mejor granularidad. Como también puedo obtener una precisión de 12 bits agregando cuatro lecturas y cambiando el resultado, comparé cuatro posibilidades: (asumiendo que la referencia ADC es 5.0V)

  • el método 1, 0.5-4.4V @ 10 bits es 800 pasos: 4.88mV / paso [# 3]
  • el método 1, 0.5-4.4V @ 12 bits es 3606 pasos: 1.22mV / paso [# 1]
  • el método 2, 3.5-4.8V @ 10 bits tiene 266 pasos: 14.65mV / paso [# 4]
  • el método 2, 3.5-4.8V @ 12 bits es 1065 pasos: 3.66mV / paso [# 2]

Mi pregunta es, ¿mis cifras de mV / pasos cuentan toda la historia o hay algún tipo de inconveniente en el # 2 que no estoy viendo?

    
pregunta phip

1 respuesta

4

El desplazamiento con zener es de poca utilidad. Los mejores zeners tienen una tolerancia del 1%, que es de 100 mV para un zener de 10 V. En un ADC de 10 bits, esto es un error de 20 conteos, en un ADC de 12 bits, un error de 82 conteos. Podría recortar el error si puede medir el voltaje con la suficiente precisión, pero hay otros factores. El BZX84-A10 tiene un coeficiente de temperatura de 8 mV / ° C, lo que da un error de 2 cuentas por ° C cambio de temperatura para el ADC de 10 bits y 7 recuentos para los 12 bits. Parece que es más adecuado como termómetro que como medidor de voltaje. Cuando utilice un zener de 10 V, también necesitará una fuente de alimentación de mayor voltaje.

El divisor de resistencia lo hará mucho mejor. Las resistencias también tienen tolerancia, pero a 25 ¢ una resistencia del 0,1% sigue siendo asequible. (Mejor es que el 0.1% se encarece rápidamente: un 0.05% cuesta casi 1 dólar). Con una resolución de 10 bits que le dará un error de 1 conteo, 4 conteos a 12 bits. El coeficiente de temperatura será menos problemático si ambas resistencias son de la misma serie y se colocan cerca una de la otra: ya que el divisor es la resistencia ratiométrica, los cambios se cancelarán mutuamente.

Los números indican que una resolución superior a 10 bits es de poca utilidad; Las tolerancias y variaciones de los componentes harán que el bit adicional no sea confiable. Sin embargo, algunos bits adicionales pueden ayudar a aumentar la inmunidad al ruido, promediando una serie de mediciones, o usando un ADC sigma-delta, que promedia la señal de entrada de todos modos.

También hay algo más filosófico: siempre queremos algo mejor, pero ¿por qué demonios querría saber el voltaje de una batería de 12 V con una precisión superior a 10 mV? Tendrá dificultades para obtener la resolución requerida, y siempre tendrá dudas acerca del último dígito.

El ADS1000 es un ADC de 12 bits de bajo costo que operará desde una sola 5 V suministro.

    
respondido por el stevenvh

Lea otras preguntas en las etiquetas