- Навіщо нам потрібен тестер ємності акумулятора?
- Потрібні компоненти
- Схема електричного тестера акумулятора Arduino
- Програма Arduino для вимірювання ємності акумулятора
- Покращення точності
- Побудова та випробування схеми
З появою технологій наші електронні гаджети та побутова техніка стають дедалі меншими з більш функціональними та складними програмами. З цим збільшенням складності потреба в потужності схеми також зросла, і в нашому прагненні зробити пристрій якомога меншим і максимально портативним, нам потрібна батарея, яка може забезпечувати високий струм протягом тривалого періоду часу часу, зважте набагато менше, щоб пристрій залишався переносним. Якщо ви хочете дізнатись більше про батареї, ви також можете прочитати цю статтю про основні термінології батареї.
З багатьох доступних типів акумуляторів свинцево-кислотні, Ni-Cd-акумулятори та Ni-MH-батареї не підходять, оскільки вони або важать більше, або не можуть забезпечити струм, необхідний для нашого застосування, це залишає нам літій-іонні акумулятори які можуть забезпечити високу силу струму, зберігаючи малу вагу і компактні розміри. Раніше ми також створили зарядний пристрій та підсилювальний модуль 18650 та систему моніторингу акумуляторів на основі IoT, ви можете перевірити їх, якщо зацікавлені.
Навіщо нам потрібен тестер ємності акумулятора?
На ринку є багато постачальників акумуляторів, які продають дешеві версії літій-іонних акумуляторів, що вимагають химерних характеристик з дуже низькою ціною, що занадто добре, щоб бути правдою. Коли ви купуєте ці комірки, вони взагалі не працюють, або якщо вони працюють, ємність заряду або поточний потік настільки низькі, що вони взагалі не можуть працювати з додатком. То як перевірити літієву батарею, якщо клітина не є одним із цих дешевих стукачів? Одним із методів є вимірювання напруги розімкнутого ланцюга без навантаження та навантаження, але це зовсім не надійно.
Отже, ми збираємося створити тестер ємності акумулятора 18650 для літій-іонного елемента 18650, який буде розряджати повністю заряджений елемент 18650 через резистор, вимірюючи струм, що протікає через резистор, для розрахунку його ємності. Якщо ви не отримуєте заявлену ємність акумулятора, коли напруга комірки знаходиться в межах зазначених меж, тоді цей елемент є несправним, і ви не повинні використовувати його, оскільки стан заряду комірки дуже швидко виснажується під навантаженням, створюючи локальний струм, якщо використовується в акумуляторній батареї, що призводить до нагрівання та, можливо, пожежі. Тож давайте перейдемо прямо до цього.
Потрібні компоненти
- Arduino Nano
- РК-дисплей 16 × 2 символи
- LM741 Схема OPAMP
- 2,2 Ом, 5 Вт резистор
- 7805 IC регулятора позитивної напруги
- Блок живлення 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 IC регулятора напруги більше 12 В, тоді подумайте про додавання радіатора, щоб він не пошкодився. РК-дисплей живиться від джерела живлення 5В від 7805 і підключений до Arduino і працює в 4-бітному режимі. Ми також додали потенціометр склоочисника 10 кОм для контролю контрастності РК-дисплея.
Схема струму постійного навантаження:
По-друге, це ланцюг постійного струму на основі ШІМ, щоб зробити струм навантаження, що протікає через резистор, керованим нами і постійним, щоб не виникало помилок, що закрадаються через зміну струму в часі, коли напруга комірки падає. Він складається з LM741 OPAMP IC і IRF540N N-канального MOSFET, який контролює струм, що протікає через MOSFET, вмикаючи та вимикаючи MOSFET відповідно до встановленого нами рівня напруги.
Операційний підсилювач працює в режимі порівняння,так у цьому режимі. вихід операційного підсилювача буде високим, коли напруга неінвертуючого штифта операційного підсилювача буде вищим, ніж інвертуючий штифт. Подібним чином, якщо напруга на інвертуючому штифті операційного підсилювача вище, ніж неінвертуючий штифт, вихід операційного підсилювача буде витягнуто вниз. У даній схемі неінвертуючий рівень напруги штиря управляється штифтом D9 ШІМ Arduino NANO, який перемикається на частоті 500 Гц, який потім пропускається через низькочастотний RC-фільтр зі значенням опору 33 кОм і конденсатором ємністю 0,47 uF, щоб забезпечити майже постійний сигнал постійного струму на неінвертуючому штифті. Інвертуючий штифт підключений до навантажувального резистора, який зчитує напругу на резисторі та загальному GND. Вихідний штифт OPAMP підключений до засувки MOSFET, щоб увімкнути або вимкнути його.OPAMP намагатиметься зрівняти напругу на обох його клемах, перемикаючи підключений MOSFET, щоб струм, що протікає через резистор, був пропорційним значенню ШІМ, встановленому на штифті D9 NANO. У цьому проекті максимальний струм, я обмежив свою схему, становить 1,3 А, що є розумним, оскільки комірка, яку я маю, становить 10 А, як максимальна номінальна сила струму
Вимірювання напруги:
Максимальна напруга типового повністю зарядженого літій-іонного елемента становить 4,1 - 4,3 В, що менше межі напруги 5 В аналогових вхідних штифтів Arduino Nano, що має внутрішній опір більше 10 кОм, щоб ми могли безпосередньо підключити Стільник до будь-якого з аналогових вхідних контактів, не турбуючись про струм, що проходить через них. Отже, у цьому проекті нам потрібно виміряти напругу комірки, щоб ми могли визначити, чи знаходиться комірка в правильному діапазоні напруги та чи вона повністю розряджена чи ні.
Нам також потрібно виміряти струм, що протікає через резистор, тому що ми не можемо використовувати струмовий шунт, оскільки складність схеми буде зростати, а збільшення опору на шляху навантаження зменшить швидкість розряду комірки. Використання менших шунтуючих резисторів потребуватиме додаткової схеми підсилювача, щоб зчитування напруги, що надходить від нього, було читабельним для Arduino.
Отже, ми безпосередньо зчитуємо напругу на резисторі навантаження, а потім за допомогою закону Ома ділимо напругу, отриману на значення резистора навантаження, щоб отримати струм, що протікає через нього. Негативна клема резистора підключена безпосередньо до GND, тому ми можемо впевнено вважати, що напруга, яку ми читаємо на резисторі, є падінням напруги в резисторі.
Програма Arduino для вимірювання ємності акумулятора
Тепер після доопрацювання апаратної схеми ми переходимо до програмування Arduino. Тепер, якщо на вашому ПК не встановлено Arduino IDE, що ви тут робите! Зайдіть на офіційний веб-сайт Arduino та завантажте та встановіть IDE Arduino, або ви можете кодувати будь-який інший редактор, але це тема для іншого дня, поки що ми дотримуємося 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 (); }
Тепер нам не потрібно оголошувати ШІМ Arduino як вихід, як функція 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 В): плаваюча напруга = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("НАПРУГА:"); Serial.println (напруга); // Тут напруга друкується на послідовному моніторі lcd.setCursor (0, 0); // Встановіть курсор на перший стовпець і перший рядок. lcd.print ("Напруга:"); // Вивести на екран значення напруги lcd.print (напруга); затримка (100); int sensorValue_Shunt_Resistor = analogRead (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 (напруга> BAT_LOW && напруга <BAT_HIGH) {// Перевірте, чи напруга акумулятора не перевищує безпечну межу millisPassed = millis () - previousMillis; мА = струм * 1000,0; Ємність = Ємність + (мА * (millisPassed / 3600000.0)); // 1 година = 3600000 мс, щоб перетворити її в одиниці мАг previousMillis = millis (); затримка (1000); lcd.clear (); }
Покращення точності
Це, безумовно, досить хороший спосіб зчитування напруги та струму, але він не є досконалим. Зв'язок між фактичною напругою та виміряною напругою АЦП не є лінійною, і це призведе до певної похибки у вимірах напруги та струму.
Якщо ви хочете підвищити точність результату, тоді ви повинні нанести на графік значення АЦП, отримані від застосування різних відомих джерел напруги, а потім визначити з нього рівняння множника, використовуючи будь-який спосіб, який вам подобається. Таким чином, точність буде покращена, і ви наблизитесь до фактичних результатів.
Крім того, MOSFET, який ми використовували, не є MOSFET на логічному рівні, тому йому потрібно більше 7 В, щоб повністю включити поточний канал, і якщо ми застосуємо 5 В безпосередньо до нього, поточні показники будуть неточними. Але ви можете використовувати логічний рівень IRL520N N-канальний MOSFET, щоб виключити використання джерела живлення 12 В і безпосередньо працювати з логічними рівнями 5 В.
Побудова та випробування схеми
Тепер, коли ми розробили та випробували різні розділи нашої схеми на макетній дошці, і, переконавшись, що всі вони працюють за призначенням, ми використовуємо Perfboard для пайки всіх компонентів разом, оскільки це набагато більш професійний і надійний метод для перевірки схеми. Якщо ви хочете, ви можете створити власну друковану плату на AutoCAD Eagle, EasyEDA, Proteus ARES або будь-якому іншому програмному забезпеченні, яке вам подобається. Arduino Nano, буквено-цифровий РК-дисплей 16 × 2 та LM741 OPAMP встановлені на жіночому пристрої Bergstik, щоб їх можна було використовувати повторно пізніше.
Я забезпечив джерело живлення 12 В через роз'єм постійного струму постійного струму для ланцюга постійного струму навантаження, а потім за допомогою LM7805 забезпечується 5 В для нано- та РК-екрану. Тепер підключіть ланцюг і відрегулюйте триммер, щоб встановити рівень контрастності РК-екрану, ви вже побачите привітальне повідомлення на РК-екрані, а потім, якщо рівень напруги комірки знаходиться в робочому діапазоні, то поточний -напруга та струм від акумулятора будуть відображатися там.
Це дуже базовий тест для обчислення ємності клітини, яку ви використовуєте, і його можна поліпшити, взявши дані та зберігаючи їх у файлі Excel для подальшої обробки та візуалізації даних графічними методами. У сучасному світі, керованому даними, ця крива розряду комірок може бути використана для побудови точних прогнозних моделей акумулятора для імітації та перегляду реакції акумулятора в умовах навантаження без реального тестування за допомогою програмного забезпечення, такого як NI LabVIEW, MATLAB Simulink тощо. і вас чекає набагато більше додатків. Ви можете знайти повну роботу цього проекту у відео нижче. Якщо у вас є запитання щодо цього проекту, напишіть їх у розділі коментарів нижче або скористайтеся нашими форумами. Ідіть і отримуйте задоволення від цього, і якщо ви хочете, ми можемо допомогти вам у розділі коментарів нижче про те, як далі рухатися звідси. До цього часу Адіос !!!