Измеритель емкости аккумуляторов на Arduino: схема, программа и инструкция по сборке

Как собрать измеритель емкости аккумуляторов на Arduino. Какие компоненты нужны для сборки. Как работает схема измерителя. Как настроить и откалибровать устройство. Для каких типов аккумуляторов подходит данный измеритель.

Содержание

Принцип работы измерителя емкости аккумуляторов на Arduino

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

  • Arduino Nano — управляет процессом измерения
  • Операционный усилитель LM358 — формирует нагрузку постоянного тока
  • OLED-дисплей — отображает результаты измерений
  • Полевой транзистор — регулирует ток разряда

Принцип измерения заключается в следующем:

  1. Устанавливается постоянный ток разряда аккумулятора
  2. Аккумулятор разряжается до порогового напряжения
  3. Измеряется время разряда
  4. Емкость рассчитывается как произведение тока на время разряда

Схема измерителя емкости аккумуляторов на Arduino

Принципиальная электрическая схема устройства состоит из следующих основных блоков:


  • Источник питания — внешний источник 7-9В
  • Нагрузка постоянного тока на ОУ LM358 и полевом транзисторе
  • Схема измерения напряжения аккумулятора
  • Интерфейс пользователя — кнопки и OLED-дисплей
  • Звуковая сигнализация — зуммер

Ключевым элементом является схема нагрузки постоянного тока, которая обеспечивает стабильный ток разряда аккумулятора на протяжении всего измерения. Это повышает точность определения емкости.

Компоненты для сборки измерителя емкости аккумуляторов

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

  • Arduino Nano
  • Операционный усилитель LM358
  • OLED-дисплей 0.96″
  • Полевой транзистор IRFZ44N
  • Резисторы и конденсаторы по схеме
  • Кнопки управления
  • Зуммер
  • Печатная плата

Большинство компонентов легко найти в магазинах электроники. Печатную плату можно изготовить самостоятельно или заказать.

Программирование Arduino для измерителя емкости

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

  • Управление током разряда через ШИМ
  • Измерение напряжения аккумулятора
  • Расчет емкости
  • Вывод информации на дисплей
  • Обработка нажатий кнопок

Перед компиляцией скетча необходимо откалибровать устройство — измерить фактическое напряжение питания и зависимость тока от ШИМ. Это позволит повысить точность измерений.


Калибровка и настройка измерителя емкости аккумуляторов

Для корректной работы устройства необходимо выполнить его калибровку:

  1. Измерить мультиметром фактическое напряжение 5В на Arduino
  2. Измерить ток через аккумулятор при разных значениях ШИМ
  3. Внести полученные значения в скетч
  4. Задать пороговое напряжение разряда для разных типов аккумуляторов

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

Использование измерителя емкости аккумуляторов

Порядок работы с устройством:

  1. Подключить аккумулятор к измерителю
  2. Кнопками установить требуемый ток разряда
  3. Запустить измерение
  4. Дождаться окончания разряда до порогового напряжения
  5. Считать результат измерения емкости с дисплея

Устройство позволяет измерять емкость различных типов аккумуляторов: NiMH, NiCd, Li-Ion, Li-Po и др. Для каждого типа необходимо задать соответствующее пороговое напряжение разряда.

Преимущества самодельного измерителя емкости аккумуляторов

Самостоятельное изготовление измерителя емкости имеет ряд преимуществ:


  • Низкая стоимость по сравнению с готовыми приборами
  • Возможность измерения емкости разных типов аккумуляторов
  • Регулируемый ток разряда
  • Наглядное отображение процесса измерения на дисплее
  • Возможность доработки и расширения функционала

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

Возможные улучшения конструкции измерителя емкости

Базовую конструкцию измерителя емкости можно усовершенствовать следующими способами:

  • Добавить функцию заряда аккумуляторов
  • Реализовать подключение к компьютеру для сбора данных
  • Увеличить диапазон измеряемых напряжений и токов
  • Добавить графический интерфейс на большом дисплее
  • Реализовать автоматическое определение типа аккумулятора

Открытая архитектура на базе Arduino позволяет легко модифицировать и расширять функционал устройства под конкретные задачи пользователя.


Измеритель ёмкости аккумуляторов на Arduino

Сегодня в эксплуатации находится большое число аккумуляторов и аккумуляторных батарей. Все мобильные устройства, в первую очередь, мобильные телефоны, смартфоны, планшеты, проигрыватели, как правило, питаются от аккумуляторов. Кроме того, аккумуляторные батареи установлены в блоках бесперебойного питания, ноутбуках и нетбуках. Нередко эти источники питания выходят из строя — уменьшается их ёмкость, увеличивается внутреннее сопротивление. Предлагаемое устройство, собранное на основе микроконтроллерной платы Arduino Uno, позволяет провести диагностику аккумуляторов и аккумуляторных батарей — измерить их ёмкость и внутреннее сопротивление.

Это устройство предназначено для измерения электрической ёмкости аккумуляторов и аккумуляторных батарей (далее — аккумуляторов) напряжением от 1 до 15 В и ёмкостью до 20…30 А·ч. Стабильный ток разрядки можно установить переменными резисторами в интервале 0…3 А, напряжение отключения — 0…15 В. Применён двухстрочный шестнадцатисимвольный ЖКИ, на который выводится информация о четырёх параметрах аккумулятора: текущем напряжении, напряжении отключения (пороговом), разрядном токе и ёмкости. Причём ёмкость измеряется постоянно, и в любой момент можно посмотреть её текущее значение. Когда напряжение аккумулятора станет меньше порогового, разрядка останавливается, раздаётся звуковой сигнал, включается светодиод красного свечения, а на ЖКИ будут выведены все указанные выше параметры. Кроме того, если в процессе разрядки нажать на кнопку, на ЖКИ дополнительно выводится информация о внутреннем сопротивлении аккумулятора и его напряжении без нагрузки.

Схема устройства показана на рис. 1. Его основа — плата Arduino Uno, управляющая всеми узлами и выполняющая основные операции. На ОУ DA1.1, полевом транзисторе VT2 и датчике тока — резисторах R9 и R10 собран стабилизатор разрядного тока, значение которого устанавливают переменными резисторами R3 «Грубо» и R4 «Точно». Это позволило задавать желаемый ток разрядки в широком интервале, кроме того, упростить программу и, в итоге, просто измерять время разрядки. Пороговое напряжение, до которого следует разряжать аккумулятор, устанавливают переменными резисторами R5 «Грубо» и R6 «Точно». Напряжение аккумулятора, пороговое, а также на датчике тока измеряет Arduino (входы А0, А1 и А2 соответственно). Значения первых двух напряжений выводятся на ЖКИ HG1. Ток разрядки вычисляется как отношение напряжения на датчике тока к его сопротивлению, а ёмкость аккумулятора (С) — как произведение разрядного тока на прошедшее время. Ток и ёмкость также отображаются на экране ЖКИ. Информацию о пороговом напряжении и токе разрядки модуль Arduino не запоминает, а считывает непосредственно с движков переменных резисторов, поэтому после установки их не следует трогать.

Рис. 1. Схема устройства

 

Для повышения точности измерений весь интервал входного напряжения разбит на два, граница между ними — 4,9 В. Интервалы переключаются автоматически с помощью управляемого аттенюатора на элементах R1, R8 и VT1. В первом интервале транзистор VT1 закрыт, и всё напряжение аккумулятора поступает на вход А0. Во втором интервале высокий уровень с выхода А4 открывает транзистор VT1, и на вход А0 поступает примерно втрое меньшее напряжение.

О режиме разрядки сигнализирует светодиод HL2, который включается низким логическим уровнем с выхода 7 платы Arduino. В этом случае транзистор VT3 закрыт, светодиод HL1 обесточен и управляющее напряжение с выхода ОУ DA1.1 беспрепятственно поступает на затвор транзистора VT2. По окончании разрядки на выводе 7 появляется высокий уровень, светодиод HL2 гаснет, а транзистор VT3 открывается. Включается светодиод HL1 (ток через него ограничивает резистор R7), напряжение на затворе транзистора VT2 уменьшается до 1,8.2 В, в результате чего он закрывается и разрядка аккумулятора прекращается. Одновременно это сопровождается троекратным звуковым сигналом. Диоды VD2 и VD3 защищают вход А0 платы Arduino от превышения или неправильной полярности входного напряжения.

Если рассеиваемая на транзисторе VT2 мощность превышает несколько ватт, необходимо с помощью выключателя SA1 включить вентилятор.

Питают устройство от внешнего (лучше стабилизированного) блока питания напряжением 12 В, который подключают к гнезду XS1. Для защиты от неправильной полярности питающего напряжения установлен диод VD1. В некоторых случаях, например, при измерении параметров аккумулятора ёмкостью несколько ампер-часов и напряжением 12 В, устройства можно питать непосредственно от него. Но при этом для корректного измерения ёмкости следует учесть ток, потребляемый самим устройством.

Если нажать на кнопку SB2 «R» во время разрядки, устройство периодически станет кратковременно отключать ток разрядки и измерять напряжение аккумулятора под нагрузкой и без неё. В этом случае на ЖКИ выводится информация о напряжении аккумулятора без нагрузки и о его внутреннем сопротивлении.

После подачи питающего напряжения движки переменных резисторов R3 и R5 устанавливают в нижнее, а R4 и R6 — в верхнее по схеме положение и подключают разряжаемый аккумулятор. Кратковременно нажимают на кнопку SB1 «Сброс/Старт». В результате происходит перезагрузка Arduino и включается светодиод HL2 «Разрядка» зелёного свечения. В верхнем левом углу ЖКИ появится информация о напряжении аккумулятора — Ub (в вольтах). С этого момента начинается отсчёт времени разрядки, текущая ёмкость С (в А·ч) выводится в правом верхнем углу ЖКИ. Переменными резисторами R5 и R6 устанавливают порог выключения Ut (в вольтах), при достижении которого разрядка прекращается. Этот параметр выводится в левом нижнем углу ЖКИ. Резисторами R3 и R4 устанавливают разрядный ток Ib (в амперах), он индицируется в правом нижнем углу.

Подключая аккумулятор, будьте очень внимательны! Не перепутайте полярность! Дело в том, что транзистор VT2 содержит встроенный защитный диод, подключённый анодом к истоку, катодом — к стоку. Если полярность аккумулятора окажется неправильной, через этот диод и резисторы R9, R10 может протекать большой ток. Его значение зависит от параметров аккумулятора, в первую очередь, от напряжения. В результате некоторые элементы устройства могут выйти из строя.

Большинство деталей размещены на печатной плате из фольгированного с одной стороны стеклотекстолита, которая выполнена в виде платы расширения (shield). Для подключения к модулю Arduino Uno на плате устройства смонтированы штыревые разъёмы (вилки XP2 и XP3). Это позволяет в случае необходимости быстро устанавливать и снимать Arduino Uno, используя её в других проектах. Чертёж платы показан на рис. 2, её размеры соответствуют плате компьютерного блока питания, в корпусе которого и смонтировано устройство. Размещение элементов на плате показано на рис. 3, а внешний вид смонтированной платы — на рис. 4.

Рис. 2. Чертёж платы

 

Рис. 3. Размещение элементов на плате

 

Рис.4. Внешний вид смонтированной платы

 

В устройстве применены постоянные резисторы Р1-4, С2-23 (кроме R9 и R10), переменные — СП4-1, СП3-4 или импортные, подстроечные — импортные или СП3-19. В датчике тока использованы два последовательно соединённых резистора серии RWR (R9 и R10) сопротивлением по 0,24 Ом и допустимой мощностью рассеяния по 5 Вт. Сделано это по двум причинам. Во-первых, они были в наличии, а во-вторых, при токе до 3 А на них будет выделяться мощность не более 4,5 Вт, поэтому разогреваться они станут не очень сильно, что повысит точность измерения. Светодиоды — любые маломощные соответствующих цветов свечения с диаметром корпуса 3 или 5 мм.

Транзистор 2N7002 (установлен на плате со стороны печатных проводников) можно заменить транзистором 2N7000, КП505, BSS88. Правда, в этом случае придётся подкорректировать рисунок печатных проводников. Взамен транзистора КТ315Б подойдёт любой из серий КТ315, КТ312, КТ3102. Разъёмы XP2, XP3 — однорядные вилки PLS-10. Кнопки — любые с самовозвратом, например КМ-2. Можно применить и тактовые кнопки ТС-0409 или аналогичные, закрепив их на панели с помощью клея. Гнездо для подключения источника питания может быть любым.

Как уже сказано выше, устройство собрано в корпусе компьютерного блока питания размерами 150x125x85 мм. Для подключения проверяемого аккумулятора использованы штатные сетевое гнездо и вилка (XP1). Поскольку в корпусе уже установлен вентилятор, он применён для охлаждения теплоотвода, на котором закреплён транзистор VT2. Конструкция теплоотвода должна быть такой, чтобы поток воздуха от вентилятора проходил вдоль его рёбер. Для упрощения прибора было решено включать вентилятор вручную выключателем, установленным на верхней панели, в случае, если рассеиваемая транзистором мощность превышает 5 Вт. Кроме выключателя, на верхней панели устройства размещены все переменные резисторы, светодиоды, жКи и кнопка SB2, а гнездо XS1 и кнопка SB1 — на задней. Для них сделаны отверстия соответствующих форм и размеров. К — HL2 ЖКИ и светодиоды закреплены клеем. Для подключения разряжаемого аккумулятора использован штатный сетевой кабель от блока питания, но укороченный до 0,5 м. Поскольку кабель содержит три провода, два из них соединены параллельно. На концах проводов распаяны зажимы «крокодил», но можно применить и другие. В боковой стенке корпуса сделано отверстие для подключения USB-кабеля. Поэтому в Arduino Uno можно загружать программу (скетч), не вынимая плату из корпуса. Внешний вид устройства показан на рис. 5.

Рис. 5. Внешний вид устройства

 

После загрузки скетча и подключения блока питания начинают налаживание устройства совместно с компьютером, на котором установлена интегрированная среда разработки Arduino — Arduino IDE. В первую очередь, подстроечным резистором R13 устанавливают требуемую контрастность изображения ЖКИ. Движки переменных резисторов R5 и R6 устанавливают в нижнее по схеме положение. Образцовым вольтметром измеряют напряжение питания Vcc микроконтроллера на плате Arduino Uno и заносят его в скетч, после чего загружают его в Arduino Uno.

Вход устройства подключают через образцовый амперметр к регулируемому лабораторному блоку питания с выходным напряжением 0…15 В и током до 3…4 А. Устанавливают напряжение около 4 В и переменным резистором R3 устанавливают разрядный ток 0,5…1 А. Сравнивают показания амперметра Ia и ЖКИ Ib. В случае отличий изменяют в скетче численное значение сопротивления датчика тока RI и загружают его в Arduino Uno до получения точного совпадения показаний.

Затем вход устройства напрямую подключают к лабораторному блоку питания. К нему же подключают и образцовый вольтметр. Движки переменных резисторов R3-R6 устанавливают в нижнее по схеме положение. Устанавливают напряжение около 2,5 В и сравнивают показания вольтметра ив и Ub на ЖКИ. Изменением поправочного коэффициента K1 (в скетче), по аналогии с предыдущим случаем, добиваются равенства показаний.

Устанавливают на выходе лабораторного блока питания напряжение около 7 В и нажимают на кнопку SB1 «Сброс/Старт». После перезагрузки подстроечным резистором R8 приближённо уравнивают показания вольтметра ив и Ub на ЖКИ. Подборкой поправочного коэффициента K2 (в скетче) добиваются более точного равенства показаний.

В заключение определяют сопротивление соединительных проводов. Во время проведения этих работ желательно включить вентилятор. На выходе лабораторного блока питания устанавливают напряжение 8.9 В, при этом показания вольтметра ив и Ub на ЖКИ должны совпадать. Затем резистором R3 устанавливают разрядный ток Ib = 2,5. ..3 А, записывают значения Ib, Uв и Ub на ЖКИ и вычисляют R = (Uв — Ub)/Ib. Это значение заносят в скетч. После такой коррекции при изменении тока разрядки от минимума до максимума показания вольтметра и Ub на ЖКИ должны практически совпадать.
При нажатии на кнопку SB2 «R» на ЖКИ должны выводиться значения напряжения аккумулятора без нагрузки U0 и его внутреннего сопротивления R. Для проверки этого режима на выходе лабораторного блока питания последовательно с входными проводами устанавливают резистор сопротивлением 0,5…1 Ом и устанавливают ток разрядки 1…2 А. После нажатия на кнопку SB2 на экране ЖКИ должно индицироваться сопротивление этого резистора.

В заключение следует отметить, что для повышения точности измерения тока разрядки Iр, сопротивление резисторов R9 и R10, образующих датчик тока, выбрано сравнительно большим (суммарное сопротивление RI = 0,48 Ом). На этих резисторах падает напряжение Uд = I— RI. Например, при токе 3 А Uд = 1,44 В, это означает, что ниже этого напряжения аккумулятор при таком токе разрядить не получится. Но обычно отдельные малогабаритные аккумуляторы таким током и не разряжают, а батарею Ni-Cd, Ni-Mh аккумуляторов или Li-Ion аккумулятор разряжают до большего напряжения.

Но если необходимо уменьшить падение напряжения на датчике тока, в нём следует применить резистор сопротивлением, например, 0,1 Ом. Но в этом случае напряжение на нём уменьшится, а погрешность измерения возрастёт. Для устранения этого недостатка надо усилить (примерно в десять раз) напряжение с датчика тока с помощью УПТ, который можно собрать на неиспользованном ОУ в микросхеме DA1. После этого придётся установить в скетче соответствующее численное значение датчика тока, умноженное на коэффициент усиления УПТ.

В устройстве для Arduino написана самая простая программа с минимальным набором функций. Не изменяя аппаратную часть, можно существенно расширить возможности прибора. Например, повысить точность измерения напряжения, используя способы измерения образцового напряжения и применяя методы статистической обработки результатов. Можно измерять и сравнивать с пороговым не напряжение аккумулятора в процессе разрядки, а его ЭДС, отключая на это время разрядный ток. Можно сделать два режима работы устройства: первый — с мощными батареями напряжением 6…15 В и током разрядки до 5 А, второй — с маломощными батареями и аккумуляторами напряжением до 5 В и разрядным током до 1 А. И наконец, добавив узел зарядки, можно сделать автоматическое зарядно-разрядное устройство с измерением полученного и отданного аккумулятором заряда.

Кроме того, можно предложить ещё немало улучшений параметров устройства без изменения его схемы, а только за счёт коррекции скетча. Но все эти возможности по доработке оставим для поклонников Arduin

Скетч можно найти здесь.

Автор: И. Нечаев, г. Москва

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

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

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

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

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

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

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

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

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

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

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

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

  • Печатная плата.
  • Arduino Nano.
  • Операционный усилитель LM358.
  • Дисплей OLED с диагональю 0,96 дюйма.

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

Блок питания 0…30В/3A

Набор для сборки регулируемого блока питания…

Подробнее

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

  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-фильтра собран простой ЦАП.

Значения элементов фильтра 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 В.

Скачать скетч и файлы печатной платы

(220,3 KiB, скачано: 1 354)

Счетчик Гейгера

Высококачественный счетчик Гейгера с высокой чувствительностью для обнаружен…

Подробнее

Простой тестер батареи Arduino

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

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

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

Проект, подобный этому, действительно демонстрирует, как можно сделать такую ​​удобную установку, используя Arduino и несколько единиц оборудования. Это также отличный проект для изучения основ программирования и электроники.

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

Оборудование

Оборудование, которое я использую в этом проекте тестера батарей Arduino, показано ниже. Если у вас уже есть стартовый комплект, то у вас уже должна быть большая часть оборудования, кроме стабилитрона.

Рекомендуем

Видео

Если вы хотите увидеть, как сделать этот проект, то обязательно посмотрите мое видео ниже. Я прохожу все шаги, необходимые для запуска и запуска этого крутого проекта по тестированию аккумуляторов.

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

Adblock блокирует видео? Поддержите нас, подписавшись на наш сервис без рекламы.

Сборка схемы тестера батареи Arduino

Эту схему тестера батарей довольно легко собрать. Если вы следили за моими руководствами по Arduino, то заметите, что мы используем новый компонент, называемый стабилитроном.

Зенеровский диод позволяет тестировать аккумуляторы с напряжением более 8 вольт. Диод Зенера работает, позволяя току течь в одном направлении, пока он не достигнет напряжения пробоя (предел для диода, в нашем случае это 5,1 вольт). Как только он достигает этого предела, он позволяет напряжению двигаться в обратном направлении. Это может помочь защитить детали, которые могут выдерживать только определенное напряжение. В нашем случае Ардуино.

Резистор 2,2 кОм уменьшает ток, поступающий от батареи, до уровня, который может принять Arduino. Если ваш ток слишком высок, это может повредить вашу Arduino.

Схема также имеет три разных светодиода, каждый из которых примерно показывает, сколько заряда осталось в батарее.

  • Красный означает, что батарея разряжена/почти разряжена.
  • Желтый означает, что батарея разряжена примерно наполовину.
  • Наконец, зеленый будет означать, что батарея полностью заряжена.

Для каждого из светодиодов подсоединяем резистор 100 Ом от вывода заземления к заземлению, чтобы не перегорели светодиоды. Это очень похоже на то, что мы делали в учебнике по светофору Arduino.

Сейчас я быстро пройдусь по этапам сборки этой схемы. Под инструкциями вы найдете принципиальную схему, если вам будет проще просто следовать ей.

1. Подключите контакт заземления на Arduino к шине заземления на макетной плате.

2. На макетную плату поместите зеленый, красный и желтый светодиоды. Подсоедините контакты заземления к шине заземления.

3. Поместите резистор 100 Ом на положительный конец светодиода, затем подключите провод от резистора к соответствующим контактам на Arduino.

Следующие светодиоды должны подключаться к контактам с соответствующими номерами.

  • Красный светодиод = 4
  • Желтый светодиод = 3
  • Зеленый светодиод = 2

4. Теперь подключите аналоговый контакт 0 (A0) к макетной плате. После этого добавьте резистор 2,2 кОм и стабилитрон (линия на стабилитроне должна быть обращена к Arduino). Наконец, есть свободный провод, идущий с другого конца диода.

5. Наконец, подсоедините свободный провод к шине заземления.

Код

Код для этого проекта тестера емкости батареи Arduino прост, но я объясню каждый бит, чтобы вы могли понять, что мы делаем. Если вам нужен только код без объяснений, вы можете скачать его здесь или на нашем GitHub.

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

В переменной AnalogValue мы будем хранить значение, поступающее с аналогового входа. Затем мы делаем расчет (который я объясню позже) и сохраняем полученное число в переменную, называемую напряжением.

Наконец, ledDelay определяет, как долго светодиоды должны оставаться включенными перед выключением.

Функция настройки вызывается один раз и является идеальным местом для установки всех наших контактов. В этой конкретной программе нам нужно только настроить все наши выводы светодиодов в качестве выходов.

Внутри функции цикла мы сделаем пару вещей. Во-первых, мы читаем аналоговый пин, значение с этого пин будет между 0-1023 . Нам нужно будет выполнить вычисление, чтобы преобразовать это в переменную, поэтому мы просто умножаем AnalogValue на 0,0048 , чтобы сделать это.

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

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

Тестирование всего этого

Когда вы впервые включите и разместите новый код на Arduino, вы заметите, что он продолжает прыгать между светодиодами. Это связано с тем, что аналоговый входной провод плавает и улавливает шум, из-за чего наша программа обнаруживает ложные срабатывания.

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

Чтобы проверить это, все, что вам нужно сделать, это подключить аккумулятор к двум проводам. Подсоедините заземляющий провод к отрицательному концу батареи, а положительный провод к положительному концу батареи.

Arduino должен определить напряжение и дать указание загореться соответствующему светодиоду. Если это не так, попробуйте добавить несколько строк отладки для входа батареи. Это должно сказать вам, есть ли что-то неправильное при чтении ввода или просто ошибка в отображении светодиодов.

Extensions

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

Одним из улучшений является вывод вывода на ЖК-экран, подключенный к Arduino, вместо использования светодиодов. Это может дать вам более точную информацию, поскольку мы можем выводить значения на экран.

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

Хороший прочный футляр хорошо сочетается с держателем батареи. Возможность 3D-печати была бы идеальной для достижения этой цели. Наличие аккумуляторной батареи для Arduino, которая может быть портативной, сделает ее идеальной для тех, кому нужны тестовые батареи, но нет рядом с источником питания.

Я надеюсь, что вы смогли собрать этот простой, но крутой тестер батареи Arduino. Если вы столкнулись с какими-либо проблемами или у вас есть что-то еще, чем вы хотели бы поделиться, не стесняйтесь оставлять комментарии ниже.

Тестер емкости батареи Arduino V2.0 — поделитесь проектом

Инженер

  • 10

    дизайн

  • удобство использования

  • креативность

  • содержание

8. 00

Инженер

  • 10

    дизайн

  • удобство использования

  • креативность

  • содержание

10. 00

Инженер

  • 10

    дизайн

  • удобство использования

  • креативность

  • содержание

10. 00

Инженер

  • 10

    дизайн

  • удобство использования

  • креативность

  • содержание

10. 00

Инженер

  • 6

    дизайн

  • удобство использования

  • креативность

  • содержание

8. 00

Инженер

  • 9

    дизайн

  • удобство использования

  • креативность

  • содержание

9. 50

Инженер

  • 7

    дизайн

  • удобство использования

  • креативность

  • содержание

7,25

Инженер

  • 9

    дизайн

  • удобство использования

  • креативность

  • содержание

9. 25

Инженер

  • 7

    дизайн

  • удобство использования

  • креативность

  • содержание

7,50

Инженер

  • 9

    дизайн

  • удобство использования

  • креативность

  • содержание

8. 50

Инженер

  • 9

    дизайн

  • удобство использования

  • креативность

  • содержание

9. 25

Инженер

  • 9

    дизайн

  • удобство использования

  • креативность

  • содержание

8.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *