dmitry_shem
учёные прошлых времён стремились к истине; затем были жаждущие славы; нынешние учёные жаждут окладов
Первая часть – как зарядное КОС-505 вообще работает, что было в нём задумано и как испоганено плохой программой в контроллере.
Паталогоанатом включает осциллограф, достаёт многоканальный самописец и берёт в руки отвёртку и нож (хотя надо бы кувалду).
На вскрытие идёт стильный девайс (для примера тут заряжается один акум в третьем слева гнезде, процесс зарядки которого анимируется на дисплейчике в соответствующей позиции):
Для начала – как это устройство попало ко мне.
В предыдущих постах я страстно возжелал обзавестись зарядным устройством с контролем температуры, чтобы моим любимым NiMH аккумуляторам дольше и лучше жилось. Поскольку ассортимент у окрестных продавцов не бог весть какой, я для начала в образовательных целях пошуршал в инете по брендам, которые бывают у нас в продаже. На глаза попалось зарядное КОС-505, у которого был заявлен не слишком большой зарядный ток (1,2А) и – самое главное – контроль температуры аккумуляторов.
На следующий день на работе случайно выяснил, что у коллеги есть такое дома, и он готов предоставить это зарядное для проведения вскрытия (с одним условием – чтобы оно после этого сохранило работоспособность). Как оказалось в итоге, хорошо, что я не купил такой девайс и не выбросил деньги.
Начнём с того, как измеряется температура акумов.
Вообще-то я надеялся, что площадки, контролирующие температуру акумов, для обеспечения хорошего теплового контакта должны быть подпружинены и покрыты пластичным теплопроводящим полимером. Но тут оказалось всё предельно прозаично – ничего не подпружинено, никаких покрытий, голый металл (надфиль показал, что под никелем находится основа из медесодержащего сплава, то есть оно должно проводить тепло немного лучше, чем просто сталь, но это как мёртвому припарка).
Не, если кто-нибудь верит в зелёные ростки современной экономики, может также попробовать поверить в то, что эта сопливая конструкция будет измерять температуру акума, а не пластмассового корпуса:
Когда заглянул внутрь, руки вообще опустились – термисторы Rt1 и Rt2, измеряющие температуру, с очень короткими ногами припаяны вплотную к плате, и поэтому измеряют температуру самой платы, а не железок, к которым юзер, если очень постарается, хорошо прижмёт акумы. На картинке верхняя крышка корпуса стоит вертикально, а стрелкой показано, как в собранном состоянии центральная часть металлической полосы с кусочком теплопроводящей пасты прижмётся к термистору:
Правда, позже оказалось, что каличность конструктивной реализации несколько компенсируется подогревом термисторов со стороны других элементов печатной платы, и программа проца в устройстве всё-таки чувствует такой нагрев самого себя, при котором акумы начинают зашкаливать за 50 градусов. Но ещё раз обращаю внимание, что измеряется преимущественно температура самого устройства (его печатной платы), а не металлических пластин под аккумуляторами.
Хотя в целом устройство задумано весьма рационально и схема сделана без особых излишеств.
Первое, что порадовало — наконец-то не побоялись сделать маленький и лёгкий импульсный блок питания вместо доисторического железного 50-герцового трансформатора.
Вот фотографии обеих сторон печатной платы, а на следующей картинке – функциональная схема этого девайса в моём вольном изложении (вольное – потому что мультплексор нарисован сильно нестандартным, зато всем должно быть понятно).
Функциональная схема:
В устройстве сделан один источник питания, к которому по очереди через ключи S1-S4 для зарядки подключаются аккумуляторы G1-G4 (источник ещё выдаёт стабилизированные +5В для служебных нужд, но их я не рисовал). Поскольку проц периодически контролирует наличие аккумов в том или ином гнезде, он знает, кого надо заряжать, и акумы тут можно вставлять в любые гнёзда и в любом количестве – от одного до четырёх (наконец-то в 21 веке родили такую схему и сочинили прошивку для проца). Собственно, хозяин этого девайса именно поэтому его и купил – чтобы заряжать один акум для беспроводной мыши.
Цепи обратной связи в этом девайсе в конкурирующем режиме могут стабилизировать либо напряжение на уровне 3,5В (когда нет зарядного тока), либо зарядный ток на уровне 2,5А (когда он есть). Для стабилизации зарядного тока контролируется сигнал на шунте Rш сопротивлением 22 мОм (кусок проволоки, впаянной в плату на пути тока).
Процессор, наверно в силу своей дешевизны, имеет только один аналоговый вход, поэтому семь сигналов последовательно опрашиваются этим процессором через мультиплексор D1 (CD4051).
Процессор измеряет:
— температура аккумуляторов G1 и G2 (сигнал с термосопротивления Rt1),
— температура аккумуляторов G3 и G4 (сигнал с термосопротивления Rt2),
— напряжение на аккумуляторе G1,
— напряжение на аккумуляторе G2,
— напряжение на аккумуляторе G3,
— напряжение на аккумуляторе G4,
— напряжение на «минусах» аккумуляторов – на «верхнем» конце шунта. Измеряется только при выключенном токе как потенциал «нуля» (видимо, для компенсации смещения в АЦП процессора).
Если отбросить лишнюю паутину, то пример пути зарядного тока для акума G1 (при включенном ключе S1) будет выглядеть так:
В процессе работы зарядного устройства в разных экспериментах была записана куча сигналов.
Для начала была изучена логика работы в целом. Для этого при зарядке двух акумов записывались три сигнала, управляющие выбором измеряемого сигнала в мультиплексоре (на функциональной схеме – широкая стрелка «выбор вх.») и четвёртый сигнал – напряжение на первом аккумуляторе. Это позволяет определить, что и в какой последовательности измеряет процессор, а также по скачкам напряжения на одном акуме «поймать» моменты прохождения тока в этом акуме и в соседнем.
На картинках ниже – окончательные результаты обработки записанных сигналов (выбран фрагмент 6 секунд).
Горизонтальная ось – время в секундах.
По вертикали – ничего, просто цветные прямоугольники обозначают выполнение того или иного действия – когда и что измеряет процессор и когда он заряжает акумы.
На первом графике – моменты измерения «нулевого» напряжения (видимо, для последующей программной компенсации смещения в измерительном канале).
На втором графике – измерение температуры аккумуляторов G1-G2 (термистор Rt12) и G3-G4 (термистор Rt34).
На третьем графике – моменты измерения напряжения на аккумуляторах G1-G4. По всей видимости, измерения выполняются сразу после переключения мультиплексора в новую позицию, после чего он остаётся «висеть» на последнем измеренном сигнале (этим можно объяснить слишком широкие красные зоны, соответствующие измерению напряжения на акуме G1).
На четвёртом графике – моменты прохождения зарядного тока через аккумуляторы G1 и G2. Прохождение или непрохождение тока зависит от управления ключами S1-S4, которые этот самый ток направляют в одно из гнёзд зарядного устройства.
Ещё раз уточняю: на картинках не сами сигналы, а просто моменты, когда измеряется тот или иной сигнал или когда есть зарядный ток.
Мда, сплошные заборы, аж в глазах рябит.
Всё так сурово из-за того, что я решил сэкономить на количестве картинок и выбрал момент, когда видны сразу все процессы. Начало времени на графиках ни о чём не говорит, это просто выдран 6-секундный фрагмент из длинного процесса зарядки.
Первый процесс на этих графиках в диапазоне 0,7–1,9 секунд – точное измерение температуры и напряжений на акумах (без тока), выполняется с периодичностью 20 секунд.
При выполнении точных измерений проц делает следующее:
— измеряет напряжение смещения «нуля» (0,73-0,88 сек, график 1),
— измеряет температуру акумов 3-4, сигнал с термистора Rt34 (0,88-1,0 сек, график 2),
— измеряет температуру акумов 1-2, сигнал с термистора Rt12 (1,0-1,2 сек, график 2),
— измеряет напряжение смещения «нуля» (1,2-1,35 сек, график 1),
— измеряет напряжение акума G1 (1,35-1,55 сек, график 3),
— измеряет напряжение смещения «нуля» (1,55-1,7 сек, график 1),
— измеряет напряжение акума G2 (1,7-1,9 сек, график 3).
Если были бы установлены и другие акумы, проц тоже бы измерил их точное напряжение. Но я заряжал только два акума.
Второй процесс – зарядка с периодическим контролем наличия/отсутсвия акумов в гнёздах зарядного устройства. На этих графиках периодичность такого опроса – 1,5 секунды, но в другом случае и при другой степени зарядки акумов я видел на осциллографе 2,5 сек (см. следующий пост).
«Дырки» в зарядном токе на четвёртом графике в районе 3,5 секунд – это проц опрашивает гнёзда в поисках акумов. Проц в эти моменты пробует включить зарядный ток в акум, например, G4, которого там нет (момент времени – 3,4 сек). При этом измеряется напряжение в этом гнезде (об этом говорит зелёная зона на диаграмме напряжений, цифра 4), но напряжение получается слишком высокое – 3,5В (блок питания работает без нагрузки), значит, гнездо пустое.
Дальше я не пойму – в момент 3,5 сек продолжается зарядка акума G2 (синяя зона на четвёртом графике), которая прерывается в момент 3,63 сек для тестирования четвёртого гнезда (видно, что пропадает ток на четвёртом графике и мультиплексор переключается на измерение напряжения на G3 на третьем графике). Тестирование четвёртого гнезда мне понятно, непонятно только зачем перед этим было дёргать акум G2?
Потом (после поиска G4) снова продолжается зарядка G2, а в момент 3,9 сек проц проверят напряжение на нём и видит, что акум есть (потому что напруга получается в районе 1,2–1,5 вольт, а не 3,5).
Дальше – снова непонятки. Дежавю. Например, в момент с 4,04 до 4,08 сек кратковременно на зарядку «втыкается» первый акум G1 (см. четвёртый график), и одновременно на него перебрасывается мультиплексор (см. третий график). Проц по измеренному напряжению видит, что акум G1 стоит на своём месте, бросает его и возвращается к зарядке G2. Мультиплексор без надобности просто остаётся висеть на сигнале U1.
Причём эти дёрганья несколько странные и «раз на раз не приходится».
Зачем делать дырки в зарядном токе второго акума (около 3,5 сек на четвёртом графике) и в токе первого акума (около момента 5,0 сек)?
Ведь, например, если по предыдущим данным известно, что установлены только первый и второй акумы, то в конце фрагмента зарядки первого акума можно проверить напряжение сначала на нем: нормальное – значит, акум на месте. Никто не отнял. Потом переключиться на третий – есть или нет? Скорее всего, нет. Далее – на чётвёртый акум. Тоже тишина. И только затем можно включить ток во второй акум: если нормальное напряжение – он тоже на месте, продолжаем зарядку без лишних дёрганий. При этом получится только одна «дырка» в токе между окончанием зарядки акума G1 и началом зарядки G2, связанная с опросом G3 и G4.
Так нет же, постоянные дёргания с кратковременными «дырками» внутри зарядки одного и того же акума.
Но видны и ещё более короткие «втыкания» – например, второй акум в моменты 2,02, 4,9 и 5,22 секунд, очень узкие синие зоны на четвёртом графике.
Вот к чему эти дёрганья? Зачем так «дрючить» акумы?
Высоконаучное объяснение – что «дырки» на четвёртом графике сделаны специально и таким образом как бы «постепенно» разгоняется ток в заряжаемом аккумуляторе (короткая зарядка – дырка – короткая зарядка – дырка – длинная зарядка). Но верится с трудом.
Второе и простое объяснение – как программу написали для проца, так он и работает. Никто не виноват, оно само пришло 🙂 Хотя это мои личные домыслы, я ж не знаю о чём там на самом деле думали. Но подозреваю, что думал там над программой для проца наверно студент-практикант.
Ладно, хватит с этими заборами. Мне самому эта красно-синяя цветовая палитра не нравится 🙂
Теперь новая жесть – весь длинный процесс зарядки в течение 100 минут.
В этом эксперименте заряжались два акума в левой половине зарядного устройства. Записывались три сигнала управления мультиплексором и измеряемый сигнал, который идёт от мультиплексора к процессору. То есть я «подсматривал» за теми же сигналами, которые опрашивал проц в этом зарядном устройстве.
Затем при обработке сигналов мелкие коммутации (опрос наличия акумов в гнёздах устройства) были проигнорированы, а всё внимание уделялось точным измерениям, выполняемым каждые 20 секунд в «длинных» циклах.
Ниже на графиках приведены:
— первая картинка — напряжения на аккумуляторе G1 и G2,
— вторая картинка – напряжения (сигналы) с датчиков температуры. Один датчик меряет как бы температуру акумов 1 и 2, второй – как бы температуру акумов 3 и 4.
— третья картинка – реальная температура аккумуляторов G1 и G2, измеренная контактным методом (термопарой) с хорошим тепловым контактом.
Сразу оговорюсь, что зарядное устройство упорно продолжало процесс зарядки акумов несмотря на то, что они явно раскалились (до 56 градусов). Я не стал дальше испытывать судьбу и волевым решением прекратил эти издевательства, поэтому здесь нет автоматического завершения зарядки, только «ручное» на 97-й минуте.
Теперь – по существу.
Форма напряжения на акумах – вполне нормальная, если не считать «пилы» после 66-й минуты.
Сигналы с датчиков температуры – как я и ожидал. Из-за каличности конструкции они измеряют температуру печатной платы в гораздо большей степени, чем температуру аккумуляторов, поэтому сигналы с датчика Rt12 (Ut12), где стоят и греются акумы G1 и G2, и с датчика Rt34 (Ut34), где ничего нет, идут почти синхронно. Левая половина платы, где впаян Rt12, подогревается парой аккумуляторов в крайних левых гнёздах, а также токами, которые бегут по дорожкам. В правой половине платы, где впаян Rt34, нет никаких аккумуляторов, но зато есть блок питания, в котором греется расположенный радом с Rt34 силовой выпрямительный диод и конденсатор 1000 мкФ (на функ. схеме VD1 и C1). Аккумуляторы слева, конечно, дают больше жару (сигнал Ut12, красный график), но в целом «баш на баш».
Потом на 67-й минуте проц определяет, что температура поднялась до недопустимого уровня, и начинает иногда ставить зарядку на «паузу», то есть пропускает некоторые 20-секундные циклы. Если не считать этих «пауз», зарядка в целом продолжается. Поскольку средний зарядный ток уменьшился, блок питания теперь меньше греется (выпрямительный диод и кондёр в основном), правая половина платы начинает остывать, о чём говорит постепенно уменьшающийся сигнал с «правого» термистора Rt34 (график Ut34).
На последней картинке с внешним контролем температуры видно, что первый акум раскалился до 53 градусов, а второй – до 56 градусов (контролировать температуру акумов с помощью внешней термопары я начал только с 69-й минуты). И здесь очень хорошо видны последствия уродского конструктивного решения с измерением температуры. Судя по сигналу Ut12 с термистора Rt12, его собственная температура, начиная с 66-й минуты, перестала расти, но акумы продолжили нагреваться. Почему термистор дальше не грелся? А потому что рост тепловой мощности со стороны акумов был скомпенсирован остыванием платы устройства из-за появления пауз в процессе зарядки. И падающий сигнал Ut34 (коричневый) со второго термистора подтверждает: правая половина платы остывает.
Специально выпаял один термистор из платы и промерял его характеристику. Если перевести сигнал с термисторов обратно в градусы, то по датчикам с левой (Rt12) и правой (Rt34) половины платы получаются такие температуры (ºC):
минута | темп. акумов | темп. Rt12 | темп. Rt34 |
---|---|---|---|
0 | ? | 30 | 30 |
66 | 48-48 | 51/50 (пила) | 49 |
90 | 53-56 | 51/50 (пила) | 43 |
О чудо! (дважды)
Во-первых, программа честно пытается «отловить» превышение 50 градусов (судя по тому, что контроллер не даёт Rt12 нагреться выше 51ºC), но корявое конструктивное решение не позволяет достоверно следить за температурой самих аккумуляторов.
Во-вторых, правый термистор греется «за компанию» и показывает до 49 градусов, хотя в двух правых гнёздах зарядного ничего нет – это разогрев самой платы.
Но что меня ужасно возмутило – процессор же увидел, что температура поднялась до недопустимых значений, но зарядку не прекратил. Ведь любой производитель NiMH акумов говорит: если температура достигла 50-55 градусов – ахтунг, аларм, спасайся кто может! А тут – пофиг, девайс дрючит раскалённые аккумуляторы дальше.
Вот на картинке ниже показан увеличенный участок графиков с эпизодом, когда проц «поймал» предельную температуру. Крестиками на графике отмечены моменты, когда на границах 20-секундных циклов процессор выполнял измерения.
Мои акумы заряжались-заряжались потиху, грелись постепенно, но вот в момент 65 минут 39 секунд проц внезапно видит, что в цепи измерения температуры сигнал стал выше 1,18 вольт (это 51ºC на плате) и ставит следующий 20-секундный цикл на «паузу», без зарядного тока. Самое весёлое, что акумы при этом продолжают разогреваться, тепло из их потрохов всё больше пробирается наружу. Но термисторы-то измеряют температуру платы, а у нас тока нет, всё спокойно, ключи не греются, дорожки не греются, блок питания не греется, начинаем остывать (плата остывает и термисторы на ней). К началу следующего 20-секундного цикла проц видит, что температура «как бы» упала, всё хорошо, можно заряжать дальше. И включает зарядку. Акумы продолжают греться как и грелись раньше, плата тоже начинает нагреваться (всё заработало, ток ведь пошёл). После нескольких 20-секундных циклов зарядки сигнал с датчика тока снова зашкаливает, проц снова ставит зарядку на «паузу», за один цикл плата снова остывает, в следующем цикле зарядка снова включается, и туда-сюда.
Через 5 минут устанавливается режим «40 сек зарядка – 20 сек пауза».
А что с напряжением творится? (тут милливольты на графике)
Что должно, то и творится. Пауза 20 секунд – приличное время, за которое существенно уменьшается поляризация на электродах аккумулятора и напряжение падает больше, чем на 10 милливольт. Когда зарядка возобновляется после паузы, поляризация и напряжение постепенно нагоняют утраченное и снова на 10 мВ в плюс. Потом после паузы опять на 10 мВ вниз. Пила, однако!
Не, если очень издалека прищуренным глазом посмотреть на графики напряжения в «дёрганой» зоне, то некая аналогия с традиционным «горбом» в конце зарядки NiMH как бы наблюдается. Но это очень издалека. И как «по честному» для окончания зарядки поймать рекомендуемое падение dV=3мВ, если из-за этих пауз напряжение колбасит больше чем на 10 мВ? Никак.
Кто сделал такую прошивку для проца, что он, зная о запредельной температуре аккумуляторов, продолжает их заряжать. Что за кидалово?
Как в мультике:
— Мне нужны его глаза!
— Ты хочешь их вырвать?
— Нет, я хочу в них посмотреть!
Справедливости ради скажу, что это зарядное не всегда так издевается над акумами. По крайней мере, оно у своего владельца вполне нормально заряжает акум из беспроводной мыши и при этом вроде бы нормально ловит момент окончания заряда (наверно боится хозяина). Но в том случае значительно меньше средний ток и, возможно, плата с термисторами просто не успевает разогреться до температуры, при которой процессор начинает вставлять «паузы» в процесс зарядки. А ещё может быть, что тот акум с «обычной» химией и традиционно высоким саморазрядом (в отличие от моих Varta Ready2Use) и поэтому более эффективно заряжается с меньшим перегревом.
Вопрос напоследок: а какой же заряд за это время был «закачан» в мои аккумуляторы? Все ли 2100 мАч?
При заявленном среднем зарядном токе 1,2А внешние признаки полной зарядки (судя по картине напряжения на акумах и их температуре) были достигнуты примерно за 80 минут. При этом до 66-й минуты шла зарядка в «сплошном» режиме с током 1,2А, а потом из-за срабатываний ограничения температуры начался режим с паузами, в котором средний ток упал примерно до 2/3 от заявленного. Учитывая, что после самой первой паузы был ещё относительно длинный фрагмент зарядки до 68-й минуты, я буду считать ток «нормативным» до этой 68-минуты, а после неё – ток 2/3 от заявленного.
Считаем заряд (68 минут и 12 минут):
(1200*68 + 1200*2/3*12)/60 = 1520 мАч.
То есть в акумы 2100 mAh (min) «влезло» не более 72% заряда. А если учесть неидеальую эффективность (акумы-то грелись и часть энергии ушла в тепло), то получится явно меньше 70%.
Это что за достижение в науке и технике?
Я как-то не очень впечатлён. То есть впечатлён, но не в ту сторону.
Чтобы больше пофилософствовать о возможных причинах столь неэффективной зарядки, неплохо бы ещё посмотреть осциллографом на «быстрые» процессы внутри этого чудного зарядного девайса.
Продолжение – в следующем посте.
ЗЫ. Хозяин этого зарядного устройства рассказывал, как сам был свидетелем ситуации, когда ДРУГОЕ «быстрое» зарядное устройство, работающее от автомобильного прикуривателя, не поймало момент окончания зарядки акумов и дрючило их до закипания с газовыделением через предохранительные клапаны (должен был выделяться кислород). Зато момент окончания зарядки «поймали» окружающие люди по звуковым сигналам типа «стрельба», после чего акумы были выхвачены из зарядного устройства, но температура не позволила удержать их в руках 🙂
Так что ситуация с этим КОС-505 – ещё пол-беды, здесь при разогреве акумов устройство хотя бы уменьшило средний зарядный ток (продолжив при этом издевательства) и температура акумов зафиксировалась на уровне «всего лишь» 56 градусов 🙂
Источник