Есть у меня некая неприязнь к Ардуинам и всё что с ними связано. В основном неприязнь касается кучи рукопопых библиотек-для-всего-на-свете, которые во-первых работают как чёрные ящики, окольными путями делая элементарные действия, а во вторых порождют кучу рукоаналогичных разработчиков, которые без всякого понимания сути процесса, бездумно копипастят код, вызывающий те самые уже написанные библиотеки, будучи при этом уверенными что могут программировать микроконтроллеры, и застревают на какой-нибудь элементарщине, образовавшейся на точке пересечения руковолшебства всей этой компании.
Но также значительная часть неприязни относится к самому́ множеству модулей, разработанных и собранных китайцами за две порции риса, где на плате размером с вертолётную площадку, где-то в середине припаяна нужная микросхема и два килограмма ненужной обвязки. Всё это соединяется проводочками и соплями. В итоге что-то начинает работать не так, не туда, и тематические форумы в Интернете заполняются слёзными историями и мольбами о помощи, собирая светил телепатических искусств, пытающихся угадать по фотографии: что же в этот раз пошло не так?
Здесь же будет моя слёзная история. Как уже писал в прошлый раз, вожусь я сейчас с часами DS1307. Часы эти реализованы в виде вот такого вот Arduino-модуля, на котором, помимо часов, ещё стоит чип EEPROM на 4 кбайта AT24C32, оба работают на шине I²C:
И сто́ит на Ebay такой модуль около бакса, красотища!
Ну, начнём по-порядку. Вставил я, значит, батарейку, подключил этот модуль к микроконтроллеру и первое что меня насторожило — это то что при подаче питания, часы почему-то идут, хотя бит CH, блокирующий счёт, установлен (он всегда установлен по-умолчанию, поэтому после вынимания батарейки часы не считают).
Ну ладно — попробовал и так и сяк, вроде регистры читаются, записываются. Выключил питание. Включил через пару часов. А часы за эти пару часов ни секунды не прибавили! Т.е. пока питание есть — DS1307 считает, а при работе от батарейки — перестаёт. Почему?
Я естественно полез в интернет. Как оказалось, с этими модулями чуть ли не у каждого второго такая беда (правда, подозреваю, что большинство из оставшихся не догадывается об этом, поскольку не пробовали считать время без питания).
Ну и как всегда, потомственные телепаты-экстрасенсы на форумах дают советы протереть окошки да постучать по колёсам, за которые Премию Гудини им явно не дадут. Если бы дело было в нерабочем кварце, то часы не считали бы и при поданном питании, а если бы дело было в контакте батареи, то часы не помнили бы последнее время. Дело в чём-то другом.
Особенно меня озадачило, когда я вынул литиевую батарейку и напряжение на ней оказалось 3,6 вольта, хотя совсем недавно ещё было 3,3.
Естественно, я решил разобраться и первым делом зареверсинжинирил схему. Вот она:
Названия компонент на схеме нарисовал также, как на плате.
Что интересно, в Интернете есть фотографии других аналогичных модулей. Номиналы резисторов там отличаются: R5 бывает 1кОм, R2, R3 по 3,3 килоома, R7 варьируется от 380 кОм до полного отсутствия. Впрочем, это типичная ситуация для китайских модулей. Лепят что попало.
Но что меня действительно удивило — это избыточная обвязка у DS1307.
Если посмотреть в даташиты, то каждая из этих микросхем требует минимум обвязки: кварц для часов, по конденсатору на линию питания, ну и подтягивающие резисторы на шину I²C. Казалось бы, что может быть проще — слепить всё по схеме и радоваться?
Ан нет! Китаец-проектировщик, доедая свой честно заработанный рис, решил восславить Мао Цзедуна и написал на схеме 毛澤東. Разводчик платы традиционный китайский не учил, и подумал что это резисторы и диоды. Иначе объяснить их появление на плате я не могу.
Через диод D1 и резистор R5 батарейка заряжается током около (5В — 0,6 В (падение на диоде) — 3,3 В на батарейке) / 200 Ом = 5,5 мА
Господа! Ни в коем случае, никогда не пытайтесь заряжать батарейки! Это может быть чревато.
Конечно, этого тока не хватит, чтобы взорвать батарейку со спецэффектами, но чтобы вывести её из строя — вполне.
Смотрим на схему далее. От батарейки ко входу Vbat идёт делитель из резисторов R6 и R4.
Появление делителя вполне объяснимо, ведь когда Vcc падает ниже чем 1,25 * Vbat, DS1307 отключает линии SCL SDA и переходит в режим работы от батареи. Поскольку тут, благодаря диоду, на входе Vbat легко может быть 4,5 вольта, выход — очевиден! Что? Убрать цепь D1? Нет же! Учитесь мыслить по-китайски. Нужно сделать делить от батарейки на вход Vbat. Оп! Теперь напряжение Vbat около 3,3 вольт при работе от 5 вольт. Проблема решена! Идём кушать рис и славить Мао.
Вот только при работе от батареи, на которой 3 вольта, на выходе делителя получится 2,2. Конечно, даташит говорит что на входе Vbat должно быть больше 2 вольт. Но этот же даташит говорит, что потребляемый ток в режиме работы от батареи может достигать 800 нА. В результате напряжение на входе Vbat проседает ещё на 0,4 вольта
Но! 800 нА — это в среднем. А среднее состоит из маленьких всплесков, которые необходимы чтобы раскачивать кварц. На входе никаких конденсаторов нет, поэтому всплески тока просаживают напряжение на R6 хуже некуда. В итоге осциллятор не может стартовать, даже если убрать R4. В этом и есть причина, почему при работе от батареи счёт не идёт, но SRAM сохраняется. Для сохранения значений в SRAM нужен совсем мизерный ток.
Возможно, плата изначально проектировалась под литиевый аккумулятор LIR2032? На этом аккумуляторе напряжение типично около 3,6 вольт, а на заряженном — до 4,2 вольта. Это объяснило бы и наличие линии зарядки, и делитель напряжения, ведь максимальное рабочее напряжение на входе Vbat — 3,5 вольта. Вот только, во-первых это не решает проблемы с просадкой напряжения на R6 для запуска осциллятора, во-вторых напряжение заряда может легко превысить допустимые для литиевых аккумуляторов 4,2 вольта, что очень быстро убъёт его. А в третьих, использование аккумулятора в такой схеме — это просто верх идиотизма!
Ёмкость батареи CR2032 — около 210 мА*ч, максимальное потребление DS1307 (в худших погодных условиях и когда на SQW/OUT выводится меандр) — 800 нА. Т.е. заряда батареи хватит на 30 лет! За это время любой литиевый аккумулятор сдохнет сам по себе, а уж при такой схеме зарядки и того быстрее.
Типичное же потребление DS1307 при работе от батарии, если вход SQW/OUT отключен — 300 нА — батарейки хватит на 80 лет.
Итак, рассматриваем схему дальше и находим 3,6 мегаомный резистор R7, который зачем-то притягивает одну из ножек кварца к земле. Зачем он это делает? Во славу Мао Цзедуна, конечно!
У maxim integrated есть аппноты: вот и вот. И нигде не написано, что нужно вешать какие-то резисторы на кварц. Мало того — написано совсем обратное, что лишние висящие компоненты на кварце могут сильно повлиять на точность и работоспособность.
Ещё стоит обратить внимание на конденсаторы C1 и C2, которые являются фильтрующими по питанию. Даташит каждой из двух микросхем рекомендует конденсатор на питании. Поэтому китаец честно разместил на плате два конденсатора. То что они находятся в середине платы, в упор рядом друг с другом, китайца не смутило. Партия сказала — два, значит будет два!
И вот я уже вижу как кто-то строчит комментарий: "Диман, у тебя на схеме ошибка: написано 100 пикофарад на конденсаторах. Наверное имелось в виду 100 нанофарад?" А вот хрен! 100 именно что пикофарад! Да-да, ёмкость фильтрующих конденсаторов на линии питания сравнима с паразитной ёмкостью самих линий. Я даже специально выпаял и замерил по-отдельности. 100 пикофарад. Разумеется, с таким конденсатором любой всплеск на линии питания может найти своё отражение как в счёте, так и в коммуникации.
Есть ещё место под неприпаянный выводной элемент U1. Средняя нога подтягивается резистором 3.3 килоома к линии питания и выводится на отдельный вывод. Сюда можно воткнуть, например, температурный датчик DS18B20. Правда, работает он вовсе не по I²C, а по протоколу 1-wire. Но зато очень удобно! Можно замерять температуру и сразу узнать когда литиевая батарейка взорвалась и загорелась!
Чтобы пофиксить работоспособность этого чуда китайской инженерной мысли:
1) цепь D1, R5 убираем нафиг
2) R4 нафиг
3) R6 выпаеваем и заменяем на что-то не более килоома. Я впаял 100 ом, но можно просто припаять перемычку — кусочек провода.
3-бонус) я ещё для пущей стабильности батарейного питания на место бывшего R4 впаял конденсатор 1нФ — это не обязательно.
4) R7 убираем нафиг-нафиг
5-опционально) для стабильной работы и связи, хорошо бы один из конденсаторов заменить на что-то от 0,1 мкФ. Я впаял сразу 1 мкФ.
Итак, вставляю батарейку, включаю питание микроконтроллера. Бац! часы стоят. Задаю время, снимаю бит CH, бац! Часы считают. Выключаю питание, пью чай, включаю питание. Бац! Часы продолжают считать и показывают правильное время. Строчу и публикую статью на drive2. Бац! Появляются комментарии.
Есть у меня некая неприязнь к Ардуинам и всё что с ними связано. В основном неприязнь касается кучи рукопопых библиотек-для-всего-на-свете, которые во-первых работают как чёрные ящики, окольными путями делая элементарные действия, а во вторых порождют кучу рукоаналогичных разработчиков, которые без всякого понимания сути процесса, бездумно копипастят код, вызывающий те самые уже написанные библиотеки, будучи при этом уверенными что могут программировать микроконтроллеры, и застревают на какой-нибудь элементарщине, образовавшейся на точке пересечения руковолшебства всей этой компании.
Но также значительная часть неприязни относится к самому́ множеству модулей, разработанных и собранных китайцами за две порции риса, где на плате размером с вертолётную площадку, где-то в середине припаяна нужная микросхема и два килограмма ненужной обвязки. Всё это соединяется проводочками и соплями. В итоге что-то начинает работать не так, не туда, и тематические форумы в Интернете заполняются слёзными историями и мольбами о помощи, собирая светил телепатических искусств, пытающихся угадать по фотографии: что же в этот раз пошло не так?
Здесь же будет моя слёзная история. Как уже писал в прошлый раз, вожусь я сейчас с часами DS1307. Часы эти реализованы в виде вот такого вот Arduino-модуля, на котором, помимо часов, ещё стоит чип EEPROM на 4 кбайта AT24C32, оба работают на шине I²C:
И сто́ит на Ebay такой модуль около бакса, красотища!
Ну, начнём по-порядку. Вставил я, значит, батарейку, подключил этот модуль к микроконтроллеру и первое что меня насторожило — это то что при подаче питания, часы почему-то идут, хотя бит CH, блокирующий счёт, установлен (он всегда установлен по-умолчанию, поэтому после вынимания батарейки часы не считают).
Ну ладно — попробовал и так и сяк, вроде регистры читаются, записываются. Выключил питание. Включил через пару часов. А часы за эти пару часов ни секунды не прибавили! Т.е. пока питание есть — DS1307 считает, а при работе от батарейки — перестаёт. Почему?
Я естественно полез в интернет. Как оказалось, с этими модулями чуть ли не у каждого второго такая беда (правда, подозреваю, что большинство из оставшихся не догадывается об этом, поскольку не пробовали считать время без питания).
Ну и как всегда, потомственные телепаты-экстрасенсы на форумах дают советы протереть окошки да постучать по колёсам, за которые Премию Гудини им явно не дадут. Если бы дело было в нерабочем кварце, то часы не считали бы и при поданном питании, а если бы дело было в контакте батареи, то часы не помнили бы последнее время. Дело в чём-то другом.
Особенно меня озадачило, когда я вынул литиевую батарейку и напряжение на ней оказалось 3,6 вольта, хотя совсем недавно ещё было 3,3.
Естественно, я решил разобраться и первым делом зареверсинжинирил схему. Вот она:
Названия компонент на схеме нарисовал также, как на плате.
Что интересно, в Интернете есть фотографии других аналогичных модулей. Номиналы резисторов там отличаются: R5 бывает 1кОм, R2, R3 по 3,3 килоома, R7 варьируется от 380 кОм до полного отсутствия. Впрочем, это типичная ситуация для китайских модулей. Лепят что попало.
Но что меня действительно удивило — это избыточная обвязка у DS1307.
Если посмотреть в даташиты, то каждая из этих микросхем требует минимум обвязки: кварц для часов, по конденсатору на линию питания, ну и подтягивающие резисторы на шину I²C. Казалось бы, что может быть проще — слепить всё по схеме и радоваться?
Ан нет! Китаец-проектировщик, доедая свой честно заработанный рис, решил восславить Мао Цзедуна и написал на схеме 毛澤東. Разводчик платы традиционный китайский не учил, и подумал что это резисторы и диоды. Иначе объяснить их появление на плате я не могу.
Через диод D1 и резистор R5 батарейка заряжается током около (5В — 0,6 В (падение на диоде) — 3,3 В на батарейке) / 200 Ом = 5,5 мА
Господа! Ни в коем случае, никогда не пытайтесь заряжать батарейки! Это может быть чревато.
Конечно, этого тока не хватит, чтобы взорвать батарейку со спецэффектами, но чтобы вывести её из строя — вполне.
Смотрим на схему далее. От батарейки ко входу Vbat идёт делитель из резисторов R6 и R4.
Появление делителя вполне объяснимо, ведь когда Vcc падает ниже чем 1,25 * Vbat, DS1307 отключает линии SCL SDA и переходит в режим работы от батареи. Поскольку тут, благодаря диоду, на входе Vbat легко может быть 4,5 вольта, выход — очевиден! Что? Убрать цепь D1? Нет же! Учитесь мыслить по-китайски. Нужно сделать делить от батарейки на вход Vbat. Оп! Теперь напряжение Vbat около 3,3 вольт при работе от 5 вольт. Проблема решена! Идём кушать рис и славить Мао.
Вот только при работе от батареи, на которой 3 вольта, на выходе делителя получится 2,2. Конечно, даташит говорит что на входе Vbat должно быть больше 2 вольт. Но этот же даташит говорит, что потребляемый ток в режиме работы от батареи может достигать 800 нА. В результате напряжение на входе Vbat проседает ещё на 0,4 вольта
Но! 800 нА — это в среднем. А среднее состоит из маленьких всплесков, которые необходимы чтобы раскачивать кварц. На входе никаких конденсаторов нет, поэтому всплески тока просаживают напряжение на R6 хуже некуда. В итоге осциллятор не может стартовать, даже если убрать R4. В этом и есть причина, почему при работе от батареи счёт не идёт, но SRAM сохраняется. Для сохранения значений в SRAM нужен совсем мизерный ток.
Возможно, плата изначально проектировалась под литиевый аккумулятор LIR2032? На этом аккумуляторе напряжение типично около 3,6 вольт, а на заряженном — до 4,2 вольта. Это объяснило бы и наличие линии зарядки, и делитель напряжения, ведь максимальное рабочее напряжение на входе Vbat — 3,5 вольта. Вот только, во-первых это не решает проблемы с просадкой напряжения на R6 для запуска осциллятора, во-вторых напряжение заряда может легко превысить допустимые для литиевых аккумуляторов 4,2 вольта, что очень быстро убъёт его. А в третьих, использование аккумулятора в такой схеме — это просто верх идиотизма!
Ёмкость батареи CR2032 — около 210 мА*ч, максимальное потребление DS1307 (в худших погодных условиях и когда на SQW/OUT выводится меандр) — 800 нА. Т.е. заряда батареи хватит на 30 лет! За это время любой литиевый аккумулятор сдохнет сам по себе, а уж при такой схеме зарядки и того быстрее.
Типичное же потребление DS1307 при работе от батарии, если вход SQW/OUT отключен — 300 нА — батарейки хватит на 80 лет.
Итак, рассматриваем схему дальше и находим 3,6 мегаомный резистор R7, который зачем-то притягивает одну из ножек кварца к земле. Зачем он это делает? Во славу Мао Цзедуна, конечно!
У maxim integrated есть аппноты: вот и вот. И нигде не написано, что нужно вешать какие-то резисторы на кварц. Мало того — написано совсем обратное, что лишние висящие компоненты на кварце могут сильно повлиять на точность и работоспособность.
Ещё стоит обратить внимание на конденсаторы C1 и C2, которые являются фильтрующими по питанию. Даташит каждой из двух микросхем рекомендует конденсатор на питании. Поэтому китаец честно разместил на плате два конденсатора. То что они находятся в середине платы, в упор рядом друг с другом, китайца не смутило. Партия сказала — два, значит будет два!
И вот я уже вижу как кто-то строчит комментарий: "Диман, у тебя на схеме ошибка: написано 100 пикофарад на конденсаторах. Наверное имелось в виду 100 нанофарад?" А вот хрен! 100 именно что пикофарад! Да-да, ёмкость фильтрующих конденсаторов на линии питания сравнима с паразитной ёмкостью самих линий. Я даже специально выпаял и замерил по-отдельности. 100 пикофарад. Разумеется, с таким конденсатором любой всплеск на линии питания может найти своё отражение как в счёте, так и в коммуникации.
Есть ещё место под неприпаянный выводной элемент U1. Средняя нога подтягивается резистором 3.3 килоома к линии питания и выводится на отдельный вывод. Сюда можно воткнуть, например, температурный датчик DS18B20. Правда, работает он вовсе не по I²C, а по протоколу 1-wire. Но зато очень удобно! Можно замерять температуру и сразу узнать когда литиевая батарейка взорвалась и загорелась!
Чтобы пофиксить работоспособность этого чуда китайской инженерной мысли:
1) цепь D1, R5 убираем нафиг
2) R4 нафиг
3) R6 выпаеваем и заменяем на что-то не более килоома. Я впаял 100 ом, но можно просто припаять перемычку — кусочек провода.
3-бонус) я ещё для пущей стабильности батарейного питания на место бывшего R4 впаял конденсатор 1нФ — это не обязательно.
4) R7 убираем нафиг-нафиг
5-опционально) для стабильной работы и связи, хорошо бы один из конденсаторов заменить на что-то от 0,1 мкФ. Я впаял сразу 1 мкФ.
Итак, вставляю батарейку, включаю питание микроконтроллера. Бац! часы стоят. Задаю время, снимаю бит CH, бац! Часы считают. Выключаю питание, пью чай, включаю питание. Бац! Часы продолжают считать и показывают правильное время. Строчу и публикую статью на drive2. Бац! Появляются комментарии.
Комментарии ( 70 )
- anakost
- 05 декабря 2013, 11:10
- ↑
- ↓
- anakost
- 05 декабря 2013, 12:05
- ↑
- ↓
- evsi
- 06 декабря 2013, 14:05
- ↑
- ↓
- EW1UA
- 05 декабря 2013, 13:10
- ↓
- Bonio
- 05 декабря 2013, 14:09
- ↓
- anakost
- 05 декабря 2013, 14:48
- ↑
- ↓
- anakost
- 05 декабря 2013, 15:10
- ↑
- ↓
- anakost
- 05 декабря 2013, 15:51
- ↓
- Fahivec
- 05 декабря 2013, 22:51
- ↓
- anakost
- 06 декабря 2013, 21:55
- ↑
- ↓
- anakost
- 07 декабря 2013, 08:28
- ↑
- ↓
- Vga
- 07 декабря 2013, 11:59
- ↓
- Vga
- 07 декабря 2013, 12:18
- ↑
- ↓
- Vga
- 07 декабря 2013, 13:00
- ↑
- ↓
- Vga
- 07 декабря 2013, 15:47
- ↑
- ↓
- anakost
- 07 декабря 2013, 18:05
- ↑
- ↓
Ток через R4+R6 составит 1,8 мкА, что сравнимо с саморазрядом.
- Vga
- 07 декабря 2013, 19:11
- ↑
- ↓
один на батарейку и второй на VCC
че-та странно. по-ходу, говорят что нельзя:
When VCC is below the minimum operating value (VTP), the RTC disables the communications interface. This serves two purposes: it prevents accidental writes to the RTC while VCC is dropping; it reduces the power needed by the RTC to maintain oscillator, time, and date operation. Disabling access to the part when VCC is below VTP is often called «write protect.» While the RTC is operating from VCC, the VBAT input will be at a high impedance. If a battery is not connected to the VBAT input, or if it is connected with diodes in series (Figure 6), the VBAT input can float high. This, in turn, can cause the RTC to go into write protect. Reverse-charging protection is provided internally on most Maxim RTCs, which eliminates the need for external diodes. Check the following link for information about UL recognition of the reverse-charging protection.
- podkassetnik
- 07 декабря 2013, 21:29
- ↑
- ↓
R4 нужен по аппноту, если DS1307 подключить к внешнему питанию без резервного
- Vga
- 07 декабря 2013, 23:36
- ↑
- ↓
- podkassetnik
- 07 декабря 2013, 23:40
- ↑
- ↓
- podkassetnik
- 07 декабря 2013, 23:44
- ↑
- ↓
- anakost
- 08 декабря 2013, 10:04
- ↑
- ↓
- Vga
- 08 декабря 2013, 14:13
- ↑
- ↓
- podkassetnik
- 07 декабря 2013, 21:21
- ↑
- ↓
- anakost
- 08 декабря 2013, 10:06
- ↑
- ↓
VBAT Battery Voltage: MIN: 2.0V; TYP: 3V; MAX: 3.5V
Это при том, что китаезы поставили батарейку с номинальным 3.6В, а при наличии внешнего питания — все 4.5В. Делитель 3/4 просто необходим. При замене на положенную по даташиту 3V батарейку этот делитель нужно выкинуть, т.к. он понизит напряжение батарейки до 2.25В — почти нижний предел.
Также стоит заметить, что делитель R4R6 жрет в 4-5 раз больше, чем сама DS1307 (ее ток потребления — 100-800нА, в зависимости от режима) и высадит батарейку за 2-2.5 года, при том, что даташит на микру обещает 10 лет. Впрочем, срок службы литиевого аккумулятора не превышает 3-4 лет, а в этой платке — нескольких недель, если не дней (работы, разумеется, а не лежания в коробке вместе с прочими ардуино-блоками).
Алсо, учитывая даташит, я уточню свои рекомендации. При установке нормальной литиевой батарейки CR2032 R6 следует заменить перемычкой, R4, R5, D1 — убрать.
- Vga
- 08 декабря 2013, 14:27
- ↑
- ↓
Lithium Secondary (ML) Cells
ML cells require a regulated-voltage-charging source. The maximum voltage must be closely regulated or permanent damage will occur, while too low a voltage results in incomplete charging. ML cells are subject to the same transportation and disposal regulations as lithium primary cells. The DS12R885/DS12R887 RTCs include a charger with the required voltage and current limits on-chip. The DS12R887 RTC integrates the ML cell in a BGA package.
One issue with secondary cells is the number of charge/discharge cycles that they can withstand during the normal service life. For ML cells, the number of charging cycles is directly related to the depth of discharge as detailed in the Manganese Lithium Rechargeable Cell Lifetime Calculator, an on-line tool for determining ML cell lifetime.
The following is a list of links to some rechargeable lithium ML coin cell manufacturer web sites:
Panasonic: OEM Batteries
SANYO: Industrial Batteries
- anakost
- 08 декабря 2013, 17:05
- ↑
- ↓
источник зарядки регулируемого напряжения
- Vga
- 08 декабря 2013, 20:50
- ↑
- ↓
- anakost
- 08 декабря 2013, 21:15
- ↑
- ↓
- Vga
- 08 декабря 2013, 22:06
- ↑
- ↓
- mamonth
- 25 марта 2016, 09:43
- ↑
- ↓
- mamonth
- 25 марта 2016, 09:47
- ↑
- ↓
- Vga
- 25 марта 2016, 12:37
- ↑
- ↓
- mamonth
- 25 марта 2016, 12:41
- ↑
- ↓
- Vga
- 25 марта 2016, 13:01
- ↑
- ↓
Источник — Зарядное устройство для Li-ion на ТР4056, оттуда заключение:
Ранее я заказал и описАл простую платку с DS1307Z и AT24C32 на борту.
Для резервного питания часов там заложен Li-ion аккумулятор LIR2032. Его подзарядка осуществляется постоянно, через резистор (1,8мкА), от питающего напряжения. Хотя упоминаний об этом в инете нет, меня убедили, что такая схема зарядки быстро убивает аккумулятор.
Данная зарядка бралась на замену резистору. Такая замена естественно дороже. Хотя если учесть цену данной платы (13,74 руб), плюсов будет больше.
Тестовая работа по подключению маломощного аккумулятора LIR2032 к зарядке на TP4056 была проведена здесь:
Автор изменил сопротивление токозадающего резистора с 1,2к на 33к, зарядный ток уменьшился до 45мА. По словам автора, зарядка разряженного аккумулятора занимает около часа.
Как это будет выглядеть в теории? Даташит на Li-MnO2 аккумулятор LIR2032 рекомендует зарядку номинальным током 20мА и напряжением 4,2В. После падения тока до 4мА батарею можно считать полностью заряженной. Максимальный ток зарядки 35-45мА, в зависимости от производителя. Минимальное напряжение разряда аккумулятора до начала деградации ячейки 2,75В. Для аккумулятора гарантируется 500 циклов заряда/разряда с сохранением после них не менее 80% емкости.
В свою очередь контроллер Tp4056 не сможет обеспечить ток зарядки ниже 30мА, просто уйдет в сон. И ждать пока напряжение на аккумуляторе упадет до 2,75В тоже не будет, включит зарядку уже при падении до 4,0В. Таким образом он будет постоянно поддерживать аккумулятор на
85-95% заряженным. Наверное это не оптимально для ячейки, но все же лучше, чем через резистор.
Я выбросил зарядный резистор, подключил модуль на ТР4056, зарядка длилась меньше 15 минут.