Журнал

Как сделать индикатор заряда литиевого аккумулятора

Напряжение холостого хода литиевой ячейки нелинейно зависит от степени её разряда. Попытка измерить заряд простым вольтметром на клеммах батареи без нагрузки даст погрешность до 15–20%, особенно в среднем диапазоне ёмкости. Именно поэтому самодельные индикаторы на трёх светодиодах, которые часто собирают новички, врут: они показывают «зелёный» свет, когда батарея уже просела под нагрузкой электромотора.

Создание точного индикатора состояния заряда (SOC — State of Charge) для литий-ионных или литий-полимерных аккумуляторов требует понимания кривой разряда и выбора правильной методики измерения. В этой статье мы разберём, как сделать надёжный индикатор своими руками, почему простые делители напряжения не работают корректно и как внедрить кулонометрию в любительских условиях.

Коротко по теме: Точный индикатор заряда невозможен без учёта тока потребления или использования специализированных микросхем с алгоритмами компенсации. Простое измерение напряжения подходит только для грубой оценки крайних точек (полный/пустой). Для реального контроля используйте модули на базе чипов с кулонометрией или программируемые микроконтроллеры с таблицей lookup.

  • Главный вывод: Напряжение — плохой индикатор ёмкости в рабочем диапазоне; ток и время разряда (кулонометрия) дают точность выше 95%.
  • Что сделать: Определите тип химии вашего аккумулятора (Li-ion, LiFePO4, Li-Po) и выберите метод: аналоговый компаратор для грубой оценки или цифровой модуль INA219/MAX17043 для точности.
  • Чего избегать: Не подключайте индикатор напрямую к силовым клеммам без гальванической развязки или стабилизации, если используете внешнее питание для логики индикатора.

Дальше разберём подробно: почему это работает, какие есть нюансы и как не допустить ошибок.

Почему напряжение врёт: физика разряда лития

Литиевые аккумуляторы имеют характерную кривую разряда, которая кардинально отличается от свинцово-кислотных батарей. У свинца напряжение падает линейно и предсказуемо. У лития же есть три зоны: крутой спад в начале, длинное плато в середине и резкое падение в конце.

В зоне плато, которая занимает около 60–70% всей ёмкости, напряжение меняется крайне незначительно. Например, у стандартной ячейки Li-ion (химия NMC или LCO) напряжение может держаться в районе 3,7–3,8 В при изменении остаточной ёмкости с 80% до 20%. Разница составляет всего 0,1–0,2 Вольта. Любой шум, нагрев или внутреннее сопротивление батареи маскируют это изменение.

Если вы соберёте схему на компараторах, настроенных на пороги 4,2 В, 3,7 В и 3,0 В, то светодиод «среднего заряда» будет гореть почти всё время использования устройства. Пользователь увидит зелёный свет, затем резко жёлтый, и через пять минут устройство выключится. Это создаёт ложное чувство безопасности.

  • Внутреннее сопротивление (IR): Под нагрузкой напряжение проседает на величину U = I * R. Если ваш мотор потребляет 10А, а сопротивление батареи 0,05 Ом, просадка составит 0,5 В. Индикатор, измеряющий напряжение под нагрузкой, покажет глубокий разряд, хотя ёмкость ещё есть. После снятия нагрузки напряжение вернётся к 3,8 В.
  • Температурная зависимость: На холоде химические реакции замедляются, внутреннее сопротивление растёт. Напряжение падает быстрее, и индикатор может показать 0% при температуре -10°C, хотя при комнатной температуре там было бы 40%.
  • Эффект памяти отсутствует, но есть гистерезис: У LiFePO4 (литий-железо-фосфат) кривая разряда ещё более пологая, чем у обычных Li-ion. Разница между 90% и 10% заряда может составлять всего 0,3 В. Сделать точный вольтметр для LiFePO4 практически невозможно без интегратора тока.

Метод 1: Аналоговый индикатор на компараторах (LM3914/LM3915)

Это классический подход для тех, кто не хочет программировать микроконтроллеры. Микросхема LM3914 управляет линейкой из 10 светодиодов, реагируя на уровень входного напряжения. Она идеально подходит для визуализации, но требует тщательной калибровки.

Суть метода заключается в создании стабильного опорного напряжения и делителя, который масштабирует напряжение батареи (например, 0–4,2 В или 0–12,6 В для сборки 3S) до диапазона работы микросхемы (обычно 0–1,25 В или 0–5 В).

Главная проблема здесь — нелинейность. LM3914 линейна. Она делит диапазон напряжения на равные части. Но ёмкость распределена нелинейно. Чтобы индикатор показывал реальную ёмкость, нужно сместить пороги срабатывания. В стандартном включении это невозможно. Поэтому такой индикатор лучше использовать не для процентов, а для зон: «Опасно низко», «Норма», «Полный».

Схема подключения и расчёт резисторов

  1. Подключите вход сигнала (pin 5) к батарее через делитель напряжения. Для батареи 12,6 В (3S) коэффициент деления должен быть примерно 1:4, чтобы снизить 12,6 В до ~3,15 В (если использовать внутреннее опорное 1,25 В, нужны другие расчёты, чаще используют внешнее опорное или режим полного шкалы).
  2. Задайте верхний порог (Rhi) и нижний порог (Rlo) резисторами. Для Li-ion 3S: полный заряд 12,6 В, пустой 9,0 В. Настройте делитель так, чтобы 12,6 В соответствовали верхнему пределу шкалы, а 9,0 В — нижнему.
  3. Используйте режим «точка» (dot mode), соединив pin 9 с V+, чтобы горел только один светодиод, соответствующий текущему уровню. Это экономит энергию и понятнее для восприятия.

Важный нюанс: добавьте конденсатор 0,1–1 мкФ на вход сигнала (pin 5) против помех. Без него светодиоды будут хаотично моргать при работе мощного инвертора или мотора, создавая стробоскопический эффект.

Метод 2: Цифровая кулонометрия на Arduino и датчике тока

Это единственный способ получить честные проценты в домашних условиях. Кулонометрия основана на законе сохранения заряда: мы измеряем ток, уходящий из батареи, интегрируем его по времени и вычитаем из известной полной ёмкости.

Формула проста: SOC(t) = SOC_initial — (Integral(I dt) / Capacity_total). Однако реализация требует точного датчика тока. Обычные шунты с операционными усилителями сложны в настройке из-за дрейфа нуля. Лучше использовать готовые модули на чипах INA219, INA226 или ACS712.

Модуль INA219 подключается по шине I2C к Arduino или ESP8266. Он измеряет напряжение на шунте и напряжение шины с высокой точностью. Библиотека Adafruit_INA219 позволяет считывать данные в миллиамперах. Алгоритм работы скетча:

  • Инициализация: При включении предполагаем 100% заряда (если напряжение > 4,1 В на ячейку) или запрашиваем ввод текущего статуса.
  • Цикл измерения: Каждые 100–500 мс считываем ток. Если ток положительный (разряд), вычитаем заряд. Если отрицательный (заряд), прибавляем.
  • Коррекция: Раз в час или при достижении напряжения полного заряда (4,2 В) сбрасываем счётчик в 100%. Это компенсирует накопленную ошибку интегрирования (дрейф).

Ошибка этого метода накапливается со временем. Если датчик тока имеет погрешность 1%, то за 10 циклов разряда ошибка может достичь 10%. Поэтому обязательна привязка к напряжению: при достижении 4,2 В мы «знаем», что батарея полна, и обнуляем счётчик ампер-часов.

Готовые решения: модули MAX17043 и XC61CN

Если паять Arduino с дисплеем избыточно, существуют специализированные микросхемы-газге́йджы (fuel gauge). Лидер среди любительских решений — MAX17043 (для одной ячейки) или MAX17048 (для двух).

Эти чипы используют запатентованный алгоритм ModelGauge. Они не просто считают ток, они анализируют форму кривой напряжения и сравнивают её с эталонной моделью, зашитой в кремний. Это позволяет им компенсировать влияние температуры и старения батареи лучше, чем простой интеграл.

Подключение MAX17043 элементарно: VCC, GND, SDA, SCL. Никаких внешних шунтов не нужно, он измеряет ток косвенно или работает в режиме вольтметра с улучшенной логикой (в зависимости от ревизии и применения). Для сборок 3S или 4S существуют аналоги, например, BQ27441 от Texas Instruments, но они сложнее в настройке регистров.

Преимущество перед Arduino: низкое энергопотребление. MAX17043 потребляет микроамперы, тогда как Arduino с дисплеем съест несколько десятков миллиампер, что критично для маломощных устройств.

Сравнение методов индикации

Метод Точность Сложность сборки Стоимость Подходит для
Вольтметр (стрелочный/цифровой) Низкая (погрешность до 20%) Низкая Минимальная Грубый контроль, сигнализация перегруза
Компараторы (LM3914) Средняя (линейная шкала) Средняя Низкая Визуальная индикация уровня, аудиотехника
Arduino + INA219 Высокая (при калибровке) Высокая (программирование) Средняя Сложные проекты, телеметрия, самокаты
MAX17043/BQ27xxx Очень высокая Средняя (I2C) Высокая Портативная электроника, профессиональные сборки

Калибровка и защита от ошибок

Любой индикатор бесполезен, если он неправильно откалиброван. Главная ошибка новичков — использование номинальной ёмкости вместо реальной. Батарея с маркировкой 10 Ач после года эксплуатации может иметь 8,5 Ач. Если вы заложили в код 10 Ач, индикатор покажет 0% раньше, чем батарея реально сядет, или наоборот, уйдёт в глубокий разряд.

Как провести калибровку:

  1. Полностью зарядите батарею до отключения зарядного устройства (напряжение 4,2 В на ячейку, ток падения до 0,05 С).
  2. Разряжайте батарею постоянной нагрузкой (резистор или электронная нагрузка) до напряжения отсечения (обычно 3,0 В или 2,8 В).
  3. Зафиксируйте время разряда и средний ток. Перемножьте их: это ваша реальная ёмкость в Ампер-часах.
  4. Внесите это значение в код Arduino или учтите при расчёте резисторов для аналоговой схемы.

Также важно учитывать балансировку ячеек в многоэлементных сборках. Индикатор, подключённый к общей клемме сборки 3S или 4S, видит среднее напряжение. Если одна ячейка деградировала и проседает до 2,5 В, пока остальные ещё на 3,5 В, общее напряжение будет нормальным. Но слабая ячейка умрёт. Поэтому продвинутые системы мониторят каждую ячейку отдельно через балансиры с UART-выходом.

Практический кейс: индикатор для электросамоката

Рассмотрим реальную задачу: замена штатного индикатора на самокате, который врал на холоде. Штатная схема меряла напряжение на выходе контроллера. При рывке с места напряжение падало, и индикатор мигал красным, пугая райдера.

Решение было реализовано на базе ESP8266 (Wemos D1 Mini) и датчика INA226. Датчик установлен на минусовой шине батареи перед контроллером. ESP8266 опрашивает датчик 10 раз в секунду, усредняет значение тока за 1 секунду и интегрирует заряд.

Для отображения использовался OLED-экран 0.96 дюйма. Код включал простую фильтрацию Калмана для сглаживания скачков напряжения. Результат: индикатор стал показывать остаток пробега в километрах, а не в вольтах. Алгоритм учитывал средний расход энергии на километр. Если райдер ехал в горку, расход рос, и прогноз пробега уменьшался динамически. Это дало пользователю понимание реального состояния системы, а не абстрактные «палочки» заряда.

Взгляд технолога «Баттка»: При создании индикаторов для наших сборок мы всегда отдаём предпочтение аппаратным газгейджам серии BQ или MAX для потребительских устройств. Программная кулонометрия на микроконтроллерах хороша для прототипов, но в серийном изделии она уязвима к сбоям питания: если контроллер перезагрузится mid-flight, он потеряет накопленный счётчик ампер-часов. Аппаратные чипы имеют энергонезависимую память для хранения текущего SOC, что критично для надёжности. Также никогда не забывайте про защиту от переполюсовки на входе самого индикатора — один неверный контакт при диагностике может сжечь логику, оставив батарею «слепой».

Частые вопросы новичков

Можно ли использовать обычный вольтметр как индикатор заряда? Можно, но только для определения крайних состояний. Если вольтметр показывает 4,15 В на ячейке — батарея полна. Если 3,0 В — пуста. В промежутке между 3,2 В и 3,8 В вольтметр бесполезен для оценки остатка ёмкости, так как кривая разряда там почти плоская.

Почему мой индикатор на LM3914 показывает разные значения при нагрузке и без неё? Из-за падения напряжения на внутреннем сопротивлении батареи. Под нагрузкой напряжение всегда ниже. Чтобы избежать этого, измеряйте напряжение в паузах между импульсами нагрузки или используйте кулонометрию, которая не зависит от мгновенного напряжения.

Нужна ли калибровка для каждого нового аккумулятора? Да, если вы используете метод интегрирования тока (кулонометрию). Ёмкость даже новых аккумуляторов из одной партии может отличаться на 5–10%. Для вольтметрических методов калибровка сводится к настройке пороговых напряжений под конкретный тип химии (Li-ion, LiFePO4).

Как сделать индикатор для сборки 48 В (13S)? Принципы те же. Для аналогового метода используйте высоковольтные делители с точными резисторами (погрешность 1% или меньше). Для цифрового — убедитесь, что датчик тока и микроконтроллер поддерживают высокое общее напряжение (или используйте изолированные модули связи). MAX17043 не подойдёт, нужны чипы для многоэлементных сборок, например, BQ76930 с выходом данных.

Влияет ли температура на показания самодельного индикатора? Сильно. Холод увеличивает внутреннее сопротивление, что искажает вольтметрические измерения. Кулонометрия точнее, но и она даёт сбой, если не учитывать температурную компенсацию ёмкости (на холоде доступная ёмкость снижается). В серьёзных проектах добавляют термистор для коррекции расчётов.

Сборка собственного индикатора заряда — это отличный способ глубже понять поведение литиевых батарей. Начните с простого вольтметра, чтобы почувствовать кривую разряда, затем переходите к компараторам, и только когда потребуется точность, внедряйте кулонометрию. Не бойтесь экспериментировать с кодом и схемами, но всегда держите под рукой мультиметр для перепроверки. Безопасность и точность идут рука об руку. Делитесь своими схемами в комментариях, обсудим нюансы!