RadioRadar - Радиоэлектроника, даташиты, схемы

https://www.radioradar.net/radiofan/measuring_technics/meter_battery_capacity_arduino.html

Измеритель ёмкости аккумуляторов на 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

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

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