Комментарии 22
Спасибо, очень интересно! Сам в подобной ситуации усреднял десяток-другой измерений (секунд на 30). А окончание заряда отслеживал с выхода микросхемы зарядника tp4056
При этом очевидно, что когда аккумулятор разряжается, степень его заряженности может только снижаться, но никак не увеличиваться.
Строго говоря — может увеличиваться. После длительной разрядки высоким током (истощение приповерхностного слоя электролита) и перехода к длительному малопотреблению (диффузионное выравнивание концентраций) — возможно некоторое увеличение остаточной ёмкости (см. разрядные кривые для разных токов).
Это да. Но все-таки, это эффект кажущийся, реально новой энергии в аккумуляторе не вырабатывается. Так что еще строже говоря - не может)
Принесли прибор с мороза домой. Аккумулятор прогрелся, его внутреннее сопротивление упало, ЭДС возросла, фактическая доступная ёмкость выросла. Как это обрабатывать?
Да, энергия не вырабатывается. Но ёмкость вырасти — может.
Просто при большой токовой нагрузке — емкость падает. Условно: при токе С20 емкость 1 отн. ед.; при С10 — 0,95 отн… ед.; при С5 — 0,75 отн. ед. и т.д. Переход между кривыми — приносит/отнимает некоторое количество ёмкости.
Я использовал фильтр Калмана.
Смартфоны кстати умеют о таком режиме «зарядки» предупреждать: у меня показывает такую уведомляшку если включить GPS, интернет с картами и дисплей на 100% яркости (зарядное устройство в авто плохое). Но тут понятно, как говорилось в статье — обработка намного сложнее, да ещё и отдельным контроллером.
Как-то так:
если ( снятыеПоказания — предыдущиеПоказания > коэффициента ) обновитьПоказанияНаЭкране, предыдущиеПоказания = снятые показания
Все — т.е. если будет сильное падение — он его но покажет, тоже самое и с сильным увеличением и при этом дрожать не будет.
Если коэффициент взять как 1% от ( максимальногоНапряжения — минимальное ), мне кажется это будет достаточно и для отсутствия дерганья и минимизации погрешности.
Я как раз и писал в самом начале статьи, что «ваш» путь идеальный. Но там же я и написал, почему отказываюсь от него. Потому что либо монитор батареи будет едва ли не сложнее основного устройства, или придется добывать этот самый специальный контроллер, покупать под него программатор и программу для его зашивки и так далее.
А с аналоговым интегратором — это как? Вы сделаете на доступных компонентах аналоговый интегратор, который сможет интегрировать на протяжении хотя бы недели? Что-то сомневаюсь…
По поводу точности: а зачем она такая нужна в сущности? Мы не делаем измерительный прибор, нам нужно примерно знать, в каком состоянии находится аккумулятор. Описанный мной способ позволяет это делать, и делает это немного лучше, чем просто измерение напряжения в произвольные моменты времени с усреднением.
Я не знаю, кто первым это сказал, но в той или иной форме эта мысль активно циркулировала по советской литературе.… Так что внутреннее сопротивление тут ни при чем .....
Вполне себе в современной циркулирует. Не вчитывался, но вот "Theory and Implementation of Impedance Track™ Battery Fuel-Gauging Algorithm in bq2750x Family":
Summary of the Algorithm Operation
The gas gauge algorithm uses three types of information to calculate remaining capacity (DataRAM.Remaining Capacity( )) and full-charge capacity (DataRAM.Full Charge Capacity( )).
Chemical: depth of discharge (DOD) and total chemical capacity Qmax
Electrical: internal battery resistance dependence on DOD
External: load and temperature
DataRAM.Full Charge Capacity( ) is defined as the amount of charge passed from a fully charged state until the voltage defined in DF.Terminate Voltage flash constant is reached at a given rate of discharge, after subtracting the reserve capacity (DF.Reserve Capacity).
Note that DataRAM.Full Charge Capacity( ) depends on the rate of discharge and is lower at higher rates and low temperatures because the cell I*R drop causes the Terminate Voltage threshold to be reached earlier.
А с аналоговым интегратором — это как? Вы сделаете на доступных компонентах аналоговый интегратор, который сможет интегрировать на протяжении хотя бы недели? Что-то сомневаюсь…
Периодический сброс с переносом накопленного в цифру в помощь. Хотя, конечно, может быть проще и по другому.
По поводу точности: а зачем она такая нужна в сущности? .....
Пожалуй — да.
Я не отрицаю существования зависимости внутреннего сопротивления от уровня заряда. Она есть. Но изменение напряжения по мере разряда отнюдь не связано только с ней, более того - при токах на уровне 0,1C и ниже влияние внутреннего сопротивления ничтожно мало на всех этапах разряда.
По поводу точности: а зачем она такая нужна в сущности? .....
Правильный вопрос, с него и надо было начинать и заканчивать статью. Какую точность дают известные алгоритмы в зависимости от температуры, циклов заряда/разряда, технологических отклонений, типов полимеров, частотных свойств входного сопротивления нагрузки. На рынке есть много готовых решений в виде миниатюрных микросхем BMS, которые могут еще и посчитать уровень деградации (State of health).
А если надо просто приблизительно знать с погрешностью +-50% - ну ок, авторский вариант наверно и подойдет
Измерять Кулоны - это круто... А надо ли ? У нас на работе десятки Серверов как раз с "интеллектуальными" UPS, считающими Кулоны. И это довольно нудно,- перед запуском в эксплуатацию каждый UPS надо калибровать, т.е. вставить новые аккумуляторы, полностью зарядить их, потом полностью разрядить, затем опять полностью зарядить батарею. На это уходит часа 3, а в это время контроллер UPS считает Кулоны. После замены аккумуляторов - опять калибровка. А Сервер простаивает, а должен работать 24/7. Играться с Кулонами некогда. Поэтому, гораздо практичнее иметь простую индикацию заряда батареи. Тем более, что в процессе эксплуатации емкость падает и НЕ контролируется. А программы отключения по снижению питания срабатывают по Напряжению, а не по оставшейся Емкости. Такая же история с любыми батареями,- от автомобилей до смартфонов. Измерять Кулоны - это круто. Можно похвалиться перед пацанами. А оно Вам надо ? (Как говорят в Одессе).
Позволю себе дополнить, т.к. сам увлекся этой темой. При подключении зарядки из-за поднятия напряжения процент не будет соответствовать действительности (зато факт сильного подъёма напряжения служит индикатором подключения зарядки без использования дополнительного вывода под светодиод модуля зарядки). Если зарядку отключить, процент опять упадёт. Но, если при подключении зарядки запомнить напряжение до старта зарядки и усреднённые первые несколько значений после старта зарядки, то можно в отображаемом проценте учесть суммой два значения: процент до старта зарядки и некой нелинейной функцией оставшийся процент от напряжения на момент старта зарядки до финального напряжения. Например, зарядку подключили на 80% 4.0В и напряжение выросло до 4.15В, но это не повод показывать 95%, вместо этого оставшиеся 0.05В примем за оставшиеся 20% и по мере повышения напряжения отобразим 80%+N%. Тут конечно нужно учесть по вашей схеме колебания, плюс рост нелинейный. Возможно нужна эмпирика. Главное при отключении зарядки добиться совпадения процентов. Я пока на этой стадии, потому и наткнулся на вашу статью, в надежде, что есть готовое решение.
О реализации индикатора батареи в устройствах на МК