- Miért van szükségünk akkumulátor-tesztelőre?
- Szükséges alkatrészek
- Arduino akkumulátor kapacitás tesztelő áramkör diagram
- Arduino program az akkumulátor kapacitásának mérésére
- Pontosságjavítások
- Az áramkör kiépítése és tesztelése
A technológia megjelenésével az elektronikus kütyüink és készülékeink egyre funkcionálisabb és összetettebb alkalmazásokkal egyre kisebbek. Ezzel a bonyolultság növekedésével az áramkör energiaigénye is nőtt, és arra törekszünk, hogy az eszközt a lehető legkisebbé és hordozhatóbbá tegyük, szükségünk van egy akkumulátorra, amely hosszú ideig képes biztosítani a nagy áramot és ugyanakkor idővel, sokkal kevesebbet mérlegeljen, hogy az eszköz hordozható maradjon. Ha többet szeretne tudni az akkumulátorokról, olvassa el ezt a cikket az akkumulátorok alapvető terminológiáiról is.
A rendelkezésre álló különféle típusú akkumulátorok közül az ólom-savas akkumulátorok, a Ni-Cd akkumulátorok és a Ni-MH akkumulátorok nem alkalmasak, mivel vagy nagyobbak a súlyuk, vagy nem tudják biztosítani az alkalmazásunkhoz szükséges áramot, ezáltal a lítium-ion akkumulátorok maradnak amely nagy áramot képes biztosítani, miközben a súly alacsony és a méret kompakt. Korábban építettünk egy 18650-es akkumulátortöltőt és emlékeztető modult, valamint egy IoT-alapú akkumulátor-figyelő rendszert is. Érdeklődve ellenőrizheti őket.
Miért van szükségünk akkumulátor-tesztelőre?
A piacon sok akkumulátorkereskedő értékesíti a Li-ion akkumulátorok olcsó leütési verzióit, különös specifikációkra hivatkozva, nagyon alacsony áron, ami túl jó ahhoz, hogy igaz legyen. Ha megvásárolja ezeket a cellákat, vagy egyáltalán nem működnek, vagy ha mégis, akkor a töltőkapacitás vagy az áramlás olyan alacsony, hogy egyáltalán nem tudnak működni az alkalmazással. Tehát hogyan tesztelhetünk egy lítium akkumulátort, ha a cella nem tartozik ezen olcsó kiütések közé? Az egyik módszer a nyitott áramkör feszültségének mérése terhelés és terhelés nélkül, de ez egyáltalán nem megbízható.
Tehát egy 18650-es akkumulátor kapacitástesztet építünk egy Li-Ion 18650 cellához, amely egy teljesen feltöltött 18650 cellát egy ellenálláson keresztül ürít, miközben az ellenálláson átfolyó áramot megmérjük annak kapacitásának kiszámításához. Ha nem kapja meg az igényelt akkumulátor kapacitást, miközben a cella feszültsége a megadott határokon belül van, akkor az a cella hibás, és ezt nem szabad használni, mivel a cella töltöttségi állapota terhelés alatt nagyon gyors ütemben fogy, ami egy helyi áramkör, ha akkumulátort használ, ami fűtést és esetleg tüzet okozhat. Ugorjunk hát bele.
Szükséges alkatrészek
- Arduino Nano
- 16 × 2 karakteres LCD
- LM741 OPAMP IC
- 2,2Ω, 5 Wattos ellenállás
- 7805 pozitív feszültségszabályozó IC
- 12 V-os tápegység
- 10kΩ trimmer potenciométer
- 0,47 uF kondenzátor
- 33kΩ ellenállás
- DC tápcsatlakozó csatlakozó
- NYÁK csavaros terminálok
- IRF540N N-csatornás Mosfet IC
- Perfboard
- Forrasztókészlet
- Hűtőbordák
Arduino akkumulátor kapacitás tesztelő áramkör diagram
Az 18650 akkumulátorkapacitás-tesztelő készülék teljes kapcsolási rajza alább látható. Az áramkör magyarázata a következő:
Számítási és megjelenítési egység:
Ez az áramkör további két részre oszlik, az első egy alacsony 5 V-os tápegység az Arduino Nano és a 16 × 2 alfanumerikus LCD képernyő és azok csatlakozásai számára, hogy valós és valós időben megjelenítsék az áram- és feszültségmérés eredményeit. Az áramkört 12 V-os tápfeszültség táplálja, SMPS használatával, vagy használhat 12 V-os akkumulátort, valamint a maximális áram 60-70 mA körül lesz az Arduino és az LCD képernyő táplálásához.
A feszültség 5 V-ig történő csökkentéséhez egy olyan lineáris feszültségszabályozót fogunk használni, amely akár 35 V-ot is igénybe vehet, és legalább 7,5 V bemeneti tápfeszültségre van szüksége a szabályozott 5 V-os tápellátás biztosításához, és a túlfeszültség hőként eloszlik, ha a bemenet feszültség LM7805 feszültségszabályozó IC több, mint 12 V, akkor fontolja meg a hűtőborda beillesztését, hogy ne sérüljön meg. Az LCD-t 5 V-os tápfeszültség táplálja a 7805-től, Arduino-hoz csatlakozik és 4 bites módban működik. Hozzáadtunk egy 10k Ω-os ablaktörlő potenciométert az LCD kijelző kontrasztjának szabályozásához.
Állandó terhelésű áramkör:
A második az a PWM alapú állandó áramterhelésű áramkör, amely az ellenálláson keresztül áramló terhelési áramot általunk vezérelhetővé és állandóvá teszi, hogy az cella feszültségének csökkenésével az áram időbeli változása miatt ne csúszkáljon be hiba. Ez áll LM741 IC OPAMP és IRF540N N-csatornás MOSFET, amely szabályozza a átfolyó áram MOSFET által ki- és bekapcsolása, a MOSFET szerinti feszültségszint helyezünk el.
Az op-amp komparátor módban működik,tehát ebben a módban. az op-amp kimenete nagy lesz, ha az op-amp nem invertáló csapjának feszültsége nagyobb, mint az invertáló pin. Hasonlóképpen, ha a feszültség az op-amp inverteres tüskéjénél magasabb, mint a nem invertáló pin, akkor az op-amp kimenete lehúzódik. Az adott áramkörben a nem invertáló tűs feszültségszintet az Arduino NANO D9 PWM csapja vezérli, amely 500Hz frekvencián kapcsol át, majd ezt követően aluláteresztő 33kΩ ellenállású RC áramköri szűrőn és 0,47 kapacitású kondenzátoron vezet át uF, hogy szinte állandó egyenáramú jelet nyújtson a nem invertáló csapon. Az invertáló csap csatlakozik a terhelési ellenálláshoz, amely leolvassa az ellenállás és a közös GND feszültségét. Az OPAMP kimeneti csatlakozója a MOSFET kapu termináljára van kapcsolva, hogy be- vagy kikapcsolhassa.Az OPAMP megpróbálja mindkét termináljának feszültségét egyenlővé tenni az összekapcsolt MOSFET kapcsolásával, így az ellenálláson átfolyó áram arányos lesz a PWM értékkel, amelyet a NANO D9 tűjén állított be. Ebben a projektben a maximális áramot áramkörömre 1,3 A-ra korlátoztam, ami ésszerű, mivel a cellám 10A, mint a maximális áramérték
Feszültségmérés:
A tipikus, teljesen feltöltött Li-Ion cellák maximális feszültsége 4,1 V - 4,3 V, ami kisebb, mint az Arduino Nano analóg bemeneti tüskéinek 5 V feszültséghatárja, amelyben több mint 10 kΩ belső ellenállás van, így közvetlenül csatlakoztathatjuk a Cellázzon bármelyik analóg bemeneti tűre anélkül, hogy aggódna a rajtuk átfolyó áram miatt. Tehát ebben a projektben meg kell mérnünk a cella feszültségét, hogy meg tudjuk állapítani, hogy a cella a megfelelő feszültségű működési tartományban van-e, és teljesen lemerült-e vagy sem.
Meg kell mérnünk az ellenálláson átáramló áramot is, hogy ne tudjuk használni az áram söntet, mivel az áramkör bonyolultsága növekszik, és a terhelési útban növekvő ellenállás csökkenti a cella kisülési sebességét. Kisebb shunt ellenállások használata további erősítő áramkört igényel, hogy a belőle érkező feszültség leolvasható legyen az Arduino számára.
Tehát közvetlenül leolvassuk a terheléses ellenállás feszültségét, majd Ohm törvénye alapján elosztjuk a terhelés ellenállás értékével kapott feszültséget, hogy az átáramló áram elérje. Az ellenállás negatív kapcsa közvetlenül a GND-hez csatlakozik, így nyugodtan feltételezhetjük, hogy az a feszültség, amelyet az ellenálláson olvasunk, az az ellenállás feszültségesése.
Arduino program az akkumulátor kapacitásának mérésére
Miután befejeztük a hardver áramkört, áttérünk az Arduino programozásra. Most, ha nincs telepítve az Arduino IDE a számítógépére, mit csinál itt! Látogasson el az Arduino hivatalos webhelyére, töltse le és telepítse az Arduino IDE-t, vagy kódolhat bármely más szerkesztőben is, de ez egy másik nap témája, most ragaszkodunk az Arduino IDE-hez. Most az Arduino Nano-t használjuk, ezért győződjön meg róla, hogy kiválasztotta az Arduino Nano táblát azáltal, hogy a TOOLS> BOARDS elemre lép, és ott kiválasztja az ARDUINO NANO elemet, és most válassza ki a megfelelő processzort, amellyel a nano rendelkezik a TOOLS> PROCESSOR menüpontban.és amíg ott van, válassza ki a számítógépén azt a portot is, amelyhez Arduino csatlakozik. Az Arduino segítségével meghajtjuk a hozzá csatlakoztatott 16 × 2 alfanumerikus LCD-t, és megmérjük a cella feszültségét és a terhelési ellenálláson átáramló áramot az előző szakaszban leírtak szerint. Elkezdjük kódunkat azzal, hogy a fejlécfájlokat deklaráljuk a 16 × 2 meghajtóra. Alfanumerikus LCD képernyő. Ezt a szakaszt kihagyhatja, hogy az oldal végén megkapja a teljesen elkészített és kiszolgált kódot, de vigye magával, miközben a kódot kis részekre osztjuk, és megpróbáljuk elmagyarázni.
Most, hogy a fejlécfájl definiálva van, továbblépünk a változók deklarálásán, a kódban felhasználjuk a feszültség és az áram kiszámításához. Ezenkívül meg kell határoznunk azokat a csapokat, amelyeket az LCD meghajtásához használunk, és azokat a gombokat, amelyekkel PWM kimenetet adunk és leolvassuk a cellából és az ellenállásból származó analóg feszültségeket ebben a szakaszban.
#include
Most a beállítási részhez térünk: Ha az Arduino-t egész idő alatt a számítógépéhez akarja tartani, a Serial Monitor használatával figyelemmel kíséri az előrehaladást, és itt inicializálja az LCD képernyőt. Ezenkívül 3 másodpercig üdvözlő üzenetet jelenít meg a képernyőn: „Az akkumulátor kapacitásának tesztelő áramköre”.
void setup () {Soros.kezdés (9600); lcdbegin (16, 2); lcd.setCursor (0, 0); // Állítsa a kurzort az első oszlopra és az első sorra. lcd.print ("Akkumulátor kapacitása"); lcd.setCursor (0,1); lcd.print ("Tester áramkör"); késés (3000); lcd.clear (); }
Most nem kell az Arduino PWM tűt kimenetnek nyilvánítanunk, mivel az AnalogWrite függvény, amelyet a fő hurokban fogunk használni, gondoskodik erről a részről. Meg kell határoznia a kódban az adott csapra írandó PWM értéket. Óvatosan válassza ki a PWM értéket az alkalmazásához szükséges kisülési áramnak megfelelően. A túl sok PWM-érték nagy áramot eredményez, nagy feszültségeséssel a Li-Ion cellában, és a túl alacsony PWM-érték a cella magas kisütési idejét eredményezi. A fő hurokfunkcióban az A0 és A1 csapok feszültségét fogjuk olvasni, mivel az Arduino 10 bites ADC-vel rendelkezik, így 0-1023 közötti digitális kimeneti értékeket kell kapnunk, amelyeket vissza kell skáláznunk 0–5 V tartomány, megszorozva 5,0 / 1023,0 értékkel. Győződjön meg arról, hogy megfelelően mérte-e a feszültséget az Arduino Nano 5V és GND csapjai között kalibrált feszültségmérővel vagy multiméterrel, mivel a legtöbbször a szabályozott feszültség nem pontosan 5,0 V, és ennek a referenciafeszültségnek a kis különbsége is hibákat kúszik a feszültség leolvasásakor mérje meg a megfelelő feszültséget, és cserélje ki az 5.0 értéket a fent megadott szorzóban.
Most, hogy elmagyarázzuk a kód logikáját, folyamatosan mérjük a cella feszültségét, és ha a cella feszültsége meghaladja a kódban általunk megadott felső határt, akkor az LCD-n megjelenik a hibaüzenet, amely tájékoztatja Önt arról, hogy a cella túl van töltve, vagy valami nincs rendben a csatlakozással, és a MOSFET kapu csapjának tápellátása leáll, hogy áram ne áramolhasson át a terhelési ellenálláson. Döntő fontosságú, hogy először teljesen feltöltse a celláját, mielőtt csatlakoztatná a kapacitás tesztelő táblához, hogy kiszámíthassa a teljes töltőkapacitását.
analogWrite (MOSFET_Pin, PWM_VALUE); // beolvassa a bemenetet a 0 analóg csapon: int sensorValue_voltage_Cell = analogRead (A0); // Konvertálja az analóg értéket (amely 0-1023 között változik) feszültséggé (0-5V): úszófeszültség = érzékelőérték_feszültség_Cella * (5,08 / 1023,0); Soros.nyomtatás ("FESZÜLTSÉG:"); Soros.println (feszültség); // Itt a feszültséget a Serial Monitor lcd.setCursor (0, 0) nyomtatja; // Állítsa a kurzort az első oszlopra és az első sorra. lcd.print ("Feszültség:"); // Nyomtassa ki a feszültséget a képernyőn lcd.print (feszültség); késés (100); int sensorValue_Shunt_Resistor = analogRead (A1); úszófeszültség1 = sensorValue_Shunt_Resistor * (5,08 / 1023,0); úszóáram = feszültség1 / ellenállás; Serial.print ("Aktuális:"); Soros.println (aktuális); lcd.setCursor (0, 1);// Állítsa a kurzort az első oszlopra és a második sorra (a számlálás 0-tól kezdődik!). lcd.print ("Aktuális:"); lcd.print (aktuális);
Ha a cella feszültsége az általunk megadott felső és alsó feszültséghatáron belül van, akkor a Nano leolvassa az aktuális értéket a fent megadott módszerrel, és megszorozza a mérések során eltelt idővel, és eltárolja azt a kapacitás változóban, amelyet korábban definiáltunk mAh egységekben. Ez alatt az idő alatt a valós idejű áram- és feszültségértékek megjelennek a csatolt LCD-képernyőn, és ha szeretné, a soros monitoron is láthatja őket. A cella lemerülésének folyamata addig folytatódik, amíg a cella feszültsége el nem éri a program által általunk megadott alsó határt, majd a cella teljes kapacitása megjelenik az LCD képernyőn, és az ellenálláson átáramló áram a MOSFET kapu meghúzásával leáll. tű alacsony.
else if (feszültség> BAT_LOW && feszültség <BAT_HIGH) {// Ellenőrizze, hogy az akkumulátor feszültsége a biztonságos határon belül van-e millisPassed = millis () - előzőMillis; mA = áram * 1000,0; Kapacitás = Kapacitás + (mA * (millisPassed / 3600000.0)); // 1 óra = 3600000ms, hogy mAh egységekké alakítsuk előzőMillis = millis (); késés (1000); lcd.clear (); }
Pontosságjavítások
Ez mindenképpen elég jó módszer a feszültség és az áram leolvasására, de nem tökéletes. A tényleges feszültség és a mért ADC feszültség közötti kapcsolat nem lineáris, és ez némi hibát jelent a feszültségek és áramok mérésében.
Ha növelni szeretné az eredmény pontosságát, akkor meg kell ábrázolnia az ADC-értékeket, amelyeket különböző ismert feszültségforrások alkalmazásával kap egy grafikonra, majd tetszőleges módszerrel meg kell határoznia belőle a szorzóegyenletet. Így javul a pontosság, és nagyon közel kerül a tényleges eredményekhez.
Ezenkívül az általunk használt MOSFET nem logikai szintű MOSFET, ezért több mint 7 V-ra van szüksége az aktuális csatorna teljes bekapcsolásához, és ha közvetlenül 5 V-ot alkalmazunk rá, akkor az aktuális leolvasások pontatlanok lennének. De használhatja az IRL520N N-csatornás MOSFET logikai szintjét, hogy kiküszöbölje a 12 V-os tápfeszültség használatát, és közvetlenül működjön az 5 V-os logikai szintekkel, amelyek Arduino-jához vannak.
Az áramkör kiépítése és tesztelése
Most, amikor áramkörünk különböző szakaszait kenyérlapon terveztük és teszteltük, és miután megbizonyosodtunk arról, hogy mindegyik rendeltetésszerűen működik, egy Perfboardot használunk az összes alkatrész forrasztására, mivel ez sokkal professzionálisabb és megbízhatóbb módszer az áramkör tesztelésére. Ha akarja, megtervezheti saját NYÁK-ját az AutoCAD Eagle, az EasyEDA, a Proteus ARES vagy bármely más tetszetős szoftveren. Az Arduino Nano, a 16 × 2 alfanumerikus LCD és az LM741 OPAMP a Female Bergstikre van felszerelve, hogy később újra felhasználhatók legyenek.
12 V-os tápot biztosítottam egyenáramú csőcsatlakozón keresztül az állandó terhelésű áramkör számára, majd az LM7805 segítségével az 5 V-ot a Nano és az LCD képernyőhöz biztosítjuk. Most kapcsolja be az áramkört és állítsa be a trimmer edényt az LCD-képernyő kontrasztszintjének beállításához. Mostanra látnia kell az üdvözlő üzenetet az LCD-képernyőn, majd ha a cella feszültségszintje a működési tartományban van, akkor az áram - ott megjelenik az akkumulátor feszültsége és árama.
Ez egy nagyon alapvető teszt az Ön által használt cella kapacitásának kiszámításához, és javítható úgy, hogy az adatokat felveszi és Excel fájlba tárolja, hogy grafikus módszerekkel utólagos feldolgozást és vizualizációt végezzen. A mai adatközpontú világban ez a cella kisülési görbe felhasználható az akkumulátor pontos prediktív modelljeinek felépítésére, hogy szimulálja és lássa az akkumulátor válaszát terhelés alatt valós teszt nélkül, olyan szoftverek segítségével, mint az NI LabVIEW, a MATLAB Simulink stb. és még sok más alkalmazás vár rád. A projekt teljes működését az alábbi videóban találja meg. Ha bármilyen kérdése van a projekttel kapcsolatban, kérjük, írja meg őket az alábbi megjegyzés szakaszba, vagy használja fórumunkat. Menj és érezd jól magad, és ha akarod, az alábbi megjegyzések részben eligazíthatjuk, hogyan tovább haladhatsz innen. Addig Adios !!!