
Недавно я столкнулся с проблемой выхода из строя трёх новеньких аккумуляторов Ryobi. Мне стало интересно, и я решил разобраться, что могло послужить причиной. В итоге я погрузился в эту кроличью нору довольно глубоко — покупал десятки нерабочих аккумуляторов на eBay, реверсил печатную плату и документировал все этапы ремонта.
В этой статье я расскажу обо всём, что узнал, и дам подробные инструкции, которые помогут вам вернуть к жизни свои батареи. Среди всех режимов отказа, в которых мои аккумуляторы выходили из строя, один был особенно интересен, и я даже снял по нему подробное видео. Далее я подробно расскажу о нём и других, более очевидных режимах.
Кому интересно, вот мой проект на GitHub.
Дисклеймер
При работе с литиевыми аккумуляторами необходимо соблюдать осторожность и придерживаться проверенных техник. Здесь только вы в ответе за собственную безопасность.
Схема

Эта схема получилась у меня в результате реверс-инжиниринга аккумулятора PBP005. Она завершена где-то на 95% и позволяет не только хорошо понять топологию, но и сделать какие-то выводы.
В целом такая архитектура батарей весьма распространена по сравнению с другими похожими BMS (Battery Management System). Конкретную модель микросхемы AFE (Analog Front-End) я не выяснил. Это либо клон, либо кастомная версия ASIC с маркировкой 3705T. Мне удалось успешно проанализировать и декодировать поток данных по шине I2C, но без спецификации разобраться я в них не смог. Я заглядывал в документацию TI BQ76920, но она не подошла.
В схеме также есть интересная цепь, проверяющая наличие нагрузки на контактах батареи. Она может обнаруживать достаточно высокое сопротивление и через МОП-транзистор активировать подачу тока на подключённое устройство.
Режимы отказа
В таблице ниже я перечислил все режимы отказа, которые выявил, пока диагностировал и чинил каждую батарею. Далее я расскажу о них подробнее.
Режим сбоя |
Частота |
Симптом |
Решение |
Перманентная программная блокировка |
65% |
одно мигание 1 светодиода -> 4 мигания всех |
Дамп прошивки -> сброс байта блокировки -> перепрошивка |
Разбалансировка ячеек |
13% |
Неровное напряжение ячеек + 4 мигания |
Ручная балансировка с помощью зарядника и сброса через J1 |
Мягкая программная блокировка |
7% |
4 мигания |
Сброс через J1 |
Глубокий разряд |
16% |
Очень низкое напряжение батареи (<5 В) |
– |
Мёртвые ячейки |
3% |
Очень низкое напряжение ячеек (<1 В/ячейку) |
– |
Испорченный резистор обратной связи |
3% |
4 мигания + неверное напряжение со стороны AFE от резисторов обратной связи |
Замена резистора обратной связи равнозначным |
Не срабатывающая индикаторная кнопка |
6% |
TP32 >1 В при нажатой кнопке |
Удаление R27 и замена R28 на аналогичный 100 Ом |
Сбой диода D10 |
3% |
Не заряжается |
Удаление D10 |
Перманентная программная блокировка
Это самый интересный режим. Именно он привёл к отказу моих аккумуляторов, с чего всё и началось. Как я понял, когда батареи какое-то время бездействуют, в определённый момент ПО решает, что они находятся в небезопасных условиях, и активирует перманентную программную блокировку, которая не даёт заряжать/разряжать их. При этом во время первого нажатия разово мигает один индикатор, а при последующих – все 4.

Изначально, когда я тестировал батареи с этой проблемой, то думал, что причиной может быть защита от переразряда, так как некоторые батареи были сильно разряжены. Тогда я вручную их зарядил, но оживить так и не смог. Я даже балансировал их до 0,01 В, но и это не помогло. Попытка сброса через замыкание J1 тоже оказалась безуспешной. И лишь после многочисленных перестановок микросхем, считывания дампа памяти и перекрёстной прошивки я выяснил, что проблема кроется в ПО. Путём множества проб и ошибок я нашёл конкретный байт по адресу 0x7E90, который при установке на 1 вызывал перманентную блокировку, а при установке на 0 – снимал её. Чуть позже я расскажу об этом подробнее.
Теперь нужно было выяснить, что служило причиной блокировки. В некоторых протестированных мной образцах с eBay присутствовали ячейки, которые были либо сильно разряжены, либо разбалансированы. Я предположил, что дело вполне могло быть в этом. Но только после того, как я получил пять почти нулёвых на вид батарей, у меня возникло подозрение, что блокировка может возникать даже при нормальном использовании или хранении. Все эти пять экземпляров я смог восстановить, просто сбросив на 0 бит блокировки и подключив их к родной зарядке Ryobi. Эти батареи имели отличный баланс напряжения и сохраняли его на протяжении нескольких циклов заряда/разряда.
К сожалению, я не записал ни показания диагностики моих первых аккумуляторов, ни шаги, которые проделывал в попытке их восстановления. Хотя, исходя из того, что я выяснил, скорее всего они переходят в какое-то особое программное состояние. Происходит это после пары месяцев простоя, когда цифровой блок потребляет достаточно тока для их разрядки, и напряжение падает до такого уровня, что возникает блокировка. На эту мысль меня натолкнуло то, что большинство батарей, которые я получил с eBay, оказались сильно разряжены.
Единственный случай, в котором, по моим наблюдениям, происходит такая блокировка, это когда напряжение одной из ячеек на ~0.15 В меньше напряжения остальных, а напряжение всей батареи находится в определённом диапазоне. В итоге при подключении к зарядке аккумулятор блокируется. И такой расклад вроде имеет смысл, так как при нормальных условиях аккумулятор никогда не достигает такой разбалансировки.
Так что выяснить основную причину этого сбоя может не получиться, особенно без доступа к коду. Я проведу кое-какие длительные тесты и посмотрю, удастся ли воссоздать этот режим сбоя. Если я выясню что-то новое, то дополню статью. Ну а так я по крайней мере знаю, как это можно исправить, если вдруг сбой повторится — просто перепрошить ПО.
Прошивка
Вкратце опишу, как можно сделать дамп памяти микроконтроллера, изменить её и залить обратно. В качестве микроконтроллера здесь у нас LPC804M101 от NXP. На его плате есть интерфейс SWD, к которому можно подключиться кабелем TagConnect (продаётся здесь). Я для отладки использовал имевшийся у меня программатор J-LInk EDU Mini (купить можно здесь), так что для его правильного подключения пришлось обратиться к спецификациям обоих устройств. Вот некоторые схемы, которые мне в этом помогли.

Затем с помощью SEGGER J-Flash я считал память микроконтроллера и сохранил её содержимое в HEX-файл. Анализ и сравнение прошивок я делал в основном через VSCode с плагином HexEditor. В итоге я просто инвертировал байт блокировки по адресу 0x7E90 и затем заливал прошивку обратно на микроконтроллер с помощью SEGGER J-Flash Lite.


Разбалансировка ячеек

В некоторых аккумуляторах часть ячеек оказалась разбалансирована. Об этой неисправности они сообщали 4-мя миганиями всех светодиодов. Причин могло быть несколько. Возможно, просто внутреннее сопротивление части ячеек было слегка выше сопротивления остальных, и при высокой нагрузке баланс нарушался. Тестирование показало, что балансировка ячеек в этих аккумуляторах происходит очень медленно, и только если они находятся в определённом диапазоне напряжения. Резистор на 500 Ом ограничивает максимальный ток балансировки до ~8 мА. Также есть зависимость от общего напряжения батареи и уровня разбалансировки, так что конкретную логику работы здесь определить очень трудно.
Чтобы это исправить, я выровнял напряжение ячеек вручную, используя источник питания с постоянным током 0,5 А. А для восстановления батарей я выполнил сброс с помощью перемычки J1. Покажу как.

Вполне возможно, что ячейки снова разбалансируются, если часть из них имеет более высокое сопротивление. Чем выше нагрузка, тем острее это проявляется. Также может быть, что из-за какого-то сбоя на печатной плате часть ячеек разряжается быстрее других. Ещё возможно, что причина в высоком внутреннем саморазряде ячеек из-за повреждения. Всё это может привести к регулярному возникновению описанных проблем и невозможности восстановить полную ёмкость аккумулятора. Я встречал случаи всех этих неисправностей и продолжу следить за некоторыми батареями, чтобы оценить, как они поведут себя со временем.
Мягкая программная блокировка
Аккумулятор входит в это состояние, если в какой-то момент обнаруживает разбалансировку ячеек. Я видел пару случаев, когда по факту напряжение ячеек было в балансе, но батарея всё равно указывала на ошибку, также мигая всеми светодиодами. Здесь у меня две догадки. Либо батарея допустила ошибку при самодиагностике, либо в определённый момент оказалась разбалансирована, но со временем баланс восстановила.
Как бы то ни было, исправляется это очень легко, и на Reddit есть много топиков по теме. Я имею в виду именно тот приём с перемычкой J1, о котором писал выше. А в отдельный режим отказа я этот случай записал лишь потому, что здесь нет заметной разбалансировки ячеек. И я также не уверен, были ли какие-то другие условия, которые могли бы заставить батарею войти в этот режим сбоя. Но, как я уже сказал, сбросить ошибку несложно.
Глубокий разряд
В этом случае на каждую из пяти ячеек будет приходиться менее 1 В. Мне даже попадались батареи, в которых каждая ячейка была полностью разряжена до 0 В. Причиной могла стать утечка тока на корпус, полностью высосавшая заряд. Возможно, это произошло из-за контакта с водой, так как ячейки в некоторых других «утопленниках» были полностью мертвы.
В остальных случаях напряжение каждой ячейки было в районе 0,5 В, а всей батареи — около 2,5 В. Думаю, что их цифровой блок вошёл в некое состояние, в котором потреблял ток до тех пор, пока из-за понижения напряжения нагрузка 3,3 В не исчезла.
Восстанавливать эти ячейки, что в первом, что во втором случаях, я бы не советовал. Дело в том, что глубоко разряженные батареи наверняка будут иметь какое-то необратимое повреждение, которое сделает их использование небезопасным, особенно при повышенных нагрузках.
Тем не менее я смог восстановить батареи с ячейками, разряженными до 0,5 В с помощью очень медленного капельного подзаряда. Он позволил мне довести их до уровня 18 В и дальше заряжать как обычно. Я подавал на них ток в несколько циклов и тестировал, используя внутренний омметр. В итоге кроме слегка уменьшенной ёмкости никаких проблем я не заметил. В процессе капельной зарядки 4 светодиода непрерывно мигали, пока я не отпаял перемычку питания, чтобы перезапустить микроконтроллер. Думаю, что его не порадовало видеть батарею при столь низком напряжении, и он просто расстроился. Но после перезапуска и сброса с помощью J1 он снова был бодр и работал должным образом.
Повторюсь. Не советую так делать, и даже сам буду использовать эти аккумуляторы только для очень небольших нагрузок. Одна из батарей, которую я пытался воскресить, при зарядке начала греться и показывала высокое внутреннее сопротивление. В итоге я её безопасно разрядил, и больше использовать не буду.
Мёртвые ячейки
Этот случай аналогичен глубокому разряду, но касается только части ячеек, которые разрядились полностью в 0. Если такое произошло, значит, батарее конец, и вернуть её к жизни не получится. Проблема в том, что, даже если вам удастся воскресить глубоко разряженные ячейки, они точно не смогут сохранять баланс относительно своих соседей. Здесь лучшим выходом будет извлечь рабочие ячейки и использовать их в других проектах.
Но вопрос в том, почему это может происходить. Я считаю, что какой-то сбой в BMS привёл к возникновению постоянной высокой нагрузки на некоторые ячейки, в результате чего они полностью истощились. Причиной может быть сбой какого-то компонента или контакт с водой. Полный анализ этого режима отказа я не проводил.
Выход из строя резистора цепи обратной связи

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

Этот сбой я тоже смог исправить, хоть и не понял до конца его причину. Здесь проблема была в том, что индикаторная кнопка переставала реагировать. Если инструмент был заряжен, то он нормально разряжался, но вот заряжаться не хотел.
Я замерил подтягивающее сопротивление между TP32 и шиной 3,3 В — оно оказалось очень низким, ~1кОм. В результате нажатие кнопки недостаточно подтягивало TP32 к земле, и ошибочно срабатывал ввод-вывод. Чтобы это исправить, я заменил R27 на R28 с более низким сопротивлением, ~100 Ом. Проблема была решена.
Думаю, что скачок напряжения на шине 3,3 В привёл к попаданию тока на линию ввода-вывода и повреждению, которое и вызвало снижение подтягивающего сопротивления. Как вариант, здесь можно установить в качестве защиты опорный диод для ограничения напряжения. Я также вижу, что повреждение было вызвано электростатическим разрядом (ESD), но эту область я понимаю недостаточно, чтобы давать какие-то уверенные комментарии.
Неразгаданные режимы отказа
Было ещё несколько режимов сбоя, для которых я не смог найти лечения. На паре плат присутствовала проблема с зарядкой, когда зарядное устройство их не обнаруживало. Я пробовал прощупать схему T1, так как проблема скорее всего в ней. В итоге мне удалось заставить батарею заряжаться, замкнув TPxx на землю, то есть я подтвердил, что сбой именно в логике T1. Но саму проблему я исправить так и не смог. Дополнительно всё усложнялось тем, что я не знаю точных маркировок определённых транзисторов, а они были заряжены, так что любое неверное действие могло привести к попаданию напряжения V_BATT не туда и вызвать дополнительные повреждения BMS.
Заключение
Надеюсь, это руководство поможет вам восстановить какие-нибудь из своих аккумуляторов Ryobi, которые система BMS забраковала по ошибке. Если часть ячеек или даже все испорчены, то есть смысл отправить батарею в переработку. Если же ячейки исправны, и работе мешает именно BMS, то попробуйте восстановить их с помощью этого руководства.
А так, здесь возникает большой вопрос к разработчикам: «Является ли этот новый подход к созданию батарей с таким количеством программных проверок и блокировок более безопасным, и увеличивает ли он срок их службы?» Я, конечно, осознаю, что им важно обеспечить безопасное использование устройств и исключить критические сбои при работе. Но при этом они создали такую систему, которая часто даёт ложные срабатывания и может превратить абсолютно рабочие батареи в отходы.
Мой внутренний циник говорит, что это было намеренное техническое решение, нацеленное на повышения продаж. Но я бы вряд ли пошёл покупать новые, ведь аккумуляторы Ryobi имеют трёхлетнюю гарантию. Батареи, с которых всё началось, были у меня в использовании менее года, и я смог заменить их по гарантии. Интересно, что одна из батарей, которые мне выдали взамен, отказала аналогичным образом.
Но я всё же считаю, что инженеры Ryobi действовали из лучших побуждений и хотели обеспечить для своих клиентов безопасность. Просто они недостаточно протестировали батареи на предмет ложных срабатываний защиты. А поскольку они реализовали функцию блокировки, которая сама не сбрасывается, в случае ошибочного срабатывания защиты аккумулятор превращается в кирпич. Надеюсь, что они уже выпустили патч для исправления этого бага и доработали прошивку, чтобы ложных срабатываний не было.
Комментарии (32)

CatAssa
31.08.2025 09:23После прочтения этой статьи появилось желание избегать аккумуляторных Ryobi.

nixtonixto
31.08.2025 09:23У Milwaukee другая крайность: в их батареях нет даже ключа защиты от КЗ - выводы аккумулятора напрямую припаяны на контакты батареи.

cyber-jet
31.08.2025 09:23По идее это все одна компания, которая ещё выпускает инструмент под боендом AEG.

MakeYourVision
31.08.2025 09:23Именно, тайваньская TTI владеет всеми тремя и сегментирует Милку на промышленный/профессиональный инструмент высшего класса, AEG на просто профессиональный и Риоби на чисто бытовой/хоббийно-любительский.

Gbor
31.08.2025 09:23То есть купил шурик, собрал шкаф, убрал, а через год, когда решил повесить полочку, аккум попросился на замену. Хотите, поменяем по гарантии, но ждать новый две недели. А жить без полочки неудобно...

Moog_Prodigy
31.08.2025 09:23Зато у них bms общается с девайсом по спецпротоколу, и если что не нравится - кирпичится. И с зарядным общается. Я уже давно с ними дел не имею, но лет 8 назад общался по интернету с мужиком, которые эти милуоки в гарантийке чинил. Он мне даже несколько лайфхаков рассказал, что-то даже пригодилось, чинил электроинструмент я мимоходом но в промышленных количествах. Инструмент конечно, качественный, но по сути одноразовый, такая вот у них фишка своя. Все платы залиты компаундом, у шуриков если щетки стерлись в моторе, меняй мотор в сборе. У болгарок наоборот, щетки расходник и под них есть даже специальные окошечки на винтах. А винты с хитрой головкой - типа torx но посредине еще пупырь торчит. Это сейчас китайцы под такое что угодно делают а тогда приходилось каленые биты Торкса прожигать электроэрозией.

zatim
31.08.2025 09:23типа torx но посредине еще пупырь торчит
Этот пупырь очень легко отламывается и винт становится под обычный торкс.

BDI
31.08.2025 09:23Этот вариант с "пупырём" называется Secure Torx, наборы Г-образных ключей под него есть как минимум в "леруа". Вроде попадались в Оби и на стройрынках.
Вероятно и биты такие не проблема достать, но не искал - для редких случаев нужды в работе с такими головками у меня во всех локациях висит по набору ключей соответствующих(а не secure версию торкса просто уже не покупаю, т.к. нет смысла).
Moog_Prodigy
31.08.2025 09:23Сейчас есть все, а я говорил про 10 лет назад. Тогда еще не было. Но дело даже не в этом, а в жесткой залочке на производителя (и нифига себе какие цены) и попытки создать иллюзию, что инструмент "одноразовый" ну или как минимум "отправляйте в сервис, вам пришлют новый инструмент по цене старого + 20%". Тогда это выглядело уже скотством, вот и приходилось чинить на местах. Залитые компаундом блоки плавного старта болгарок или регулятор шуруповерта приходилось до недели в уайт-спирите держать в герметичном автоклаве и примерно 30 атм давления внутри, на температуре 110 градусов. Зато потом вся эта гадость легко отпадала и получалось среверсить схемы. Но исполнение механики и корпуса- божественное. Там не зря Heavy Duty на корпусе надписи были.

Mirzapch
31.08.2025 09:23Для защиты от КЗ, одна из перемычек между элементами имеет меньшее сечение.
Буквально недавно перебирал свои аккумуляторы...

nehrung
31.08.2025 09:23Возвращение неисправных аккумов в исходное, полностью исправное состояние, работа с прошивками и модификация оных - это несомненно высший пилотаж, и это очень круто, но это избыточно круто для повседневной практики. Это подходит как хобби для собственного удовольствия и из интереса. Я тоже промышляю иногда ремонтом литиевых батарей "шуриков", но как выяснилось на практике, для этой самой практики достаточно не мучиться доведением батареи до идеала, а перекомплектовать её из более-менее одинаковых по ёмкости и внутреннему сопротивлению элементов, а в случае проблем с контроллером не копаться в его кишках (это слишком долго), а тупо заменить на недорогой китайский BMS. Наличие индикации с её кнопкой - игнорировать, для практики её наличие/отсутствие некритично. Впрочем, если вышеупомянутый китайский BMS способен поддерживать однодиодную индикацию "заряжается/заряжено", то этого и хватит.
Самый нужный измерительный инструмент (помимо мультиметра) для таких работ - это измеритель ёмкости и внутреннего сопротивления банок, и мне показалось странным, что автор не упомянул о том, чем сам меряет. У меня это простой, дешёвый, надёжный и достаточно точный (для повседневной практики) прибор - IMAX B6 mini, который, помимо собственно измерений, умеет ещё много чего.

Grey83
31.08.2025 09:23Наличие индикации с её кнопкой - игнорировать, для практики её наличие/отсутствие некритично.
Можно вот такое приклеить и не переживать на счёт индикации: https://mysku.club/blog/aliexpress/102509.html
Вообще китайцы много разных вариантов таких индикаторов сейчас производят: есть без индикации напряжения, есть с выбором напряжения через пайку перемычек и т.д. и т.п.
BSOZ
31.08.2025 09:23Из описания что-то не понятно, есть ли режим, чтобы при появлении питания сразу индикация работала и сохраняет ли настройки без питания. Любопытно.

Grey83
31.08.2025 09:23сохраняет ли настройки без питания
Он (и все прочие аналоги с такой толщиной) вроде рассчитан на постоянное подключение к батарее.
Хотя в описании лотов есть такая строчка:a power-off memory storage function.
Это оно?
https://www.aliexpress.com/item/1005008379815338.html
https://www.aliexpress.com/item/1005008348883189.html
https://www.aliexpress.com/item/1005008348596794.html
https://www.aliexpress.com/item/1005008489664130.html

sappience
31.08.2025 09:23Схема
Скажите, меня одного раздражает новая мода на рисование принципиальных схем?

Или батарею надо еще разбить на 2 элемента в отдельных блоках? В результате охватить схему взглядом и проследить куда какой проводник идет становится невозможным.

ovegio
31.08.2025 09:23Когда перебарщивают, вот именно как у вас на рисунке, то да, раздражает. А то, как это сделано в статье, выглядит для меня как разумный компромисс.
Потому что на сложных схемах среди одинаковых линий, которые зачастую ещё и пересекаются, искать нужную - тоже такое себе удовольствие.

nehrung
31.08.2025 09:23Ну а что бы вы хотели? Классический ручной способ ушёл, его помнят (и умеют в это) только старцы вроде меня, его вытеснило повсеместное применение экрана вместо бумаги. Да, для глаз это противно, но компьютеру пофиг. Зато комп добавляет возможность машинного анализа схемы, позволяя людям меньше напрягаться. Людям это нравится, так что возврата к ручному способу не ждите.

AKudinov
31.08.2025 09:23Если такой подход используется разумно, то очень хорошо читается сложная схема. Присоединяюсь к комментатору выше.
В одной военно-космической конторе видел другую крайность: абсолютно все линии были поименованы и заходили в одну общую шину, которая через все узлы и листы схемы тянулась. Зато полностью по ЕСКД, и нормоконтроль счастлив.

Dr_Faksov
31.08.2025 09:23Это не общая шина, а жгут. Вы, видимо, никогда не видели корзины с рамками в стойке.

A_Green
31.08.2025 09:23Здесь баланс нужен. Иногда лучше одним листом, иногда поблочно. Большие схемы-портянки от советской техники иногда страдали как раз длиннющими соединительными линиями, так-как всё равно схема была блоками.
И стрелки - соединители указывающие друг на друга были.

BSOZ
31.08.2025 09:23В старых схемах ещё любили соединители использовать не как абстракцию отдельного уровня представления схемы, а объединив с физическими разъёмами. Не встречал, чтобы просто для читаемости внутри блока огромную шину разрывали стрелками, могло 3/4 площади схемы из обходящей её паутины проводников состоять. А к ламповой технике вообще схемы были похожи на сегодняшние схемы без разделения физики/логики в проектах для начинающих/заканчивающих радиолюбителей, где прям физические устройства прорисовывают, вместо символа.

vasiaplaton
31.08.2025 09:23Взял ryobi - день в пр***е
Извините, не мог сюда не добавить это)
Однако неизвестно еще, что хуже в случае с банками высокотокового лития - умирать на каждый чих или давать использовать до последнего
Заряженные они могут делают красивые фейрверки при КЗ в балансире)

alexhott
31.08.2025 09:23Пользую два старых шурика, успешно переживхих два ремонта, но с простейшими БМС, теперь если буду покупать новый буду искать чтобы тоже был максимально без лишних гемороев

swshoo
31.08.2025 09:23прикупил точечную сварку (хорошую), перепаковывать некотрые батареи (замену которым купить очень проблемно). По поводу обычных 5 Ач от деволта (например) - смысла перепаковывать очень не много - стоимость хороших высокотоковых элементов (ну это не то го***ще, котрое на алике продаёт каждый пизнесмен с шилдиком "высокотоковый") очень приличная и получается, что после всех телодвижений стоимость перепакованного акб не сильно меньше, чем новый орига от DW.

spirymi
31.08.2025 09:23А в каком из регионов аудитории хабры этот бренд есть? Или это перевод? В штатах это бренд, который считай целиком на Home Depot сеть для дистрибуции полагается. А где в ex-СССР?
Moog_Prodigy
Конечно доработают, и первым делом зашифруют прошивку, а то вишь какой непорядок!