Обявления

Для полноценной работы рекомендуется пройти регистрацию.

Рекламные сообщения будут удаляться вместе с пользователем. Что есть реклама - буду решать я.

Индикатор заряда литиевого аккумулятора (1S)

Здесь только проекты на ATtiny

Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 25 авг 2016 00:20

Давно уже стоит вопрос индикации заряда литиевых аккумуляторов. Причём для 2-3-5 ячеечных батарей давно пользуюсь китайским вольтметром (до 8 ячеек) за $1,1 - 1,5. А тут стала проблема - необходимо максимально компактное, максимально простое, максимально информативное устройство для 1 банки лития. Перебрал я много конструкций, понравились несколько, но ни одна не была подходящей. Для истории оставлю:
1) на 10 штуках TLV431 :scratch:
2) на ATtiny25
3) на ATtiny13, но без исходников...
ну и т.д. достаточно набрать в гугле "индикатор заряда li-ion"
Всё как-то не то, всё как-то не так.

Техническое задание:
1) индикация уровня заряда батареи 3 разноцветными светодиодами (красный, желтый, зелёный)в пределах 3,0 - 4,2 Вольта.
2) Отображение 6 уровней заряда.
3) минимальный размер (до 10*30 мм).

Схема.
Итак поехали. Напряжение индикации от 3,0 до 4,2 Вольта (на ячейке лития больше и меньше быть не может, т.е. не должно). Значит этим же напряжением можно и питать нашу схему на микроконтроллере! Набросал схему, получилось как-то так:
sch_tiny13.gif
sch_tiny13.gif (12.4 КБ) Просмотров: 4495

Питаемся от измерительной цепи. Резисторы R1/R2 делитель напряжения на вход АЦП, подобран так, чтобы при напряжении питания 4,35 на входе АЦП было до 1,1 Вольта (Внутреннее опорное напряжение АЦП). Конденсатор С2 - фильтр на входе АЦП, конденсаторы C1 и C3 - по питанию. Остался резистор R3 - чтобы ресет не болтался в воздухе. Проще наверное не получится.

Пробуем нарисовать плату.
pcb_wo_button.gif
pcb_wo_button.gif (6.99 КБ) Просмотров: 4495

6*19мм... А кнопка влезет? Легко! 6*28мм... Все резисторы, конденсаторы и светодиоды типоразмера 0603.
pcb_with_button.gif
pcb_with_button.gif (13.04 КБ) Просмотров: 4495

По просьбам трудящихся сделал вариант на светодиодах 0805, только пришлось убрать конденсатор C3.

Исходник платы - во вложениях (Sprint-Layout 6.0) - pcb_li-ion_charge_indicator.rar

Попробуем реализовать в железе.

Хм, получилось. И получилось довольно компактно. Идём далее, т.к. устройство не будет работать без прошивки.

Прошивка.
Для начала надо придумать способ индикации. Сочетания цветов мне не нравятся - красиво, но не наглядно. Поэтому будем делать просто.
scale.GIF
scale.GIF (4.17 КБ) Просмотров: 4495

Поясню картинку.
Менее 3,3 Вольт - считаем батарея разряжена совсем, моргаем красным.
От 3,3 до 3,6 Вольта - минимальный заряд - горит красный.
и т.д.
Уровни подобрал с учётом графиков зависимости заряда от напряжения на банке (встречались в описанных вначале статьях), но никто не мешает подкорректировать под свои нужды. Внизу картинки указаны идентификаторы, которые задают в прошивке напряжения (строки 35-40):
Код: Выделить всё
                               //"напряжение" в сотнях миливольт, т.е. 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:
Код: Выделить всё
#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
sch_tiny13_v2.GIF
sch_tiny13_v2.GIF (15.46 КБ) Просмотров: 1404


Т.к. было пожелание использования RGB светодиодов я попытался сделать схему универсальной. Для этого пришлось светодиодам сделать общий плюс... В этом скрывался косяк, который обнаружился только при отладке новой платы. Косяк заключается, в том, что теперь значительно снизилась точность измерений напряжения. Думаю это как-то связано с внутренними особенностями Тини13, т.к. при переделке светодиодов на общий минус проблема пропадает, т.е. косяк не в плате... Но на практике этот недостаток практически не заметен и точность измерения ± 0,03В уже за гранью разумного для "индикатора". поэтому выкладываю плату в том виде, в котором она есть, в следующий раз буду заказывать платы с "общим минусом", тогда и обновлю.

Ещё в схеме появился коммутатор кнопки на входе. Он нужен для удержания питания схемы после отпускания кнопки. Приобретался NTJD1155L на Aliexpress.

Печатная плата.
Т.к. плата двухстороняя, то показывать скрин из Спринта - кошмар для глаз )))

Лучше покажу рендер из файлов Gerber:


Ну а в живую платы выглядели вот так:


Собранная плата (флюс не отмывал, каюсь)...


Прошивка.
В новой прошивке (voltmeter_v2.0_inet.rar) логика работы не поменялась, за исключением того, что для калибровки нужно замыкать не на плюс, а на землю!
Вложения
pcb_li-ion_charge_indicator.rar
(15.43 КБ) Скачиваний: 258
voltmeter_t13_hex.rar
(1.22 КБ) Скачиваний: 153
voltmeter_v1.0.rar
(10.81 КБ) Скачиваний: 166
voltmeter_v2.0_inet.rar
(10.38 КБ) Скачиваний: 53
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение georg77 » 25 авг 2016 22:20

во-1-х, проще можно сделать, если оставить только 1 светодиод
пусть горит с циклом 1-2 сек столько времени, насколько заряжена батарея
во 2-х, калибровка через считывание епрома кажется мне чересчур для академиков
можно просто написать калибровку при замыкании на землю оставшихся свободных ножек тиньки
georg77
Частенько бываю
 
Сообщения: 90
Зарегистрирован: 26 ноя 2011 06:38

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 25 авг 2016 22:32

georg77 писал(а):во-1-х, проще можно сделать, если оставить только 1 светодиод
пусть горит с циклом 1-2 сек столько времени, насколько заряжена батарея

согласен, но пострадает удобство, вернее удобочитаемость. Я уже думал оставить 2 светодиода и моргать целые числа одним, десятые доли - другим, но это надо считать каждый раз )))...
georg77 писал(а):можно просто написать калибровку при замыкании на землю оставшихся свободных ножек тиньки

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

Хм, посмотрел, а свободных ножек то и нет... Чё будем думать? Можно освободить 2-ю ногу, но тогда плата подрастёт... Хотя её можно не запаивать на момент калибровки, а потом запаять. О! вариант!
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение georg77 » 26 авг 2016 07:42

резистор на reset не нужен (ИМХО)
чем занимается 2- ножка?
мне кажется, ничем особенно нужным она заниматься не может
может её под калибровку?
качество кнопки подачи питания сильно падает со временем, это может вызвать понятные проблемы
в 10-15 летних телевизорах (находящихся в тепличных условиях) видел кнопки с сопротивлением 50-150 ом
а в ТВ, простоявших в сарае - просто все кнопки приходится менять
georg77
Частенько бываю
 
Сообщения: 90
Зарегистрирован: 26 ноя 2011 06:38

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение georg77 » 27 авг 2016 08:55

как вариант решения проблемы окисления кнопки - шунтировать её на время измерения и индикации p-канальным мосфетом
но в таком случае рациональнее кнопку включить в цепь затвора этого мосфета - и в некоторая степень окисления кнопки будет допустима
поменять бы местами 2 и 3 ножки
при включении 3-я ножка - в режиме входа
если на ней 0 В (замкнуто с 4- й) - тогда калибровка, считая что на входе 4.2 В
если на 2-й - "1" - тогда перевод её в состояние выхода , вывод "0" на время измерения и индикации
ни на чём не настаиваю, каждый делает как ему кажется лучше.
georg77
Частенько бываю
 
Сообщения: 90
Зарегистрирован: 26 ноя 2011 06:38

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 27 авг 2016 10:09

georg77, идея интересная и я об этом думал, но тогда надо учитывать падение на мосфете... Прошивку доработать можно легко под любые варианты, поэтому при возникновении необходимости в разных вариантах буду дорабатывать. В шуруповёрнте вобще была мысль сделать так, чтобы индикатор включался при работе мотора, надо только регулятор чуть доработать - сделать выход... Жду тиньки и буду дорабатывать шурупик, тогда и появятся новые варианты )))
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение georg77 » 27 авг 2016 10:35

"но тогда надо учитывать падение на мосфете..."
падение на мосфете будет порядка 1-2 мВ в худшем случае, что сравнимо с погрешностью АЦП тиньки - я бы не парился по поводу падения вообще, ничто не мешает эту "погрешность" корректировать программно.
никто не мерял сопротивление новых кнопок? Боюсь что даже новые кнопки уступят мосфетам.
http://www.aosmd.com/pdfs/datasheet/AO3401.pdf - пример мосфета, на Али очень недорого.
georg77
Частенько бываю
 
Сообщения: 90
Зарегистрирован: 26 ноя 2011 06:38

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 06 окт 2016 10:49

Прошивка обновилась - Версия 1.0.

Калибровка.
Но для начала нам нужно получить отправную точку в наших расчётах - значение АЦП при напряжении питания 4,2 Вольта. Для этого:
1) заливаем прошивку
2) включаем устройство и видим бегущий огонь - значит прошивка работает нормально, но не откалибрована (или слетел EEPROM),
3) выставляем напряжение питания 4,2 Вольта (или питаем от полностью заряженной батарейки, можно ещё подключить к зарядному устройству типа TP4056).
4) ВЫКЛЮЧАЕМ УСТРОЙСТВО!
5) замыкаем вывод PB2 на питание (выводы 7 и 8) и удерживаем (можно замкнуть хоть отвёрткой).
6) Подключаем питание устройства, должен загореться красный светодиод (мы же его выход замкнули на питание, но не страшно, т.к. этот порт сейчас настроен на вход.)
7) Примерно через 1 секунду загорится желтый светодиод, можно размыкать выводы 7 и 8, но питание убирать нельзя!!!
8) Ещё через секунду загорится зелёный светодиод.
9) Ещё через секунду оба светодиода погаснут. Теперь питание можно выключать или подождать 3 секунды и индикатор начнёт свою нормальную работу!
10) Всё откалибровано, теперь надо свериться с точным мультиметром.

Все изменения в шапке, там же прошивка и и исходник.

Добавлено спустя 5 часов 19 минут 8 секунд:
По просьбе Alex_S добавил плату на светодиодах 0805. Всё в первом сообщении.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Alex_S » 06 окт 2016 16:20

Пасиба!
Аватара пользователя
Alex_S
Частенько бываю
 
Сообщения: 146
Зарегистрирован: 22 дек 2009 13:11
Откуда: Одесса-мама

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение georg77 » 07 окт 2016 08:38

как вариант для любителей минимализма (сам такой) могу предложить индикацию уровня заряда таким образом:
1 светодиод, при активации индикатора запускается ШИМ с периодом 5 сек, время свечения светодиода в периоде в % равно степени заряда батареи, если заряд 100% - всё-таки оставить 0,5-1-2% интервала (подобрать на глаз) на еле заметное помаргивание для обозначения исправной работы устройства.
Смысла в большей точности отображения не вижу.
Например, при активации светодиод горит примерно 4 сек и не горит 1 сек - значит заряд около 80%. После 3-х периодов индикации - отключить.
georg77
Частенько бываю
 
Сообщения: 90
Зарегистрирован: 26 ноя 2011 06:38

Сообщение hardlock » 07 окт 2016 08:48

Уж проще воспринять моргание посылками. Типа 4 раза, пауза, 1 раз = 4,1 Вольта. 3 раза, пауза, 5 раз - 3,5 Вольта . По времени почти одинаково )))
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Alex_S » 07 окт 2016 09:45

Шим с периодом 5 секунд - слишком много. Максимум - секунда. Суть то в том, что должно быть достаточно мимолетного взгляда.
Аватара пользователя
Alex_S
Частенько бываю
 
Сообщения: 146
Зарегистрирован: 22 дек 2009 13:11
Откуда: Одесса-мама

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение georg77 » 07 окт 2016 11:16

hardlock:
вроде как собирались отображать не напряжение аккумулятора, а пересчитанную из напряжения степень заряженности?
и как долго будет моргаться 89% ?
при подсчёте можно ошибиться, для достоверности результата придётся повторить подсчёт импульсов - а это опять затраты времени.

Alex_S : период отображения можете делать как Вам удобнее, это не принципиально.

не сочтите мои предложения как упорное склонение к моей версии, просто я вижу такой вариант устройства простым и лаконичным, желаю Вам делать всегда только так, как нравится Вам.
georg77
Частенько бываю
 
Сообщения: 90
Зарегистрирован: 26 ноя 2011 06:38

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 07 окт 2016 11:30

georg77, ну я точно не буду реализовывать вариант с ШИМом, т.к. слабо представляю как отличить 30-40% от 50-60%... Если есть желание - попробуйте, исходник есть, модифицировать легко.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение ma35tr0 » 07 окт 2016 12:52

Уважаемый hardlock, зачет вам за девайс!
Такой же девайс, но для автомобиля (Uмакс. = 15вольт) с таким же алгоритмом индикации и калибровкой Я сделал года 2-3 назад. Даже статью для форума подготовил, но в самый неудачный момент все пропало. Комп накрылся и винту наступили кранты. Столько всего у меня там было, все пропало :(
Остался только hex-файл залитый в тиньку.
Вот, что у меня получилось тогда.



С удовольствие выложил бы и платки в формате lay, но и их не осталось :sorry:

Добавлено спустя 1 минуту 20 секунд:
hardlock писал(а):georg77, ну я точно не буду реализовывать вариант с ШИМом, т.к. слабо представляю как отличить 30-40% от 50-60%...

Верно. Это лишнее. :-)
Аватара пользователя
ma35tr0
Частенько бываю
 
Сообщения: 104
Зарегистрирован: 02 дек 2010 13:12
Откуда: Город ветров, Страна огней

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Leo174 » 27 апр 2017 11:16

Хороший проект, спасибо автору. Косаемо внедрения данного устройства в шуруповёрт неплохо бы добавить ещё один светодиод белого цвета. И сделать отдельный вход, при появлении длинного импульса(допустим более 1сек), ключается белый светодиод на 5сек. Т.е. Шуруповёрт с подсветкой.При коротком импульсе(допустим менее 1сек), белый не включается, а запускается программа индикации на 3-5сек. Затем контроллер засыпает. И просыпается по импульсу. Как думаете возможно такое сделать?
Leo174
Пробегал мимо
 
Сообщения: 2
Зарегистрирован: 27 апр 2017 08:28

Сообщение hardlock » 27 апр 2017 11:24

Ног уже не осталось... А сделать можно )))
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Leo174 » 27 апр 2017 13:22

Спасибо до ответ. Так первая и вторая ноги можно задействовать? Не силён я в программировании, но всеже попробую поизучать исходник, да я думаю и форумчане помогут своять. Ведь крайне полезный будет девайс. Ставь в любой шурик.
Leo174
Пробегал мимо
 
Сообщения: 2
Зарегистрирован: 27 апр 2017 08:28

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 27 апр 2017 21:28

Leo174, ресет использовать не люблю... а вторую можно на выход для светодиода. Но пока я не помощник....
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 10 авг 2017 13:48

Схема v2.0
sch_tiny13_v2.GIF
sch_tiny13_v2.GIF (15.46 КБ) Просмотров: 1404


Собранные платы:


Подробности в первом посте внизу.
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Denis_K » 12 авг 2017 22:36

Так на 3 вывода МК можно 6 светодиодов повесить... главное программа :-)
Denis_K
Частенько бываю
 
Сообщения: 46
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение hardlock » 13 авг 2017 16:17

Denis_K, А зачем 6 светодиодов? Трёх вполне достаточно для наглядной оценки остаточного заряда батареи...
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Denis_K » 13 авг 2017 21:25

hardlock, достаточно конечно. Я это писал для тех кому ног не хватает... даже 9 можно...
Denis_K
Частенько бываю
 
Сообщения: 46
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

Сообщение hardlock » 13 авг 2017 21:44

На 3 ноги 9 светодиодов? Нарисуете?
Аватара пользователя
hardlock
Администратор
 
Сообщения: 3604
Зарегистрирован: 21 янв 2009 15:48
Откуда: Minsk - zp.ua

Re: Индикатор заряда литиевого аккумулятора (1S)

Сообщение Denis_K » 15 авг 2017 10:21

Чего-то и правда ляпнул не подумав... и почему мне показалось 9 не знаю :-) .
Вложения
MKII.GIF
MKII.GIF (7.37 КБ) Просмотров: 1310
Denis_K
Частенько бываю
 
Сообщения: 46
Зарегистрирован: 16 июн 2017 13:48
Откуда: Краснодарский край

След.

Вернуться в ATtiny



Кто сейчас на конференции

Сейчас этот форум просматривают: astron, Bing [Bot], Yanshun и гости: 6