Coeficientes de calibración ADC y front-end de la resistencia de escala del voltímetro

Estoy diseñando un voltímetro y un sistema de medida de corriente que forma parte de una carga electrónica. Abordemos primero el voltímetro.

Estoy usando un ADC de 16 BITS (AD7708) y quiero medir los siguientes voltajes, vea a continuación, el ADC es bastante bueno para aplicaciones de CC y se usa en el instrumento BK8500.

Aquí nos lo que quiero lograr.

0,1 V a 25 V (una resolución de 1 mV con una precisión de 0,05 %) 0,1 V a 120 V máx (una resolución de 10 mV con una precisión de 0,05 %)

Escribí el doloroso código del controlador (basado en la hoja de datos) que realiza todas las rutinas de inicio de inicialización como calibración cero, filtrado DSP interno, ganancia ADC y modo de operación de un solo extremo. Hasta ahora todo bien, funciona, ya que puedo medir una buena precisión con mi Fluke 87V de 1 mV a 2,5 V (ADC FSD) (DP832).
http://www.analog.com/media/en/technical-documentation/data-sheets/ADR420_421_423_425.pdf

Pregunta 1

Estoy confundido sobre cómo diseñar una interfaz de resistencia de escala con un amplificador de ganancia adecuado para el rango de 25 V y el rango de 120 V. hasta ahora, mis intentos están fallando, la relación del divisor de resistencia que usé para escalar para 25 V es de 100 uV por 1 mV para R1 = 18 K y R2 = 2 K (Donde R1 y R2 presentan un divisor de resistencia simple) ¿Hay algún buen ejemplo que pueda usar como un guía para este tipo de diseño?

Pregunta 2

¿Cómo incorpora un diseño los coeficientes de calibración? ¿Existe un diseño estándar para esto? ¿Cuántos coeficientes ADC se requieren para influir en una medición? ¿Es en todo el rango de medición o solo para lecturas de baja resolución?

Respuestas (2)

Esta es una respuesta tardía, pero aquí hay algo que puede usar para determinar sus coeficientes de calibración. Como @NickJohnson ya ha escrito, se puede usar una función lineal para convertir los valores preparados por el ADC en valores "verdaderos". Por lo tanto, permítanme cambiar el nombre de los parámetros:

V verdadero = C ganar V leer + C compensar

La forma más sencilla de calcular los coeficientes es realizar dos mediciones, una en el extremo inferior y la otra en el extremo superior del rango ADC. (Pero asegúrese de que no está midiendo en los límites, es decir, mida a 0,1 V y 4,9 V para un rango de 0-5 V). Los coeficientes son

C ganar = V verdadero alto V verdadero bajo V leer alto V leer bajo

C compensar = V verdadero bajo C ganar V leer bajo

Usando el primer y último conjunto de números de tu comentario, obtengo C ganar = 1.11303 y C compensar = 0.469206

Pero, ¿es esa la máxima precisión que puedes conseguir? Aquí hay una gráfica que muestra el residuo: la diferencia entre los valores calculados por la fórmula a partir de los valores leídos y los valores verdaderos. El primer y último valor tienen residuo cero, ya que se han utilizado para calcular los coeficientes. ¡Pero para los otros puntos, el valor calculado es hasta 16 mV (o 0,65 %) demasiado bajo!

ingrese la descripción de la imagen aquí


Ahora, tomemos en cuenta todos sus valores medidos. mi resultado es C ganar = 1.11224 y C compensar = 0.456815 , que difiere un poco de los valores anteriores.

Aquí está la trama de nuevo. El primer punto tiene un error de 12 mV o 1,2 %, pero los otros tienen un error de aproximadamente -5 mV... -8 mV o hasta un 0,2 %.

ingrese la descripción de la imagen aquí

¿Cómo se hace? En Excel, simplemente puede dibujar sus valores como "gráfico xy". Asegúrese de que los valores leídos estén en el eje x y los valores verdaderos en el eje y. haciendo clic derecho en el diagrama, puede dibujar una "línea de mejor ajuste" o similar (no sé el término en inglés) y mostrar los parámetros.

Yo mismo amo gnuplot para tales tareas. Para usarlo, cree un archivo de texto simple con sus datos:

1 1.320
2 2.207
3 3.105
4 4.000
5 4.902
6 5.805
7 6.707
8 7.605
9 8.500
10 9.406

en gnuplot, hacer

    # Solo cosméticos
    tecla no configurada
    establecer ytics sin espejo
    establecer y2tics

    establecer xlabel "V_{leer}"
    establecer ylabel "Residuo V_{verdadero} - f(V_{leer}) [V]" tc rgb "rojo"
    establecer y2label "Residuo (V_{verdadero}-f(V_{leer})) / V_{leer} [%]" tc rgb "azul"



    # Ahora, defina la función, ajústela a los datos y grafique todo

    f(x)=m*x+b

    ajustar f(x) "adc.csv" a través de m, b

    plot "adc.csv" u 1:($2-f($1)) w lp pt 7, "adc.csv" u 1:(($2-f($1))/$2*100) ejes x1y2 w lp pt 7 lt 3

Al ejecutar el fitcomando, obtiene muchos resultados, lo que resulta en

Conjunto final de parámetros Error estándar asintótico
======================= ==========================

m = 1.11224 +/- 0.0007126 (0.06407%)
b = -0.456815 +/- 0.004237 (0.9275%)

cual es el resultado

Además:

  • medir tantos puntos como sea posible
  • medir cada punto varias veces
  • si una función lineal no coincide bien con sus datos, considere usar una función no lineal.

18k/2k le dará exactamente el 10%, que es lo que dice que necesita, aunque la resistencia total a tierra de 20k es un poco baja, dependiendo de su ADC y si está usando o no un amplificador de búfer. Dices que tus intentos "están fallando", pero no qué problemas estás teniendo, por lo que es difícil ofrecer más consejos que eso.

Los errores de ADC generalmente se modelan como error de compensación y error de ganancia. Su divisor de resistencia no creará ningún error de compensación, pero creará un error de ganancia, según la precisión de las resistencias.

La forma estándar de lidiar con esto es almacenar un coeficiente de calibración para compensación y uno para ganancia, y aplicarlos así:

Vout = Vin * Cgain + Coffset

Esto se aplica a todas las medidas, no solo a las pequeñas. Puede establecer la escala permitida de estas compensaciones en cualquier cosa que parezca razonable dados los errores que es probable que vea en su diseño.

Gracias por la rápida respuesta. Parece que necesito revisar mis medidas. R1=100k, R2=1K 1mV=9.9uV El problema que tengo es que parece haber un gran error de compensación en mis lecturas.
Estas son algunas de las compensaciones registradas 1V=1.320V, 2V=2.207, 3=3.105, 4=4.000,5=4.902,6=5.805,7=6.707,8=7.605,9=8.500,10=9.406
100k+1k dará una proporción de 1/101, que no es exactamente el 1%. El error de compensación no provendrá del divisor de resistencia, sino de otros errores como la corriente de tierra.