Imax b6 прошивка клона. Прошивка Imax B6 Mini двумя способами

Воистину говорят: лень - двигатель прогресса! Вот и мне, взбудоражила голову мысль, автоматизировать процесс измерения и тренировки кислотных аккумуляторных батарей. Ведь кто, в здравом уме, будет, в наш век умных микросхем, корпеть над аккумулятором с мультиметрами и секундомером? Наверняка, многие знают «народное» зарядное устройство Imax B6. На хабре есть про него (и даже не одна). Ниже я напишу, что я с ней сделал и зачем.

Точность

В начале, моей целью было увеличение разрядной мощности, чтобы измерить свои батареи для бесперебойника и, в перспективе, тренировать их, не подвергаясь риску преждевременной старости (меня, а, не аккумуляторов). Погонял устройство в разобранном виде.

Внутри оно щедро нашпиговано множеством дифференциальных усилителей, мультиплексором, buck-boost регулятором с высоким КПД, имеет хороший корпус, а в сети можно найти открытый исходный код очень неплохой прошивки. При токе зарядки до 5 ампер, им можно заряжать даже автомобильные аккумуляторы на 50А/ч (ток 0.1C). При всем, при этом этом, богатстве, в качестве датчиков тока, здесь используются обычные 1 Вт резисторы, которые, ко всему прочему, работают на пределе своей мощности, а значит, их сопротивление значительно уплывает под нагрузкой. Можно ли доверять такому измерительному прибору? Подув и потрогав руками эти «датчики» сомнения ушли - хочу переделать на шунты из манганина!

Манганин (есть еще константан) - специальный сплав для шунтов, который практически не изменяют своего сопротивления от нагрева. Но его сопротивление на порядок меньше заменяемых резисторов. Так же, в схеме прибора используются операционные усилители для усиления напряжения с датчика до читабельных микроконтроллером значений (я полагаю, верхняя граница оцифровки - опорное напряжение с TL431, около 2,495 вольт).

Моя доработка заключается в том, чтобы впаять шунты вместо резисторов, а разницу в уровнях компенсировать, изменив коэффициент усиления операционных усилителей на LM2904: DA2:1 и DA1:1 (см. схему).

Схема



Для переделки нам понадобятся: само устройство оригинал (я описываю переделку оригинала), манганиновые шунты (я взял от китайских мультиметров), ISP программатор, прошивка cheali-charger (для возможности калибровки), Atmel Studio для ее сборки (не обязательно), eXtreme Burner AVR для ее прошивки и опыт по созданию кирпичей успешной прошивке атмеги (Все ссылки есть в конце статьи).
А так же: умение паять SMD и непреодолимое желание восстановить справедливость.

Я нигде не учился разработке схем и вообще радиолюбительству, поэтому вносить такие изменения в работающее устройство вот так с ходу, было лениво боязно. И тут на помощь пришел мультисим! В нем возможно, не прикасаясь к паяльнику: реализовать задумку, отладить ее, исправить ошибки и понять, будет ли она вообще работать. В данном примере, я смоделировал кусок схемы, с операционным усилителем, для цепи, обеспечивающей режим заряда:

Резистор R77 создает отрицательную обратную связь. Вместе с R70 они образуют делитель, который задает коэффициент усиления, который можно посчитать примерно так (R77+R70)/R70 = коэффициент усиления. У меня шунт получился около 6,5 мОм, что при токе 5 А составит падение напряжения нем 32,5 мВ, а нам нужно получить 1,96 В, чтобы соответствовать логике работы схемы и ожиданиям её разработчика. Я взял резисторы 1 кОм и 57 кОм в качестве R70 и R77 соответственно. По симулятору получилось 1,88 вольт на выходе, что вполне приемлемо. Так же я выкинул резисторы R55 и R7, как снижающие линейность, на фото они не используются (возможно, это ошибка), а сам шунт подключил выделенными проводами к низу R70, C18, а верх шунта напрямую к "+" входу ОУ.

Лишние дорожки подрезаны, в том числе, и с обратной стороны платы. Важно хорошо припаять проводки, чтобы они не отвалились, со временем, от шунта или платы, потому что с этого датчика запитывается не только АЦП микроконтроллера, но и обратная связь по току импульсного регулятора, который, при пропадании сигнала, может перейти в максимальный режим и угробиться.

Схема для режима разрядки принципиально не отличается, но, так как я сажаю полевик VT7 на радиатор, и увеличиваю мощность разрядки до предела полевика (94Вт по даташиту), хотелось бы и максимальный ток разряда выставить по-больше.

В результате я получил: R50 – шунт 5,7 мОм, R8 и R14 - 430 Ом и 22 кОм соответственно, что дает требуемые 1,5 вольт на выходе при токе через шунт 5 А. Впрочем, я экспериментировал и с большим током - максимум вышло 5,555 А, так что зашил в прошивку ограничение до 5,5 А (в файле «cheali-charger\src\hardware\atmega32\targets\imaxB6-original\HardwareConfig.h»).

По ходу вылезла проблема - зарядник отказался признавать, что он откалиброван (i discharge). Связано это с тем, что для проверки используется не макроопределение MAX_DISCHARGE_I в файле «HardwareConfig.h», а вторая точка калибровки для проверки первой (точки описаны в файле «GlobalConfig.h»). Я не стал вникать в эти тонкости хитросплетения кода и просто вырезал эту проверку в функции checkAll() в файле «Calibrate.cpp».

В результате переделок, получился прибор, который обеспечил приемлемую линейность измерений в диапазоне от 100mA до 5А и который можно было бы назвать измерительным, если бы не одно но: так как я оставил мощный разрядный полевик внутри корпуса (несмотря на улучшенное охлаждение), нагрев платы от него все равно вносит искажение в результат измерения, и измерения немного «плывут» в сторону занижения… Не уверен, кто именно виноват в этом: усилитель ошибки или АЦП микроконтроллера. В любом случае, ИМХО, стоит вынести этот полевик за пределы корпуса и обеспечить там ему достаточное охлаждение (до 94Вт или заменить его на другой подходящий N-канальный).

Прошивка

Не хотел я писать про это, но меня заставили.

Немного про мою доработку охлаждения

Полевик VT7, на новом месте, приклеен на термоклей, а его теплоотвод - припаян к медной пластинке:

Охлаждение решил сделать из ненужного радиатора на тепловой трубке от мат-платы. На фото видно подходящую по размерам прижимную пластину и площадку транзистора, по периметру которой проложена изолирующая пластмасса - на всякий случай. Пяточек из жала паяльника припаян прямо к плате, к общему проводу - будет играть роль дополнительного теплоотвода от преобразователя:

Собранная конструкция не помешает стоять прибору на ножках:

Готовы к прошивке:

Я испытал эту переделку в пассивном режиме охлаждения: разряд 20 минут 6-вольтовой Pb-батареи максимальным током 5,5А. Мощность высветилась 30...31Вт. Температура на тепловой трубке, по термопаре, дошла до 91°C, корпус тоже раскалился и, в какой-то момент, экран начал становиться фиолетовым. Я, конечно, сразу прервал испытание. Экран долго не мог прийти в норму, но потом его отпустило.

Теперь уже очевидно, что выносной блок нагрузки, с разъемным соединением, был бы наилучшим решением: в нем нет ограничений на размер радиатора и вентилятора, а сама зарядка получилась бы более компактной и легкой (в поле разряд не нужен).

Надеюсь, что эта статья поможет новичкам быть смелее в экспериментах над беспомощными железяками.
Замечания и дополнения приветствуются.

Предупреждение : описанные модификации, при неумелом применении, могут повредить компоненты зарядки, превратить ее в необратимый «кирпич», а так же привести к снижению надежности устройства и создать риск пожара. Автор снимает с себя ответственность за возможный ущерб, в том числе за зря потраченное время.

Ссылки

Альтернативная прошивка cheali-charger: https://github.com/stawel/cheali-charger (Её обзор на youtube: раз , два).
Для компиляции прошивки: Atmel Studio и CMake
Программа-прошивальщик: eXtreme Burner AVR
ISP программатор:

Воистину говорят: лень - двигатель прогресса! Вот и мне, взбудоражила голову мысль, автоматизировать процесс измерения и тренировки кислотных аккумуляторных батарей. Ведь кто, в здравом уме, будет, в наш век умных микросхем, корпеть над аккумулятором с мультиметрами и секундомером? Наверняка, многие знают «народное» зарядное устройство Imax B6. На хабре есть про него (и даже не одна). Ниже я напишу, что я с ней сделал и зачем.

Точность

В начале, моей целью было увеличение разрядной мощности, чтобы измерить свои батареи для бесперебойника и, в перспективе, тренировать их, не подвергаясь риску преждевременной старости (меня, а, не аккумуляторов). Погонял устройство в разобранном виде.

Внутри оно щедро нашпиговано множеством дифференциальных усилителей, мультиплексором, buck-boost регулятором с высоким КПД, имеет хороший корпус, а в сети можно найти открытый исходный код очень неплохой прошивки. При токе зарядки до 5 ампер, им можно заряжать даже автомобильные аккумуляторы на 50А/ч (ток 0.1C). При всем, при этом этом, богатстве, в качестве датчиков тока, здесь используются обычные 1 Вт резисторы, которые, ко всему прочему, работают на пределе своей мощности, а значит, их сопротивление значительно уплывает под нагрузкой. Можно ли доверять такому измерительному прибору? Подув и потрогав руками эти «датчики» сомнения ушли - хочу переделать на шунты из манганина!

Манганин (есть еще константан) - специальный сплав для шунтов, который практически не изменяют своего сопротивления от нагрева. Но его сопротивление на порядок меньше заменяемых резисторов. Так же, в схеме прибора используются операционные усилители для усиления напряжения с датчика до читабельных микроконтроллером значений (я полагаю, верхняя граница оцифровки - опорное напряжение с TL431, около 2,495 вольт).

Моя доработка заключается в том, чтобы впаять шунты вместо резисторов, а разницу в уровнях компенсировать, изменив коэффициент усиления операционных усилителей на LM2904: DA2:1 и DA1:1 (см. схему).

Схема



Для переделки нам понадобятся: само устройство оригинал (я описываю переделку оригинала), манганиновые шунты (я взял от китайских мультиметров), ISP программатор, прошивка cheali-charger (для возможности калибровки), Atmel Studio для ее сборки (не обязательно), eXtreme Burner AVR для ее прошивки и опыт по созданию кирпичей успешной прошивке атмеги (Все ссылки есть в конце статьи).
А так же: умение паять SMD и непреодолимое желание восстановить справедливость.

Я нигде не учился разработке схем и вообще радиолюбительству, поэтому вносить такие изменения в работающее устройство вот так с ходу, было лениво боязно. И тут на помощь пришел мультисим! В нем возможно, не прикасаясь к паяльнику: реализовать задумку, отладить ее, исправить ошибки и понять, будет ли она вообще работать. В данном примере, я смоделировал кусок схемы, с операционным усилителем, для цепи, обеспечивающей режим заряда:

Резистор R77 создает отрицательную обратную связь. Вместе с R70 они образуют делитель, который задает коэффициент усиления, который можно посчитать примерно так (R77+R70)/R70 = коэффициент усиления. У меня шунт получился около 6,5 мОм, что при токе 5 А составит падение напряжения нем 32,5 мВ, а нам нужно получить 1,96 В, чтобы соответствовать логике работы схемы и ожиданиям её разработчика. Я взял резисторы 1 кОм и 57 кОм в качестве R70 и R77 соответственно. По симулятору получилось 1,88 вольт на выходе, что вполне приемлемо. Так же я выкинул резисторы R55 и R7, как снижающие линейность, на фото они не используются (возможно, это ошибка), а сам шунт подключил выделенными проводами к низу R70, C18, а верх шунта напрямую к "+" входу ОУ.

Лишние дорожки подрезаны, в том числе, и с обратной стороны платы. Важно хорошо припаять проводки, чтобы они не отвалились, со временем, от шунта или платы, потому что с этого датчика запитывается не только АЦП микроконтроллера, но и обратная связь по току импульсного регулятора, который, при пропадании сигнала, может перейти в максимальный режим и угробиться.

Схема для режима разрядки принципиально не отличается, но, так как я сажаю полевик VT7 на радиатор, и увеличиваю мощность разрядки до предела полевика (94Вт по даташиту), хотелось бы и максимальный ток разряда выставить по-больше.

В результате я получил: R50 – шунт 5,7 мОм, R8 и R14 - 430 Ом и 22 кОм соответственно, что дает требуемые 1,5 вольт на выходе при токе через шунт 5 А. Впрочем, я экспериментировал и с большим током - максимум вышло 5,555 А, так что зашил в прошивку ограничение до 5,5 А (в файле «cheali-charger\src\hardware\atmega32\targets\imaxB6-original\HardwareConfig.h»).

По ходу вылезла проблема - зарядник отказался признавать, что он откалиброван (i discharge). Связано это с тем, что для проверки используется не макроопределение MAX_DISCHARGE_I в файле «HardwareConfig.h», а вторая точка калибровки для проверки первой (точки описаны в файле «GlobalConfig.h»). Я не стал вникать в эти тонкости хитросплетения кода и просто вырезал эту проверку в функции checkAll() в файле «Calibrate.cpp».

В результате переделок, получился прибор, который обеспечил приемлемую линейность измерений в диапазоне от 100mA до 5А и который можно было бы назвать измерительным, если бы не одно но: так как я оставил мощный разрядный полевик внутри корпуса (несмотря на улучшенное охлаждение), нагрев платы от него все равно вносит искажение в результат измерения, и измерения немного «плывут» в сторону занижения… Не уверен, кто именно виноват в этом: усилитель ошибки или АЦП микроконтроллера. В любом случае, ИМХО, стоит вынести этот полевик за пределы корпуса и обеспечить там ему достаточное охлаждение (до 94Вт или заменить его на другой подходящий N-канальный).

Прошивка

Не хотел я писать про это, но меня заставили.

Немного про мою доработку охлаждения

Полевик VT7, на новом месте, приклеен на термоклей, а его теплоотвод - припаян к медной пластинке:

Охлаждение решил сделать из ненужного радиатора на тепловой трубке от мат-платы. На фото видно подходящую по размерам прижимную пластину и площадку транзистора, по периметру которой проложена изолирующая пластмасса - на всякий случай. Пяточек из жала паяльника припаян прямо к плате, к общему проводу - будет играть роль дополнительного теплоотвода от преобразователя:

Собранная конструкция не помешает стоять прибору на ножках:

Готовы к прошивке:

Я испытал эту переделку в пассивном режиме охлаждения: разряд 20 минут 6-вольтовой Pb-батареи максимальным током 5,5А. Мощность высветилась 30...31Вт. Температура на тепловой трубке, по термопаре, дошла до 91°C, корпус тоже раскалился и, в какой-то момент, экран начал становиться фиолетовым. Я, конечно, сразу прервал испытание. Экран долго не мог прийти в норму, но потом его отпустило.

Теперь уже очевидно, что выносной блок нагрузки, с разъемным соединением, был бы наилучшим решением: в нем нет ограничений на размер радиатора и вентилятора, а сама зарядка получилась бы более компактной и легкой (в поле разряд не нужен).

Надеюсь, что эта статья поможет новичкам быть смелее в экспериментах над беспомощными железяками.
Замечания и дополнения приветствуются.

Предупреждение : описанные модификации, при неумелом применении, могут повредить компоненты зарядки, превратить ее в необратимый «кирпич», а так же привести к снижению надежности устройства и создать риск пожара. Автор снимает с себя ответственность за возможный ущерб, в том числе за зря потраченное время.

Ссылки

Альтернативная прошивка cheali-charger: https://github.com/stawel/cheali-charger (Её обзор на youtube: раз , два).
Для компиляции прошивки: Atmel Studio и CMake
Программа-прошивальщик: eXtreme Burner AVR
ISP программатор:

Универсальное зарядное устройство iMax-B6 по праву считается народным. Любой авиамоделист или человек имеющий в хозяйстве Li-Po аккумуляторы издалека узнает синюю шайтан-коробку.

внешний вид шайтан-коробки

Для своего времени зарядка оказалась настолько революционной и простой, что ее начали копировать все кому не лень. Существуют несколько версий зарядника:
- Оригинал назывался BC-6 и производился компанией Bantam на базе ATmega32/ATmega32L .
- Потом его удачно слизала SkyRC, а про Bantam все забыли.
- Точная копия SkyRC на ATmega32 сделанная в подвале (такая попалась мне).
- Копия с отличиями в схеме и плате.
- Зарядка на чипе . Клоном ее назвать трудно так как это устройство совсем на другом микроконтроллере и только внешне похожее на iMax-B6.
- В 2016/2017 году китайцы достигли дна оптимизации и выпустили новый зарядник, который нормально заряжает только литий. Чип в корпусе TQFP48 и без маркировки. Вангуют что это STC или ABOV MC96F6432 . Похоже ванги ошиблсь - это оказался MEGAWIN MA84G564 . Сторонних прошивок нет и похоже не будет.

В сети гуляют как минимум три схемы оригинального iMax-B6. Самая удачная попытка срисовать схему и понять как она работает была предпринята пользователем electronik-irk . Со своими наработками он поделился в сообществе "Рожденный с паяльником".

Но в любой бочке меда всегда найдется ложка дегдя. Нашлась она и в iMax-B6. Это проблема с Δv во время заряда 1.2 вольтовых Ni-Ca и Ni-Mh аккумуляторов. В свое время я писал в сообщество о проблеме с Δv, но ответа так и не получил. Мое мнение - трудности с Δv возникают из-за нескольких косяков. Первый - во время включения и при каждом измерении на конденсаторе C21 и выходных клемах возникает выброс порядка 3-4 вольта, который вносит не хилые искажения Δv у 1.2 вольтовых аккумуляторов.


схема силовой части

Эта проблема легко решается добавлением сопротивления R128 с номиналом 4.7кОм параллельно конденсатору C21. В качестве бонуса этот резистор исправляет баг-фичу некоторых iMax-ов - умирать при включении без нагрузки. При этом обычно горят VT26 или VT27.

Подпаивать R128 надо сюда

Вторая проблема маленькая разрядность АЦП и шумы от блока питания и цифровых цепей. 10bit еле-еле хватает для диапазона 0в - 30в с точностью 0.29мВ. Чтобы хоть как-то облегчить работу АЦП нужно провести комплекс мероприятий:
- Повысить стабильность опорного напряжения.
- Поменять родную прошивку iMax на cheali-charger . Данная прошивка использует трюк с передискретизацией и добавлением искуственного шума . После всех этих доработак вы сможете ловить Δv у Ni-Ca/Ni-Mh при зарядных токах > 0.5C

В iMax-е построенном на ATmega32 применяется не самый точный источник опорного напряжения в 2.5 вольта на базе TL431 . Слегка повысить его стабильность можно допаяв электролитический конденсатор емкостью 10мкФ между AREF и землей.


опорник в левом вехнем углу

О перепрошивки, калибровке и активации режима искусственного шума я опишу во части.

UDP: Как правильно заметил Loll Ol в комментариях, TL431 очень критична к емкости выходного конденсатора. Красным отмечены зоны стабильной работы: 0.001mF - 0.01mF и 10mF.


график стабильности TL431

В этой статье я расскажу как прошить Imax B6 Mini двумя разными способами. Первый самый распространенный, его использует большинство, второй более интересный на мой взгляд, более простой, позволяющий обновится до самой новой на данный момент версии.

Начнем по порядку. Для начала нам нужно зайти на сайт skyrc.com и перейти в раздел Download. Затем в категории выбрать пункт Chargers и найти свое устройство, в данном случае Imax B6 Mini. Переходим во вкладку Software и скачать программу Charger Master второй версии.

В моем случае файл сохранился без расширения, поэтому я скопировал все названия вместе с расширением и переименовал скачанный файл. Запускаем setup.exe или ChargeMaster2.msi — без разницы. Устанавливаем программу и при необходимости меняем путь установки. Я оставил все как есть.

После запуска Charge Master сообщает нам что для его работы требуется NET Framework 4-ой версии и предлагается нам его скачать. Соглашаемся и нажимаем кнопочку «Да». Как ни странно ничего не произошло поэтому я скачал его сам. Советую скачать автономный установщик, хотя это не особо принципиально и можно загрузить Web инсталлятор. После установки пробуем еще раз запустить программу. Программа запустилась, теперь можно подключить устройство к USB компьютера.

В программе обнаружился баг из-за которого при подключенном устройстве исчезает часть интерфейса. Для его устранения нам понадобится зайти в панель управления и переключить формат языка на английский либо же заменить разделитель целой и дробной части с запятой на точку.

В моем случае я просто поставлю формат на английский (США). Снова запускаем программу и пробуем подключиться. Все работает, переходим в раздел System и видим сообщение что доступна версия 1.12, у нас же версия 1.10. Обновляем прошивку нажатием на кнопку Update Firmware. По завершению прошивки устройство выдает характерный звук.

Теперь о втором способе. Данное устройство также можно прошить с помощью специальной сервисной утилиты. Этот способ более простой, не требующий установку дополнительного софта и изменения настроек системы. К тому же данный способ позволит нам обновится до версии 1.13. Переходим на страницу с прошивкой и скачиваем небольшой архивчик с прошивальщиком для нашего устройства (ссылка чуть ниже), либо скачиваем прямо от сюда, распаковываем и запускаем.

Зажимая кнопку Enter подключаем USB провод к устройству, затем подключаем питание. Теперь можно нажать кнопку Upgrade. Начался процесс прошивки. В принципе можно не водить устройство в специальный загрузочный режим и даже не подключать питание, а просто после подключения к USB сразу приступить к прошивке, но мои тесты показали что в этом случае прошивка устанавливается криво и устройство начинает время от времени само перезагружаться. Поэтому советую все делать четко по этой инструкции.

В этой статье я расскажу как прошить Imax B6 Mini двумя разными способами. Первый самый распространенный, его использует большинство, второй более интересный на мой взгляд, более простой, позволяющий обновится до самой новой на данный момент версии.

Начнем по порядку. Для начала нам нужно зайти на сайт skyrc.com и перейти в раздел Download. Затем в категории выбрать пункт Chargers и найти свое устройство, в данном случае Imax B6 Mini. Переходим во вкладку Software и скачать программу Charger Master второй версии.

В моем случае файл сохранился без расширения, поэтому я скопировал все названия вместе с расширением и переименовал скачанный файл. Запускаем setup.exe или ChargeMaster2.msi — без разницы. Устанавливаем программу и при необходимости меняем путь установки. Я оставил все как есть.

После запуска Charge Master сообщает нам что для его работы требуется NET Framework 4-ой версии и предлагается нам его скачать. Соглашаемся и нажимаем кнопочку «Да». Как ни странно ничего не произошло поэтому я скачал его сам. Советую скачать автономный установщик, хотя это не особо принципиально и можно загрузить Web инсталлятор. После установки пробуем еще раз запустить программу. Программа запустилась, теперь можно подключить устройство к USB компьютера.

В программе обнаружился баг из-за которого при подключенном устройстве исчезает часть интерфейса. Для его устранения нам понадобится зайти в панель управления и переключить формат языка на английский либо же заменить разделитель целой и дробной части с запятой на точку.

В моем случае я просто поставлю формат на английский (США). Снова запускаем программу и пробуем подключиться. Все работает, переходим в раздел System и видим сообщение что доступна версия 1.12, у нас же версия 1.10. Обновляем прошивку нажатием на кнопку Update Firmware. По завершению прошивки устройство выдает характерный звук.

Теперь о втором способе. Данное устройство также можно прошить с помощью специальной сервисной утилиты. Этот способ более простой, не требующий установку дополнительного софта и изменения настроек системы. К тому же данный способ позволит нам обновится до версии 1.13. Переходим на страницу с прошивкой и скачиваем небольшой архивчик с прошивальщиком для нашего устройства (ссылка чуть ниже), либо скачиваем прямо от сюда, распаковываем и запускаем.

Зажимая кнопку Enter подключаем USB провод к устройству, затем подключаем питание. Теперь можно нажать кнопку Upgrade. Начался процесс прошивки. В принципе можно не водить устройство в специальный загрузочный режим и даже не подключать питание, а просто после подключения к USB сразу приступить к прошивке, но мои тесты показали что в этом случае прошивка устанавливается криво и устройство начинает время от времени само перезагружаться. Поэтому советую все делать четко по этой инструкции.

Понравилась статья? Поделитесь с друзьями!