В большинстве портативных устройств применяются щелочные батареи или аккумуляторы, и измерение их емкости является важной функцией таких конструкций. Однако чаще всего использование микросхемы контроля уровня заряда батареи может быть непозволительной роскошью для бюджетных проектов. Вот более простая и менее дорогая альтернатива.
Сегодня даже самые дешевые микроконтроллеры часто содержат в себе модуль аналого-цифрового преобразователя (АЦП), который не используется постоянно из-за (относительно) низкого разрешения и высокого уровня шумов. Но одного из этих неиспользуемых внутренних каналов АЦП вполне достаточно, чтобы провести тест и решить, пригодна ли еще батарея для использования или нет.
Метод определения состояния аккумулятора, называемый электрохимическим динамическим откликом (ЭДО) [1], был запатентован компанией Cadex Electronics [2].
ЭДО сравнивает текущее состояние батареи под нагрузкой с сохраненными параметрами, характеризующими батарею, прикладывая к ней импульсную нагрузку и оценивая время реакции батареи на скачкообразное воздействие и последующее восстановление. Различия в характере спада и восстановления при различном уровне заряда батареи наглядно демонстрирует Рисунок 1. Есть несколько причин различий в характере реакции разряженной батареи. Одна из них – повышенное внутреннее сопротивление.
При использовании теории ЭДО выборка напряжения батареи для определения минимального уровня заряда в определенное время, например, в момент максимального потребления энергии, дает информацию о состоянии батареи. Начальный отрезок времени после первого включения системы, также известный как «приветствие», является особенно подходящим для измерения состояния батареи. До того, как система будет полностью нагружена, может показаться, что уровень заряда батареи находится на безопасном рабочем уровне, но если батарея сильно разряжена, напряжение может моментально упасть ниже допустимого порога, как только нагрузка достигнет максимума. Без выполнения теста ЭДО устройство запустится в нормальном режиме, но неконтролируемо отключится (то есть напряжение упадет до критического уровня, отмеченного на Рисунке 1) при первой же большой нагрузке.
Рисунок 1. | Сравнение реакций аккумуляторов на кратковременный импульс нагрузки при различных уровнях заряда демонстрирует их различия ЭДО. |
Упрощенная схема реализации теста ЭДО показана на Рисунке 2. Сопротивление нагрузочного резистора выбирается таким, чтобы представлять полную нагрузку системы, поэтому в каждой системе оно может быть разным. В системе, данные для которой представлены в этой статье, использовалось значение 10 Ом. Резисторы R1 и R2 служат делителем для измерения напряжения батареи VCC, а повышающий преобразователь гарантирует, что опорное напряжение АЦП VREF останется неизменным даже в том случае, если напряжение батареи упадет во время теста. R3 – это подтягивающий резистор для затвора переключающего транзистора.
Рисунок 2. | На этой упрощенной схеме показан общий подход к реализации теста ЭДО. |
Тестовая система измеряет напряжение батареи в течение периода времени, установленного равным примерно 200 миллисекундам. Под управлением программы MOSFET включается только на половину периода измерения, а затем выключается. Это позволяет системе измерять как напряжение при полной нагрузке, так и время восстановления батареи при минимальной нагрузке. (Время измерения может быть изменено в прошивке, но я обнаружил, что для адекватной оценки состояния батареи 200 мс было достаточно). По завершении измерений результаты могут быть считаны через канал UART.
В примере системы, собранной для демонстрации метода ЭДО, я использовал две щелочные батареи AA, что давало максимальное напряжение VCC, равное 3.2 В. Повышающий преобразователь стабилизирует напряжение VDD на уровне 3.6 В. В нормальном режиме система потребляет 55 мА, однако при полной нагрузке ток возрастает до 127 мА. Осциллограммы, снятые во время тестирования системы при использовании «хорошей» (Рисунок 3а) и «плохой» (Рисунок 3б) батарей, демонстрируют, насколько значительными могут быть различия в напряжении под нагрузкой.
| ||||
Рисунок 3. | Проверка напряжения батареи под нагрузкой показывает значительные различия между реакцией полностью заряженной (а) и почти разряженной (б) батареи. |
Пример конструкции, которую я использовал в некоторых своих проектах, основан на микроконтроллере STM32F303, программа для которого написана на C с использованием интегрированной среды разработки Keil. Программу можно найти на странице GitHub [3].
Блок-схема тестового алгоритма представлена на Рисунке 4. Тест запускается, когда UART получает символ «S». Частота выборки АЦП установлена равной 250 Гц, а период тестирования, как упоминалось ранее, составляет примерно 200 мс.
Эта программа просто выполняет тест и собирает данные. Вариантов использования данных очень много. В простейшем случае можно сравнивать минимальное значение данных с безопасным уровнем рабочего напряжения системы, который также называется критическим уровнем. Если во время теста напряжение батареи приближается к критическому уровню, можно предупредить пользователя системы о том, что пришло время заменить батарею.
Можно написать более полный алгоритм для точного определения состояния батареи, например, для индикации уровня ее заряда. Однако для того, чтобы обновлять и показывать пользователю правильную информацию о батарее на дисплее или индикаторе, полученные данные должны быть отфильтрованы. Колебания нагрузки делают необработанные данные совершенно бесполезными без надлежащей фильтрации. Фильтр с медленной бесконечной импульсной характеристикой (БИХ-фильтр) хорошо сгладит сигнал.
Таким образом, благодаря методу ЭДО с помощью простейшего АЦП микроконтроллера можно без больших затрат определить состояние батареи. Измерения параметров батареи в течение примерно 200 мс во время начального включения питания достаточно для проведения базового теста работоспособности батареи практически в любой системе.