Измеритель емкости для аккумуляторов NiMH, NiCd, Li-Ion, Li-Poli и LiFePo4 на Arduino Nano

Фальсификация аккумуляторов — особенно литий-ионных (Li-ion) и никель-металлогидридных (NiMH) аккумуляторов — печальный факт. Многие компании рекламируют аккумуляторы или PowerBank, указывая огромные значения емкости, которые значительно превышают фактические параметры этих компонентов.

Благодаря данному устройству вы можете легко измерить реальную емкость аккумуляторов и выбрать те, которые имеют соответствующие параметры. Трудно проверить реальную емкость аккумуляторов, особенно когда вы их покупаете много.

Точно так же трудно определить доступную емкость восстановленных ячеек формата 18650 (например, с ноутбуков). Устройство для измерения фактической емкости аккумуляторов позволит выбрать подходящий элемент для питания какого-либо устройства.

Схема, представленная ниже, представляет собой второе поколение измерителя емкости аккумуляторов, созданного автором проекта на портале Instructables под ником Open Green Energy.

Схема, построенная ранее в 2016 году, разряжала элемент через постоянный резистор, а модуль Arduino измерял ток и напряжение как функцию времени. В конце, после разрядки элемента до заданного уровня, емкость определялась как произведение тока разряда и времени, которое потребовалось для разрядки элемента до установленного уровня.

Однако во время измерения при уменьшении напряжения батареи также уменьшается и ток. Это делало процесс вычисления емкости достаточно сложным и неточными. Чтобы устранить эту проблему, автор создал версию V2.0, которая была разработана таким образом, чтобы ток оставался постоянным на протяжении всего процесса разрядки.

Стартовый набор для Arduino Uno R3
Большой набор: датчики, кнопки, сервоприводы...

Это достигнуто за счет использования активной нагрузки для разрядки аккумулятора. Ток разряда аккумулятора может быть постоянным на протяжении всего процесса измерения.

Основные преимущества тестера емкости аккумуляторов:

  • Возможность измерять емкость элементов  NiMH, NiCd, Li-Ion, Li-Poli и LiFePo4 различных размеров — AA, AAA, 18650 и др. Единственным условием является напряжение аккумулятора ниже 5 В.
  • Настраиваемый ток разряда аккумулятора.
  • Пользовательский интерфейс на основе легко читаемого OLED-дисплея.
  • Возможность использования устройства в качестве программируемой электронной нагрузки.

Для создания данного тестера нам понадобятся:

Конструкция тестера аккумуляторов

Принципиальная схема показана на следующем рисунке:

Измеритель емкости для аккумуляторов на Arduino Nano. Схема

Условно всю конструкцию можно разделить на следующие части:

  1. Источник питания.
  2. Нагрузка постоянного тока.
  3. Измерение напряжения аккумулятора.
  4. Интерфейс пользователя.
  5. Сигнализатор — зуммер.

Источник питания

Источник питания состоит из разъема для подключения внешнего источника питания (входное напряжение в диапазоне 7…9 В) и двух фильтрующих конденсаторов С1 и С2. Входное напряжение (Vin) подключено к выводу Vin Arduino. Схема использует встроенный стабилизатор напряжения Arduino.

Схема нагрузки постоянного тока

Основным элементом этой схемы является интегральная схема LM358, которая включает в себя два операционных усилителя. ШИМ-сигнал с цифрового вывода D10 Arduino подается на фильтр нижних частот, состоящий из компонентов R1 и C3.

Далее он поступает на неинвертирующий вход операционного усилителя сконфигурированного вместе с полевым транзистором VT1 в качестве источника тока.

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

ОУ DD1 вместе с R3 и VT1 , образует активную нагрузку постоянного тока, которая разряжает батарею. Ток, протекающий через резистор R3, управляется широтно-импульсной модуляцией (ШИМ), подаваемой с Arduino на транзистор VT1 .

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

Сам операционный усилитель настроен как буфер с единичным усилением. Отфильтрованный ШИМ сигнал подается на неинвертирующий вход, что вызывает появление некоторого напряжения на выходе усилителя, который открывает затвор MOSFET.

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

Таким образом, ток, протекающий через нагрузочный резистор, будет пропорционален напряжению на неинвертирующем входе операционного усилителя. Напряжение на неинвертирующем входе, которое управляет работой источника тока, поступает от низкочастотного фильтра RC, на который подается прямоугольный сигнал с переменным заполнением, генерируемый Arduino.

На следующем рисунке показан ШИМ сигнал от Arduino (канал 1, желтый) и сигнал после фильтра (канал 2, зеленый). Таким образом, из ШИМ и RC-фильтра собран простой ЦАП.

ШИМ сигнал от Arduino

Значения элементов фильтра RC могут быть подобраны с помощью осциллографа и анализа выходного сигнала от фильтра для различных значений аккумуляторов и/или частоты сигнала ШИМ.

Схема измерения напряжения аккумулятора

Напряжение аккумулятора измеряется через контакт A0 (вход аналого-цифрового преобразователя в Arduino). Два конденсатора С1 и С2 используются для фильтрации помех, присутствующих в цепи испытуемого аккумулятора, которые возникают из-за пульсаций тока в цепи активной нагрузки. Эти помехи могут снизить точность измерения АЦП в Arduino.

Интерфейс пользователя

Схема интерфейса пользователя состоит из двух кнопок и 0,96-дюймового модуля OLED-дисплея, управляемого по  I2C. Две кнопки (Вверх и Вниз)  используются для увеличения или уменьшения ширины импульса ШИМ, что позволяет регулировать ток разрядки аккумулятора.

Резисторы R2 и R4 подтягивают обе линии, подключенные к кнопкам. Третья кнопка (RST) используется для сброса Arduino. Напряжение аккумулятора, ток разряда и измеренная емкость отображаются на OLED-дисплее.

Его разрешение составляет 128 × 64 пикселей, а связь с Arduino осуществляется через шину I2C, благодаря которой для передачи данных требуются только две сигнальные линии — контакт SCL (A5) и SDA (A4). Два других контакта платы дисплея являются источником питания (+5 В и GND).

Сигнализация — зуммер

5-вольтный зуммер подключен к цифровому выводу D9 Arduino. Этот выход управляет сигналом тревоги, который сигнализирует о начале и конце измерения емкости ячейки.

Программное обеспечение

Во время измерения емкости аккумулятора схема стабилизирует ток на заданном уровне и разряжает аккумулятор до получения установленного напряжения в зависимости от типа батареи (например, 3,2 В для литий-ионного элемента). Емкость (в мАч) рассчитывается как установленный ток разряда (в мА) умноженный на время (в часах) необходимое для разрядки до порогового напряжения.

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

  1. JC_Button — используется для управления кнопками.
  2. Adafruit_SSD1306  — поддержка дисплея OLED с драйвером SSD1306.

Скетч для Arduino

Перед компиляцией в коде необходимо заполнить два значения калибровки:

  • Массив значений тока для различных величин ШИМ и используемого силового резистора. Этот ток мы измеряем, подключая мультиметр последовательно с ячейкой, уже после сборки нашего устройства. Кнопками меняем заполнение управляющего сигнала и измеряем текущий для отдельных порогов ток ячейки. Полученные значения помещаем в переменную Current.
//Диапазоны тока
const int Current [] = {0,110,210,300,390,490,580,680,770,870,960,1000};
  • Уровень напряжения VCC в нашей схеме. Мы измеряем напряжение 5 В с помощью мультиметра на выводе VCC Arduino и вводим фактическое значение в переменную Vcc.
// Напряжение на выводе Arduino 5V (измерено мультиметром)
float Vcc = 4.96 ;

После вышеуказанной калибровки код программы готов к компиляции. Мы еще можем изменить значение переменной Low_BAT_ Level — это порог напряжения, до которого будет разряжаться элемент. Это зависит от типа аккумулятора. Хорошей идеей будет установить этот порог чуть выше минимально возможного напряжения для конкретного типа аккумулятора.

Далее следуют минимальные напряжения ячеек различной химии для разрядки ячеек током 1С:

  • Оксид лития-кобальта: напряжение = 2,5 В.
  • Оксид лития-марганца: напряжение = 2,5 В.
  • Фосфат лития и железа: напряжение = 2,5 В.
  • Титанат лития: напряжение = 1,8 В.
  • Литий-марганец-кобальт оксид: напряжение = 2,5 В.
  • Литий-никель-кобальт-алюминий оксид: напряжение = 3,0 В.

Скачать скетч и файлы печатной платы (142,0 KiB, скачано: 246)

2 комментария

  • 14.06.2020 at 18:18

    Кто нибудь пробовал это собрать? Оно не работает ,210mA больше не даёт!

    Ответить
  • 15.06.2020 at 21:33

    LM358 нужно запитать от 9V, тогда работает.

    Ответить

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

Ваш электронный адрес не будет опубликован.


*