Интеллектуальный контроллер заряда Li-Ion АКБ на микросхеме TP4056
Столкнувшись с проблемами работы устройств, с возможностью автономной работы от заряжаемых литий-ионных аккумуляторов, решил собрать небольшое устройство которое должно контроллировать уровень заряда и при необходимости его подзаряжать. Устройство собрано на базе микроконтроллера ATMega48a, который измеряет напряжение на аккумуляторе и если напряжение на нем опустилось ниже допустимого порога, включает схему зарядки. Сама зарядка собрана на простом и дешевом контроллере TP4056.
Микроконтроллер изредка (примерно каждые 17 секунд) просыпается, измеряет напряжение на аккумуляторе и снова погружается в сон. Оставшийся заряд на аккумуляторе визуально отображается тремя светодиодами: при напряжении выше 3,6 вольт мигает зеленый светодиод (D3), при напряжении от 3,6 до 3,3 вольт мигает желтый (D2). Если напряжение ниже 3,3 вольта начинает мигать красный светодиод (D1). Если аккумулятор разряжен до 3,2 вольт или ниже, в работу включается зарядка на микросхеме TP4056, которая включается транзистором Q1.
Для того чтобы уменьшить расход аккумулятора на резисторный делитель R1-R2, используется полевой транзистор Q2. Перед тем как измерить напряжение, открываем транзистор - замыкаем делитель на землю, измеряем напряжение - закрываем транзистор, исключая таким образом лишние траты энергии.
Входное напряжение величиной 5 вольт, необходимое для подзарядки аккумулятора, подается на разъем V input. Если планируется туда подавать большее напряжение, на плате предусмотрено место под стабилизатор LM1117-5 в корпусе SOT-223.
Во время зарядки аккумулятора горит светодиод D4. Когда аккумулятор зарядится полностью, на выводе STDBY микросхемы TP4056 появляется низкий уровень, зафиксировав изменение уровня сигнала на этом выводе, микроконтроллер выключает подзарядку и переходит в рабочий режим слежения.
Для отладки, если понадобится подобрать свои значения порогов срабатывания, данные о напряжении АКБ выводятся в терминал на скорости 1200 бод.
>>залить этот код , а потом уже измерять напряжение аккумулятора и там уже увеличивать/уменьшать переменную? да именно так. Печатную плату рисовал в DipTrace, файл прикреплен в конце статьи.
ясно. т.е пока можно просто собрать так, залить этот код , а потом уже измерять напряжение аккумулятора и там уже увеличивать/уменьшать переменную? да и не можешь выложить файл печатной платы в lay? наверняка осталась..
Даже если собирать по исходной схеме, добиться одинаковых результатов не получится, сказываются погрешность резисторов, транзистор тоже добавлял сопротивление в делитель, да и ацп от микроконтроллера к микроконтроллеру может работать по разному. Поэтому цифры полученные с ацп (переменная W) нужно снимать заново и смотреть какие значения соответствуют каким напряжениям.
спасибо! всмысле а зачем менять программу из за выбрасывания транзистора? и какие переменные менять на что ? в коде их только 2 - Dim W As Integer Dim S As Integer
делитель для АЦП на R1 и R2, транзистор всеголишь "открывает" землю для этого делителя. R3 и R4 нужны для открывания/закрывания полевика, поэтому будут не нужны. в итоге вот как то так (номиналы оставляй, потому как все равно перенастраивать придется все значения переменных в программе)
ясно, спасибо. Уж не ругайте за такие вопросы, я пока начинающий))) http://i023.radikal.ru/1312/92/807e9d5c2b45.jpg вот нарисовал правильно будет соединить если выкинуть транзистор 2? и правильно я понял что делитель состоит из R2 R3 R4? на какие номиналы их заменить?
>to exersizze >А если опорное берется с лития то и фильтры там ни к чему, имхо. Хотя если делать >как говоришь (питаться с внешнего источника) то да, без этого никак.
Ну тут бы как дело такое, что мега может сама вносить помехи + всякие переходные процессы - по-любому, опорник желательно зашунтировать.
>Немного не понял про развязку питания с управлением через мегу, для чего?
Как для чего - ты же будешь питать конечного потребителя - в дальнейшем? вот и выводы питания туда же цеплять.
То что питание схемы будет идти от батареи было задумано с целью того, чтобы всегда была индикация состояния этой батареи, в независимости от того подключено ли внешнее питание. А если опорное берется с лития то и фильтры там ни к чему, имхо. Хотя если делать как говоришь (питаться с внешнего источника) то да, без этого никак. Немного не понял про развязку питания с управлением через мегу, для чего? Кстати про потребление меги48 в таком режиме, сейчас замерил сколько осталось на батарее: на начало эксперимента 3,78V сейчас 3,76V. Около 0,02 вольта за неделю:) офигенно же, и явно это не предел, можно еще выжать...
Разбирая схему, наткнулся на следующие недочеты: питание микросхемы и, соответственно, светодиодов идет от аккумулятора, что его разряжает, желательно поставить дроссель и конденсатор для входа AVCC, всунуть конденсатор на вход AREF. В варианте №2 предлагаю использовать следующее: поставить развязку по питанию на полевиках с управлением от контроллера, диоды перевернуть к плюсу питания или два из них - зеленый и желтый, третий - красный - по желанию можно и к литию, предусмотреть места для указанных выше деталюшек. Если поковыряться в программе, то для повышения точности измерения напряжения можно использовать следующее: считывать данные с АЦП в режиме Noise Reduction, применить усреднение из нескольких выборок или же для совсем продвинутых - оверсемплинг, как описано в апноуте у atmel - avr121 http://www.atmel.com/images/doc8003.pdf, перевод http://chipenable.ru/index.php/programming-avr/item/141-avr121-oversampling-decimation.html В последних двух вариантах можно убрать R3, R4, Q2, изменив номиналы R1, R2.
PS Насчет светодиодов некритичное замечание, если они будут моргать так редко.
>>А как к этому отнесется литиевый аккумулятор, если его постоянно держать на подзаряде? Думаю, на срок службы это скажется отрицательно. Как раз держать литий постоянно заряженным менее вредно чем постоянно гонять лишние циклы заряд/разряд. Хотя, справедливости ради, нужно сказать, что литий стареет как от глубокого разряда, так и от постоянного нахождения в заряженном состоянии. Если приоритетом есть не время автономной работы а срок службы аккумулятора, то оптимальным решением будет поддержание его в пределах "напряжения хранения", которое обеспечивает минимальное старение батареи. Оптимальные условия хранения Li-ion-аккумуляторов достигаются при заряде на уровне 40–70 % от ёмкости аккумулятора и температуре около 5 °C. При этом низкая температура является более важным фактором для малых потерь ёмкости при долговременном хранении. http://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D1%82%D0%B8%D0%B9-%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B0%D0%BA% D0%BA%D1%83%D0%BC%D1%83%D0%BB%D1%8F%D1%82%D0%BE%D1%80#.D0.9D.D0.B5.D0.B4.D0.BE.D1 .81.D1.82.D0.B0.D1.82.D0.BA.D0.B8
За необходимость транзистора Q2 спорить не буду, можно конечно увеличить сопротивление делителя, но тогда возрастает вероятность того что показания с АЦП будут прыгать. Поэтому решил что лучше пустить через транзистор.
Много чего написал, но, подумав, стер. В принципе, каждый может допилить устройство под себя и свое видение процессов эксплуатации как аккумуляторов, так и девайсов.
>>>KoSS_89 (Вчера 02:28) >>>Можно не ставить Q2 а просто увеличить общее значение сопративления делителя
pchela5 конечно, позволяю не согласиться))) в спорах рождается истина. Я, правда, дальше писал "..С возможностью доработки под свои нужды. Это незаконченный проект по питанию,а один из возможных его алгоритмов..." Стержень есть, дальше - все в наших руках
>>>если можно оставить одну микрохему заряда с постоянным включением? А как к этому отнесется литиевый аккумулятор, если его постоянно держать на подзаряде? Думаю, на срок службы это скажется отрицательно. У кситала, кстати, применяется свинцовый аккумулятор. На счет добавления схемы переключения на резервный источник идея хорошая, думаю два транзистора можно вписать без увеличения размеров платы. Возьму заметку на будущее)
то RD3AVJ "pchela5 это не автономный источник питания))) - это средство автомата зарядки в составе устройств с возможностью автономного питания. В этом контексте оно соответствует своим техданным на все сто. " Позвольте не согласиться ))) Чисто гипотетически может возникнуть ситуация, что аккумулятор близок к порогу разряда, выключили свет и оппа - вместо 8 часов атономной работы мы имеем 1,5. Естественно, изменяя порог начала заряда, можно переделать схему под свои нужды, но тогда какой в ней смысл, если можно оставить одну микрохему заряда с постоянным включением? Мое мнение - аккумулятор должен постоянно быть заряжен как можно ближе к максимальной емкости (охранные сигнализации - Кситал, например (это не реклама) - работают именно по такому принципу) и к данному девайсу надо прикручивать устройство переключения с основного на резервный источник питания.
Если в эту же платку "впилить" еще и переключатель питания, чтобы при отсутствии внешнего питания устройство автоматически переключалось на батарею, то девайсу вообще цены не будет.
youhim, эта приблуда задумывалась как нечто поддерживающее резервный аккумулятор в рабочем состоянии. К примеру, у нас есть гипотетическое устройство которое постоянно запитывается от сети и имеет возможность переключаться на аккумулятор в случае пропадании основного напряжения (GSM сигнализация, ага ). Так вот чтобы аккумулятор не успел разрядится пока простаивает в ожидании и нужен этот контроллер. С порогами заряда, да, согласен, в таком случае можно поднять. Чтобы иметь запас побольше.
pchela5 это не автономный источник питания))) - это средство автомата зарядки в составе устройств с возможностью автономного питания. В этом контексте оно соответствует своим техданным на все сто. С возможностью доработки под свои нужды. Это незаконченный проект по питанию,а один из возможных его алгоритмов. И мне очень помог для одного из устройств, которое сейчас в совместной разработке с автором статьи. В этом проекте акк разрядится дай бог за неделю. А то две. Так что скорее само устройство сдохнет, чем аккумулятор при такой "езде"
Ну дык это понятно, но тогда смысл в применении этого девайса в именно таком разрезе? Вот если устройство автономное, то тогда да - выставил ему пороги, чтобы начал пищать при разряде - типа "включите меня на зарядку". А то у меня были такие случае - приедешь на рыбалку, а фонарь или еще какая приблуда не работают (правда аккумуляторы не литиевые, но не суть)
Не совсем понятна логика устройства. Если вам необходимо, чтобы устройство было всегда готово к автономному использованию, то почему устройство ждет полного разряда аккума, а не подзаряжает его постоянно? может ведь оказаться, что он не успеет зарядить когда девайс понадобиться. Ну и еще это вредно для лития, - чем глубже циклы, тем быстрее старение.