- Hvorfor trenger vi en tester for batterikapasitet?
- Komponenter kreves
- Arduino batterikapasitetstester kretsdiagram
- Arduino-program for å måle batterikapasitet
- Nøyaktighetsforbedringer
- Bygge og teste kretsen
Med fremkomsten av teknologi blir våre elektroniske apparater og apparater mindre og mindre med mer funksjonelle og komplekse applikasjoner. Med denne økningen i kompleksitet har strømbehovet til kretsen også økt, og i vår søken etter å gjøre enheten så liten og så bærbar som mulig, trenger vi et batteri som kan gi høy strøm i lang tid og samtidig veie mye mindre slik at enheten skal være bærbar. Hvis du vil vite mer om batterier, kan du også lese denne artikkelen om grunnleggende terminologier for batteri.
Av mange forskjellige typer batterier er blybatterier, Ni-Cd-batterier og Ni-MH-batterier ikke egnet, da de enten veier mer eller ikke kan gi strømmen som kreves for vår applikasjon, dette gir oss litiumionbatteriene som kan gi høy strøm mens du holder vekten lav og størrelse kompakt. Tidligere har vi også bygget en 18650 batterilader og boostermodul og et IoT-basert batteriovervåkningssystem, du kan sjekke dem ut hvis du er interessert.
Hvorfor trenger vi en tester for batterikapasitet?
Det er mange batteriselskaper i markedet som selger billige avfallsversjoner av Li-ion-batterier som hevder bisarre spesifikasjoner med en veldig lav pris som er for god til å være sant. Når du kjøper disse cellene, fungerer de ikke i det hele tatt, eller hvis de gjør det, er ladekapasiteten eller strømmen så lav at de ikke kan jobbe med applikasjonen i det hele tatt. Så hvordan skal jeg teste et litiumbatteri hvis cellen ikke er en av disse billige knockoffene? En av metodene er å måle spenningen med åpen krets uten belastning og belastning, men dette er ikke pålitelig.
Så vi skal bygge en 18650 batterikapasitetstester for en Li-Ion 18650-celle som vil lade ut en fulladet 18650-celle gjennom en motstand mens vi måler strømmen som strømmer gjennom motstanden for å beregne kapasiteten. Hvis du ikke får den påkrevde batterikapasiteten mens cellespenningen er innenfor de angitte grensene, er den cellen feil, og du bør ikke bruke den da ladetilstanden til cellen vil tømmes med en veldig rask hastighet under belastning, og skaper en lokalstrømsløyfe hvis den brukes i en batteripakke som resulterer i oppvarming og muligens brann. Så la oss hoppe rett inn i det.
Komponenter kreves
- Arduino Nano
- 16 × 2 tegn LCD
- LM741 OPAMP IC
- 2,2 Ω, 5 watt motstand
- 7805 Positiv spenningsregulator IC
- 12V strømforsyning
- 10kΩ trimmerpotensiometer
- 0.47uF kondensator
- 33kΩ motstand
- DC Power Barrel Jack-kontakt
- PCB-skrueterminaler
- IRF540N N-Channel Mosfet IC
- Perfboard
- Loddesett
- Varmeavleder
Arduino batterikapasitetstester kretsdiagram
Det komplette kretsskjemaet for 18650 batterikapasitetstester er vist nedenfor. Forklaringen på kretsen er som følger-
Beregnings- og displayenhet:
Denne kretsen er videre delt inn i to deler, den første er en lav 5V-forsyning for Arduino Nano og 16 × 2 alfanumerisk LCD-skjerm og deres tilkoblinger for å vise resultatene av strøm- og spenningsmålingene i sanntid. Kretsen drives av 12V strømforsyning ved hjelp av SMPS, eller du kan bruke et 12V batteri, i tillegg til at den maksimale strømmen vil være rundt 60-70mA for å drive Arduino og LCD-skjermen.
For å trappe ned spenningen ned til 5V, vil vi bruke en som er en lineær spenningsregulator som kan ta opptil 35V og trenger minst 7,5V inngangsforsyning for å gi regulert 5V forsyning og overspenning blir spredt som varme derav hvis inngangen din spenning LM7805 Voltage Regulator IC er mer enn 12V, og deretter vurdere å legge til en varmeavleder slik at den ikke blir skadet. LCD-skjermen drives av en 5V-forsyning fra 7805 og er koblet til Arduino og fungerer i 4-biters modus. Vi har også lagt til et 10k Ω viskerpotensiometer for å kontrollere kontrasten til LCD-skjermen.
Strømkrets for konstant belastning:
For det andre er den PWM-baserte konstantstrømbelastningskretsen for å gjøre belastningsstrømmen som strømmer gjennom motstanden kontrollerbar av oss og konstant, slik at det ikke er noen feil som kryper inn på grunn av strømvariasjon med tiden når cellens spenning går ned. Den består av LM741 OPAMP IC og IRF540N N-Channel MOSFET, som styrer strømmen som strømmer gjennom MOSFET ved å slå MOSFET PÅ og AV i henhold til spenningsnivået som er angitt av oss.
Op-amp fungerer i komparatormodus,så i denne modusen. utgangen fra op-amp vil være høy når spenningen til den ikke-inverterende pinnen på op-amp er høyere enn den inverterende pin. På samme måte, hvis spenningen ved inverteringspinnen til op-amp er høyere enn den non-inverterende pin, vil utgangen fra op-amp bli trukket ned. I den gitte kretsen styres det ikke-inverterende pin-spenningsnivået av D9 PWM-pinnen til Arduino NANO, som bytter ved 500Hz frekvens som deretter føres gjennom lavpass RC-kretsfilter med motstandsverdi 33kΩ og kondensator med en kapasitans på 0,47 uF, for å gi et nesten konstant DC-signal ved den ikke-inverterende pinnen. Den inverterende stiften er koblet til lastmotstanden, som leser spenningen over motstanden og vanlig GND. Utgangspinnen til OPAMP er koblet til portterminalen til MOSFET for å slå den PÅ eller AV.OPAMP vil prøve å gjøre spenningene på begge terminalene like ved å bytte MOSFET-tilkoblet slik at strømmen som strømmer gjennom motstanden vil være proporsjonal med PWM-verdien du har satt ved D9-stiften til NANO. I dette prosjektet, den maksimale strømmen, har jeg begrenset kretsen min til er 1.3A, noe som er rimelig da cellen jeg har er 10A som sin maksimale strømstyrke
Spenningsmåling:
Maksimal spenning en typisk fulladet Li-Ion-celle er 4,1V til 4,3V, som er mindre enn 5V spenningsgrensen for de analoge inngangspinnene til Arduino Nano, som har mer enn 10kΩ intern motstand i seg, slik at vi kan koble direkte til Cell til noen av de analoge inngangspinnene uten å bekymre deg for strømmen som strømmer gjennom dem. Så i dette prosjektet må vi måle spenningen til cellen slik at vi kan bestemme om cellen er i riktig spenningsområdet og om den er helt utladet eller ikke.
Vi må også måle strømmen som strømmer gjennom motstanden for at vi ikke kan bruke strømforsyningen, da kretsens kompleksitet vil øke og øke motstanden i lastbanen vil redusere celleutladningshastigheten. Bruk av mindre shuntmotstander vil kreve en ekstra forsterkerkrets for å gjøre spenningsavlesningen som kommer fra den, lesbar for Arduino.
Så vi leser spenningen direkte over lastmotstanden og deler deretter spenningen oppnådd av lastmotstandsverdien for å få strømmen til å strømme gjennom den. Motstandens negative terminal er koblet direkte til GND, så vi kan trygt anta at spenningen vi leser på motstanden er spenningsfallet i motstanden.
Arduino-program for å måle batterikapasitet
Nå etter å ha fullført maskinvarekretsen, flytter vi til Arduino-programmering. Nå hvis du ikke har Arduino IDE installert på PCen din, hva gjør du her! Gå til det offisielle Arduino-nettstedet og last ned og installer Arduino IDE, eller du kan også kode i en hvilken som helst annen redaktør, men det er et emne for en annen dag, for nå holder vi oss til Arduino IDE. Nå bruker vi Arduino Nano, så sørg for at du har valgt Arduino Nano-kortet ved å gå til VERKTØY> STYRER og velge ARDUINO NANO der, velg nå riktig prosessor som din nano har ved å gå til VERKTØY> PROSESSORog mens du er der, velg også porten din Arduino er koblet til på din PC. Vi bruker Arduino til å kjøre den 16 × 2 alfanumeriske LCD-skjermen som er koblet til den, og for å måle spenningen til cellen og strømmen som strømmer gjennom lastmotstanden som forklart i forrige avsnitt, starter vi koden vår ved å erklære topptekstfilene for å kjøre 16 × 2 Alfanumerisk LCD-skjerm. Du kan hoppe over denne delen for å få den ferdig tilberedte og serverte koden på slutten av siden, men ha med oss mens vi deler koden i små seksjoner og prøver å forklare.
Nå som overskriftsfilen er definert, fortsetter vi med å deklarere variablene, vi bruker i koden for å beregne spenning og strøm. Vi må også definere pinnene vi bruker for å drive LCD-skjermen og pinnene vi skal bruke for å gi PWM-utgang og lese de analoge spenningene som kommer fra cellen og motstanden også i denne delen.
#inkludere
Kommer nå til installasjonsdelen. Hvis du vil holde Arduino koblet til PC-en hele tiden og overvåke fremdriften ved hjelp av Serial Monitor og initialisere LCD-skjermen her. Det vil også vise en velkomstmelding “Batterikapasitetstesterkrets” på skjermen i 3 sekunder.
ugyldig oppsett () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Sett markøren på første kolonne og første rad. lcd.print ("Batterikapasitet"); lcd.setCursor (0,1); lcd.print ("Tester Circuit"); forsinkelse (3000); lcd.clear (); }
Nå trenger vi ikke å erklære Arduino PWM-pinnen som utgang som AnalogWrite- funksjonen vi skal bruke i vår hovedsløyfe tar seg av denne delen. Du trenger å definere PWM-verdien som skal skrives på den pin i koden. Velg PWM-verdien nøye i henhold til utladningsstrømmen som kreves i applikasjonen. For mye PWM-verdi vil føre til høy strøm med høyt spenningsfall i Li-Ion-cellen, og for lav PWM-verdi vil føre til høy utladningstid for cellen. I hovedsløyfefunksjonen vil vi lese spenningene på pinnene A0 og A1, ettersom Arduino har en 10-bit ADC om bord, og derfor bør vi få digitale utgangsverdier fra 0-1023 som vi må skalere tilbake til 0-5V rekkevidde ved å multiplisere den med 5.0 / 1023.0. Forsikre deg om at du måler spenningen riktig mellom 5V- og GND-pinnene på Arduino Nano ved hjelp av et kalibrert voltmeter eller multimeter, ettersom de fleste ganger den regulerte spenningen ikke er nøyaktig 5,0V, og til og med en liten forskjell i denne referansespenningen vil føre til at feil kryper i spenningsavlesningene må du måle riktig spenning og erstatte 5.0 i multiplikatoren gitt ovenfor.
For å forklare kodens logikk, måler vi kontinuerlig cellens spenning, og hvis cellespenningen er over den øvre grensen som er angitt av oss i koden, vises feilmeldingen på LCD-skjermen for å fortelle deg om cellen er overladet eller det er noe galt med tilkoblingen, og strømmen til MOSFET-portpinnen stoppes slik at ingen strøm kan strømme gjennom lastmotstanden. Det er viktig at du først lader cellen din før du kobler den til kapasitetstesterkortet, slik at du kan beregne den totale ladekapasiteten.
analogWrite (MOSFET_Pin, PWM_VALUE); // les inngangen på analog pin 0: int sensorValue_voltage_Cell = analogRead (A0); // Konverter den analoge avlesningen (som går fra 0 - 1023) til en spenning (0 - 5V): flytespenning = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAGE:"); Serial.println (spenning); // Her skrives spenningen ut på Serial Monitor lcd.setCursor (0, 0); // Sett markøren på første kolonne og første rad. lcd.print ("Voltage:"); // Skriv ut spenningsavlesningen på skjermen lcd.print (spenning); forsinkelse (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); flytstrøm = voltage1 / Resistor; Serial.print ("Gjeldende:"); Serial.println (nåværende); lcd.setCursor (0, 1);// Sett markøren på den første kolonnen og den andre raden (telling starter ved 0!). lcd.print ("Gjeldende:"); lcd.print (gjeldende);
Nå, hvis cellespenningen er innenfor de øvre og nedre spenningsgrensene som er spesifisert av oss, vil Nano lese gjeldende verdi etter metoden som er angitt ovenfor og multiplisere den med tiden som er gått under målingene og lagre den i kapasitetsvariabelen vi definerte tidligere i mAh-enheter. I løpet av hele denne tiden vises sanntidsstrøm- og spenningsverdiene på LCD-skjermen som er festet, og hvis du vil, kan du også se dem på seriell skjerm. Prosessen med å tømme cellen vil fortsette til cellens spenning når under den nedre grensen som er angitt av oss i programmet, og deretter vises den totale kapasiteten til cellen på LCD-skjermen og strømmen gjennom motstanden stoppes ved å trekke i MOSFET-porten pin lav.
annet hvis (spenning> BAT_LOW && spenning <BAT_HIGH) {// Sjekk om batterispenningen er innenfor sikker grense millisPassed = millis () - previousMillis; mA = strøm * 1000,0; Kapasitet = Kapasitet + (mA * (millisPassed / 3600000.0)); // 1 Time = 3600000ms for å konvertere den til mAh-enheter previousMillis = millis (); forsinkelse (1000); lcd.clear (); }
Nøyaktighetsforbedringer
Det er i det hele tatt en god nok måte å lese spenning og strøm på, men det er ikke perfekt. Forholdet mellom den faktiske spenningen og den målte ADC-spenningen er ikke lineær, og dette vil utgjøre en feil i målingene av spenning og strøm.
Hvis du vil øke nøyaktigheten av resultatet, må du plotte ADC-verdiene du får ved å bruke forskjellige kjente spenningskilder på en graf og deretter bestemme multiplikatorligningen fra den ved å bruke hvilken som helst metode du vil. På denne måten blir nøyaktigheten forbedret, og du kommer veldig nær de faktiske resultatene.
Dessuten er MOSFET vi brukte ikke et MOSFET på logisk nivå, så det trenger mer enn 7V for å slå på den nåværende kanalen fullt ut, og hvis vi bruker 5V direkte på den, vil de aktuelle avlesningene være unøyaktige. Men du kan bruke et logikknivå IRL520N N-Channel MOSFET for å eliminere bruken av en 12V forsyning og jobbe direkte med 5V logiske nivåer du har med Arduino.
Bygge og teste kretsen
Nå som vi designet og testet forskjellige deler av kretsen vår på et brødbrett og etter å ha forsikret oss om at alle fungerer som beregnet, bruker vi Perfboard til å lodde alle komponentene sammen, da det er en mye mer profesjonell og pålitelig metode for å teste kretsen.. Hvis du vil, kan du designe din egen PCB på AutoCAD Eagle, EasyEDA eller Proteus ARES eller annen programvare du liker. Arduino Nano, 16 × 2 alfanumerisk LCD og LM741 OPAMP er montert på Female Bergstik slik at de kan gjenbrukes senere.
Jeg har levert en 12V forsyning gjennom en DC Barrel Jack-kontakt for konstant belastningsstrømkrets, og deretter med hjelp av LM7805, er 5V for Nano og LCD-skjermen tilgjengelig. Strøm nå kretsen og juster trimmerpotten for å stille inn kontrastnivået på LCD-skjermen. Du bør se velkomstmeldingen på LCD-skjermen nå, og så hvis spenningsnivået til cellen er i arbeidsområdet, så er gjeldende -Spenning og strøm fra batteriet vises der.
Dette er en veldig grunnleggende test for å beregne kapasiteten til cellen du bruker, og den kan forbedres ved å ta dataene og lagre dem i en Excel-fil for å utføre databehandling og visualisering etter grafiske metoder. I dagens datadrevne verden kan denne celleutladningskurven brukes til å bygge nøyaktige prediktive modeller av batteriet for å simulere og se responsen til batteriet under belastningstilstand uten å teste den virkelige verden ved å bruke programvare som NI LabVIEW, MATLAB Simulink, etc og mange flere applikasjoner venter på deg. Du kan finne fullstendig bearbeiding av dette prosjektet i videoen nedenfor. Hvis du har spørsmål om dette prosjektet, kan du skrive dem i kommentarfeltet nedenfor eller bruke forumene våre. Gå og ha det gøy med det, og hvis du vil, kan vi veilede deg i kommentarfeltet nedenfor om hvordan du går videre herfra. Inntil da Adios !!!