Хотелось бы красиво нарисовать на дисплее более-менее достоверный градусник-батарейку и текстом вывести уровень заряда в % с шагом в 10 пунктов, к примеру.
Правильно ли думаю, что мне нужно взять планируемый к использованию тип аккумулятора (например Li-Ion 18650), дать на МК типовую нагрузку и отрисовать кривую разряда такого вида, как приведена ниже, и уже по ней расчитать процентовку?
Либо же могу не заморачиваться, опереться на любую картинку с графиком разряда Li-Ion, взятую из интернета (выше - покрадена у Adafruit) и получить сносный результат? Или есть какие-то волшебные формулы перевода mV → %% (кроме map) , которые следует на секретных форумах поискать?
Так на старом форуме Dimas выкладывал код, где не надо никаких делителей. Измерение происходит внуренними ресурсами контроллера. Ну а саму кривую в прогмем, всё правильно. Особенно растянуть делениями на последнем участке графика.
Ну тогда будете зависить от термостабилькости делителя. Да и делитель всегда сам разряжает акум. Недавно rkit приводил код питание девайса от батареек. Там, с его слов, вроде есть кусок кода для измерения напряжения батареек, питающих девайс на ESP32. К сожалению, у меня не было установленных инструментов для компиляции, и проверить правду о 3 годах работы от батареек ESP32 без замены источников питания у меня не получилось.
Это делается мапом. Его отклонение всё равно будет меньше температурных коэффициентов и подобного. Если действительно надо точно знать, то используют микросхемы fuel gauge, которые интегрируют ток заряда/разряда.
В дешевых телефонах формой кривой не заморачиваются, тупо аппроксимируют палкой и всё. Поэтому, видишь, что осталось 15% - ставь на зарядку, через 10 минут телефон мигнет в последний раз и отключится. Особенно заметно на уже пожилых аккумуляторах.
Мерить статистикой под конкретный аккум, да. Но возможно тогда, когда акк будет плавно изнашиваться, то показометр начнёт врать, а под новый акк опять составлять таблицу. Так что в идеале прикрутить спец чип fuel guage, который сам всё мониторит, а с него по I2C эпизодически получать пакет данных, включая даже очень полезные, например оставшееся время работы при усреднённой нагрузке. Покупать их дороговато, но можно из убитых акков вынуть какой-нибудь вумный контроллер. Вон в айфонах применяют на батарее контроллер bq27541 , по нему все доки и библиотека под ардуину есть. Найти где нить старый аккум, препарировать, отресетить чип, он познакомится с новым акком, и будет выдавать новые правдивые данные. Но это в теории, я ещё не пробовал)
Пока тут сражение не началось, напишу, что делитель изначально смонтирован на плате (TTGO так делает по дефолту) и сдувать его сложновато для меня, поэтому я решил сначала вариант с набортным делителем откатать. Особой точности пока не ищу, т.к. не совсем определился какого порядка цифирь достаточна. В процессе подбора, вобщем.
как бы даже если выдать достаточно точные цифры % заряда, это мало о чем говорит без знаний токов потребления, самой емкости АБ и-или статистики использования девайса.
Т.е. почти бесполезная мулька для непосвященных, а для посвященных примерно аналогичную информацию даст просто текущее напряжение АБ.
Стационарного контрольного вольтметра, которому можно доверять, у меня не имеется, поэтому напряжение - это величина, которую рассчитывает унутре себя сама 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 вольт