- Hvorfor har vi brug for en batterikapacitetstester?
- Komponenter, der kræves
- Arduino batterikapacitetstesterkredsløbsdiagram
- Arduino-program til måling af batterikapacitet
- Nøjagtighedsforbedringer
- Opbygning og test af kredsløbet
Med fremkomsten af teknologi bliver vores elektroniske gadgets og apparater mindre og mindre med mere funktionelle og komplekse applikationer. Med denne stigning i kompleksitet er strømkravet i kredsløbet også steget, og i vores søgen efter at gøre enheden så lille og så bærbar som muligt har vi brug for et batteri, der kan levere høj strøm i lang tid og på samme tid vejer meget mindre, så enheden skal forblive bærbar. Hvis du vil vide mere om batterier, kan du også læse denne artikel om grundlæggende terminologier for batteri.
Ud af mange forskellige typer tilgængelige batterier er blybatterier, Ni-Cd-batterier og Ni-MH-batterier ikke egnede, da de enten vejer mere eller ikke kan levere den strøm, der kræves til vores anvendelse, hvilket efterlader os med lithium-ion-batterierne som kan give høj strøm, samtidig med at vægten holdes lav og størrelse kompakt. Tidligere har vi også bygget et 18650 batterioplader og boostermodul og et IoT-baseret batteriovervågningssystem, du kan tjekke dem ud, hvis du er interesseret.
Hvorfor har vi brug for en batterikapacitetstester?
Der er mange batteriselskaber på markedet, der sælger de billige knock off-versioner af Li-ion-batterier, der hævder bizarre specifikationer med en meget lav pris, som er for god til at være sand. Når du køber disse celler, virker de slet ikke, eller hvis de gør det, er opladningskapaciteten eller strømmen så lav, at de slet ikke kan arbejde med applikationen. Så hvordan skal man teste et lithiumbatteri, hvis cellen ikke er en af disse billige knockoffs? En af metoderne er at måle den åbne kredsløbsspænding uden belastning og belastning, men dette er slet ikke pålideligt.
Så vi skal bygge en 18650 batterikapacitetstester til en Li-Ion 18650-celle, som aflader en fuldt opladet 18650-celle gennem en modstand, mens vi måler strømmen, der strømmer gennem modstanden for at beregne dens kapacitet. Hvis du ikke får den krævede batterikapacitet, mens cellespændingen er inden for de angivne grænser, er den celle defekt, og du skal ikke bruge den, da celleens opladningstilstand vil nedbrydes med en meget hurtig hastighed under belastning, hvilket skaber en lokal strømkreds, hvis den bruges i en batteripakke, hvilket resulterer i opvarmning og muligvis brand. Så lad os hoppe lige ind i det.
Komponenter, der kræves
- Arduino Nano
- 16 × 2 tegn LCD
- LM741 OPAMP IC
- 2,2Ω, 5Watt modstand
- 7805 Positiv spændingsregulator IC
- 12V strømforsyning
- 10 kΩ trimmerpotentiometer
- 0,47 uF kondensator
- 33kΩ modstand
- Jævnstrømsstikstikstik
- PCB-skrueterminaler
- IRF540N N-Channel Mosfet IC
- Perfboard
- Loddesæt
- Kølelegemer
Arduino batterikapacitetstesterkredsløbsdiagram
Det komplette kredsløbsdiagram for 18650 batterikapacitetstester er vist nedenfor. Forklaringen på kredsløbet er som følger-
Beregnings- og displayenhed:
Dette kredsløb er yderligere opdelt i to dele, for det første er en lav 5V forsyning til Arduino Nano og 16 × 2 alfanumerisk LCD-skærm og deres forbindelser for at vise resultaterne af strøm- og spændingsmålingerne i realtid. Kredsløbet drives af 12V strømforsyning ved hjælp af SMPS, eller du kan bruge et 12V batteri, såvel som den maksimale strøm vil være omkring 60-70mA til at tænde Arduino og LCD-skærmen.
For at reducere spændingen ned til 5V bruger vi en, som er en lineær spændingsregulator, der kan tage op til 35V og har brug for mindst 7,5V inputforsyning for at levere reguleret 5V-forsyning, og overskydende spænding spredes som varme, derfor hvis din input spænding LM7805 Voltage Regulator IC er mere end 12V, og overvej derefter at tilføje en køleplade, så den ikke bliver beskadiget. LCD'et drives af en 5V forsyning fra 7805 og er tilsluttet Arduino og arbejder i 4-bit tilstand. Vi har også tilføjet et 10k Ω viskerpotentiometer til at kontrollere kontrasten på LCD-skærmen.
Strømkreds med konstant belastning:
For det andet er det PWM-baserede konstante strømbelastningskredsløb for at gøre belastningsstrømmen, der strømmer gennem modstanden, styrbar af os og konstant, så der ikke er nogen fejl, der kryber ind på grund af strømvariation med tiden, når cellens spænding går ned. Den består af LM741 OPAMP IC og IRF540N N-Channel MOSFET, som styrer strømmen, der strømmer gennem MOSFET ved at tænde og slukke for MOSFET i henhold til det spændingsniveau, der er indstillet af os.
Op-amp fungerer i komparatortilstand,så i denne tilstand. output af op-amp vil være høj, når spændingen på den ikke-inverterende pin på op-amp er højere end den inverterende pin. Tilsvarende, hvis spændingen ved op-forstærkerens inverterende stift er højere end den ikke-inverterende stift, trækkes op-forstærkerens output ned. I det givne kredsløb styres det ikke-inverterende pin-spændingsniveau af D9 PWM-stiften på Arduino NANO, som skifter ved 500Hz frekvens, som derefter føres gennem lavpas RC-kredsløbsfilter med modstandsværdi 33kΩ og kondensator med en kapacitans på 0,47 uF, for at give et næsten konstant DC-signal ved den ikke-inverterende pin. Den inverterende stift er forbundet til belastningsmodstanden, som aflæser spændingen over modstanden og fælles GND. OPAMP's udgangsstift er forbundet til portterminalen på MOSFET for at tænde eller slukke for den.OPAMP vil forsøge at gøre spændingerne på begge dens terminaler lige ved at skifte MOSFET tilsluttet, så strømmen, der strømmer gennem modstanden, vil være proportional med PWM-værdien, du har indstillet ved D9-stiften på NANO. I dette projekt har den maksimale strøm, jeg har begrænset mit kredsløb til 1.3A, hvilket er rimeligt, da den celle, jeg har, er 10A, da den maksimale strømværdi
Spændingsmåling:
Den maksimale spænding en typisk fuldt opladet Li-Ion-celle er 4,1V til 4,3V, hvilket er mindre end 5V spændingsgrænsen for de analoge indgangsstifter på Arduino Nano, som har mere end 10kΩ intern modstand i sig, så vi direkte kan forbinde Cell til nogen af de analoge indgangsstifter uden at bekymre dig om strømmen, der strømmer gennem dem. Så i dette projekt er vi nødt til at måle spændingen i cellen, så vi kan bestemme, om cellen er i det korrekte spændingsdriftsområde, og om den er helt afladet eller ej.
Vi skal også måle strømmen, der flyder gennem modstanden, for at vi ikke kan bruge den aktuelle shunt, da kredsløbets kompleksitet vil stige, og stigende modstand i belastningsstien vil reducere celleudladningshastigheden. Brug af mindre shuntmodstande kræver et ekstra forstærkerkredsløb for at gøre spændingsaflæsningen, der kommer fra den, læsbar for Arduino.
Så vi læser direkte spændingen på tværs af belastningsmodstanden og deler derefter spændingen, der opnås med belastningsmodstandsværdien, ved hjælp af Ohms lov for at få strømmen til at strømme igennem den. Modstandens negative terminal er forbundet direkte til GND, så vi kan med sikkerhed antage, at den spænding, vi læser på modstanden, er spændingsfaldet i modstanden.
Arduino-program til måling af batterikapacitet
Efter at have færdiggjort hardwarekredsløbet, flytter vi til Arduino-programmering. Nu hvis du ikke har Arduino IDE installeret på din pc, hvad laver du her! Gå til det officielle Arduino-websted og download og installer Arduino IDE, eller du kan også kode i en hvilken som helst anden editor, men det er et emne for en anden dag, for nu holder vi os til Arduino IDE. Nu bruger vi Arduino Nano, så sørg for at du har valgt Arduino Nano-kortet ved at gå til TOOLS> BOARDS og vælge ARDUINO NANO der, vælg nu den rigtige processor, din nano har ved at gå til TOOLS> PROCESSORog mens du er der, skal du også vælge den port, din Arduino er tilsluttet på din pc. Vi bruger Arduino til at køre den 16 × 2 alfanumeriske LCD, der er tilsluttet den, og til at måle spændingen på cellen og strømmen, der strømmer gennem belastningsmodstanden som forklaret i det foregående afsnit, starter vi vores kode ved at erklære headerfiler til drev 16 × 2 Alfanumerisk LCD-skærm. Du kan springe dette afsnit over for at få den fuldt kogte og serverede kode i slutningen af siden, men hold med os, mens vi deler koden i små sektioner og prøver at forklare.
Nu hvor headerfilen er defineret, fortsætter vi med at erklære variablerne, vi bruger i koden til at beregne spænding og strøm. Vi er også nødt til at definere de ben, vi bruger til at drive LCD-skærmen, og de ben, vi vil bruge til at give PWM-output og læse de analoge spændinger, der kommer fra cellen og modstanden også i dette afsnit.
#omfatte
Kommer nu til installationsdelen, hvis du vil holde din Arduino tilsluttet til din pc hele tiden og overvåge fremskridtene ved hjælp af Serial Monitor og initialisere LCD-skærmen her. Det viser også en velkomstmeddelelse “Batterikapacitetstesterkredsløb” på skærmen i 3 sekunder.
ugyldig opsætning () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Indstil markøren på den første kolonne og første række. lcd.print ("Batterikapacitet"); lcd.setCursor (0,1); lcd.print ("Tester Circuit"); forsinkelse (3000); lcd.clear (); }
Nu behøver vi ikke at erklære Arduino PWM-stiften som output, da den AnalogWrite- funktion, vi skal bruge i vores hovedsløjfe, tager sig af denne del. Du skal definere den PWM-værdi, der skal skrives på den pin i koden. Vælg PWM-værdien omhyggeligt i henhold til den afladningsstrøm, der kræves i din applikation. For meget PWM-værdi vil resultere i høj strøm med et højt spændingsfald i Li-Ion-cellen, og for lav PWM-værdi vil resultere i høj afladningstid for cellen. I hovedsløjfefunktionen læser vi spændingerne på benene A0 og A1, da Arduino har en 10-bit ADC om bord, og derfor skal vi få digitale outputværdier fra 0-1023, som vi skal skalere tilbage til 0-5V rækkevidde ved at gange det med 5.0 / 1023.0. Sørg for at måle spændingen korrekt mellem 5V og GND-benene på Arduino Nano ved hjælp af et kalibreret voltmeter eller multimeter, da de fleste gange den regulerede spænding ikke er nøjagtigt 5,0V, og endda en lille forskel i denne referencespænding vil resultere i fejl, der kryber i spændingsaflæsningerne, så mål den korrekte spænding og udskift 5.0 i multiplikatoren angivet ovenfor.
For at forklare kodens logik måler vi kontinuerligt cellens spænding, og hvis cellens spænding er over den øvre grænse, der er angivet af os i koden, vises fejlmeddelelsen på LCD for at fortælle dig, om cellen er overopladet, eller der er noget galt med forbindelsen, og strømmen til MOSFET-portstiften stoppes, så der ikke kan strømme strøm gennem belastningsmodstanden. Det er afgørende, at du først oplader din celle, før du slutter den til kapacitetstesterkortet, så du kan beregne dens samlede ladekapacitet.
analogWrite (MOSFET_Pin, PWM_VALUE); // læs input på analog pin 0: int sensorValue_voltage_Cell = analogRead (A0); // Konverter den analoge aflæsning (som går fra 0 - 1023) til en spænding (0 - 5V): float voltage = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("SPÆNDING:"); Serial.println (spænding); // Her udskrives spændingen på Serial Monitor lcd.setCursor (0, 0); // Indstil markøren på den første kolonne og første række. lcd.print ("Spænding:"); // Udskriv spændingsaflæsningen på skærmen lcd.print (spænding); forsinkelse (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); flydestrøm = spænding1 / modstand; Serial.print ("Aktuel:"); Serial.println (nuværende); lcd.setCursor (0, 1);// Sæt markøren på den første kolonne og den anden række (optælling starter ved 0!). lcd.print ("Aktuel:"); lcd.print (nuværende);
Nu, hvis cellespændingen er inden for de øvre og nedre spændingsgrænser, der er specificeret af os, vil Nano læse strømværdien ved den ovenfor angivne metode og multiplicere den med den tid, der er gået under målingerne, og gemme den i den kapacitetsvariabel, vi definerede tidligere i mAh-enheder. I løbet af hele denne tid vises realtidsstrøm- og spændingsværdierne på den vedhæftede LCD-skærm, og hvis du vil, kan du også se dem på den serielle skærm. Processen med afladning af cellen fortsætter, indtil cellens spænding når under den nedre grænse, der er specificeret af os i programmet, og derefter vises den samlede kapacitet for cellen på LCD-skærmen, og strømmen gennem modstanden stoppes ved at trække i MOSFET-porten pin lav.
ellers hvis (spænding> BAT_LOW && spænding <BAT_HIGH) {// Kontroller, om batterispændingen er inden for den sikre grænse millisPassed = millis () - previousMillis; mA = strøm * 1000,0; Kapacitet = Kapacitet + (mA * (millisPassed / 3600000.0)); // 1 time = 3600000ms for at konvertere den til mAh-enheder previousMillis = millis (); forsinkelse (1000); lcd.clear (); }
Nøjagtighedsforbedringer
Det er under alle omstændigheder en god nok måde at læse spænding og strøm på, men det er ikke perfekt. Forholdet mellem den faktiske spænding og den målte ADC-spænding er ikke lineær, og dette vil udgøre en vis fejl i målingerne af spændinger og strømme.
Hvis du vil øge nøjagtigheden af resultatet, skal du plotte de ADC-værdier, du får ved at anvende forskellige kendte spændingskilder på en graf, og derefter bestemme multiplikatorligningen ud fra den ved hjælp af en hvilken som helst metode, du kan lide. På denne måde forbedres nøjagtigheden, og du kommer meget tæt på de faktiske resultater.
Den MOSFET, vi brugte, er heller ikke et MOSFET på logisk niveau, så det har brug for mere end 7V for at tænde den aktuelle kanal fuldt ud, og hvis vi anvender 5V direkte på den, ville de aktuelle aflæsninger være unøjagtige. Men du kan bruge et logisk niveau IRL520N N-Channel MOSFET til at eliminere brugen af en 12V forsyning og arbejde direkte med 5V logiske niveauer, du har med din Arduino.
Opbygning og test af kredsløbet
Når vi nu har designet og testet forskellige sektioner af vores kredsløb på et brødbræt, og efter at vi har sikret os, at de alle fungerer som beregnet, bruger vi et perfboard til at lodde alle komponenterne sammen, da det er en meget mere professionel og pålidelig metode til at teste kredsløbet. Hvis du vil, kan du designe dit eget printkort på AutoCAD Eagle, EasyEDA eller Proteus ARES eller anden software, du kan lide. Arduino Nano, 16 × 2 alfanumerisk LCD og LM741 OPAMP er monteret på Female Bergstik, så de kan genbruges senere.
Jeg har leveret en 12V forsyning gennem et DC Barrel Jack-stik til konstant belastningsstrømskredsløb og derefter med hjælp fra LM7805 leveres 5V til Nano- og LCD-skærmen. Tænd nu for kredsløbet, og juster trimmergryden for at indstille LCD-skærmens kontrastniveau. Du skal nu se velkomstmeddelelsen på LCD-skærmen, og hvis cellens spændingsniveau er inden for arbejdsområdet, så er den aktuelle -Spænding og strøm fra batteriet vises der.
Dette er en meget grundlæggende test for at beregne kapaciteten på den celle, du bruger, og den kan forbedres ved at tage dataene og gemme dem i en Excel-fil til at udføre databehandling og visualisering ved hjælp af grafiske metoder. I dagens datadrevne verden kan denne celleudladningskurve bruges til at opbygge nøjagtige forudsigelige modeller af batteriet til at simulere og se batteriets respons under belastningstilstand uden test i den virkelige verden ved hjælp af software som NI LabVIEW, MATLAB Simulink osv. og mange flere applikationer venter på dig. Du kan finde det komplette arbejde med dette projekt i videoen nedenfor. Hvis du har spørgsmål om dette projekt, bedes du skrive dem i kommentarfeltet nedenfor eller bruge vores fora. Gå og have det sjovt med det, og hvis du vil, kan vi guide dig i kommentarfeltet nedenfor om, hvordan du går videre herfra. Indtil da Adios !!!