Перейти к содержимому

Как сделать индикатор заряда батареи

  • автор:

Простейший индикатор уровня заряда батареи

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

Схема индикатора

Схема индикатора уровня заряда батареи

Работа устройства основывается на начальном напряжении включения светодиода. Любой светодиод — это полупроводниковый прибор, который имеет граничную точку напряжения, только превысив которую он начинает работать (светить). В отличии от лампы накаливания, которая имеет почти линейные вольтамперные характеристики, светодиоду очень близка характеристика стабилитрона, с резкой крутизной тока при увеличении напряжения.
Если включить светодиоды в цепь последовательно с резисторами, то каждый светодиод начнет включаться только после того, как напряжение превысит сумму светодиодов в цепи для каждого отрезка цепи в отдельности.
Порог напряжения открытия или начала загорания светодиода может колебаться от 1,8 В до 2,6 В. Все зависит от конкретной марки.
В итоге, каждый светодиод загорается только после того, как загорелся предыдущий.

Сборка индикатора уровня заряда батареи

Сборка индикатора уровня заряда батареи

Схему я собрал на универсальной монтажной плате, спаяв вывода элементов между собой. Для лучшего восприятия я взял светодиоды разных цветов.
Такой индикатор можно сделать не только на шесть светодиодов, а к примеру, на четыре.
Использовать индикатор можно не только для аккумулятора, но для создания индикации уровня на музыкальных колонках. Подключив устройство к выходу усилителя мощности, параллельно колонке. Тем самым можно отслеживать критические уровни для акустической системы.
Возможно найти и другие применения этой, по истине, очень простой схемы.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Многие радиолюбители используют в своих поделках Li-ion аккумуляторы от устаревших мобильников, планшетов, MP3 плееров. Такие батареи уже имеют в своем составе контроллер зарядки. Заряжать их как правило не совсем удобно, так как визуально не понятно: идет ли зарядка или аккумулятор уже полностью заряжен.
Чтобы решить данную проблему, можно собрать простой индикатор протекания тока зарядки всего на 3-х деталях.

Необходимые детали

  • Микросхема TC3582DA — http://alii.pub/5lafxm
  • Пара светодиодов — http://alii.pub/5lag4f
  • Монтажная плата универсальная — http://alii.pub/5lagcs

Схема простейшего индикатора тока

Как сделать простейший индикатор тока зарядки для Liion аккумулятора

Микросхема является датчиком тока и отображает его наличие и отсутствие при помощи светодиодов. Данная схема включения не требует гасящих резисторов в цепи светодиодов, что очень удобно.
Подключается схема в разрыв АКБ и зарядника. При протекании тока зарядки мигает LED1, а как только зарядка будет завершена, то будет гореть одни LED2. Все элементарно просто.

Изготовление индикатора проходящего тока

Берем универсальную плату для монтажа.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Устанавливаем микросхему в отверстия платы.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Устанавливаем 2 светодиода разного цвета, чтобы визуально четче отличать процесс из далека.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Вставляем залуженные провода.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Запаиваем дорожки припоем по контактам платы.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Индикатор тока в работе

Подключаем индикатор между источником питания 5 В и батареей. Во время протекания зарядки красный светодиод мигает.

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

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

Как сделать простейший индикатор тока зарядки для Li-ion аккумулятора

Данный микросхемы используются обычно в универсальных зарядных устройствах, в простонародье называемых «Лягушка».

Простой индикатор заряда батареи на двухцветном светодиоде

В статье предлагаются два варианта индикатора, цвет свечения которого, по мере разряда батареи, изменяется от зеленого до красного. Существует огромное количество схем, предназначенных для выполнения таких функций, но все из них, на мой взгляд, слишком сложны и дороги. Для моего индикатора требуется всего пять компонентов, один из которых – двухцветный светодиод.

Простейший вариант показан на Рисунке 1. Если напряжение на клемме B+ равно 9 В, будет светиться только зеленый светодиод, поскольку напряжение на базе Q1 равно 1.58 В, в то время, как напряжение на эмиттере, равное падению напряжения на светодиоде D1, в типичном случае составляет 1.8 В, и Q1 удерживается в закрытом состоянии. По мере уменьшения заряда батареи напряжение на светодиоде D2 остается практически неизменным, а напряжение на базе уменьшается, и в какой-то момент времени Q1 начнет проводить ток. В результате часть тока станет ответвляться в красный светодиод D1, и эта доля будет увеличиваться до тех пор, пока в красный светодиод не потечет весь ток.

Рисунок 1. Базовая схема монитора напряжения батареи.

Для типичных элементов двухцветного светодиода различие в прямых напряжениях составляет 0.25 В. Именно этим значением определяется область перехода от зеленого цвета свечения к красному. Полная смена цвета свечения, задаваемая соотношением сопротивлений резисторов делителя R1 и R2, происходит в диапазоне напряжений

Середина области перехода от одного цвета к другому определяется разностью напряжений на светодиоде и на переходе база-эмиттер транзистора и равна приблизительно 1.2 В. Таким образом, изменение B+ от 7.1 В до 5.8 В приведет к смене зеленого свечения на красное.

Различия в напряжениях будут зависеть от конкретных комбинаций светодиодов и, возможно, их будет недостаточно для полного переключения цветов. Тем не менее, предлагаемую схему все равно можно использовать, включив диод последовательно с D2.

На Рисунке 2 резистор R1 заменен стабилитроном, в результате чего область перехода становится намного более узкой. Делитель больше не оказывает влияния на схему, и полная смена цвета свечения происходит при изменении напряжения B+ всего на 0.25 В. Напряжение точки перехода будет равно 1.2 В + VZ. (Здесь VZ – напряжение на стабилитроне, в нашем случае равное примерно 7.2 В).

Рисунок 2. Схема на основе стабилитрона.

Недостатком такой схемы является ее привязка к ограниченной шкале напряжений стабилитронов. Еще больше усложняет ситуацию тот факт, что низковольтные стабилитроны имеют слишком плавный излом характеристики, не позволяющий точно определить, каким будет напряжение VZ при малых токах в схеме. Одним из вариантов решения этой проблемы может быть использование резистора, включенного последовательно со стабилитроном, чтобы иметь возможность небольшой подстройки за счет некоторого увеличения напряжения перехода.

При показанных сопротивлениях резисторов схема потребляет ток порядка 1 мА. Со светодиодами повышенной яркости этого достаточно для использования прибора внутри помещения. Но даже такой небольшой ток весьма значителен для 9-вольтовой батареи, поэтому вам придется выбирать между дополнительным потреблением тока и риском оставить питание включенным, когда необходимости в нем нет. Скорее всего, после первой внеплановой замены батареи вы почувствуете пользу от этого монитора.

Схему можно преобразовать таким образом, чтобы переход от зеленого к красному свечению происходил в случае повышения входного напряжения. Для этого транзистор Q1 надо заменить на NPN и поменять местами эмиттер и коллектор. А с помощью пары NPN и PNP транзисторов можно сделать оконный компаратор.

С учетом довольно большой ширины переходной области, схема на Рисунке 1 лучше всего подходит для 9-вольтовых батарей, в то время как схема на Рисунке 2 может быть адаптирована для других напряжений.

Перевод: AlexAAN по заказу РадиоЛоцман

О реализации индикатора батареи в устройствах на МК

В портативном устройстве, работающем от аккумулятора, почти обязательным «удобством» является индикатор уровня его заряда. Казалось бы, если оно собрано на основе любого современного микроконтроллера и имеет графический дисплей, ничего сложного в этом нет: нужно лишь регулярно измерять напряжение батарейки с помощью встроенного АЦП и выводить его в виде традиционной батарейки��, степень заполнения которой зеленой краской зависит от напряжения. Но если так сделать в лоб, есть риск, что индикатор будет вести себя, как в известном перле «она металась, как стрелка осциллографа». В лучшем случае, он будет время от времени раздражающе подергиваться туда-сюда на один-два пикселя.

В статье описывается простая реализация индикатора разряда, лишенная этого недостатка.

Проблема «дергающейся батарейки»

Типичные разрядные характеристики литий-ионного аккумулятора при различных токах

Причин такой нестабильности показаний индикатора несколько. Для начала, нужно отметить, что напряжение почти полностью заряженного литий-ионного аккумулятора – 4,0 В, а почти полностью разряженного — 3,4-3,5 В. Соответственно, перепад от 0 до 100% соответствует всего 0,5-0,6 В, то есть индикация заряда с шагом 10% требует точности измерения напряжения не хуже 1%. При этом метрологические характеристики «вольтметра», встроенного в устройство, чаще всего достаточно скверные, потому что всерьез к проектированию этого узла относятся достаточно редко. Да и само напряжение, поступающее на устройство, потребление тока которым постоянно меняется в интервале от нескольких до 150-200 миллиампер, с учетом его подключения через невысокого качества китайский разъем типа JST – тоже непостоянно. При непостоянном токе потребления, зависимость разрядной характеристики аккумулятора от тока разряда – самое главное препятствие для точного определения заряженности по напряжению. Поэтому в смартфонах и ноутбуках для этого чаще применяют другой подход – специализированный контроллер подсчитывает кулоны, пошедшие на зарядку батареи и затраченные затем при разряде, а напряжение при этом играет вспомогательную роль.

Но мы не будем забираться в такие дебри. Способ этот дает прекрасные результаты, но он не так прост в реализации: такие контроллеры сложно достать в розницу, трудно паять вручную, и вдобавок их нужно прошивать на требуемые параметры аккумулятора с помощью платной программы и не менее платного программатора. Тем более, что простыми средствами тоже можно достичь неплохих результатов, пусть и не таких точных.

Решение

Черная линия – измеренное напряжение, красная – то, что мы будем использовать для определения уровня заряда.

Предлагаемая идея состоит в том, что раз потребление тока устройством меняется и наибольшая просадка напряжения происходит в моменты наибольшего потребления, нужно фиксировать напряжение именно в такие моменты. Это логично, так разряженный аккумулятор еще может долгое время «тянуть» устройство, пока оно находится в малопотребляющем режиме, но быстро просядет ниже минимально допустимого напряжения, когда потребление подскочит, например, при включении дисплея. При этом очевидно, что когда аккумулятор разряжается, степень его заряженности может только снижаться, но никак не увеличиваться. И наоборот, когда аккумулятор заряжается – степень его заряженности только возрастает, несмотря на то, что измеренное значение напряжения может в какие-то моменты падать из-за помех и т.п. Поэтому давайте будем во время разряда игнорировать поступающие данные об изменениях напряжения, если оно растет, считать этот рост артефактом. Делается это элементарно – путем сравнения каждого следующего значения измеренного напряжения с ранее зафиксированным минимальным, которое обновляется каждый раз, когда измеренное значение окажется ниже него. Во время заряда мы поступим аналогично, но фиксировать будем не минимумы, а максимумы.

Разумеется, нам здесь понадобится некий сигнал от зарядного устройства, информирующий о том, в каком состоянии (заряд или разряд) находится аккумулятор. Обычно контроллеры заряда литиевых аккумуляторов имеют выход на светодиод или пару светодиодов, который несложно завести на GPIO контроллера.

Тут нужно учесть еще и то, что кривые разряда и заряда существенно различаются. Поэтому по смене статуса зарядного контроллера нам нужно сменить не только направление работы индикатора, но и формулу расчета процентов заряженности от напряжения. А также то, что на протяжении этапа CV, на который приходится примерно 25-30% емкости батареи и половина времени заряда, индикатор будет показывать 100%, если мы будем принимать во внимание только напряжение. Можно так и оставить (сделав внятную индикацию, что зарядка еще не окончена), а можно заморочиться и вычислять на этом этапе проценты заряженности, как линейную (или более сложную) функцию от времени.

Код

Нижеприведенный код на Си реализует самый простой вариант описанного алгоритма. Здесь мы считаем, что полностью разряженная батарейка при разряде дает 3,4 В. Чем это обусловлено? Во-первых, тем, что примерно с этого напряжения начинается быстрый спад напряжения, и дальнейший разряд не дает существенно большего времени работы. Во-вторых, если питать МК от аккумулятора через LDO на 3,3 В, при снижении напряжения ниже этого значения начинает падать и напряжение питания МК. В некоторых случаях это не очень желательно, и в частности, в данной задаче пришлось бы задействовать встроенный источник опорного напряжения, чтобы измерить напряжение батареи в 3,3В и ниже. Та же полностью разряженная батарея при включении заряда сразу увеличивает напряжение до 3,65 В, я же взял 3,6 В, так как тогда при том же коэффициенте наклона автоматически выходит нужное напряжение на 100% заряженном аккумуляторе 4,2 В.

// Глобальные переменные и типы данных: // Состояние зарядного устройства typedef enum < NOCHG, CHG, CHGEND >tChgState; tChgState oldChargeStatus = NOCHG // Переменная для хранения предыдущего состояния // зарядного устройства между вызовами функции uint8_t minBatPercent = 100; // Минимальное и максимальное значения uint8_t maxBatPercent = 0; // уровня заряда батареи // Код следующих двух функций я не привожу, так как он привязан // к реализации конкретного устройства в железе. tChgState getChargeState(void) < // Здесь мы определяем состояние зарядного устройства . . . >uint16_t getBatVoltage() < // А здесь запрашиваем АЦП и вычисляем значение напряжения на батарее в милливольтах . . . >uint8_t batPercent(uint16_t voltage) < tChgState chargeStatus = getChargeState(); uint16_t emptyBatVoltage = 3400;// Напряжение, соответствующее полностью // разряженной батарее uint8_t slope = 6; // 6 мВ/% if(chargeStatus == CHG) // При заряде напряжение возрастает, учитываем это emptyBatVoltage = 3600; int8_t result = (voltage - emptyBatVoltage) / slope; if(result < 0) result = 0; // Уровень заряда не может оказаться меньше нуля if(result >100) result = 100; // и больше 100%. // Ищем минимум и максимум и сохраняем их в глобальных переменных для // использования при следующем вызове if(minBatPercent > result) minBatPercent = result; if(maxBatPercent < result) maxBatPercent = result; if(chargeStatus != oldChargeStatus) // При изменении состояния зарядного устройства < // начинаем заново с чистого листа. minBatPercent = result; maxBatPercent = result; >if(maxBatPercent - minBatPercent > 20) // Защита от особо сильных помех < minBatPercent = result; maxBatPercent = result; >oldChargeStatus = chargeStatus; // Перед окончанием сохраняем текущее состояние ЗУ // И, наконец, возвращаем максимальное значение, если идет заряд // или минимальное -- если идет разряд. if(chargeStatus == CHG) < return maxBatPercent; >else < return minBatPercent; >>

Далее мы в удобном месте вызываем функцию batPercent, скажем, раз в секунду, и то, что она вернула, передаем в код, рисующий батарейку.

Вот и все. Теперь никаких ненужных колебаний и шевелений, индикатор аккумулятора стоит, как вкопанный, не забывая, впрочем, убавляться по мере разряда. Данный способ, конечно, не претендует на точность измерения остатка заряда, но это обычно и не требуется. При необходимости, конечно, можно усложнить код, добавив в него учет температуры, использовав вместо линейной интерполяции более сложную и точную.

  • индикатор заряда
  • li-ion
  • аккумулятор

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *