La referencia de voltaje muestreada por ADC (12 bits) da un valor que está fuera de lugar por más puntos que otras mediciones

Estoy usando la referencia de voltaje TI REF3020 (2048 mV) en combinación con un microcontrolador para tener una referencia para las mediciones de voltaje.

El microcontrolador está alimentado por 5 V (5,00 V), la referencia ADC de MCU también está configurada en 5,00 V. Debido al hecho de que no quiero confiar en que los rieles VDD sean referencialmente estables, quería agregar una referencia de voltaje de precisión.

En mis configuraciones de prueba, puedo medir fácilmente el voltaje VDD (referencia ADC) y calcular el voltaje a tierra de un pin de entrada ADC. Para fines de prueba, utilicé una fuente de alimentación externa como entrada para un pin ADC. Después de medir el voltaje en el pin con un osciloscopio y un DMM, la MCU midió, sin más calibración, el voltaje real correcto hasta el LSB del ADC. (Estoy usando un ADC de 12 bits) Este experimento se llevó a cabo con éxito con múltiples voltajes entre 0V y 5V.

Además, utilicé la referencia de voltaje REF3020 mencionada anteriormente en la misma configuración como entrada para un ADC. Tanto el osciloscopio como el DMM confirmaron con precisión 2.048V. Al medir el mismo voltaje con la MCU a través de un ADC, el valor se desvió en 15 puntos. En lugar de un valor de bit de 1677, la MCU midió 1663:

tu = 1663 4095 5 V 2.0305 V

El valor medido por la MCU no oscila ni se desplaza con el tiempo y la temperatura (para ser honesto, una ventana relativamente estrecha) que probé. El valor (promedio) se mantiene constantemente en 1663. Sin promediar, el valor oscila entre un mínimo de aproximadamente 1660 y 1666. Sin embargo, la influencia de la temperatura debería ser insignificante, porque el otro experimento se realizó a la misma temperatura (temperatura ambiente).

Para esta aplicación, estoy usando un promedio de 128 muestras en una ventana de tiempo de aproximadamente 4 ms. Incluso traté de hacer la muestra y comparar tiempos más largos. Tampoco ayudó.

La referencia de voltaje es incluso de alta corriente. Puede suministrar de forma segura hasta 25 mA según la hoja de datos. Esto debería ser suficiente para ser muestreado por un solo canal ADC. No hay otras cargas conectadas a la referencia de tensión.

Fácilmente podría calibrar el error de compensación, pero esto en esencia anularía todo el propósito de la referencia de voltaje en esta aplicación.

¿Cuál más podría ser la causa de esta desviación que se manifiesta solo al medir el voltaje de salida de la referencia de voltaje?

Proporcione un esquema. Cosas como la puesta a tierra o el desacoplamiento de condensadores podrían ser importantes, y con un esquema no tenemos que jugar el juego de adivinanzas.
¿Será que la referencia es más precisa que los rieles de suministro? Sería útil si tiene otras referencias de precisión para verificar, si ve un desplazamiento constante, entonces el búfer adc probablemente tenga algún sesgo o algo así, si ve un error de ganancia constante, entonces la referencia interna del adc puede ser ligeramente bajo (ya que las probabilidades de que varias referencias diferentes estén ratiométricamente fuera son realmente bajas). Es posible que la referencia sea simplemente baja, está fuera para 2030.5/2048 = 0.85 % si está especificado a más del 1 %, algunas referencias de deriva ultrabaja tienen una amplia variabilidad de voltaje
¿Qué observa si sondea el pin de entrada del ADC con su osciloscopio, con la referencia de voltaje conectada, mientras el ADC está muestreando? ¿El pin de entrada del ADC es estable a 2,048 V (lo que sugiere que el ADC está apagado por algún motivo) o se hunde (lo que sugiere otro tipo de problema)?
@marcelm Tanto la referencia de voltaje como los rieles probados con el osciloscopio y un DMM muestran 5,00 V estables (a veces 4,99 V) y 2,048 V, respectivamente. EDITAR: Como dice la hoja de datos, no se necesitan condensadores adicionales (desacoplamiento), no agregué ninguno en mi diseño actual. Veré qué puedo hacer con el esquema.
@Tom No parece haber un error de ganancia significativo, ya que las mediciones parecen alinearse cerca de 0V y 5V siempre que no use el ADC para medir la referencia de voltaje. Sondear la referencia de voltaje con un osciloscopio muestra 2,048 V estables.
¿Qué tipo de referencias está utilizando "cerca de 0V y 5V"? FYI, la mayoría de los osciloscopios son solo 8 bits o 16 veces menos precisos (1LSB = 19 mV frente a 1,2 mV para el ADC 12b asumiendo una escala de 5 V en ambos, no garantizado) que su ADC de 12 bits, por lo que no confiaría en él para mediciones de precisión. ¿La precisión es crítica en su aplicación o solo la resolución? De lo contrario, es posible que deba calibrar el ADC, en cuyo caso necesitará varias referencias de alta precisión a diferentes voltajes (12b = 4096 niveles, por lo que 1LSB = 1,2 mV = 0,025 % )
@Tom Usé una fuente de alimentación ajustable medida con un osciloscopio y confié en el valor dado por el osciloscopio y no en la pantalla de la fuente de alimentación. Para ser honesto, para esta aplicación, la precisión no es tan crítica, pero me sorprendió que la parte "más precisa" de mi circuito fuera la que más se desviaba del valor nominal en mis mediciones. Pensé en usar múltiples referencias de precisión para calibrar el ADC, pero como dije, esto sería excesivo para mi aplicación.
¿Qué te hace pensar que es la referencia la que está fuera y no los rieles de suministro? El osciloscopio tiene más errores internos de los que está midiendo con el ADC de 12b, cualquier desviación de 5V, cualquier ruido, sesgo interno, etc. descartará sus mediciones. A menos que tenga una fuente de alimentación de la serie HP 662x o equivalente, tampoco confiaría en su precisión
También agregaré que su cálculo es incorrecto. Debería dividir por 4096 ya que hay tantos pasos.

Respuestas (2)

Intente proporcionar un poco más de tiempo de estabilización (unos pocos mseg) antes de realizar cada medición. Con esto me refiero al tiempo entre el momento en que se selecciona el canal ADC y el momento en que comienza la conversión. Uso el REF3020 y tiene una respuesta deficiente a los cambios en la carga, aunque puede proporcionar una corriente alta en una carga fija. No lo verá con un multímetro digital o incluso con un osciloscopio porque es difícil ajustar muy bien el gatillo.

¡Perfecto, gracias! Después de aumentar aún más el tiempo de muestreo, ahora obtengo el valor correcto.

No creo que estés usando la referencia de voltaje de la mejor manera. Usted escribió "El microcontrolador está alimentado por 5 V (5,00 V), la referencia ADC de MCU también está configurada en 5,00 V". por lo que en realidad está utilizando su riel de 5V como referencia del ADC. No está utilizando 2.048V como referencia de ADC. Por lo tanto, su ADC solo puede ser tan preciso como su riel de 5V.

Lo que realmente quiere hacer es conectar el voltaje de referencia de 2.048 V a la entrada ADC VREF de la MCU y configurar la MCU para usar eso como su referencia. Esto significa que su riel de 5 V puede moverse hacia arriba y hacia abajo a medida que las cargas van y vienen, pero su ADC siempre leerá la escala completa exactamente con el voltaje de referencia VREF IN.

La desventaja es que esto significa que las lecturas de escala completa están limitadas a 2.048V. Es por eso que normalmente uso una referencia de 4.096 V y cualquier voltaje que necesito leer por encima de 4 V, lo reduzco con resistencias y/o amplificadores operacionales.

Además, asegúrese de leer las especificaciones de nuestro ADC. Incluso con una referencia de voltaje perfecta, el ADC tendrá algún error. El precio que pagó generalmente dicta qué tan pequeño es este error. Aquí hay un buen artículo sobre cómo leer las especificaciones de ADC . Espero que ayude.