C&ESR Meter, v2, ремейк. Часть 2.

  Продолжение статьи про «remake» достаточно точной и не очень сложной конструкции измерителя C&ESR автора Келехсашвили В.А. (vyachko).

Отладочная симуляция программы в Proteus.

  В процессе написания новой версии программы широко использовался симулятор аналоговых и цифровых схем Proteus 7.10. Это позволило протестировать поведение программы в различных режимах и на различных емкостях и ESR конденсаторов во всем поддерживаемом диаппазоне (а иначе как бы я это сделал, у меня же не центр метрологии). Именно так была найдена ошибка форматирования вывода на стыке диаппазонов микрофарады <-> фарады в программе vyachko.
  Конечно это тестирование условно, поскольку эмулируемая схема собрана из моделируемых примитивов и мало похожа на реальную. Но ценно здесь то, что необходимые параметры можно задать в свойствах моделируемых примитивов. Для отладки программы в AVR Studio 4.19 симулятор Proteus можно подключить как внешний отладчик. Это позволяет в режиме отладки переключать конденсаторы на схеме Proteus, нажимать на кнопку, видеть показания на дисплее. При остановленной симуляции с помощью зондов-пробников и аналового-цифрового графика можно детально рассмотреть изменение сигналов в различных контрольных точках схемы в течении времени, масштаб временной шкалы можно менять от ns до десятков секунд.
  Легенда обозначений аналоговых и цифровых пробников в проекте Proteus:
  • 8_0mA (цифр) — управление генератором зарядного тока 8mA;
  • 0_5mA (цифр) — управление генератором зарядного тока 0,5mA;
  • CPH (цифр) — напряжение на выходе компаратора верхнего уровня 300mV;
  • CPL (цифр) — напряжение на выходе компаратора нижнего уровня 150mV;
  • Zero (цифр) — управление разрядным ключем;
  • Vx (аналог) — напряжение на измеряемом конденсаторе;
  • Ix (аналог) — ток через измеряемый конденсатор;



  Время паузы между измерениями в программе vyachko фиксировано и равно ~880ms, этого не всегда хватает для полной разрядки конденсатора в паузе между измерениями. Чем больше емкость конденсатора и его ESR тем больше времени нужно на его разрядку. В моей программе это частично учтено, время разрядки увеличивается на каждом диаппазоне:
  • Диаппазон 0, пауза между измерениями 406,1 ms;
  • Диаппазон 1, пауза между измерениями 825,3 ms;
  • Диаппазон 2, пауза между измерениями 1663,7 ms;
  • Диаппазон 3, пауза между измерениями 2502,1 ms;
  • Диаппазон 4, пауза между измерениями 3340,5 ms;
  Отличительной особенностью моего варианта измерителя является контроль напряжения измеряемого конденсатора перед запуском цикла измерения. Это сделано для обеспечения более полного разряда конденсатора при необходимости. Если напряжение на конденсаторе окажется выше порогового, вместо цикла измерения будет снова проведен цикл разрядки. Для контроля остаточного напряжения использован внутренний аналоговый компаратор МК.
  Необходимость контроля напряжения на измеряемом конденсаторе и его доразрядка при необходимости, хорошо видна при симуляции программы от vyachko. Для наглядности сначала возьмем емкость симулируемого конденсатора — 300000 μF, ESR — 1 Ом.



  Хорошо видно, что остаточное напряжение на конденсаторе из-за недостаточного времени разряда постепенно увеличивается с увеличением диаппазона. Из-за этого уменьшается кол-во импульсов n1 по отношению к n2, а значит завышается ESR и на дисплее отображается (слева программа vyachko, справа моя):



График цикла измерения своей программы покажу чуть позже, теперь возьмем емкость симулируемого конденсатора — 300000 μF, ESR — 18 Ом.



  Опять видим, что напряжение на конденсаторе из-за недостаточного времени разряда постепенно увеличивается с увеличением диаппазона. Цикл первого измерения с переключением диаппазонов 8,7 сек. При непрерывных замерах время между измерениями 1,8 сек, напряжение на конденсаторе не падает даже ниже нижнего порога измерения (150 mV). Соответственно и на дисплее отображается:



  Если же контролировать остаточное напряжение на конденсаторе с доразрядкой при необходимости, поведение программы меняется. График симуляции измерения того-же конденсатора моей программой:



  Начиная с третьего диаппазона время разряда конденсатора возрастает, причем для разряда требуется большее время, чем для заряда, цикл первого измерения с переключением диаппазонов 36,3 сек. В установившемся режиме время между измерениями 25,7 сек, перед каждым новым измерением производится 6 циклов разряда, благодаря этому конденсатор разряжается более полно и на дисплее отображается:



  Необходимо сказать, что скорость разрядки конденсатора зависит также от быстродействия и особенно от сопротивления канала разрядного МОП транзистора. Для эмуляции они были приняты 1 мкс и 0,16 Ом соответственно (быстродействие намеренно почти на порядок ухудшено, сопротивление канала соответствует IRF530). В моей схеме в качестве разрядного МОП транзистора применен P3055LD, такие или похожие ключи с управлением логическим уровнем ставили на материнских платах Pentium 4 в обвязке питания ядра, их параметры значительно лучше.

Показания дисплея в разных режимах.

  Программа имеет два режима работы — рабочий и отладочный. В рабочем режиме на дисплее отображаются результаты измерений или информационные сообщения, в верхней строке выводится значение емкости С, в нижней ESR. В отладочном режиме на дисплее отображается в HEX виде кол-во импульсов зафиксированных прибором по достижении уровней U1 (верхняя строка) и U2 (нижняя строка). В любой момент из рабочего режима можно перейти в отладочный, и наоборот. Делается это коротким нажатием на кнопку. Алгоритм кнопки работает на отпускание, при нажатии срабатывает счетчик антидребезга, при отпускании перебрасывается флаг.
   При включении прибора на дисплей выводится название прибора и информация о версии.

  • Назначение сообщения чисто информационное, также во время отображения происходит копирование значений поправок из EEPROM в теневое ОЗУ (если они включены).
Далее прибор переходит в рабочий режим, информация на дисплее зависит от наличия/отсутствия подключения ко входу испытываемого конденсатора.

  • Если конденсатор присутствует, в верхней строке отображается емкость, в нижней ESR. Справа вывод прибора в отладочном режиме.
При измерении на верхних диаппазонах (1-4, емкость более ~300μF) прибор позволяет различать четный/нечетный цикл измерения. При измерения больших емкостей (с длинным циклом измерения из-за переключения диаппазонов) это бывает полезно. Циклы можно различить по изменению запятой на точку и обратно.

  • Слева вывод четного измерения, справа нечетного.





  •   Ко входу ничего не подключено. Алгоритм распознавания: во время включения генератора зарядного тока, напряжение на клеммах прибора при отсутствии испытываемого конденсатора повышается до порогового значения почти мгновенно, когда программа еще не успевает выйти из подпрограммы запуска измерительного цикла. Значения насчитанные счетным таймером и принимаются в качестве поправочных коэфициентов. Из этого состояния можно запомнить эти поправочные коэффициенты длительным нажатием кнопки. Если поправок не было — они запомнятся, если были — они отключатся.



      Состояние коэффициентов включены/выключены можно увидеть на отладочном экране, "+"/"-" перед значением. Затем следует буква «n»\«N», если маленькая — измерение на малом токе, большая — на большом. Затем после разделителя ":" выводится число импульсов в HEX виде, n1 — верхняя строка, n2 — нижняя. Если вход не свободен, при попытке установить/снять коэфициенты коррекции получите сообщение:.






  •   Вход закорочен, алгоритм распознавания: после включения генератора зарядного тока, за время таймаута измерительного цикла не произошло срабатывания компаратора по достижении уровня U1. Таймауты измерительного цикла в зависимости от диаппазона разные, с увеличением емкости повышаются, происходит постепенное повышение диаппазона измерения с промежуточными попытками замеров, обработкой результатов и повышением времени задержки между циклами от 406 ms до 3340 ms. Кроме того задержка между циклами зависит от степени разряженности измеряемого конденсатора и может быть увеличена для доразрядки. Процесс довольно длительный, поэтому, чтобы не создавалось впечатления что прибор завис, процесс можно визуально контролировать:


  • Существует и диаппазон 0, но его номер не отображается, слишком быстро происходит переключение.




  •   Емкость измеряемого конденсатора превышает верхний предел измерения прибора. Алгоритм распознавания: после включения генератора зарядного тока, за время таймаута измерительного цикла произошло срабатывание компаратора по достижении уровня U1, но не произошло срабатывания компаратора по достижении уровня U2. Длительность процесса и индикация переключения диаппазонов те-же.




  •   Емкость измеряемого конденсатора ниже нижнего предела измерения прибора (<100nF). Алгоритм распознавания: значение таймера меньше заданного минимально допустимого значения.
  • Также это информационное окно будет выведено при слишком большом ESR.

  •   Алгоритм распознавания: Из-за большого ESR срабатывание компаратора по достижении уровня U1 произошло еще до выхода из подпрограммы запуска цикла измерения.



В алгоритме расчета значения ESR есть две ситуации, когда вывод расчета заменяется на сообщения:

  1. При расчете ESR по формуле

    Вычисленное значение 2n1 оказалось больше n2, а значит делимое стало отрицательным.

  2. Вычисленное значение ESR более 20,5 Ом, точно его показывать нет смысла, да и погрешность будет очень большая.



Подсветка дисплея и контроль напряжения внутренней батареи.

  Управление подсветкой дисплея я предусмотрел, и на ранних этапах переделки программы даже реализовал с программным ШИМ. Впоследствии потребовались более желательные доработки функционала, программа потихоньку росла, свободная память уменьшалась. Возник вопрос, что из наименее значимых функций можно безболезненно выбросить, это и оказалось управление подсветкой. В окончательном варианте программы вывод PD1 на этапе инициализации настраивается как выход с высоким логическим уровнем и в дальнейшем никак не изменяется, т.е. подсветка включена всегда. Вроде как CMD резистор R20 и транзистор VT4 оказались ненужными и можно было-бы их безболезненно выбросить, я не стал этого делать из-за сохранения возможности расширяемости программы. Не надо забывать, что хотя память в ATtiny2313A практически исчерпана, существует вариант ATtiny4313A с вдвое большей памятью программ, да и накладные расходы на CMD резистор и транзистор невелики.

  Измеритель сразу проектировался с ориентацией на домашнее применение и использование внешнего блока питания 12V. Но применение автономного питания может расширить сферу его применения и возможно повысить точность результатов. В качестве автономного элемента питания запроектирован аккумулятор в формате «Крона». Поэтому коротко рассмотрю номенклатуру и различия аккумуляторов в этом формате:
  1. Эти аккумуляторы изготавливаются в основном по технологиям NiMH, Li-Po и Li-ion.



    Далее речь пойдет только о аккумуляторах Li-ion.
  2. Внутривидовое Li-ion различие в формате «Кроны» — по кол-ву элементов в аккумуляторе, одно и двухэлементные.
    • Одноэлементные, это банка Li-ion аккумулятора со схемой заряда и защиты (обычно на TP4056 или аналоге) + схема DC-DC повышения напряжения 3,7V -> 9V. Примерно такая, но попроще, нерегулируемая:



      Отличительной особенностью этого варианта является постоянное напряжение на выходе 9V и его мгновенное падение до 0 после срабатывания схемы защиты от переразряда. Т.к через клеммы нельзя контролировать напряжение банки, на такие аккумуляторы обычно ставят двухцветный светодиод заряда/окончания заряда.
      Никаких преимуществ перед внешним импульсным блоком питания у этого варианта нет, одни недостатки, отметаем.

    • Двухэлементные, это две последовательно включенные банки Li-ion аккумуляторов со схемой балансира заряда и защиты, что-то типа этого:


      Банки включаются последовательно, одна между B- и BM, вторая между BM и B+. Номинальное напряжение таких аккумуляторов 7,4V, максимальное 8,4V, минимальное зависит от схемы защиты.

  3. Еще одно различие Li-ion аккумуляторов в формате «Кроны», это способ их зарядки, их два. Часть аккумуляторов можно заряжать только через выходные клеммы аккумулятора с помощью внешнего зарядного устройства, часть через встроенный порт micro-USB. По наличию этого порта можно однозначно определить способ зарядки, аккумуляторы поддерживающие оба способа мне не встречались. Наличие светодиода заряда/окончания заряда опционально, бывает и расширенная индикация, я расскажу именно о таком аккумуляторе с портом micro-USB.

  Это аккумулятор "Liter energy battery" заявленной емкостью 1200mA/h и напряжением 9V, продавец (BIHUADE Store на Ali) у которого я брал, их позиционирует для квадрокоптеров. Их емкость неприлично велика для «Кроны», учитывая китайские mA/h просто поделил на два, меня больше заинтересовала расширенная индикация.
  Аккумулятор поставляется в симпатичной коробочке, в комплекте идут короткий (200мм) шнурок для зарядки USB(m) <-> micro-USB(m) и переходник USB(f) <-> micro-USB(m).



  Простыми замерами можно определить, что аккумулятор изготовлен по второму варианту, т.е. две банки с балансиром. Максимальное напряжение до которого удалось зарядить этот аккумулятор составило 8,3V, наверное 0,1V отьедает внутренняя схема мониторинга и индикации напряжения. Замеров реальной емкости и порогов срабатывания схемы мониторинга пока не производил, просто понравилось исполнение. Даже в закрытом корпусе, если предусмотреть толкатель кнопки над кнопкой аккумулятора, а над барграфом врезать полоску орстекла, получится удобный симпатичный контроль напряжения аккумулятора.
  P.S. Совершенно неожиданно выяснилось еще одно предназначение этого аккумулятора, он может служить Power Bank'ом для подзарядки смартфона, для этого в комплекте переходник USB(f) <-> micro-USB(m).



Но на такое применение я бы не очень надеялся, хлипковат.

Наладка, особенности.

В измерителе четыре точки требующие особого внимания при наладке, от них и будет зависеть достоверность показаний.
  • КУ входного операционного усилителя DA1.1, должен быть равен 8. В программе задан как константа AmpGain, используется препроцессором для вычисления констант LowMeasU1 (150 mV — нижнее пороговое напряжение) и BigMeasU2 (300 mV — верхнее пороговое напряжение). Если реальный КУ больше 8, значение емкости будет занижаться, если меньше, соответственно завышаться.
  • Меньший и больший зарядные токи конденсаторов, в программе задаются в mkA, LowCurrent (500 mkA) и BigCurrent (8000 mkA) соответственно. Как можно заметить, BigCurrent / LowCurrent = 16. Это соотношение жестко зашито в коде программы, коэффициенты 2^15 и 2^19 отличаются как-раз на 16, делитель при измерении на малом токе тоже больше на 16. С точки зрения практики, при невозможности точно выдержать это соотношение, лучше если оно будет чуть меньше 16, чем чуть больше.
  • Пороговое напряжение компаратора U2, в программе задается в mV, BigCompU2 (2400 mV), пороговое напряжение компаратора U1 препроцессор получает LowCompU1 = BigCompU2 / 2. И не надо думать, что если мы зададим это напряжение непосредственно, например LowCompU1 = 1190 mV, то работа измерителя улучшится, соотношение U2 = 2U1 также жестко зашито в алгоритм вычислений. Опять-же с точки зрения практики округлять BigCompU2 следует в четную сторону, т.к. для получении значения LowCompU1 оно делится надвое.
  Применять в качестве настроечных элементов переменные резисторы конечно можно, но нежелательно, тем более требуются четыре разных номинала. От однооборотных будет одна головная боль, и на нужный номинал настроить трудно, и со временем он будет уходить. Многооборотные типа «Bourns»



конечно гораздо точнее в настройке, но показания со временем все равно поплывут, да и стоят они недешего.
  Гораздо лучше если есть возможность достать высокоточные резисторы с 1% номиналом, к сожалению обычно это недоступно. С достаточной точностью можно подобрать номинал резистора применив параллельно-последовательное соединение двух-трех резисторов:



  Места занимает как один многооборотный подстроечник, но доступность и временная стабильность выше. Используя табличку с рядом номиналов резисторов и Proteus, можно быстро подобрать нужные номиналы не используя расчеты. Делитель порогового напряжения:



Генераторы стабильного тока:



Резистор ОС ОУ, считается как делитель постоянного напряжения:



Если-же есть возможность использовать номиналы из ряда E24, можно добиться еще большей точности, а иногда вообще обойтись одним резистором, например номинал 1,1 кОм входит в ряд.

Начало, часть 1.

  • +3
  • 25 апреля 2020, 11:22
  • anakost

Комментарии (5)

RSS свернуть / развернуть
Почему не поставить транзистор для разряда конденсатора, свободные ножки процессора есть.
И неплохо бы о термостабилизации источников тока подумать.
Про построение опорника говорили уже.
0
транзистор для разряда конденсатора
Есть же разрядный МОП-ключ, зачем еще один?
термостабилизации источников
Для простого измерителя это пижонство, ИМХО.
построение опорника
В конце 1 части, в секции PS, это исправлено.
0
Камрад, а ты пробовал это в железе реализовать?
0
Интересуюсь не из праздного любопытства. Дело в том, что тоже решил попробовать использовать данный метод. Даже формулу для ESR самостоятельно вывел еще раз — естественно, она получилась такая же, как в статье. И вроде бы на бумаге всё работает, но в реале получается какая-то херня.

Например, на прилепленной картинке желтым цветом показан процесс заряда конденсатора 100мкФ/35В от конторы ELZET (стандартная серия CD263 на +105°С) стабильным током 10мА (синяя кривая — это напряжение на датчике тока номиналом 2,4 Ом, установленном между выходом источника тока и «плюсом» конденсатора). Точка (U1;t1) выбрана (200мВ;1,54мс), точка (U2;t2) — (500мВ;4,16мс). При этом по формулам емкость получается C=87,3мкФ, что довольно близко к действительности — специальный прибор VC6013 говорит, что емкость конденсатора равна 93,3мкФ (погрешность здесь можно списать на малую точность измерения времени/напряжения по осциллографу, к тому же и VC6013 тоже неидеален). А вот с ESR всё намного хуже — по расчетам он получается 2,37 Ом, а производитель заявляет о 0,39 Омах. И ведь это правда — если посмотреть самое начало заряда (вторая прилепленная картинка), то скачок напряжения в начале (который и обусловлен наличием ESR) составляет 4мВ, что соответствует 4мВ/10мА=0,40 Омам. И я никак не догоню — где же, блять, подвох?:) Почему емкость вычисляется нормально, а ESR — с ошибкой почти на порядок?
.
0
Причем, и с конденсаторами других номиналов/напряжений/производителей получается всё то же самое.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.