- Proč potřebujeme tester kapacity baterie?
- Požadované komponenty
- Obvodové schéma testeru kapacity baterie Arduino
- Program Arduino pro měření kapacity baterie
- Vylepšení přesnosti
- Stavba a testování obvodu
S příchodem technologie se naše elektronické přístroje a zařízení s funkčnějšími a složitějšími aplikacemi zmenšují. S tímto zvýšením složitosti se také zvýšil požadavek na výkon obvodu a v našem úsilí o to, aby bylo zařízení co nejmenší a přenosné, potřebujeme baterii, která může poskytovat vysoký proud po dlouhou dobu a současně vážit mnohem méně, aby zařízení mělo zůstat přenosné. Pokud se chcete o bateriích dozvědět více, můžete si také přečíst tento článek o základních terminologiích o bateriích.
Z mnoha dostupných typů baterií nejsou olověné baterie, Ni-Cd baterie a Ni-MH baterie vhodné, protože buď váží více, nebo nemohou poskytnout proud potřebný pro naši aplikaci, takže nám zbývají lithium-iontové baterie což může poskytnout vysoký proud při zachování nízké hmotnosti a kompaktní velikosti. Dříve jsme také postavili 18650 nabíječku a zesilovač baterií a monitorovací systém baterií založený na IoT, v případě zájmu si je můžete prohlédnout.
Proč potřebujeme tester kapacity baterie?
Na trhu existuje mnoho prodejců baterií, kteří prodávají levné vyřazovací verze lithium-iontových baterií a požadují bizarní specifikace s velmi nízkou cenou, což je příliš dobré na to, aby to byla pravda. Když si koupíte tyto články, buď vůbec nefungují, nebo pokud ano, kapacita nabíjení nebo tok proudu je tak nízká, že s aplikací vůbec nemohou pracovat. Jak tedy otestovat lithiovou baterii, pokud článek není jedním z těchto levných knockoffů? Jednou z metod je měření napětí naprázdno bez zátěže a zátěže, ale to není vůbec spolehlivé.
Chystáme se tedy postavit tester kapacity baterie 18650 pro Li-Ion 18650 Cell, který vybije plně nabitý článek 18650 přes rezistor při měření proudu protékajícího rezistorem pro výpočet jeho kapacity. Pokud nedosáhnete nárokované kapacity baterie, zatímco napětí článku je ve stanovených mezích, je tento článek vadný a neměli byste jej používat, protože stav nabití článku se při zatížení vyčerpá velmi rychle a vytvoří tak místní proudová smyčka, pokud je použita v baterii, což vede k zahřívání a případně k požáru. Pojďme tedy skočit přímo do toho.
Požadované komponenty
- Arduino Nano
- 16 × 2 znakový LCD
- LM741 OPAMP IC
- 2,2 Ω, 5 Wattový rezistor
- 7805 IC regulátoru pozitivního napětí
- 12V napájecí zdroj
- Potenciometr trimru 10 kΩ
- Kondenzátor 0,47uF
- Rezistor 33kΩ
- Konektor DC Power Barrel Jack
- Šroubové svorky PCB
- IRF540N N-Channel Mosfet IC
- Perfboard
- Pájecí souprava
- Chladiče
Obvodové schéma testeru kapacity baterie Arduino
Kompletní schéma zapojení testeru kapacity baterie 18650 je uvedeno níže. Vysvětlení obvodu je následující -
Výpočetní a zobrazovací jednotka:
Tento obvod je dále rozdělen na dvě části, první je nízké 5V napájení pro Arduino Nano a 16 × 2 alfanumerický LCD displej a jejich připojení pro zobrazení výsledků měření proudu a napětí v reálném čase. Obvod je napájen 12V zdrojem pomocí SMPS nebo můžete použít 12V baterii, stejně jako maximální proud bude kolem 60-70mA pro napájení Arduina a LCD obrazovky.
Chcete-li snížit napětí na 5 V, použijeme lineární regulátor napětí, který může trvat až 35 V a potřebuje alespoň 7,5 V vstupního napájení, aby poskytoval regulované 5 V napájení a nadměrné napětí se rozptýlí jako teplo, takže pokud je váš vstup napětí LM7805 Napěťový regulátor IC je více než 12V, zvažte přidání chladiče, aby nedošlo k jeho poškození. LCD je napájen z 5V napájením 7805 a je připojen k Arduinu a pracuje ve 4bitovém režimu. Přidali jsme také potenciometr stěrače 10k Ω pro ovládání kontrastu LCD displeje.
Okruh s konstantním zatížením:
Druhým je obvod zátěže s konstantním proudem založený na PWM, aby proud zátěže protékající rezistorem byl kontrolovatelný námi a konstantní, takže nedochází k plíživé chybě v důsledku kolísání proudu v čase s poklesem napětí článku. Skládá se z LM741 OPAMP IC a IRF540N N-Channel MOSFET, který řídí proud protékající MOSFET zapínáním a vypínáním MOSFET podle námi nastavené úrovně napětí.
Operační zesilovač pracuje v komparátorovém režimu,v tomto režimu. výstup operačního zesilovače bude vysoký, kdykoli je napětí neinvertujícího kolíku operačního zesilovače vyšší než invertující kolík. Podobně, pokud je napětí na invertujícím kolíku operačního zesilovače vyšší než neinvertující kolík, bude výstup operačního zesilovače stažen dolů. V daném obvodu je neinvertující úroveň napětí kolíku řízena kolíkem D9 PWM Arduino NANO, který spíná na frekvenci 500 Hz, který je poté veden přes nízkoprůchodový RC obvodový filtr s hodnotou odporu 33 kΩ a kondenzátor s kapacitou 0,47 uF, aby poskytoval téměř konstantní stejnosměrný signál na neinvertujícím kolíku. Invertující kolík je připojen k zatěžovacímu rezistoru, který čte napětí na rezistoru a společném GND. Výstupní kolík OPAMP je připojen k hradlovému terminálu MOSFETu, aby se zapnul nebo vypnul.OPAMP se pokusí vyrovnat napětí na obou svorkách přepnutím připojeného MOSFETu, takže proud protékající rezistorem bude úměrný hodnotě PWM, kterou jste nastavili na pinu D9 na NANO. V tomto projektu je maximální proud, omezil jsem svůj obvod na 1,3 A, což je rozumné, protože buňka, kterou mám, je 10A jako maximální jmenovitý proud
Měření napětí:
Maximální napětí typického plně nabitého Li-Ion článku je 4,1 V až 4,3 V, což je méně než 5V napěťový limit analogových vstupních pinů Arduino Nano, který má v sobě více než 10kΩ vnitřní odpor, takže můžeme přímo připojit Buňku připojte k některému z analogových vstupních kolíků, aniž byste se museli obávat, že jimi protéká proud. V tomto projektu tedy musíme změřit napětí článku, abychom mohli určit, zda je článek ve správném provozním rozsahu napětí a zda je zcela vybitý nebo ne.
Musíme měřit také proud protékající rezistorem, protože nemůžeme použít proudový bočník, protože se zvýší složitost obvodu a zvýšení odporu v cestě zátěže sníží rychlost vybíjení článku. Použití menších bočních rezistorů bude vyžadovat další obvod zesilovače, aby bylo čtení napětí z něj čitelné pro Arduino.
Čteme tedy přímo napětí na zatěžovacím rezistoru a poté pomocí Ohmova zákona vydělíme napětí získané hodnotou zatěžovacího rezistoru, abychom proudem protékali. Záporná svorka rezistoru je připojena přímo k GND, takže můžeme bezpečně předpokládat, že napětí, které čteme na rezistoru, je pokles napětí v rezistoru.
Program Arduino pro měření kapacity baterie
Nyní po dokončení hardwarového obvodu přejdeme k programování Arduino. Nyní, pokud ve svém počítači nemáte nainstalované Arduino IDE, co tady děláte! Přejděte na oficiální web Arduino a stáhněte a nainstalujte IDE Arduino nebo můžete kódovat také v jakémkoli jiném editoru, ale to je téma na další den, nyní se držíme Arduino IDE. Nyní používáme Arduino Nano, takže se ujistěte, že jste vybrali desku Arduino Nano tak, že přejdete na TOOLS> BOARDS a tam vyberete ARDUINO NANO, nyní vyberte správný procesor, který vaše nano má, tím, že přejdete na TOOLS> PROCESSORa když jste tam, vyberte také port, ke kterému je vaše Arduino připojeno na vašem PC. Používáme Arduino k pohonu 16 × 2 alfanumerického LCD displeje, který je k němu připojen, a k měření napětí článku a proudu protékajícího zatěžovacím odporem, jak je vysvětleno v předchozí části, začneme náš kód deklarací hlavičkových souborů pro pohon 16 × 2 Alfanumerická obrazovka LCD. Tuto část můžete přeskočit, abyste na konci stránky dostali plně vařený a obsluhovaný kód, ale mějte s sebou, když rozdělíme kód na malé části a pokusíme se to vysvětlit.
Nyní, když je definován soubor záhlaví, přejdeme k deklaraci proměnných, použijeme v kódu k výpočtu napětí a proudu. Musíme také definovat piny, které používáme k řízení LCD, a piny, které budeme používat k poskytování výstupu PWM a čtení analogových napětí přicházejících z článku a rezistoru také v této části.
#zahrnout
Nyní přichází do části nastavení, pokud chcete mít Arduino po celou dobu připojené k počítači a sledovat postup pomocí Serial Monitor a zde inicializovat LCD obrazovku. Na obrazovce také na 3 sekundy zobrazí uvítací zprávu „Okruh testeru kapacity baterie“.
void setup () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Nastaví kurzor na první sloupec a první řádek. lcd.print ("kapacita baterie"); lcd.setCursor (0,1); lcd.print ("testovací obvod"); zpoždění (3000); lcd.clear (); }
Nyní nemusíme deklarovat pin Arduino PWM jako výstup, protože se o tuto část postará funkce AnalogWrite, kterou použijeme v naší hlavní smyčce. Musíte definovat hodnotu PWM, která má být zapsána na tento pin v kódu. Vyberte hodnotu PWM pečlivě podle vybíjecího proudu požadovaného ve vaší aplikaci. Příliš vysoká hodnota PWM bude mít za následek vysoký proud s vysokým poklesem napětí v článku Li-Ion a příliš nízká hodnota PWM bude mít za následek vysokou dobu vybíjení článku. Ve funkci hlavní smyčky budeme číst napětí na pinech A0 a A1, protože Arduino má na desce 10bitový ADC, proto bychom měli dostat hodnoty digitálního výstupu v rozmezí 0-1023, které budeme muset zmenšit zpět na Rozsah 0-5V vynásobením 5,0 / 1023,0. Ujistěte se, že správně měříte napětí mezi piny 5V a GND Arduino Nano pomocí kalibrovaného voltmetru nebo multimetru, protože regulované napětí většinou není přesně 5,0 V a dokonce i malý rozdíl v tomto referenčním napětí by měl za následek plíživé chyby ve odečtech napětí změřte správné napětí a vyměňte 5,0 v multiplikátoru uvedeném výše.
Abychom vysvětlili logiku kódu, průběžně měříme napětí článku a je-li napětí článku nad horní mezí, kterou jsme určili v kódu, zobrazí se na LCD chybové hlášení, abychom věděli, zda je článek přebití nebo je něco v nepořádku s připojením a napájení na pin MOSFET brány je zastaveno, takže zatěžovacím odporem nemůže protékat žádný proud. Před připojením k desce testeru kapacity je nejprve nutné plně nabít buňku, abyste mohli vypočítat její celkovou kapacitu nabití.
analogWrite (MOSFET_Pin, PWM_VALUE); // načte vstup na analogovém pinu 0: int sensorValue_voltage_Cell = analogRead (A0); // Převod analogového odečtu (který se pohybuje v rozmezí 0 - 1023) na napětí (0 - 5V): float voltage = sensorValue_voltage_Cell * (5,08 / 1023,0); Serial.print ("NAPĚTÍ:"); Serial.println (napětí); // Zde se napětí tiskne na Serial Monitor lcd.setCursor (0, 0); // Nastaví kurzor na první sloupec a první řádek. lcd.print ("Napětí:"); // Vytiskne odečet napětí na obrazovce lcd.print (napětí); zpoždění (100); int sensorValue_Shunt_Resistor = analogRead (A1); plovoucí napětí1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); plovoucí proud = napětí1 / rezistor; Serial.print ("Aktuální:"); Serial.println (aktuální); lcd.setCursor (0, 1);// Nastavte kurzor na první sloupec a druhý řádek (počítání začíná na 0!). lcd.print ("Aktuální:"); lcd.print (aktuální);
Nyní, pokud je napětí článku v námi stanovených horních a dolních mezích napětí, Nano načte hodnotu proudu metodou uvedenou výše a vynásobí ji časem, který uplynul během měření, a uloží ji do proměnné kapacity, kterou jsme definovali dříve v jednotkách mAh. Po celou tuto dobu se na připojeném LCD displeji zobrazují hodnoty proudu a napětí v reálném čase a pokud chcete, můžete je také vidět na sériovém monitoru. Proces vybíjení článku bude pokračovat, dokud napětí článku nedosáhne dolní meze, kterou jsme určili v programu, a poté se na LCD obrazovce zobrazí celková kapacita článku a tok proudu přes rezistor se zastaví zatažením za MOSFET bránu kolík nízký.
else if (napětí> BAT_LOW && napětí <BAT_HIGH) {// Zkontrolujte, zda je napětí baterie v bezpečném limitu millisPassed = millis () - previousMillis; mA = proud * 1000,0; Kapacita = Kapacita + (mA * (millisPassed / 3600000.0)); // 1 hodina = 3600000ms k převodu na jednotky mAh previousMillis = millis (); zpoždění (1000); lcd.clear (); }
Vylepšení přesnosti
Je to v každém případě dost dobrý způsob, jak číst napětí a proud, ale není to dokonalé. Vztah mezi skutečným napětím a naměřeným napětím ADC není lineární a bude to znamenat určitou chybu v měření napětí a proudů.
Pokud chcete zvýšit přesnost výsledku, musíte vykreslit hodnoty ADC, které získáte z použití různých známých zdrojů napětí v grafu, a poté z něj určit multiplikační rovnici pomocí libovolné metody, která se vám líbí. Tímto způsobem se zlepší přesnost a velmi se přiblížíte skutečným výsledkům.
MOSFET, který jsme použili, také není MOSFET na logické úrovni, takže k úplnému zapnutí aktuálního kanálu potřebuje více než 7 V a pokud na něj použijeme přímo 5 V, aktuální hodnoty by byly nepřesné. Ale můžete použít logickou úroveň IRL520N N-Channel MOSFET k vyloučení použití 12V napájení a přímo pracovat s 5V logickými úrovněmi, které máte se svým Arduino.
Stavba a testování obvodu
Nyní, když jsme navrhovali a testovali různé části našeho obvodu na prkénku, a poté, co jsme se ujistili, že všechny fungují, jak bylo zamýšleno, použijeme Perfboard k pájení všech komponent dohromady, protože je to mnohem profesionálnější a spolehlivější metoda pro testování obvodu. Pokud chcete, můžete si navrhnout vlastní PCB na AutoCADu Eagle, EasyEDA nebo Proteus ARES nebo na jakémkoli jiném softwaru, který se vám líbí. Arduino Nano, 16 × 2 alfanumerický LCD a LM741 OPAMP jsou namontovány na Female Bergstik, aby je bylo možné později znovu použít.
Zajistil jsem napájení 12V prostřednictvím konektoru DC Barrel Jack pro proudový obvod s konstantním zatížením a pomocí LM7805 je k dispozici 5V pro obrazovku Nano a LCD. Nyní zapněte obvod a upravte trimr tak, aby se nastavila úroveň kontrastu LCD obrazovky, nyní byste na LCD obrazovce měli vidět uvítací zprávu, a pokud je úroveň napětí článku v pracovním rozsahu, pak - zde se zobrazí napětí a proud z baterie.
Toto je velmi základní test pro výpočet kapacity buňky, kterou používáte, a lze ji vylepšit tím, že vezmete data a uložíte je do souboru Excel, abyste mohli zpracovávat a vizualizovat data pomocí grafických metod. V dnešním světě založeném na datech lze tuto křivku vybití článku použít k vytvoření přesných prediktivních modelů baterie pro simulaci a sledování odezvy baterie při načítání bez testování v reálném světě pomocí softwaru jako NI LabVIEW, MATLAB Simulink atd. … a čeká vás mnohem více aplikací. Kompletní fungování tohoto projektu najdete ve videu níže. Máte-li jakékoli dotazy týkající se tohoto projektu, napište nám je do sekce komentářů níže nebo použijte naše fóra. Jděte se na to pobavit a pokud chcete, můžeme vás v sekci komentáře níže vést, jak odtud pokračovat dále. Do té doby Adios !!!