Skip to content

add internal vbat charging#86

Open
noleynik wants to merge 2 commits intomainfrom
feature/vbat-charging
Open

add internal vbat charging#86
noleynik wants to merge 2 commits intomainfrom
feature/vbat-charging

Conversation

@noleynik
Copy link
Copy Markdown


Что происходит; кому и зачем нужно:
Согласно схеме у нас на диоде падает напряжение с 3,3 до 2,6В, это напряжение не может заряжать мелкий часовой аккум. Решили включать дополнительно зарядку с помощью VBAT с самой стмки. Заряжает через внутренний 1,5 кОм резистор (есть еще 5 кОм, но т.к. у нас последовательно стоит еще 3 кОм, то 1,5 оптимально). Алгоритм простой: проверяем напряжение на пине VBAT, если меньше 3В, то включаем зарядку на двое суток (ток мелкий + особенности аккума), периодически повторяем.


Что поменялось для пользователей:
часовой аккум будет подзаряжаться


Как проверял/а:
Проверка должна быть добавлена в таблицу Проверка устройств

на столе осциллом


Покрыл/а изменения юниттестом и если нет, то почему:
См. Юнит-тесты модулей прошивок микроконтроллеров

не требуется

@noleynik noleynik requested a review from pgasheev April 19, 2026 08:26
Comment thread src/mcu-pwr.c
mcu_poweron_reason = MCU_POWERON_REASON_POWER_ON;
}

PWR->CR4 |= PWR_CR4_VBRS; // enable 1.5 kOhm internal resistor for charging over VBAT
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это же никак не связано с poweron_reason, давай алгоритм заряда в отдельный файл

Comment thread debian/changelog
@@ -1,3 +1,9 @@
wb-ec-firmware (2.1.2) stable; urgency=medium
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2.2.0, плюс надо вытащить Vbat в карту регистров

Comment thread include/config_wb85.h
macro(ADC_VBAT, 7, GPIOA, 7, 10, 200.0 / 100.0 ) \
macro(ADC_HW_VER, 17, GPIOA, 13, 50, 1 ) \
macro(ADC_INT_VREF, 13, ADC_NO_GPIO_PIN, ADC_NO_GPIO_PIN, 50, 1 ) \
macro(ADC_INT_VBAT, 14, ADC_NO_GPIO_PIN, ADC_NO_GPIO_PIN, 10, 3.0 ) \
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Надо хорошо подумать про спящие режимы. Измерение Vbat же подключает делитель, т.е. разряжает батарейку? В спящем режиме как это работает? По идее работать не должно. Актуально, только когда включено питание

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И кстати, можно ещё подумать над тем, чтобы измерение Vbat делать редко, чтобы не разряжать батарейку, посмотри MWAC для примера, там вроде было что-то такое

Comment thread src/mcu-pwr.c

void mcu_check_vbat_do_periodic_work(void)
{
if (PWR->CR4 & PWR_CR4_VBE) {
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Статус алгоритма (идет/не идет заряд) тоже надо бы вытащить в карту регистров

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants