среда, 4 ноября 2015 г.

Измеряем емкость литий-ионных аккумуляторов с помощью Arduino


Недавно я купил на Алиэкспрессе кучку литиевых аккумуляторов для своих будущих проектов, с ёмкостью 1200 мА*ч и 6000 мА*ч. Но верить написанному китайцами – дело неблагодарное, и я решил сделать довольно простую схему, которая позволит мне измерить реальную ёмкость этих аккумуляторов.
Кроме того, у плохих источников питания может оказаться завышенным такой показатель, как внутреннее сопротивление. В таком случае, при подключении нагрузки напряжение источника питания значительно снижается. Так что, буду измерять и его.

Теория

Что представляют собой эти миллиампер-часы, указанные на аккумуляторе? 
Грубо говоря, ёмкость в 6000 миллиампер-часов означает, что аккумулятор может отдавать ток в 1 ампер на протяжении 6 часов, пока не разрядится до допустимого нижнего предела напряжения. Как их измерить? Нужно подключить аккумулятор к нагрузке и через регулярные промежутки времени измерять силу тока в цепи. Силу тока умножаем на длительность этого промежутка времени, и все эти произведения складываем.
Теперь вопрос – как измерить силу тока в цепи? Ну, тут просто. По закону Ома (I = U/R), если мы знаем сопротивление нагрузки, и падение напряжения на этой нагрузке – то разделив падение напряжения на сопротивление – получим силу тока.

Принципиальная схема измерения ёмкости и внутреннего сопротивления аккумулятора

Как измерить это падение напряжения? С помощью Arduino, у которого есть такая чудесная функция, как АЦП – аналого-цифровой преобразователь. Он сравнивает напряжение на входе АЦП с напряжением питания (5В), и выдаёт результат от 0 до 1024. Берём полученное значение, умножаем на 5 Вольт, делим на 1024 – и получаем напряжение. А так как нам нужна разница напряжения между двумя выводами нагрузки – то будем использовать два входа АЦП Arduino.
Теперь - как измерить внутреннее сопротивление? Для этого нужно сначала измерить напряжение на ненагруженном аккумуляторе, затем подключить нагрузку, измерить напряжение при нагрузке. Разница этих напряжений – это то напряжение, которое теряется на внутреннем сопротивлении. Если эту разницу разделить на силу тока ( а её мы уже определили, она одинакова на всех участках цепи при последовательном подключении)  - то получим значение внутреннего сопротивления.
Немного о нагрузке для аккумулятора. Я использовал 6 Ом. В подобных схемах чаще используются резисторы c меньшим сопротивлением - обычно 2-3 Ом. С одной стороны, с таким резистором будет больше сила тока - и, соответственно, для разряда аккумулятора нужно будет меньше времени. Но я заметил, что в этом случае измеряемая ёмкость гораздо меньше, чем при меньшей силе тока. Зато через несколько минут напряжение аккумулятора снова несколько повышается - то есть, при высоких токах разряда химические компоненты просто не успевают полностью вступить в реакцию. Поэтому я решил проводить разряд с малой силой тока, и делать между циклами разряда (по 1 сек.) небольшие паузы (по 0.5 сек.), чтобы электроды могли частично восстановиться.
Для того, чтобы включать-выключать ток в цепи, будем использовать полевой транзистор, на базу которого будем подавать управляющий сигнал от 7 цифрового вывода Arduino.
Вывод информации проще всего сделать через LCD экран от Nokia 5110.


Список деталей:

 - Arduino. Можно взять любой, желательно с 5 вольтами на выводах. Потому как используемый в качестве ключа полевик - IRFZ44N - при напряжении ниже 4 вольт почти не открывается. 
 - резисторы для нагрузки. Я использовал 6 штук 1-омных. Но можно взять один резистор от 2 до 10 Ом, рассчитанный на большую мощность. 5 ватт минимум, ведь на этом резисторе будет выделяться в виде тепла вся энергия, запасённая в аккумуляторе. 
 - резисторы 10 кОм – 2 шт.
 - резистор 100 кОм – 1 шт.
 - резистор 100 Ом – 1 шт.
 - Полевой транзистор. Я взял один из самых распространённых и недорогих -  IRFZ44N.
 - Экранчик от Nokia 5110
 - маленький динамик
 - тактовая кнопка
 - провода
 - и, собственно, аккумуляторы для тестирования.

Схема и программа: 

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

Схему соединения компонентов в этот раз сделал в Fritzing - потому как это устройство вряд ли будет мне нужно очень часто, и его можно собрать на макетке за десять минут - то нет смысла делать его в железе. Ссылка на скачивание внизу.
Программу написал с нуля. Писал без сложных логических конструкций и с комментариями - специально, чтобы начинающие могли во всём разобраться. Из сторонних библиотек понадобится библиотека для работы с LCD Nokia 5110 от Adafruit.

Процесс сборки устройства на макетке полностью заснял на видео, так что кто с ней пока не знаком - может посмотреть: 




Результат измерения: аккумулятор UltraFire YF 14500  с заявленной ёмкостью 1200 мА*ч выдал всего 378 мА*ч. А его больший собрат SJ 18650 вместо положенных 6000 смог выдавить из себя 1119 мА*ч. 
Справедливости ради стоит отметить один нюанс. Нижний предел напряжения, после которого разряд аккумулятора прекращается, я выставил в 3.5 В. Честно говоря, не стал рисковать - некоторые пишут, что дешёвые аккумуляторы опасно разряжать ниже этого напряжения. Хотя другие разряжают и до 3 В. Но это в планах. Также планирую измерить ёмкость имеющихся купленных давно на рынке никелевых аккумуляторов.

Скачать программу для Arduino и схему можно здесь.

Засим изволю откланяться. Вопросы и замечания не стесняйтесь писать в комментариях!





Комментариев нет :

Отправить комментарий