Medición de voltaje STM32 VBAT ADC incorrecta en voltajes bajos

Tengo un problema con la medición de voltaje VBAT en un STM32F401VB. Como se puede ver en la imagen a continuación, la salida del ADC es correcta (idéntica al valor calculado "ADC Should") en la región superior del voltaje de entrada, pero incorrecta cuando el voltaje de entrada cae por debajo de aproximadamente 1V. graficoCon un voltaje de entrada de 0 V, el valor de ADC es 239 cuando debería estar cerca de cero. Los otros canales ADC funcionan como se esperaba, así que creo que esto tiene algo que ver con el circuito VBAT interno.

¿Alguien sabe a qué puede deberse esto?

¿Cuál es la impedancia de la fuente y cómo se conecta? Esto parece una gota de diodo Schottky.
" el pin V BAT está conectado internamente a un puente divisor por 2. Este puente se habilita automáticamente cuando se establece VBATEN, para conectar V BAT /2 al canal de entrada ADC1_IN17. Como consecuencia, el valor digital convertido es la mitad del V BAT Voltaje." Parece un problema de ST interno en la detección de IN17 cerca de tierra.
el divisor interno tiene una impedancia bastante alta y se necesita mucho tiempo de muestreo para tener los valores correctos. Aumente el tiempo y haga más de una lectura. ignorar el primero.
La fuente es un divisor de voltaje conectado a la batería, pero su impedancia no debería importar ya que el voltaje VIN es el voltaje en el pin VBAT, por lo que solo debería importar el circuito interno. El tiempo de muestreo ya está en el valor más alto y el valor medido no depende del voltaje conectado al canal que se convierte antes del canal VBAT, por lo que no creo que el problema sea el tiempo de carga del capacitor de muestreo. Pero para asegurarme, intentaré bajar el reloj ADC y realizar múltiples mediciones de VBAT como sugirió.
Cualquiera que sea la causa del error, si solo afecta la precisión de Vbat, cualquier cosa por debajo de 1V está muerta de todos modos.
Estoy usando el ADC para medir un voltaje de entrada que está conectado a VBAT a través de un divisor de voltaje, por lo que necesito que tenga una precisión de aproximadamente 0,7 V. Desafortunadamente, usar un canal ADC regular no es una opción, ya que todos son necesarios para otra cosa. Podría corregir el error en el software, pero preferiría encontrar y corregir la causa real si es posible.
Bajar el reloj y muestrear varias veces antes de usar el resultado no cambia el valor, por lo que la alta impedancia del divisor de voltaje interno y el tiempo de carga del capacitor de muestreo no son el problema.
¿Está midiendo el voltaje en el pin Vin real? Quiero decir, ¿hay una conexión directa de cobre desde donde está midiendo hasta la entrada del ADC? ¿No hay resistencias, amortiguadores o cualquier otro circuito en serie?
Si este es un pin VBAT especial, no un pin ADC estándar, es posible que no se hayan molestado en hacerlo funcionar por debajo de 1V.
Parece que no hiciste nada malo y tu expectativa es válida. Esto es algo que debe abordar directamente con ST. Estoy seguro de que tienen un ingeniero de aplicaciones de campo que puede ayudar. O si no, un foro donde alguien de ST pueda plantear y responder la pregunta.
Sí, medí directamente en el pin. Me puse en contacto con ST y básicamente respondieron "Estás usando el pin VBAT fuera de sus especificaciones (por debajo del voltaje mínimo)". Entonces parece que el pin no está conectado directamente al ADC a través de un divisor de voltaje, sino a través de un circuito que no funciona por debajo de 1V.

Respuestas (1)

Parece que podría estar relacionado con el ruido. Suponiendo que lo sea, puedes probar:

  • Establecer un tiempo de muestra más largo en el ADC y ver si los valores finales inferiores mejoran. Si eso mejora un poco, entonces tal vez incluso tome 4-5 lecturas y promedie (ignorando potencialmente la primera).
  • Medir la entrada al ADC con un alcance y ver si realmente hay un piso de ruido de alrededor de 0.5v (parece extraño, pero depende de qué más haya en el circuito)
  • Potencialmente verifique si hay un pin de fuente de alimentación separado para el ADC. VREF o AVCC a veces se llama pero depende del chip. (Sé que algunos chips STM32 tienen esto) y adjunte tapas y ferritas para hacer que el voltaje de referencia sea más limpio.
  • En el peor de los casos, intente usar un pin ADC externo para su batería y vea si eso es mejor. Si es así, parece exclusivo del circuito VBAT ADC interno, lo que podría ser un problema de STM y no el suyo. (Consulte los documentos de errata de su chip. Normalmente publicarán problemas conocidos allí)
El tiempo de muestra ya está en el valor más alto y el ruido medido es mucho más bajo que 0.5V. Los otros pines ADC funcionan bien, pero desafortunadamente todos se usan para otra cosa, así que tengo que usar el pin VBAT. Creo que el pin VBAT no está conectado directamente al ADC a través de un divisor de voltaje (como se describe en la hoja de datos), sino a través de un circuito que no funciona por debajo de 1V. La errata no menciona esto, pero cuando me comuniqué con ST obtuve la respuesta "Está utilizando el pin VBAT fuera de sus especificaciones (por debajo del voltaje mínimo)". Así que supongo que no podré hacerlo funcionar.
Sí, al mirar la hoja de datos, lo está usando por debajo de sus límites.