Supervisión del voltaje de la batería STM32L071KZ a través de ADC

Perdón por la pregunta de novato. No encontré aquí ninguna pregunta y respuesta que pueda ayudarme con este problema, así que decidí preguntar.

Estoy diseñando mi primer circuito con el microcontrolador STM32L071KZ y se alimenta a través de VBUS (USB, 5V) como suministro principal y 2 pilas alcalinas AA (3V) como suministro secundario.

las fuentes de alimentación están reguladas a 3,3 V, por lo que el microcontrolador y el resto del circuito están alimentados por voltaje regulado y no directamente desde VBUS o baterías.

Me gustaría monitorear el nivel de voltaje de las baterías y cuando caiga por debajo del umbral específico (por ejemplo, 2.2V) se lo indicaré al usuario.

Me pregunto cómo conectar las cosas. El VDD del microcontrolador es 3.3v y es igual a VDDA. Si lo hice bien, cuando tome una muestra del voltaje de la batería, obtendré un valor constante porque la muestra es la relación entre VDD y VDDA.

Este es mi diagrama de bloques del circuito de alimentación para aclarar las cosas:

ingrese la descripción de la imagen aquí

¡Muchas gracias!

¿Realmente tienes que alimentar el controlador con 3,3 voltios? Funcionaría felizmente con cualquier valor entre 1,8 V y 3,6 V, y tiene sus propias instalaciones de supervisión de la fuente de alimentación; consulte Detector de voltaje programable y umbral de caída de tensión en el Manual de referencia. Por supuesto, si necesita exactamente salidas de 3,3 V, no se aplica.
Hace que el ADC realice una medición en la referencia de voltaje de banda prohibida interna, muy similar a mi respuesta aquí a una pregunta sobre cómo hacer esto en un PIC. La referencia de su STM32 es diferente (1.224V en lugar de 1.024V), pero el principal es el mismo.
@brhans midiendo la referencia interna antes de medir la entrada analógica podría ayudar a mejorar un poco la precisión (a través del cálculo de Vref+ real de Vrefint). Sin embargo, eso no es de lo que se trata su respuesta referenciada.
@Maple: mi respuesta a la que se hace referencia describe cómo usar la banda prohibida interna para medir el Vdd del micro. No está usando esa banda prohibida como referencia del ADC. Vdd es la referencia del ADC y la banda prohibida es la entrada que se mide. Dado que la brecha de banda es constante y Vdd varía, el resultado del ADC se usa como una medida de Vdd. No se requieren divisores de tensión.
Eso es exactamente lo que dije, suponiendo que Vref+ se calcule de esta manera (no Vdd o Vdda) antes de medir la entrada real del ADC. Vdd/Vdda no son referencias ADC en STM32, Vref+ sí lo es. El 1.224V que mencionó anteriormente es Vrefint, y no se puede usar como referencia de ADC en absoluto.
@Maple: el OP escribe "cuando muestree el voltaje de la batería, obtendré un valor constante porque la muestra es la relación entre VDD y VDDA", lo que me lleva a la conclusión de que está conectado Vref + y VDDA juntos porque no No tiene una referencia externa. Y 13.12.1 en la hoja de datos STM32L071 dice "Permite un monitoreo preciso del valor VDD (cuando no hay voltaje externo, VREF+, disponible para ADC)".
Te niegas a entender lo que estoy diciendo, pensando que estoy discutiendo contigo, lo cual no es así. Intentémoslo de nuevo: el voltaje medido por ADC es relativo al voltaje Vref+. Esto es cierto para el voltaje de la batería en el pin de entrada del ADC y para el voltaje de banda prohibida Vrefint disponible internamente. Al medir Vrefint, Vref+ se puede calcular y usar más tarde para calcular el voltaje de la batería medido. Si Vref+ está o no conectado a Vdd o Vdda o ambos (o incluso una referencia externa) es completamente irrelevante para estos cálculos.

Respuestas (1)

Debe asegurarse de que las baterías que use nunca superen los 3,3 V. Si esa es una posibilidad con baterías nuevas, debe considerar agregar un divisor de voltaje para reducir la entrada ADC a un rango aceptable. Sin embargo, esto aumentará el consumo de energía de las baterías. La cura habitual para esto es agregar un interruptor MOSFET entre la batería y el ADC, controlado por otro pin MCU. La MCU abrirá el interruptor periódicamente, medirá el voltaje y lo cerrará. Ver esta pregunta por ejemplo.

Además, el diodo entre Boost DC-DC y Vdd caerá un poco de voltaje (dependiendo de la corriente y el diodo), por lo que es posible que desee ajustar la salida de refuerzo a un voltaje ligeramente más alto.

Tenga en cuenta que el convertidor Boost agotará la batería incluso si el USB está conectado. Además, su LDO debe producir un voltaje más alto que DC-DC para que el diodo se cierre, algo así como 3.4~3.5V

Por lo tanto, sugeriría usar un adaptador de CC de barril y un conector con interruptor mecánico que desconectará la batería cuando se conecte la alimentación, u otro interruptor MOSFET que desconectará la batería cuando haya voltaje USB. Vea esta pregunta para una discusión relevante.

Aparte de eso, su circuito se ve bien.