Зарядник Ni-Cd и Ni-MH аккумуляторов. 1

В каком направлении двигаться?

За неделю я привел программы и схему зарядника в более-менее потребное состояние. Про изменения и найденные ошибки расписывать не буду — эта грязная кухня никому не интересна. А вот то, что начало получаться — уэлкам!

Итак, Я пришёл к выводу, что комповая прога должна быть выполнена двух версиях (вариантах). Одна версия проги должна быть чисто консольная — никаких графических излишеств! Только приём с последовательного порта информации, необходимая обработка и запись полученных результатов в лог-файл с синхронным выводом их на терминал. После окончания процесса зарядки (когда вытаскивают аккумулятор из слота) формирование файла с итогами (resume-файл). Это удобно для очень слабых компов (типа eee PC или Raspberry-Pi), которые запустил на пару суток и не вздрагиваешь, что они едят электричество. А они себе работают и работают, и честно складывают получаемые данные в файл.

Вторая версия проги должна быть графическая, наподобие той, скриншоты которой я опубликовал в первой статье на эту тему. Я не очень представляю, зачем она (эта графическая версия) нужна. Я перестал ею пользоваться. Поигрался и понял — немного не то, что мне хотелось бы. Она красивая, наглядная, возможно даже информационно-полная, но … она требует значительно больших ресурсов для своей работы. Прога использует Qt-технологию, значит нужно на слабеньком компе размещать ещё и Qt. У меня eee PC вообще трудится без графической оболочки — только текстовый терминал. И этого вполне хватает. В общем, пришлось подстраиваться под него.

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

Содержимое log-файла выглядит примерно так:

# NiCd.1-2017.05.27-02:36:55

# time mode    uc    ud    ec    ed     i    r
#  (с)        (В)   (В)   (В)   (В)  (мА) (Ом)

   264    1 0.843 0.029 1.349 1.349  81.4 6.21
   265    1 0.848 0.029 1.349 1.349  81.9 6.12
   266    1 0.848 0.029 1.349 1.349  81.9 6.12
   267    1 0.848 0.029 1.349 1.349  81.9 6.12

В первой строке указывается базовое имя файла. Оно состоит из номера аккумулятора («NiCd.1» — Аккумулятор № 1) и даты-времени начала процесса («2017.05.27-02:36:55»)

Далее следуют две строки наименования параметров и указание их единиц измерения. Напряжения указываются в вольтах, ток — в миллиамперах, внутренне сопротивление аккумулятора — в омах.

Этот файл предназначен для «скармливания» gnuplot-у. Но об этом чуть погодя.

Второй файл — резьюм-файл — это тоже текстовый файл, в котором очень кратно приводятся итоговые цифры по разрядке-зарядке аккумулятора. Вот, например, содержимое файла «NiCd.1-2017.05.27-02:36:55.resume»:

NiCd.1-2017.05.27-02:36:55

Разрядка:
  длительность t = 56353 секунд
  заряд        Q = 1251.56 мА*час
  энергия      A = 3791.55 Дж

Зарядка:
  длительность t = 67398 секунд
  заряд        Q = 1850.69 мА*час
  энергия      A = 12594.90 Дж

Скажу честно, тут есть ещё над чем поработать. Да и вообще, я не позиционирую проект как законченный.

Не знаю, как вам, но мне хотелось бы видеть длительность зарядки и длительность разрядки не только в секундах, но и в формате часы:минуты:секунды. Всё это реализуемо, сложностей никаких нет. Другое дело, что это всё делать надо. А для этого нужно время.

Мне остаётся добавить, что комповая часть программного обеспечения написана на Python3.

А теперь переходим к более интересной части — к анализу полученных данных.

 

Анализ

В данном эксперименте (ой, как громко сказал!) я использовал два «дохлых» аккумулятора Ni-MH с заявленной ёмкостью 2500 мА*час

Эти аккумуляторы уже использовались. Собственно, про них я и писал в первой статье, что я их вернул с «того света». Не «Банзай!», конечно, но половину ёмкости они вполне обеспечивают.

Вот, резьюм-файл второго аккумулятора:

NiCd.2-2017.05.27-02:36:58

Разрядка:
  длительность t = 54299.0 секунд
  заряд        Q = 1369.81 мА*час
  энергия      A = 4718.73 Дж

Зарядка:
  длительность t = 65096.0 секунд
  заряд        Q = 1868.18 мА*час
  энергия      A = 11822.34 Дж

Что ещё можно сказать про эти аккумуляторы? Емкость, вычисленная при зарядке больше, чем емкость при разрядке. А вот энергия, «вкачанная» в аккумулятор, и энергия изъятая из него, сильно отличаются — примерно раза в три. Иначе говоря, что бы запитать какое-то автономное устройство от аккумулятора, мы должны затратить в три раза больше энергии, чем если бы мы питали это же устройство от розетки.

Для мало-энергоёмких устройств это не проблема. Но ведь есть любители всяких wi-fi колонок… Впрочем, это их проблемы.

Переходим к лог-файлам и к графикам, построенным на их основе.

Собственно, чтобы построить график по приведённому выше лог-файлу, нужно запустить gnuplot и выполнить в нём несколько команд. Когда это один-два графика, то это проще выполнить вручную. Но когда предстоит строить десятки-сотни графиков, то, понятное дело, процесс построения лучше автоматизировать — написать скрипт (программу).

Поскольку, в текущей версии зарядника у меня два слота, то я написал скрипт для двух файлов:

#!/usr/bin/gnuplot


NAME = "NiCd.1-2017.05.27-02:36:55"
DATA = NAME.".log"
PNG  = NAME.".png"

set terminal png
set terminal png size 800, 600 font "Verdana, 10"

set output PNG
set title "Напряжение и эдс аккумулятора"
set xlabel "t, с"
set ylabel "U, E, (I/100) и Rвн"
set grid

# Напряжение, эдс, ток и внутренне сопротивление
plot DATA u 1:3 w l title "Uc", "" u 1:4 w l title "Ud", "" u 1:5 w l title "E", "" u 1:($7 / 100) w l title "(I/100)", "" u 1:8 w l title "Rвн"


NAME = "NiCd.2-2017.05.27-02:36:58"
DATA = NAME.".log"
PNG  = NAME.".png"

set output PNG

# Напряжение, эдс, ток и внутренне сопротивление
plot DATA u 1:3 w l title "Uc", "" u 1:4 w l title "Ud", "" u 1:5 w l title "E", "" u 1:($7 / 100) w l title "(I/100)", "" u 1:8 w l title "Rвн"

Файл скрипта имеет установленный бит исполнения, и запускается как программа из командной строки:

$ euir.gnuplot

Система (точнее — оболочка) на основе первой строки файла определяет, что для исполнения этого файла необходимо запустить gnuplot и «скормить» ему это файл. Вот такая метаморфоза. (Я балдею от возможностей Линукса!)

В файле скрипта присутствуют две строки, в которых указываются базовые имена:

NAME = "NiCd.1-2017.05.27-02:36:55"
NAME = "NiCd.2-2017.05.27-02:36:58"

Я знаю. Это не очень «красивое» решение. Я бы предпочёл не лезть внутрь скрипта и не редактировать его код, а указывать параметры в командной строке при запуске скрипта. Но я пока не знаю, как это можно сделать для скриптов gnuplot. Если у кого-то есть готовое решение, пожалуйста, озвучьте его.

На основе базового имени скрипт создаёт имя входного файла и имя файла для сохранения графиков. Затем скрипт настраивает формат вывода графиков, подписывает оси и, наконец, осуществляет рисование. В результате работы скрипта появляются два файла с графиками процессов зарядки-разрядки для каждого аккумулятора.

Вот, графики для аккумулятора №1:

и графики для аккумулятора №2

Будьте внимательны! Напряжения и сопротивления на графиках показаны в своих масштабах, а токи — в масштабе 1:100 (то есть в сотнях миллиампер).

Итак, анализ.

На графиках хорошо прослеживаются режим предварительной разрядка аккумулятора и режим зарядки. А на графиках для аккумулятора №1 хорошо виден участок, когда аккумулятор зарядился и ещё часа два-три после этого тупо стоял в слоте. (Ничего необычного! Я в это время просто сладко спал, а система продолжала работать.)

Начну, пожалуй, со внутреннего сопротивления. (Ярко-голубой зашумлённый трек.)

На графиках хорошо видно, что внутренне сопротивление аккумулятора в начале разрядки резко падает. Затем оно остаётся примерно на одном уровне. И только в конце разрядки, когда э.д.с. (напряжение на аккумуляторе без нагрузки!) становится ниже 1.1-1.2 В, оно возрастает на 10-20 %. При этом аккумулятор (-ы) продолжает отдавать ток без дальнейшего существенного падения напряжения.

Такое ощущение, что внутри физического аккумулятора находятся два виртуальных. Когда будет выбрана энергия из одного с низким внутренним сопротивлением, в работу включается второй — с высоким внутренним сопротивлением и продолжает «тянуть» нагрузку.

Во всяком случае на графиках видно, что аккумулятор сначала попытался «войти в пике», но потом почему-то «одумался». Я не знаю, чем это объяснить. И, да! Эти аккумуляторы старые, никогда считались «убитыми», сейчас их внутренне сопротивление (относительно  сопротивления рабочих аккумуляторов) большое. Они ещё живые, хотя во многие устройства, которые требуют больших токов, они явно не годятся.

Что касается внутреннего сопротивления аккумулятора при зарядке, то тут мы так же видим, что в начале сопротивление падает (в течение 2-3 часов), а затем начинает медленно повышаться.

Возможно я неправ. Даже так — скорее всего я неправ! Но я заканчиваю процесс зарядки по достижению аккумулятором значения э.д.с. (не напряжения под нагрузкой и не напряжения при зарядке!) равным 1.5 В. Напряжение на выводах аккумулятора при зарядке может достигать двух и даже чуть более вольт. Повышенному напряжению способствует относительно большое внутреннее сопротивление аккумулятора.

Зарядный ток аккумуляторов колеблется на уровне около 200 мА. Аккумуляторы не горячие, по ощущениям их температура примерно градусов 30-35.

Пожалуй, на этом я закончу. Если у вас есть вопросы или предложения — не стесняйтесь из задавать!

Сейчас я установлю в зарядник рабочие аккумуляторы, которые используются в фотике. Результаты будут готовы примерно дня через два.

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s