Pull to refresh

Comments 22

Спасибо, очень интересно! Сам в подобной ситуации усреднял десяток-другой измерений (секунд на 30). А окончание заряда отслеживал с выхода микросхемы зарядника tp4056

Тоже имеющий право на существование вариант. Но он хорошо отсекает дрожание индикатора от шумов, попадающих в АЦП, но не устраняет влияния включения дисплея, после которого такой индикатор сразу начинает бежать вниз. А сильно увеличивать время усреднения — это потерять оперативность. Мой вариант хорош именно тем, что на падение напряжения он реагирует моментально, при этом не шевелясь, когда не надо.
При этом очевидно, что когда аккумулятор разряжается, степень его заряженности может только снижаться, но никак не увеличиваться.

Строго говоря — может увеличиваться. После длительной разрядки высоким током (истощение приповерхностного слоя электролита) и перехода к длительному малопотреблению (диффузионное выравнивание концентраций) — возможно некоторое увеличение остаточной ёмкости (см. разрядные кривые для разных токов).

Это да. Но все-таки, это эффект кажущийся, реально новой энергии в аккумуляторе не вырабатывается. Так что еще строже говоря - не может)

Принесли прибор с мороза домой. Аккумулятор прогрелся, его внутреннее сопротивление упало, ЭДС возросла, фактическая доступная ёмкость выросла. Как это обрабатывать?

Для этого там есть один if, который сработает, если напряжение вырастет существенно. А если не сильно вырастет, то и Махадев с ним.

Да, энергия не вырабатывается. Но ёмкость вырасти — может.
Просто при большой токовой нагрузке — емкость падает. Условно: при токе С20 емкость 1 отн. ед.; при С10 — 0,95 отн… ед.; при С5 — 0,75 отн. ед. и т.д. Переход между кривыми — приносит/отнимает некоторое количество ёмкости.

Я использовал фильтр Калмана.

Ну, Калмана тут самое милое дело применять, только может быть, что-нибудь попроще?

UFO just landed and posted this here
Не хватает обработки случая, когда устройство продолжительное время на зарядке потребляет в единицу времени энергии больше, чем получает. Такое ведь в теории может быть. Допустим, устройство питается от солнечных панелей, и возникает необходимость в течении часа что-то усердно считать. Но вот незадача — погода испортилась и тучки набежали :( Я конечно понимаю, что мк и «считать» это странная связка, но…

Смартфоны кстати умеют о таком режиме «зарядки» предупреждать: у меня показывает такую уведомляшку если включить GPS, интернет с картами и дисплей на 100% яркости (зарядное устройство в авто плохое). Но тут понятно, как говорилось в статье — обработка намного сложнее, да ещё и отдельным контроллером.
Тут опять же, все аппаратурно-зависимо. Например, если делать на LTC4054, TP4056 и тому подобных — нужно делать еще и схему, которая при зарядке переключает питание устройства на внешний блок питания, а аккумулятор при этом только заряжается. Нельзя просто подключить схему заряда к аккумулятору с одной стороны, а питаемую схему с другой — так как в таком случае заряд не прекратится никогда. И в таком случае вообще этой проблемы не возникает. Если напряжение источника просаживается ниже допустимого — 4054 просто выставляет NOCHG и прекращает заряд. Более продвинутые контроллеры батареи умеют это делать сами, они выставляют более широкие данные о своей работе, иногда используя для этого какую-нибудь i2c, и тут уже дело техники считать этот статус и вывести его при необходимости на экран.
Мне кажется, что достаточно ввести коэффициент колебания, чтобы устранить все недостатки.

Как-то так:
если ( снятыеПоказания — предыдущиеПоказания > коэффициента ) обновитьПоказанияНаЭкране, предыдущиеПоказания = снятые показания

Все — т.е. если будет сильное падение — он его но покажет, тоже самое и с сильным увеличением и при этом дрожать не будет.

Если коэффициент взять как 1% от ( максимальногоНапряжения — минимальное ), мне кажется это будет достаточно и для отсутствия дерганья и минимизации погрешности.
UFO just landed and posted this here
Вы впадаете в очень распространенное заблуждение, будто бы при разрядке гальванического элемента или аккумулятора ЭДС постоянна, а растет внутреннее сопротивление. Я не знаю, кто первым это сказал, но в той или иной форме эта мысль активно циркулировала по советской литературе. На самом деле, только в очень редких случаях это верно. Примером такого редкого случая является нормальный элемент Вестона, с некоторой натяжкой — ртутно-цинковый элемент и литий-металлический. В литий-ионном аккумуляторе в процессе заряда и разряда меняются концентрации лития в активной массе электродов, и в соответствии с уравнением Нернста меняется и ЭДС. Так что внутреннее сопротивление тут ни при чем, если мы измерим напряжение на разомкнутом литий-ионном аккумуляторе с помощью электрометрического вольтметра, оно точно так же будет зависеть от степени разряженности.
Я как раз и писал в самом начале статьи, что «ваш» путь идеальный. Но там же я и написал, почему отказываюсь от него. Потому что либо монитор батареи будет едва ли не сложнее основного устройства, или придется добывать этот самый специальный контроллер, покупать под него программатор и программу для его зашивки и так далее.
А с аналоговым интегратором — это как? Вы сделаете на доступных компонентах аналоговый интегратор, который сможет интегрировать на протяжении хотя бы недели? Что-то сомневаюсь…
По поводу точности: а зачем она такая нужна в сущности? Мы не делаем измерительный прибор, нам нужно примерно знать, в каком состоянии находится аккумулятор. Описанный мной способ позволяет это делать, и делает это немного лучше, чем просто измерение напряжения в произвольные моменты времени с усреднением.
Я не знаю, кто первым это сказал, но в той или иной форме эта мысль активно циркулировала по советской литературе.… Так что внутреннее сопротивление тут ни при чем .....

Вполне себе в современной циркулирует. Не вчитывался, но вот "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% - ну ок, авторский вариант наверно и подойдет

UFO just landed and posted this here

Измерять Кулоны - это круто... А надо ли ? У нас на работе десятки Серверов как раз с "интеллектуальными" UPS, считающими Кулоны. И это довольно нудно,- перед запуском в эксплуатацию каждый UPS надо калибровать, т.е. вставить новые аккумуляторы, полностью зарядить их, потом полностью разрядить, затем опять полностью зарядить батарею. На это уходит часа 3, а в это время контроллер UPS считает Кулоны. После замены аккумуляторов - опять калибровка. А Сервер простаивает, а должен работать 24/7. Играться с Кулонами некогда. Поэтому, гораздо практичнее иметь простую индикацию заряда батареи. Тем более, что в процессе эксплуатации емкость падает и НЕ контролируется. А программы отключения по снижению питания срабатывают по Напряжению, а не по оставшейся Емкости. Такая же история с любыми батареями,- от автомобилей до смартфонов. Измерять Кулоны - это круто. Можно похвалиться перед пацанами. А оно Вам надо ? (Как говорят в Одессе).

А чем это отличается от калибровки обычного свинцового ИБП после замены батарей? Тоже самое выходит — выкинул старые, установил новые, дал сутки зарядиться, запустил калибровку. Оборудование при этом спокойно висит на этом самом ИБП и не жужжыт, хотя если не повезёт и тётя света закончится сразу после калибровки, то будет плохо.

Позволю себе дополнить, т.к. сам увлекся этой темой. При подключении зарядки из-за поднятия напряжения процент не будет соответствовать действительности (зато факт сильного подъёма напряжения служит индикатором подключения зарядки без использования дополнительного вывода под светодиод модуля зарядки). Если зарядку отключить, процент опять упадёт. Но, если при подключении зарядки запомнить напряжение до старта зарядки и усреднённые первые несколько значений после старта зарядки, то можно в отображаемом проценте учесть суммой два значения: процент до старта зарядки и некой нелинейной функцией оставшийся процент от напряжения на момент старта зарядки до финального напряжения. Например, зарядку подключили на 80% 4.0В и напряжение выросло до 4.15В, но это не повод показывать 95%, вместо этого оставшиеся 0.05В примем за оставшиеся 20% и по мере повышения напряжения отобразим 80%+N%. Тут конечно нужно учесть по вашей схеме колебания, плюс рост нелинейный. Возможно нужна эмпирика. Главное при отключении зарядки добиться совпадения процентов. Я пока на этой стадии, потому и наткнулся на вашу статью, в надежде, что есть готовое решение.

Sign up to leave a comment.

Articles

Change theme settings