Правильное отображение уровня заряда аккумулятора

Имею к благородным донам вопрос общепрактического характера…

Есть у меня “ардуина” с аккумуляторным питанием и измерительным щупом типа “делитель”.

Хотелось бы красиво нарисовать на дисплее более-менее достоверный градусник-батарейку и текстом вывести уровень заряда в % с шагом в 10 пунктов, к примеру.

Правильно ли думаю, что мне нужно взять планируемый к использованию тип аккумулятора (например Li-Ion 18650), дать на МК типовую нагрузку и отрисовать кривую разряда такого вида, как приведена ниже, и уже по ней расчитать процентовку?

Либо же могу не заморачиваться, опереться на любую картинку с графиком разряда Li-Ion, взятую из интернета (выше - покрадена у Adafruit) и получить сносный результат? Или есть какие-то волшебные формулы перевода mV → %% (кроме map) , которые следует на секретных форумах поискать?

Так на старом форуме Dimas выкладывал код, где не надо никаких делителей. Измерение происходит внуренними ресурсами контроллера. Ну а саму кривую в прогмем, всё правильно. Особенно растянуть делениями на последнем участке графика.

У меня ESP32, для него я не видел секретных мультиметров.
Вопрос у меня пока только в способе формирования кривой.

Имхо, замер будет точнее кривой из даташита

Между 4.2 (100%) и 3.6 (10% заряда) график почти линейный, так что для не слишком прецизионных измерений можно и МАПом обойтись

Ну тогда будете зависить от термостабилькости делителя. Да и делитель всегда сам разряжает акум. Недавно rkit приводил код питание девайса от батареек. Там, с его слов, вроде есть кусок кода для измерения напряжения батареек, питающих девайс на ESP32. К сожалению, у меня не было установленных инструментов для компиляции, и проверить правду о 3 годах работы от батареек ESP32 без замены источников питания у меня не получилось.

Это делается мапом. Его отклонение всё равно будет меньше температурных коэффициентов и подобного. Если действительно надо точно знать, то используют микросхемы fuel gauge, которые интегрируют ток заряда/разряда.

В дешевых телефонах формой кривой не заморачиваются, тупо аппроксимируют палкой и всё. Поэтому, видишь, что осталось 15% - ставь на зарядку, через 10 минут телефон мигнет в последний раз и отключится. Особенно заметно на уже пожилых аккумуляторах.

Мерить статистикой под конкретный аккум, да. Но возможно тогда, когда акк будет плавно изнашиваться, то показометр начнёт врать, а под новый акк опять составлять таблицу. Так что в идеале прикрутить спец чип fuel guage, который сам всё мониторит, а с него по I2C эпизодически получать пакет данных, включая даже очень полезные, например оставшееся время работы при усреднённой нагрузке. Покупать их дороговато, но можно из убитых акков вынуть какой-нибудь вумный контроллер. Вон в айфонах применяют на батарее контроллер bq27541 , по нему все доки и библиотека под ардуину есть. Найти где нить старый аккум, препарировать, отресетить чип, он познакомится с новым акком, и будет выдавать новые правдивые данные. Но это в теории, я ещё не пробовал)

1 лайк

И с какой периодичностью Вы рекомендуете делать замер (чтобы учесть степень износа аккумулятора)?

Шаг в 10% это в данном случае прецизионные измерения или нет?

1 лайк

@andriano включил режим зануды :sweat_smile:

1 лайк

думается это будет самое простое и достоверное решение, да и не дорого, как мне кажется.
https://aliexpress.ru/item/4000007759641.html

Пока тут сражение не началось, напишу, что делитель изначально смонтирован на плате (TTGO так делает по дефолту) и сдувать его сложновато для меня, поэтому я решил сначала вариант с набортным делителем откатать. Особой точности пока не ищу, т.к. не совсем определился какого порядка цифирь достаточна. В процессе подбора, вобщем.

Про специальные контроллеры читал.

как бы даже если выдать достаточно точные цифры % заряда, это мало о чем говорит без знаний токов потребления, самой емкости АБ и-или статистики использования девайса.
Т.е. почти бесполезная мулька для непосвященных, а для посвященных примерно аналогичную информацию даст просто текущее напряжение АБ.

Прошу прощения за перерыв - набирал статистику.
Итого, имеем разрядную кривую, cнятую в режиме реального времени в рабочем режиме:

Стационарного контрольного вольтметра, которому можно доверять, у меня не имеется, поэтому напряжение - это величина, которую рассчитывает унутре себя сама ESP32 (с учетом калибровки). ADC - считавывшиеся с АЦП показания (raw). В принципе - на реальность похоже: полный заряд ~4.2V , защита на батарее отработала при ~2,8V.

С отсечкой на 3V чистый map (красная линия) похоже, не будет отражать реальность , но при делении кривой на 2 сегмента можно map (оранжевая линия) и заюзать.

Согласен с тем, что по напряжению ситуация более прозрачна для того, кто знает начальное и конечное напряжение, а так же держит в голове график зависимости.

Однако, процент - величина безразмерная, от типа батареи не зависит и не требует постоянных вычислений в голове. Поэтому для бытовой задачи “вовремя подзарядить”, думаю, вполне себе подходит. И, с тем, что, что два резистора специальной микросхемы не заменят, тоже спорить не буду.

Интересно, конечно, что на графике в конце получится с параллельно соединенными 18650, одна из которых подуставшая…

Гриш, ты уверен что тебе так нужен второй сегмент оранжевой линии? Я свои акумы не разряжаю ниже 3.5 - 3.6 вольт. Там нагрузочная способность уже никакая. А защита в 2.8в - это очень низко, литий-йон начинает деградировать ниже 3.2

Это ж эксперимент. Я пока с батареями не особо дружу - только в пульт вставляю.

К тому же адафрут на 3.0 отсечку делает, в статейках тоже пишут, что 3,0 V- это OK для выключения, ещё на саморазряд останется. Но, мол, на всякий медикал и уличные условия, конечно, лучше до прямой резкого падения не доходить.

Most mobile phones, laptops and other portable devices turn off when the lithium-ion battery reaches 3.00V/cell on discharge. At this point the battery has about 5 percent capacity left. Manufacturers choose this voltage threshold to preserve some energy for housekeeping, as well as to reduce battery stress and allow for some self-discharge if the battery is not immediately recharged.

2.8 нормально при хорошей нагрузке. Тогда при отключении напряжение на батарее поднимается до 3 и выше, и ничего не деградирует. А если нагрузка на батарею копеечная, тогда да, тогда лучше делать отсечку от 3 вольт