Немного о тонкостях разработки умных батарей

Как уже было написано в этом блоге, для беркута B4.5 разрабатывалась умная батарея.
Вроде бы не сложная на первый взгляд задача, по мере разработки и отладки начала обрастать тонкостями.

Тонкость нулевая — много аккумуляторов, хороших и разных.

Всё начинается с того, что smart battery сама определяет алгоритм заряда, а зарядное устройство только следует её указаниям. Существует как минимум 2 широко распространённых технологии аккумуляторов (LiIon и NiMH/NiCD) и для NiMH существует несколько возможных алгоритмов заряда. Если Li-Ion аккумуляторы заряжаются достаточно просто (нужно только ограничить зарядный ток и напряжение, а конец заряда определяется по снижению зарядного тока до определённого порога), то в случае с NiMH аккумуляторами есть несколько вариантов заряда, с различными критериями его прекращения и разными областями применения.
Начнём с простейшего trickle charge, который может использоваться для заряда глубоко разряженной батареи или для заряда батареи в условиях низкой температуры. Это заряд с током не превышающим 0.1C (то есть 0.1 ёмкости батареи). По заверению GP, в этом режиме батарея может заряжаться 1 год, без вреда для себя, но полный заряд занимает 14 часов, что в общем-то для портативного прибора неприемлемо.
Дальше имеется второй режим заряда, fast charge. В этом режиме батарея заряжается намного быстрее, зарядные токи порядка 0.3C-1C для него норма. Но в этом режиме необходимо точно контролировать температуру батареи и вовремя заканчивать заряд. Отсюда мы плавно переходим к тонкости номер один.

Тонкость первая — сколько вливать миллиамперчасов или конец заряда.

Как уже было написано выше, в случае с LiIon конец заряда определяется просто — в батарею просто перестаёт течь ток. В случае с NiMH всё несколько сложнее. По мере окончания заряда, в батарее химические процессы заряда начинают сопровождаться выделением газа. В случае trickle charge выделение имеет небольшую скорость и компенсируется поглотителем и в общем безопасно. Этот процесс сопровождается выделением тепла. В случае быстрого заряда, тепловыделение намного выше и если заряд не будет остановлен вовремя возможно повреждение батареи. Так мы приходим к различным критериям прекращения заряда.  В случае с trickle charge, критерием прекращения заряда достаточно использовать таймер на 14 часов. Если же используется быстрый заряд, то возможно два критерия окончания заряда — по температуре и по напряжению. Оба эти критерия используют один и тот же физический процесс и практически взаимозаменяемы. Вот только для первого критерия был нужен термодатчик, и достаточно точный, находящийся в тепловом контакте с батареей. Кроме того, так как этот метод использует скорость нарастания температуры в качестве критерия, он не надёжен при изменяющейся температуре окружающей среды. Поэтому в нашем варианте батареи используется критерий окончания заряда по dV/dt. В этом случае момент окончания заряда определяется по тому моменту, когда напряжение на батарее перестаёт расти и начинает падать. Сложность здесь заключается в том, что падение напряжения невелико (милливольты) и достаточно медленное.
Ещё одна тонкость заключается в том, что необходимо предотвратить немедленное начало заряда при небольшом падении уровня заряда, иначе батарея будет систематически перезаряжаться. Это связано с тем, что для определения момента окончания заряда требуется определённое время.

Тонкость вторая — учёт ёмкости, калибровка и КПД.

Одно из преимуществ системы Smart Battery в том, что батарея может оценивать время заряда и разряда. Для этого батарея ведёт учёт своей ёмкости на заряде и разряде. И уже исходя из учтённой ёмкости и текущего тока вычисляет время заряда/разряда. По критериям конца разряда и конца заряда батарея рекалибруется, то есть обновляет значение максимальной ёмкости. Это необходимо делать в связи с тем что батареи отличаются по ёмкости уже с завода а так же стареют, и теряют емкость. Таким образом калибровка необходима для знания точного времени требуемого для заряда батареи, а так же для точного вычисления процента заряда.
И тут в этот простой с виду процесс вклинивается реальный мир в лице страха и ужаса создателей вечных двигателей, а именно КПД. Дело в том что не вся энергия уходящая на заряд батареи преобразуется в химическую энергию, часть уходит в тепловые и другие потери. Если бы КПД был более менее постоянен, то его учёт был бы простой задачей. Но как обычно, законы физики мешают программистам и КПД меняется от множества разных факторов, начиная от температуры батареи и режима заряда и заканчивая фазой луны возрастом батареи. Таким образом точный учёт КПД невозможен или затруднителен. Просто игнорировать КПД можно если он достаточно высок. Например в случае с LiIon аккумуляторами, где он составляет примерно 90%. В случае NiMH аккумуляторов, КПД меняется в зависимости от режима заряда и других факторов и может составлять от 60 до 90%. Неточности учёта КПД приводят к проблемам учёта заряда при неполных циклах батареи, то есть если батарея не разряжается до конца и соответственно рекалибруется только по концу заряда, может нарастать ошибка учёта ёмкости, что приводит к некорректным оценкам времени работы и процента заряда.
Здесь мы подходим к третьей тонкости, а именно учёту саморазряда батареи.

Тонкость третья, саморазряд.

От саморазряда страдают все батареи, отличается только его величина. Кроме того в случае Smart Battery, к саморазряду добавляется потребление контроллера батареи, который питается от батареи. Отсюда возникает проблема учёта саморазряда, особенно на NiMH батареях высокой ёмкости, где саморазряд может достигать 30% в месяц. Сам процесс учёта саморазряда не сложен — достаточно просто вычитать некоторую константу из накопленной ёмкости батареи с определённым временным интервалом. Вот только константа эта на самом деле констатной не является, саморазряд не постоянен по времени и зависит от температуры. Наибольший саморазряд приходится на первые сутки после заряда (порядка 5-10%). Затем он снижается до 1% в день (при комнатной температуре), высокие температуры значительно ускоряют этот процесс. Для упрощения в нашем случае был взят вариант саморазряда с постоянной скоростью в 1% в день.

Вот собственно пока и все тонкости из тех что вспомнились через 2 недели после конца разработки батареи.

В следующих выпусках этого нерегулярного блога :) будет рассказно о сложностях отладки сложных систем на примере умной батареи.