1) на 10 штуках TLV431

2) на ATtiny25
3) на ATtiny13, но без исходников...
ну и т.д. достаточно набрать в гугле "индикатор заряда li-ion"
Всё как-то не то, всё как-то не так.
Техническое задание:
1) индикация уровня заряда батареи 3 разноцветными светодиодами (красный, желтый, зелёный)в пределах 3,0 - 4,2 Вольта.
2) Отображение 6 уровней заряда.
3) минимальный размер (до 10*30 мм).
Схема.
Итак поехали. Напряжение индикации от 3,0 до 4,2 Вольта (на ячейке лития больше и меньше быть не может, т.е. не должно). Значит этим же напряжением можно и питать нашу схему на микроконтроллере! Набросал схему, получилось как-то так: Питаемся от измерительной цепи. Резисторы R1/R2 делитель напряжения на вход АЦП, подобран так, чтобы при напряжении питания 4,35 на входе АЦП было до 1,1 Вольта (Внутреннее опорное напряжение АЦП). Конденсатор С2 - фильтр на входе АЦП, конденсаторы C1 и C3 - по питанию. Остался резистор R3 - чтобы ресет не болтался в воздухе. Проще наверное не получится.
Пробуем нарисовать плату. 6*19мм... А кнопка влезет? Легко! 6*28мм... Все резисторы, конденсаторы и светодиоды типоразмера 0603. По просьбам трудящихся сделал вариант на светодиодах 0805, только пришлось убрать конденсатор C3. Исходник платы - во вложениях (Sprint-Layout 6.0) - pcb_li-ion_charge_indicator.rar
Попробуем реализовать в железе. Хм, получилось. И получилось довольно компактно. Идём далее, т.к. устройство не будет работать без прошивки.
Прошивка.
Для начала надо придумать способ индикации. Сочетания цветов мне не нравятся - красиво, но не наглядно. Поэтому будем делать просто. Поясню картинку.
Менее 3,3 Вольт - считаем батарея разряжена совсем, моргаем красным.
От 3,3 до 3,6 Вольта - минимальный заряд - горит красный.
и т.д.
Уровни подобрал с учётом графиков зависимости заряда от напряжения на банке (встречались в описанных вначале статьях), но никто не мешает подкорректировать под свои нужды. Внизу картинки указаны идентификаторы, которые задают в прошивке напряжения (строки 35-40):
Code: Select all
//"напряжение" в сотнях миливольт, т.е. 42 = 4,2 Вольта.
#define U_1 33 //3,3V
#define U_2 36 //3,6V
#define U_3 38 //3,8V
#define U_4 39 //3,9V
#define U_5 41 //4,1V
Ещё в прошивке можно изменить расположение светодиодов (но только в рамках PB0 - PB2) в строках 29-31:
Code: Select all
#define LED_RED PORTB.2 //выход красного светодиода
#define LED_YELLOW PORTB.1 //выход желтого светодиода
#define LED_GREEN PORTB.0 //выход зелёного светодиода
Калибровка.
Но для начала нам нужно получить отправную точку в наших расчётах - значение АЦП при напряжении питания 4,2 Вольта. Для этого:
1) заливаем прошивку
2) включаем устройство и видим бегущий огонь - значит прошивка работает нормально, но не откалибрована (или слетел EEPROM),
3) выставляем напряжение питания 4,2 Вольта (или питаем от полностью заряженной батарейки, можно ещё подключить к зарядному устройству типа TP4056).
4) ВЫКЛЮЧАЕМ УСТРОЙСТВО!
5) замыкаем вывод PB2 на питание вывод 7 + 8 и удерживаем (можно замкнуть хоть отвёрткой).
6) Подключаем питание устройства, должен загореться красный светодиод (мы же его выход замкнули на питание, но не страшно, т.к. этот порт сейчас настроен на вход.)
7) Примерно через 1 секунду загорится желтый светодиод, можно размыкать выводы 7 и 8, но питание убирать нельзя!!!
8) Ещё через секунду загорится зелёный светодиод.
9) Ещё через секунду оба светодиода погаснут. Теперь питание можно выключать или подождать 3 секунды и индикатор начнёт свою нормальную работу!
10) Всё откалибровано, теперь надо свериться с точным мультиметром.
Небольшое видео:
Как по мне, то получилось довольно наглядно, компактно, просто в повторении, ну и дешёво, если тиньки покупать в Китае. А вот собственно для чего изобретался велосипед: Про эту штуку расскажу отдельно.
PS: пришла интересная мысль. Если взять батарею аккуммуляторов, неважно сколько ячеек подключено последовательно, и измерять напряжение одной ячейки, то это так же точно укажет на степень заряда всей батареи... При условии, что разбаланса по ячейкам нет. Допустим у меня шуруповёрт давно переделан на 5S 3000mAh 45C батарею от RC моделей. Заряжаю я её только iMAX B6 (клон). Т.е. разбаланса не допускаю. А вот проверять уровень заряда, каждый раз подключая вольтметр как в самом начале статьи - не очень удобно, а внутрь батареи он не влез, да и отключать его надо, т.к. высадит батарею. А такая кроха (из этой статьи) отлично впишется в любой корпус. Доработаю - покажу )))
Повторять конструкцию можно.
UPD (10.08.2017)
Давно уже были заказаны платы в Китае, но всё никак не доходили руки до написания, да и новая версия оказалась чуть хуже, но об этом позже.
Схема v2.0 Т.к. было пожелание использования RGB светодиодов я попытался сделать схему универсальной. Для этого пришлось светодиодам сделать общий плюс... В этом скрывался косяк, который обнаружился только при отладке новой платы. Косяк заключается, в том, что теперь значительно снизилась точность измерений напряжения. Думаю это как-то связано с внутренними особенностями Тини13, т.к. при переделке светодиодов на общий минус проблема пропадает, т.е. косяк не в плате... Но на практике этот недостаток практически не заметен и точность измерения ± 0,03В уже за гранью разумного для "индикатора". поэтому выкладываю плату в том виде, в котором она есть, в следующий раз буду заказывать платы с "общим минусом", тогда и обновлю.
Ещё в схеме появился коммутатор кнопки на входе. Он нужен для удержания питания схемы после отпускания кнопки. Приобретался NTJD1155L на Aliexpress.
Печатная плата.
Т.к. плата двухстороняя, то показывать скрин из Спринта - кошмар для глаз ))) Лучше покажу рендер из файлов Gerber: Ну а в живую платы выглядели вот так: Собранная плата (флюс не отмывал, каюсь)... Файл спринта: Прошивка.
В новой прошивке (voltmeter_v2.0_inet.rar) логика работы не поменялась, за исключением того, что для калибровки нужно замыкать не на плюс, а на землю!