Ардуино тестер литий-ионных батарей своими руками

Тестер батареек на Ардуино

Тестер батареек на Arduino Uno ► один из самых простых проектов для которого потребуется минимум деталей. Представим два варианта исполнения устройства.

Тестер батареек и аккумуляторов на Arduino Uno — один из самых простых проектов для которого потребуется минимум деталей. Представим два варианта данного устройства — на светодиодах для индикации заряда батарей, а также с использованием LCD дисплея для вывода информации. Подробная схема сборки проекта и программа для тестера на микроконтроллере Ардуино представлена далее на странице.

Первым делом необходимо предупредить, что на аналоговые порты плат Ардуино не следует подавать напряжение более 5 Вольт. Согласно описанию Arduino Uno, данного производителем, при большем напряжении микроконтроллер может выйти из строя. Если вам необходимо будет проверить заряд аккумулятора с напряжением более 5 Вольт, то можно использовать делитель напряжения на резисторах.

Тестер батареек и аккумуляторов на Ардуино

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • три светодиода и три резистора;
  • диод;
  • LCD дисплей;
  • макетная плата;
  • провода «папа-папа», «папа-мама».

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

Скетч. Тестер батареек Ардуино своими руками

Пояснения к коду:

  1. заряд батареи дополнительно выводится на монитор порта Arduino >Схема. Тестер батареек на Arduino Uno с LCD дисплеем

Если у вас есть в наличии дисплей с I2C модулем, то можно собрать более сложный проект на Arduino Nano или Uno. Также для индикации заряда одноэлементных батарей можно использовать светодиодную шкалу, собрав тестер батареек на Arduino Uno и светодиодной шкале. Соберите схему, как на картинке выше и загрузите следующий скетч. Скачать две представленных программы можно по ссылке здесь.

Простой тестер емкости Li-ion аккумуляторов

Данный тестер очень прост и для его изготовления вам понадобится всего один резистор (ну и конечно же плата Arduino). Принцип работы также прост: через аналоговый вход, измеряется падение напряжения на нагрузочном резисторе.
Согласно закону Ома I=U/R. Каждую секунду, полученное значение делится на 3600 и суммируется для получения емкости аккумулятора в Ампер/часах.

Я использовал два параллельно соединенных резистора, т.о. сопротивление получилось 6.9 Ом. Необходимо обратить внимание на достаточную мощность резисторов, если вы не хотите, чтобы у вас пошел дымок от резисторов.
В моем случае расчет мощности резистора будет такой: т.к. напряжение аккумулятора составляет 3.7В, а сопротивление резистора 6.9 Ом, то ток будет 3.7/6.9=0.54А. Следовательно мощность: 3.7*0.54=1.998 Ватт

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

Информация о данных аккумулятора передается через последовательный порт (вирт. порт Arduino) и выглядит примерно так:

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

После того, как напряжение упало до 0, можно отсоединять аккумулятор от тестера.

Во время процесса измерения, не отсоединяйте Arduino от порта компьютера, иначе контроллер Arduino сбросится.

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

Программа очень проста и понятна, единственное – 1 секундная выдержка задаётся при помощи функции аппаратного таймера ISR(TIMER1_OVF_vect).

При помощи данного тестера я протестировал несколько аккумуляторов:
Nokia BL-4C 860 мАч: измеренная емкость составила 680 мАч, напряжение откл. 2.25В
Nokia BL-5J 1320 мАч: измеренная емкость составила 1100 мАч, напряжение откл. 2.23В
Panasonic DMW-BCG10E 895 мАч: измеренная емкость составила 880 мАч, напряжение откл. 2.02В
TrustFire 18650 Lithium Battery 2500 мАч с Dealextreme: измеренная емкость составила 2030 mAh, напряжение откл. 1.10В

Делаем тестер литий-ионных батарей c помощью Ардуино

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

Поэтому сегодня мы покажем вам, как сделать Li-ion измеритель емкости, используя микроконтроллер Ардуино.

Шаг 1. Всё, что нам нужно

Ниже перечислим комплектующие для проекта:

  1. PCB (печатная плата);
  2. Силовой резистор;
  3. Резистор 10К;
  4. OLED (светодиодный дисплей)
  5. Ардуино
  6. Зуммер
  7. Разъемы для подключения винтовых клемм
  8. 40-контактный разъем/коннектор (или меньше)
  9. Транзистор IRFZ44N

Шаг 2. Что такое емкость?

Прежде чем делать наш Ардуино тестер, мы должны немного разобраться в том, что такое емкость. Единица для емкости – мАч или Ач.

Если вы посмотрите на любую литий-ионную емкость (см. фото выше), то на неё будет упомянута ее емкость – на рисунке 2600 мАч.

В основном, это означает, что если мы подключим нагрузку на нее, которая составит 2.6A, эта батарея будет работать в течение часа. Точно так же, если у меня есть аккумулятор емкостью 1000 мАч и нагрузка 2A, то он длительность составит 30 минут. Примерно это означают мАч или Ач.

Шаг 3. Практически невозможно

Но вычисление таким образом практически невозможно, потому что все мы знаем V = IR. Первоначально, напряжение батареи будет 4,2 В, если мы будем поддерживать постоянное сопротивление, будет протекать некоторый ток, протекающий через нагрузку. Но с течением времени напряжение батареи будет уменьшаться, а также наш ток. Это сделает наши вычисления намного сложнее, чем ожидалось, потому что нам нужно будет измерить ток и время для каждого раза.

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

Шаг 4. Наша схема

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

Схему проекта смотрите выше. И вот как работает эта схема. Сначала Arduino измеряет падение напряжения, создаваемое резистором 10 Ом, если выше 4,3 В, тогда она отключит высокое напряжение дисплея MOSFET, если оно меньше 2,9 В, оно отображает низкое напряжение и выключает MOSFET, а если находится между 4,3 В и 2,9 В, то она включит MOSFET. Батарея начнет разряжаться через резистор, начнется измерение тока, используя закон Ома. Ардуино также использует функцию Миллиса для измерения времени, а произведение тока и времени дает нам пропускную способность.

Шаг 5. Скетч для Ардуино

Вы можете взять код или скачать его ниже:

Шаг 6. Финальный результат

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

После пайки, когда вы подключаете мощность, всё может работать не так, как ожидалось. Возможно, потому что мы забыли добавить, так называемые, Pull Up резисторы на интерфейсе шины I2C, поэтому мы вернулись к коду и использовали встроенные резисторы Ардуино.

Теперь Ардуино тестер литий-ионных батарей работает отлично.

Ардуино тестер литий-ионных батарей своими руками

Тестер литий-ионных аккумуляторов

Автор: eufs
Опубликовано 15.08.2012
Создано при помощи КотоРед.

Хотя ремонт мобильных телефонов мой не основной вид заработка, за годы плодотворной деятельности у меня накопилось определенное количество (полведра) литиевых аккумуляторов разной исправности и емкости. И я давно мечтал соорудить некоторый девайс, который бы позволил хотя бы разбраковать те, которые бесжалостно надо сразу на мусорник, которые на что-то еще сгодятся, и те которыми еще можно укомплектовать мобильник или продать/подарить хорошему человеку.

Для себя я поставил задачу – прибор должен быть:

– как можно более простым и дешевым;

– состоять из более-менее стандартных узлов и схемотехнических решений;

– более-менее универсальным в плане работы с батареями других типов;

– иметь возможность определения емкости аккумуляторной батареи и (по возможности) ее внутреннего сопротивления.

Контроллер я выбрал Тини26 по причине наличия в нем дифференциальных входов и усилителя на 20, что позволяет без применения внешних усилителей измерять напряжение с токового шунта. Но в нем есть недостаток – маленькая память программ (всего 1024 команды). Поэтому программное обеспечение разбито на две части.

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

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

В индикаторной части прибора я решил использовать дисплейный модуль от SONYERICSSON T230(T290), потому что я его просто люблю.

И на это есть причины:

– дешевый и есть в продаже

– квадратная шина управления(I2C)

– не требует отдельного преобразователя на подсветку

– его белый светодиод в подсветке-прекрасный стабилитрон для питания самого контроллера в дисплее (около 3V).

К недостаткам его можно отнести относитльно мелкий разъем. Впрочем на шлейфе дисплея есть точки покрупнее, где можно с успехом припаивать провода. Надо лишь сошкрябать лак.

Со схемой заряда я долго не думал и поставил хорошо себя зарекомендовавшую LT4054 от зарядной секции мобильников X100,С100,E700 и прочих. С разрядной – еще проще – резистор.

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

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

Выключено (OFF)->Разряд (Discharge)->Заряд(Charge)->Выключено(OFF)->.
В момент перехода из режима Charge в режим OFF происходит обнуление счетчиков амперчасов.

В режиме выключено ничего не происходит кроме индикации ЭДС на клеммах аккумулятора, емкости сообщенной в время заряда (W) и во время разряда (Q) (еще есть часы – но они просто так)

В режиме Разряд(Discharge) происходит:

– подключение разрядной части схемы на транзисторном ключе и эквиваленте нагрузки к аккумулятору;

– измерение тока разряда I;

– измерение напряжения во время разряда (под током) U;

– измерение ЭДС батареи (E), методом периодического отключения разрядной схемы и измерения напряжения;

– вычисления разницы между ЭДС и напряжения под нагрузкой D, D=E-U;

– вычисление внутреннего сопротивления R, R=D/I;

– подсчет емкости в режиме разряда Q;

– сравнение измеренной ЭДС (Е) и уставки нижнего порогового напряжения. Если достигло – переход в режим заряд(Charge).

В режиме заряд(Charge) происходит:

– подключение зарядной части схемы посредством транзисторного ключа;

– измерение тока заряда I;

– измерение напряжения во время заряда(под током) U;

– измерение ЭДС аккумулятора Е, методом периодического отключения зарядной схемы и измерения напряжения на батарее без тока;

– вычисление разницы между ЭДС и напряжением под током заряда D, D=U-E;

– вычисление внутренного сопротивления R, R=D/I

– подсчет емкости в режиме заряда W;
С этого режима прибор никуда автоматичаски не переходит, потому как зарядом занимается спецмикросхема.

В прикрепленных файлах имеется прошивка для калибровки. К ней есть путевой файл (.bat) для программирования при помощи avreal32. В нем прописано изменение нужных фузов. Если МК будет программироваться другим программатором, нужно позаботиться об установке фузов CKSEL для работы от внутреннего генератора 8МГЦ и запрограмировать фуз EESAV (CKSEL3=0;CKSEL2=1;CKSEL1=0;CKSEL0=0;EESAV=0).
После зашивки плавно переходим к калибровке.
Временно подключаем еще одну кнопку от 18 вывода микроконтроллера к земле. Назовем пока ее “ЗАПИСЬ”
Запрограммированный калибровочной процедурой контроллер при включении покажет приветственое сообщение и появится надпись
CONNECT 500 mA
THEN PIN18 TO GND
I=ххххх мА
ADC=xxxxx
K_I=xxxxx
K_I1=xxxxx

ГДЕ:
I измерянный ток при использовании текущего коэффициента K_I (первоначально может быть неправильным)
ADC -значение из АЦП
K_I – используемый коэффициент калибровки
К_I1-вновь рассчитываемый коэффициент, показывает правильный коэффициент, если ток через шунт будет 500мА

Собираем схему для калибровки по току:

Устанавливаем поточнее ток 500мА и нажимаем кнопку “ЗАПИСЬ”. Происходит запись нового рассчитанного коэффициента калибровки в ЕЕПРОМ и токоизмеритель в строке I= должен уже показывать 500мА.

Нажимаем кнопку переключения режимов работы и переходим в калибровку по напряжению

CONNECT 4.00V
THEN PIN18 TO GND
U=ххххх V
ADC=xxxxx
K_U=xxxxx
K_U1=xxxxx

ГДЕ:
U измереннoe напряжение при использовании текущего коэффициента K_U (первоначально может быть неправильным)
ADC -значение из АЦП
K_U – используемый коэффициент калибровки
К_U1-вновь рассчитываемый коэффициент. Покажет то что нужно, при напряжении на аккумуляторе 4.00V

Собираем схему:

Устанавливаем поточнее 4.00V и нажимаем “ЗАПИСЬ”. Тут же в строчке U= должно появится 4.00V.
Не разбирая схему калибровки, нажимаем кнопку переключения режимов и попадаем в режим установки нижнего порога напряжения, при котором будет происходить автоматическое переключение из режима “разряд” в режим “заряд”

CONNECT U_LOW
THEN PIN18 TO GND
U=ххххх V
U_LOW= xxxxx V

ГДЕ:
U измереннoe напряжение
U_LOW= существующая уставка

Устанавливаем желаемое напряжение. Его уже можно достоверно контроллировать в строчке U= .По разным рекомендациям оно может быть в пределах 3.4 – 3.6 В. Для себя я установил 3.55 В. Нажимаем кнопку “Запись”.

Все. Калибровка завершена. Не забываем отпаять технологическую кнопку “ЗАПИСЬ”

Шьем рабочую прошивку. Если прошиваете другим программатором, то следите, фузы те же самые. (CKSEL3=0;CKSEL2=1;CKSEL1=0;CKSEL0=0;EESAV=0)

Работать с прибором очень просто. Есть два варианта.
1. Заряжаем аккумулятор где-то (например в телефоне).Подключаем аккумулятор в режиме OFF. Смотрим, чтобы появилось напояжение в строчке Е=. Кнопкой переводим прибор в режим “разряд”(Discharge) и наслаждаемся увеличением показаний в строчке разрядной емкости Q. Когда аккумулятор разрядится до U_LOW, прибор его автоматически зарядит, переключившись в режим “заряд”Charge.
После этой процедуры мы можем видеть сколько миллиамперчасов было извлечено (Q) и сколько засунуто обратно (W). Контроль завершения зарядки прибором не происходит, этим занимается схема заряда на LT4054, но это прекрасно видно по снизившемуся току (где-то 2,5 мА).
2. В другом случае, после подключения аккумулятора в режиме OFF нужно дважды нажать на кнопку, переведя прибор в режим заряда, а после его завершения – запустить разряд. Прибор, как и в предыдущем случае,разрядит аккумулятор до нижней границы по напряжению а затем зарядит.

В заключении можно отметить, что прибором не обязательно тестировать только литиевые аккумуляторы. Применив другие схемы зарядной части можно тестировать аккумуляторы других типов, напимер AA и ААА.
Еще пара слов про результаты разбраковки. Наверное зависит от применяемой технологии изготовления литиевых аккумуляторов то, что некоторые из них вздуваются, практически не потеряв емкость, а только увеличив внутреннее сопротивление с 0,45-0,47 ом у нового, до 0,57-0,67 вздувшегося (Нокии – в частности). А некоторые, не поменяв внешний вид, резко теряют емкость. У меня есть оргинальная батарея от моторолы, которая на вид новая и блестящая с внутренним сопротивлением около 0.5 ом, но с емкостью 112.5 мА.ч

Источники:

http://cxem.net/arduino/arduino35.php

http://arduinoplus.ru/arduino-tester-litii-ionnih-batarei/

http://www.radiokot.ru/circuit/digital/measure/75/

http://electrik.info/microcontroller/1402-10-interesnyh-proektov-dlya-arduino.html

Ссылка на основную публикацию