Front-end del resistor de escala del voltímetro y coeficientes de calibración ADC

1

Estoy diseñando un voltímetro y un sistema de medición de corriente que forma parte de una carga electrónica. Vamos a abordar el voltímetro primero.

Estoy usando un ADC de 16 BITS (AD7708) y quiero medir los siguientes voltajes, ver más abajo, el ADC es bastante bueno para aplicaciones de CC y se usa en el instrumento BK8500.

Aquí nos lo que quiero lograr.

0.1V a 25V (Una resolución de 1mV con una precisión de 0.05%) 0.1V a 120Vmax (Una resolución de 10mV con una precisión de 0.05%)

He escrito 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 terminación única. Hasta ahora todo bien, funciona, ya que puedo medir la buena precisión contra mi Fluke 87V de 1mV a 2.5V (ADC FSD) Nota: el ADC está utilizando una referencia externa de 2.5 voltios (ADR421) y funciona con una fuente de alimentación de bajo ruido (DP832).
enlace

Pregunta 1

Estoy confundido en cuanto a cómo diseñar un extremo frontal de resistencia de escala con un amplificador de ganancia adecuado para el rango de 25V y 120V. Hasta ahora mis intentos están fallando, la relación del divisor de resistencia que usé para escalar a 25V es 100uV por 1mV para R1 = 18K y R2 = 2K (donde R1 y R2 presentan un divisor de resistencia simple) ¿Hay algunos buenos ejemplos que pueda usar como guía para este tipo de diseño?

Pregunta 2

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

    
pregunta user1070829

2 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 a valores "verdaderos". Así, permítanme renombrar los parámetros:

$$ V_ \ text {true} = C_ \ text {gain} \ cdot V_ \ text {read} + C_ \ text {offset} $$

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

$$ C_ \ text {gain} = \ frac {V_ \ text {true} ^ \ text {high} -V_ \ text {true} ^ \ text {low}} {V_ \ text {read} ^ \ text {high} -V_ \ text {read} ^ \ text {low}} $$

$$ C_ \ text {offset} = V_ \ text {true} ^ \ text {low} -C_ \ text {gain} \ cdot V_ \ text {read} ^ \ text {low} $$

Al usar el primer y último conjunto de números de tu comentario, obtengo \ $ C_ \ text {gain} = 1.11303 \ $ y \ $ C_ \ text {offset} = - 0.469206 \ $

Pero, ¿es esa la máxima precisión que puedes obtener? 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 reales. Los primeros y últimos valores tienen un residuo de cero, ya que se han utilizado para calcular los coeficientes. ¡Pero para los otros puntos, el valor calculado es hasta 16mV (o 0.65%) demasiado bajo!

Ahora,tomemosencuentatodossusvaloresmedidos.Miresultadoes\$C_\text{gain}=1.11224\$y\$C_\text{offset}=-0.456815\$,quedifiereunpocodelosvaloresanteriores.

Aquíestálatramadenuevo.Elprimerpuntoestádesactivadoen12mVo1.2%,perolosotrosestánalrededorde-5mV...-8mVohasta0.2%dedescuento.

¿Cómosehace?EnExcel,simplementepuededibujarsusvalorescomo"xy-plot". Asegúrese de que los valores de lectura estén en el eje x, y los valores reales en el eje y. al hacer clic con el botón 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, haz

    # Cosmetics only
    unset key
    set ytics nomirror
    set y2tics

    set xlabel "V_{read}"
    set ylabel "Residuum  V_{true} - f(V_{read}) [V]" tc rgb "red"
    set y2label "Residuum  (V_{true}-f(V_{read})) / V_{read} [%]" tc rgb "blue"



    # Now, define function, fit it to the data, and plot everything

    f(x)=m*x+b

    fit f(x) "adc.csv" via m, b

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

Al ejecutar el comando fit , obtienes mucha salida, lo que da como resultado

Final set of parameters            Asymptotic Standard Error
=======================            ==========================

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

cuál es el resultado.

Además:

  • mida tantos puntos como sea posible
  • mida cada punto varias veces
  • si una función lineal no coincide bien con sus datos, considere usar una función no lineal.
respondido por el sweber
0

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 de si está utilizando o no amplificador de búfer. Usted dice que sus intentos "están fracasando", pero no los problemas que está teniendo, por lo que es difícil ofrecer más consejos que esos.

Los errores de ADC normalmente 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, dependiendo de la precisión de las resistencias.

La forma estándar de lidiar con esto es almacenar un coeficiente de calibración para el desplazamiento, y otro para ganancia, y aplicarlos de esta manera:

Vout = Vin * Cgain + Coffset

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

    
respondido por el Nick Johnson

Lea otras preguntas en las etiquetas