Контроль напряжения батареи STM32L071KZ через АЦП

Извините за новый вопрос. Я не нашел здесь никаких вопросов и ответов, которые могли бы помочь мне в этом вопросе, поэтому я решил задать его.

Я разрабатываю свою первую схему с микроконтроллером STM32L071KZ , и она питается через VBUS (USB, 5 В) в качестве основного источника питания и от 2 щелочных батарей типа АА (3 В) в качестве вторичного источника питания.

источники питания регулируются до 3,3 В, поэтому микроконтроллер и остальная часть схемы питаются от регулируемого напряжения, а не напрямую от VBUS или батарей.

Я хотел бы контролировать уровень напряжения аккумуляторов и когда он падает ниже определенного порога (например, 2,2В) я укажу это пользователю.

Интересно, как связать вещи. VDD микроконтроллера составляет 3,3 В и соответствует VDDA. Если я правильно понял, то при выборке напряжения батареи я получу постоянное значение, потому что выборка представляет собой соотношение между VDD и VDDA.

Это моя блок-схема цепи питания, чтобы все было ясно:

введите описание изображения здесь

Большое спасибо!

Вам действительно нужно подавать на контроллер 3,3 Вольта? Он с удовольствием работает при напряжении от 1,8 В до 3,6 В и имеет собственные средства контроля электропитания, см. « Программируемый детектор напряжения и порог снижения напряжения» в Справочном руководстве. Конечно, если вам нужны выходы именно 3,3В, это не касается.
У вас есть АЦП, выполняющий измерение опорного напряжения внутренней запрещенной зоны - почти так же, как мой ответ здесь на вопрос о том, как сделать это в PIC. Эталон вашего STM32 отличается (1,224 В вместо 1,024 В), но принцип тот же.
@brhans, измеряющий внутреннее опорное значение перед измерением аналогового входа, может помочь несколько повысить точность (путем вычисления фактического Vref+ из Vrefint). Однако это не то, о чем ваш упомянутый ответ.
@Maple - мой упомянутый ответ описывает, как использовать внутреннюю запрещенную зону для измерения Vdd микро. Он не использует эту запрещенную зону в качестве эталона АЦП. Vdd — эталон АЦП, а ширина запрещенной зоны — измеряемый вход. Поскольку ширина запрещенной зоны постоянна, а Vdd меняется, результат АЦП используется как мера Vdd. Делители напряжения не требуются.
Это именно то, что я сказал, предполагая, что Vref+ рассчитывается таким образом (а не Vdd или Vdda) до измерения фактического входа АЦП. Vdd/Vdda не являются ссылками АЦП в STM32, Vref+ является. Упомянутое выше напряжение 1,224 В — это Vrefint, и его вообще нельзя использовать в качестве эталона АЦП.
@Maple - ОП пишет: «Когда я проверю напряжение батареи, я получу постоянное значение, потому что выборка представляет собой соотношение между VDD и VDDA», что приводит меня к выводу, что он соединил Vref + и VDDA вместе, потому что он не не иметь внешней ссылки. А 13.12.1 в техническом описании STM32L071 гласит: «Это обеспечивает точный мониторинг значения VDD (когда для АЦП не доступно внешнее напряжение, VREF+)».
Вы отказываетесь понимать, что я говорю, думая, что я спорю с вами, а это не так. Давайте попробуем еще раз: напряжение, измеренное АЦП, относится к напряжению Vref+. Это верно для напряжения батареи на входном контакте АЦП и для напряжения запрещенной зоны Vrefint, доступного внутри. Измерив Vrefint, можно рассчитать Vref+ и использовать его позже для расчета измеренного напряжения батареи. Независимо от того, подключен ли Vref+ к Vdd или Vdda или к обоим (или даже к внешнему эталону), для этих расчетов совершенно не имеет значения .

Ответы (1)

Вы должны убедиться, что используемые вами батареи никогда не превышают 3,3 В. Если это возможно со свежими батареями, вам следует рассмотреть возможность добавления делителя напряжения, чтобы снизить входной сигнал АЦП до приемлемого диапазона. Однако это увеличит потребление энергии от батарей. Обычным решением для этого является добавление переключателя MOSFET между батареей и АЦП, управляемого другим выводом MCU. MCU будет периодически размыкать переключатель, измерять напряжение и замыкать его обратно. См., например, этот вопрос .

Кроме того, диод между Boost DC-DC и Vdd будет снижать некоторое напряжение (в зависимости от тока и диода), поэтому вы можете захотеть настроить выход Boost на немного более высокое напряжение.

Обратите внимание, что конвертер Boost разряжает батарею, даже если USB подключен. Кроме того, ваш LDO должен производить более высокое напряжение, чем DC-DC, чтобы диод закрывался, что-то вроде 3,4 ~ 3,5 В.

Итак, я бы предложил либо использовать цилиндрический адаптер постоянного тока и разъем с механическим переключателем, который отключит аккумулятор при подключении питания, либо другой переключатель MOSFET, который отключит аккумулятор при наличии напряжения USB. См. этот вопрос для соответствующего обсуждения.

В остальном ваша схема выглядит нормально.