- Зачем нам нужен тестер емкости аккумулятора?
- Необходимые компоненты
- Принципиальная схема тестера емкости аккумулятора Arduino
- Программа Arduino для измерения емкости батареи
- Повышение точности
- Построение и тестирование схемы
С появлением технологий наши электронные устройства и бытовая техника становятся все меньше и меньше с более функциональными и сложными приложениями. С увеличением сложности, требования к мощности схемы также увеличились, и в нашем стремлении сделать устройство как можно более компактным и портативным, нам нужна батарея, которая может обеспечивать высокий ток в течение длительного периода времени и в то же время время, весить намного меньше, чтобы устройство оставалось портативным. Если вы хотите узнать больше о батареях, вы также можете прочитать эту статью об основных терминах, связанных с батареями.
Из множества доступных типов аккумуляторов свинцово-кислотные, никель-кадмиевые и никель-металлогидридные аккумуляторы не подходят, поскольку они либо весят больше, либо не могут обеспечить ток, необходимый для нашего применения, поэтому нам остаются литий-ионные аккумуляторы. который может обеспечивать высокий ток при низком весе и компактных размерах. Ранее мы также создали зарядное устройство 18650 и модуль повышения мощности, а также систему мониторинга аккумулятора на основе Интернета вещей, вы можете проверить их, если хотите.
Зачем нам нужен тестер емкости аккумулятора?
На рынке есть много поставщиков аккумуляторов, которые продают дешевые копии литий-ионных аккумуляторов с причудливыми характеристиками по очень низкой цене, что слишком хорошо, чтобы быть правдой. Когда вы покупаете эти элементы, они либо вообще не работают, либо, если они работают, емкость заряда или ток настолько мал, что они вообще не могут работать с приложением. Итак, как проверить литиевую батарею, если элемент не из этих дешевых подделок? Одним из методов является измерение напряжения холостого хода без нагрузки и без нагрузки, но это совсем не надежно.
Итак, мы собираемся построить тестер емкости аккумулятора 18650 для литий-ионного аккумулятора 18650, который будет разряжать полностью заряженный аккумулятор 18650 через резистор, одновременно измеряя ток, протекающий через резистор, для расчета его емкости. Если вы не получите заявленную емкость аккумулятора, когда напряжение на элементе находится в указанных пределах, значит, этот элемент неисправен, и вам не следует использовать его, поскольку состояние заряда элемента будет истощаться с очень высокой скоростью под нагрузкой, создавая местная токовая петля, если используется в аккумуляторной батарее, что может привести к нагреву и, возможно, возгоранию. Так что давайте прямо в это дело.
Необходимые компоненты
- Ардуино Нано
- ЖК-дисплей 16 × 2 символов
- LM741 OPAMP IC
- 2,2 Ом, резистор 5 Вт
- ИС регулятора положительного напряжения 7805
- Блок питания 12 В
- Подстроечный потенциометр 10 кОм
- Конденсатор 0,47 мкФ
- Резистор 33кОм
- Разъем для цилиндра питания постоянного тока
- Винтовые клеммы для печатных плат
- IRF540N N-канальный Mosfet IC
- Перфорированная плита
- Набор для пайки
- Радиаторы
Принципиальная схема тестера емкости аккумулятора Arduino
Полная принципиальная схема тестера емкости аккумуляторов 18650 показана ниже. Объяснение схемы следующее:
Вычислительно-дисплейный блок:
Эта схема дополнительно разделена на две части: первая - это источник низкого напряжения 5 В для Arduino Nano и буквенно-цифровой ЖК-экран 16 × 2, а также их соединения для отображения результатов измерений тока и напряжения в реальном времени. Схема питается от источника питания 12 В с использованием SMPS или вы можете использовать аккумулятор 12 В, а максимальный ток будет около 60-70 мА для питания Arduino и ЖК-экрана.
Чтобы понизить напряжение до 5 В, мы будем использовать линейный регулятор напряжения, который может принимать до 35 В и требующий входного источника питания не менее 7,5 В для обеспечения регулируемого питания 5 В, а избыточное напряжение рассеивается в виде тепла, следовательно, если ваш вход Напряжение на микросхеме стабилизатора напряжения LM7805 превышает 12 В, тогда подумайте о добавлении радиатора, чтобы он не повредился. ЖК-дисплей питается от источника питания 5 В от 7805, подключен к Arduino и работает в 4-битном режиме. Мы также добавили 10k Ом стеклоочиститель потенциометра для управления контрастностью ЖК - дисплея.
Цепь постоянного тока нагрузки:
Во-вторых, это схема нагрузки с постоянным током на основе ШИМ, которая делает ток нагрузки, протекающий через резистор, управляемым нами и постоянным, чтобы не возникала ошибка, возникающая из-за изменения тока со временем, когда напряжение ячейки падает. Он состоит из LM741 OPAMP IC и IRF540N N-Channel MOSFET, который управляет током, протекающим через MOSFET, путем включения и выключения MOSFET в соответствии с установленным нами уровнем напряжения.
Операционный усилитель работает в режиме компаратора,так что в этом режиме. на выходе операционного усилителя будет высокий уровень всякий раз, когда напряжение на неинвертирующем выводе операционного усилителя выше, чем на инвертирующем выводе. Точно так же, если напряжение на инвертирующем выводе операционного усилителя выше, чем на неинвертирующем выводе, выход операционного усилителя будет понижен. В данной схеме неинвертирующий уровень напряжения на выводе контролируется выводом D9 PWM Arduino NANO, который переключается с частотой 500 Гц, которая затем проходит через RC-фильтр нижних частот с сопротивлением 33 кОм и конденсатор емкостью 0,47. мкФ, чтобы обеспечить почти постоянный сигнал постоянного тока на неинвертирующем выводе. Инвертирующий вывод подключен к нагрузочному резистору, который считывает напряжение на резисторе и общем GND. Выходной контакт OPAMP подключен к клемме затвора полевого МОП-транзистора, чтобы включить или выключить его.OPAMP попытается уравнять напряжения на обоих своих выводах, переключая подключенный полевой МОП-транзистор, чтобы ток, протекающий через резистор, был пропорционален значению PWM, которое вы установили на выводе D9 NANO. В этом проекте максимальный ток, который я ограничил для своей схемы, составляет 1,3 А, что является разумным, поскольку у меня есть ячейка 10 А в качестве максимального номинального тока.
Измерение напряжения:
Максимальное напряжение типичного полностью заряженного литий-ионного элемента составляет от 4,1 В до 4,3 В, что меньше предела напряжения 5 В аналоговых входных контактов Arduino Nano, который имеет внутреннее сопротивление более 10 кОм, так что мы можем напрямую подключить Подключите к любому из аналоговых входных контактов, не беспокоясь о протекающем через них токе. Итак, в этом проекте нам необходимо измерить напряжение ячейки, чтобы мы могли определить, находится ли ячейка в правильном рабочем диапазоне напряжения и полностью ли она разряжена.
Нам также необходимо измерить ток, протекающий через резистор, для этого мы не можем использовать токовый шунт, поскольку сложность схемы будет увеличиваться, а увеличение сопротивления на пути нагрузки приведет к уменьшению скорости разряда ячейки. Использование шунтирующих резисторов меньшего размера потребует дополнительной схемы усилителя, чтобы считываемое с него напряжение считывалось на Arduino.
Таким образом, мы напрямую считываем напряжение на нагрузочном резисторе, а затем с помощью закона Ома делим полученное напряжение на значение нагрузочного резистора, чтобы получить ток, протекающий через него. Отрицательный вывод резистора подключен непосредственно к GND, поэтому мы можем с уверенностью предположить, что напряжение, которое мы считываем на резисторе, является падением напряжения на резисторе.
Программа Arduino для измерения емкости батареи
Теперь, после доработки аппаратной схемы, мы переходим к программированию Arduino. Теперь, если на вашем компьютере не установлена Arduino IDE, что вы здесь делаете? Перейдите на официальный сайт Arduino, скачайте и установите Arduino IDE или вы также можете кодировать в любом другом редакторе, но это тема другого дня, а пока мы придерживаемся Arduino IDE. Теперь мы используем Arduino Nano, поэтому убедитесь, что вы выбрали плату Arduino Nano, перейдя в TOOLS> BOARDS и выбрав ARDUINO NANO там, теперь выберите правильный процессор, который есть у вашего nano, перейдя в TOOLS> PROCESSOR.и пока вы там, также выберите порт, к которому ваш Arduino подключен на вашем ПК. Мы используем Arduino для управления подключенным к нему буквенно-цифровым ЖК-дисплеем 16 × 2 и для измерения напряжения ячейки и тока, протекающего через нагрузочный резистор, как объяснялось в предыдущем разделе, мы начинаем наш код с объявления файлов заголовков для привода 16 × 2. Буквенно-цифровой ЖК-экран. Вы можете пропустить этот раздел, чтобы получить полностью готовый и обслуживаемый код в конце страницы, но терпите нас, пока мы разделяем код на небольшие части и пытаемся объяснить.
Теперь, когда заголовочный файл определен, мы переходим к объявлению переменных, которые мы будем использовать в коде для расчета напряжения и тока. Кроме того, в этом разделе мы должны определить контакты, которые мы будем использовать для управления ЖК-дисплеем, и контакты, которые мы будем использовать для вывода ШИМ-выхода и считывания аналоговых напряжений, поступающих от ячейки и резистора.
#включают
Теперь перейдем к части настройки: если вы хотите, чтобы ваш Arduino был постоянно подключен к компьютеру и отслеживал прогресс с помощью последовательного монитора, инициализируйте ЖК-экран здесь. Он также отобразит на экране приветственное сообщение «Цепь тестера емкости аккумулятора» в течение 3 секунд.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Устанавливаем курсор на первый столбец и первую строку. lcd.print («Емкость аккумулятора»); lcd.setCursor (0,1); lcd.print («Схема тестера»); задержка (3000); lcd.clear (); }
Теперь нам не нужно объявлять вывод PWM Arduino как Output, поскольку функция AnalogWrite, которую мы собираемся использовать в нашем основном цикле, позаботится об этой части. Вам необходимо определить значение ШИМ, которое будет записано на этот вывод в коде. Тщательно выбирайте значение ШИМ в соответствии с разрядным током, необходимым для вашего приложения. Слишком большое значение ШИМ приведет к высокому току с большим падением напряжения в литий-ионном элементе, а слишком низкое значение ШИМ приведет к большому времени разряда элемента. В функции основного цикла мы будем считывать напряжения на выводах A0 и A1, поскольку Arduino имеет 10-битный АЦП на плате, поэтому мы должны получить значения цифрового выхода в диапазоне от 0 до 1023, которые нам нужно будет масштабировать до 0-5 В, умножив его на 5,0 / 1023,0. Убедитесь, что вы правильно измерить напряжение между контактами 5V и GND в Arduino Nano с помощью калиброванного вольтметр или мультиметр в большинстве случаев регулируемое напряжение не совсем 5.0V, и даже небольшая разница в этом опорное напряжение может привести к ошибкам ползучий в показаниях напряжения, поэтому измерьте правильное напряжение и замените 5,0 в приведенном выше множителе.
Теперь, чтобы объяснить логику кода, мы постоянно измеряем напряжение ячейки, и если напряжение ячейки превышает верхний предел, указанный нами в коде, то на ЖК-дисплее отображается сообщение об ошибке, чтобы вы знали, исправна ли ячейка. перезаряжен или что-то не так с подключением, и питание на выводе затвора MOSFET прекращается, поэтому ток не может проходить через нагрузочный резистор. Крайне важно, чтобы вы полностью зарядили свой аккумулятор перед подключением его к плате тестера емкости, чтобы вы могли рассчитать его общую емкость заряда.
analogWrite (MOSFET_Pin, PWM_VALUE); // считываем вход аналогового вывода 0: int sensorValue_voltage_Cell = analogRead (A0); // Преобразование аналогового показания (от 0 до 1023) в напряжение (0 - 5 В): float Voltage = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("НАПРЯЖЕНИЕ:"); Serial.println (напряжение); // Здесь напряжение выводится на последовательный монитор lcd.setCursor (0, 0); // Устанавливаем курсор на первый столбец и первую строку. lcd.print ("Напряжение:"); // Вывести на экран показания напряжения lcd.print (Voltage); задержка (100); int sensorValue_Shunt_Resistor = аналоговое чтение (A1); плавающее напряжение1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); ток холостого хода = напряжение1 / резистор; Serial.print ("Текущий:"); Serial.println (текущий); lcd.setCursor (0, 1);// Устанавливаем курсор на первый столбец и вторую строку (отсчет начинается с 0!). lcd.print ("Текущий:"); lcd.print (текущий);
Теперь, если напряжение ячейки находится в пределах верхнего и нижнего пределов напряжения, указанных нами, Nano будет считывать значение тока указанным выше методом и умножать его на время, прошедшее во время измерений, и сохранять его в переменной емкости, которую мы определили ранее. в единицах мАч. В течение всего этого времени значения тока и напряжения в реальном времени отображаются на прикрепленном ЖК-экране, и, если вы хотите, вы также можете увидеть их на последовательном мониторе. Процесс разряда ячейки будет продолжаться до тех пор, пока напряжение ячейки не достигнет нижнего предела, указанного нами в программе, а затем общая емкость ячейки отобразится на ЖК-экране, и ток через резистор будет остановлен, потянув затвор MOSFET булавка низкая.
else if (Voltage> BAT_LOW && Voltage <BAT_HIGH) {// Проверяем, находится ли напряжение батареи в безопасных пределах millisPassed = millis () - previousMillis; мА = ток * 1000,0; Емкость = Емкость + (мА * (расход / 3600000,0)); // 1 час = 3600000 мс для преобразования в мАч previousMillis = millis (); задержка (1000); lcd.clear (); }
Повышение точности
Это, безусловно, достаточно хороший способ измерения напряжения и тока, но не идеальный. Связь между фактическим напряжением и измеренным напряжением АЦП не является линейной, и это приведет к некоторой ошибке в измерениях напряжений и токов.
Если вы хотите повысить точность результата, вы должны нанести на график значения АЦП, полученные от применения различных известных источников напряжения, а затем определить на его основе уравнение множителя, используя любой метод, который вам нравится. Таким образом, точность будет улучшена, и вы приблизитесь к реальным результатам.
Кроме того, MOSFET, который мы использовали, не является MOSFET логического уровня, поэтому для полного включения текущего канала требуется более 7 В, и если мы подадим 5 В непосредственно на него, текущие показания будут неточными. Но вы можете использовать N-канальный MOSFET IRL520N логического уровня, чтобы исключить использование источника питания 12 В и напрямую работать с логическими уровнями 5 В, которые у вас есть с вашим Arduino.
Построение и тестирование схемы
Теперь, когда мы спроектировали и протестировали различные участки нашей схемы на макетной плате и убедившись, что все они работают должным образом, мы используем перфорированную плату для спайки всех компонентов вместе, поскольку это гораздо более профессиональный и надежный метод проверки схемы.. При желании вы можете спроектировать свою собственную печатную плату в AutoCAD Eagle, EasyEDA или Proteus ARES или любом другом программном обеспечении, которое вам нравится. Arduino Nano, буквенно-цифровой ЖК-дисплей 16 × 2 и LM741 OPAMP устанавливаются на женский Bergstik, чтобы их можно было повторно использовать позже.
Я обеспечил источник питания 12 В через разъем DC Barrel Jack для цепи постоянного тока нагрузки, а затем с помощью LM7805 обеспечил 5 В для нано- и ЖК-экранов. Теперь включите цепь и отрегулируйте потенциометр триммера, чтобы установить уровень контрастности ЖК-экрана. К этому моменту вы должны увидеть приветственное сообщение на ЖК-экране, а затем, если уровень напряжения ячейки находится в рабочем диапазоне, тогда текущий -в нем будут отображаться напряжение и ток от аккумулятора.
Это очень простой тест для расчета емкости используемой ячейки, и его можно улучшить, взяв данные и сохранив их в файле Excel для последующей обработки и визуализации данных графическими методами. В сегодняшнем мире, управляемом данными, эту кривую разряда ячейки можно использовать для построения точных прогнозных моделей батареи для моделирования и просмотра реакции батареи в условиях нагрузки без реальных испытаний с использованием программного обеспечения, такого как NI LabVIEW, MATLAB Simulink и т. Д…и еще много приложений ждет вас. Вы можете найти полную работу этого проекта в видео ниже. Если у вас есть какие-либо вопросы по этому проекту, напишите их в разделе комментариев ниже или воспользуйтесь нашим форумом. Идите и получайте удовольствие, и если вы хотите, мы можем помочь вам в разделе комментариев ниже о том, как действовать дальше. До тех пор Adios !!!