[Из песочницы] Прокачиваем умную зарядку Imax B6

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

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

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

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

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

image

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

cb168fb01dd34b839bb459b59aa8e71e.jpg

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

Схема для режима разрядки принципиально не отличается, но, так как я сажаю полевик 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-канальный).

Прошивка Не хотел я писать про это, но меня заставили.Скачиваем и устанавливаем необходимые материалы (ссылки в конце статьи). На программаторе распаиваем и ставим перемычку JP3 — это переключит интерфейс в медленный режим. Пока я не поставил перемычку — у меня были проблемы с прошивкой. Подключаем программатор к устройству, а программатор в комп (картинка ниже — для оригинала устройства! клон подключается иначе): cc9dd752aae141a496b4fbd79da0961f.jpg

В программе eXtreme Burner, выбираем наш чип (меню Чип→ATmega32), после чего пробуем прочитать все (Read All). Если все получилось, оригинальную прошивку и EEPROM можно сохранить где-нибуть, на всякий случай. Теперь попробуем скомпилировать нашу прошивку (это действие не обязательно, можно взять готовую из папки «cheali-charger\hex\cheali-charger-imaxB6-original-0.33.hex», в таком случае, переходите к пункту 6).Вообще, как и что можно делать, часто пишут в сопроводительной документации, например, про сборку — в файле «building.md».В данном случае, порядок такой:

установить Atmel Studio и cmake запустить «Atmel Studio Command Prompt» и перейти в папку сcheali-charger.То есть, к примеру: cd s:\cheali-charger выполнить: s:\cheali-charger> cmake. -G «UnixMakefiles» выполнить: s:\cheali-charger> make Файл прошивки должен создастся здесь: «s:\cheali-charger\src\hardware\atmega32\targets\imaxB6-original\cheali-charger*.hex» Загружаем нашу прошивку в eXtreme Burner, после чего, жмякаем Write→Flash. Боже упаси зашить по ошибке «все», например: неправильные фьюзы, которые есть на 3ей вкладке — в этом случае можно потерять доступ для дальнейшей прошивки через ISP, а может, и через другие интерфейсы. Оживить полученный кирпич реально только на высоковольтном параллельном программаторе. На всякий случай, правильные фьюзы: low=3F, high=C5. Калибровка. Для нее понадобится батарея li-ion из, по крайней мере, 2-х элементов. Порядок калибровки можно прочитать в «README.md». Можно, переставляя ее в сторону по балансному разъему, откалибровать все 6 входов, при этом, первые 2 можно откалибровать отдельно (более точно), в меню экспертной калибровки, про нее написано в «calibration_expert.md». Немного про мою доработку охлаждения Полевик VT7, на новом месте, приклеен на термоклей, а его теплоотвод — припаян к медной пластинке: 70265cb098d0.jpg

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

58363ead783dt.jpg8d82b5523f0ct.jpg27438aeae019t.jpg

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

a198983a49e8t.jpg3b2f6b118c7ct.jpg

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

f4ffeb74380et.jpg

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

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

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

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

Ссылки Альтернативная прошивка cheali-charger: https://github.com/stawel/cheali-chargerДля компиляции прошивки: Atmel Studio и CMakeПрограмма-прошивальщик: eXtreme Burner AVRISP программатор: USBASP Programmer for ATMEL

© Habrahabr.ru