- Varför behöver vi en testare för batterikapacitet?
- Komponenter krävs
- Arduino kretsschema för batterikapacitetstestare
- Arduino-program för att mäta batterikapacitet
- Förbättringar av noggrannhet
- Bygga och testa kretsen
Med tillkomsten av teknik blir våra elektroniska prylar och apparater mindre och mindre med mer funktionella och komplexa applikationer. Med denna ökade komplexitet har kretsens effektbehov också ökat och i vår strävan att göra enheten så liten och så bärbar som möjligt behöver vi ett batteri som kan ge hög ström under lång tid och samtidigt väga mycket mindre så att enheten ska förbli bärbar. Om du vill veta mer om batterier kan du också läsa den här artikeln om grundläggande terminologier för batteri.
Av många olika typer av tillgängliga batterier är blybatterier, Ni-Cd-batterier och Ni-MH-batterier inte lämpliga eftersom de antingen väger mer eller inte kan ge den ström som krävs för vår applikation, vilket ger oss litiumjonbatterierna vilket kan ge hög ström samtidigt som vikten är låg och kompakt storlek. Tidigare har vi också byggt en 18650 batteriladdare och boostermodul och ett IoT-baserat batteriövervakningssystem, du kan kolla in dem om du är intresserad.
Varför behöver vi en testare för batterikapacitet?
Det finns många batterileverantörer på marknaden som säljer billiga avstängningsversioner av Li-ion-batterier som hävdar bisarra specifikationer med ett mycket lågt pris som är för bra för att vara sant. När du köper dessa celler fungerar de antingen inte alls eller så är laddningskapaciteten eller strömflödet så lågt att de inte alls kan arbeta med applikationen. Så hur testar man ett litiumbatteri om cellen inte är en av dessa billiga knockoffs? En av metoderna är att mäta den öppna kretsspänningen utan belastning och belastning men det är inte alls tillförlitligt.
Så vi ska bygga en 18650 batterikapacitetstester för en Li-Ion 18650-cell som kommer att ladda ut en fulladdad 18650-cell genom ett motstånd medan vi mäter strömmen som strömmar genom motståndet för att beräkna dess kapacitet. Om du inte får den påstådda batterikapaciteten medan cellspänningen ligger inom de angivna gränserna, är den cellen felaktig och du bör inte använda den eftersom laddningstillståndet för cellen kommer att brytas ut med en mycket snabb hastighet under belastning, vilket skapar en lokal strömslinga om den används i ett batteripaket som leder till uppvärmning och eventuellt brand. Så låt oss hoppa direkt in i det.
Komponenter krävs
- Arduino Nano
- 16 × 2 tecken LCD
- LM741 OPAMP IC
- 2,2Ω, 5Watt motstånd
- 7805 Positiv spänningsregulator IC
- 12V strömförsörjning
- 10kΩ trimmerpotentiometer
- 0.47uF kondensator
- 33kΩ motstånd
- DC Power Barrel Jack-kontakt
- PCB-skruvterminaler
- IRF540N N-Channel Mosfet IC
- Perfboard
- Lödkit
- Värme sjunker
Arduino kretsschema för batterikapacitetstestare
Det fullständiga kretsschemat för 18650-batteriets kapacitetstestare visas nedan. Förklaringen till kretsen är som följer-
Beräknings- och displayenhet:
Denna krets är vidare uppdelad i två delar, den första är en låg 5V-matning för Arduino Nano och 16 × 2 alfanumerisk LCD-skärm och deras anslutningar för att visa resultaten av ström- och spänningsmätningar i realtid. Kretsen drivs av 12V strömförsörjning med SMPS eller så kan du använda ett 12V batteri såvida den maximala strömmen kommer att vara runt 60-70mA för att driva Arduino och LCD-skärmen.
För att sänka ner spänningen till 5V använder vi en som är en linjär spänningsregulator som kan ta upp till 35V och behöver minst 7,5V ingångsströmförsörjning för att tillhandahålla reglerad 5V-matning och överspänning försvinner som värme och därmed om din ingång spänning LM7805 Voltage Regulator IC är mer än 12V, överväg sedan att lägga till en kylfläns så att den inte skadas. LCD-skärmen drivs med en 5V-matning från 7805 och är ansluten till Arduino och fungerar i 4-bitars läge. Vi har också lagt till en 10k Ω torkarpotentiometer för att kontrollera kontrasten på LCD-skärmen.
Strömkrets med konstant belastning:
För det andra är den PWM-baserade konstantströmbelastningskretsen för att göra lastströmmen som strömmar genom motståndet styrbar av oss och konstant så att det inte finns något fel som kryper in på grund av strömvariation med tiden när cellens spänning går ner. Den består av LM741 OPAMP IC och IRF540N N-Channel MOSFET, som styr strömmen som flyter genom MOSFET genom att slå på och stänga av MOSFET enligt den spänningsnivå som vi har ställt in.
Op-amp fungerar i komparatorläget,så i det här läget. ut-förstärkarens utgång kommer att vara hög när spänningen på op-förstärkarens icke-inverterande stift är högre än inverteringsstiftet. På samma sätt, om spänningen vid op-förstärkarens inverterande stift är högre än den icke-inverterande stiftet, kommer ut-förstärkarens utgång att dras ner. I den givna kretsen styrs den icke-inverterande stiftets spänningsnivå av D9 PWM-stiftet på Arduino NANO, som växlar vid 500Hz frekvens som sedan passerar genom lågpass RC-kretsfilter med motståndsvärde 33kΩ och kondensator med en kapacitans på 0,47 uF, för att ge en nästan konstant likströmssignal vid den icke-inverterande stiftet. Det inverterande stiftet är anslutet till lastmotståndet, som avläser spänningen över motståndet och den gemensamma GND. OPAMP: s utgångsstift är ansluten till portterminalen på MOSFET för att slå PÅ eller AV.OPAMP kommer att försöka göra spänningarna på båda dess terminaler lika genom att byta MOSFET-ansluten så att strömmen som strömmar genom motståndet kommer att vara proportionell mot PWM-värdet du har ställt in på D9-stiftet på NANO. I det här projektet har den maximala strömmen, jag har begränsat min krets till 1,3A, vilket är rimligt eftersom cellen jag har är 10A som dess maximala strömvärde
Spänningsmätning:
Den maximala spänningen en typisk fulladdad Li-Ion-cell är 4,1V till 4,3V, vilket är mindre än 5V spänningsgränsen för de analoga ingångsstiften på Arduino Nano som har mer än 10kΩ internt motstånd i sig så att vi direkt kan ansluta Cell till någon av de analoga ingångsstiften utan att oroa dig för strömmen genom dem. Så i det här projektet måste vi mäta cellens spänning så att vi kan avgöra om cellen ligger i rätt spänningsområde och om den är helt urladdad eller inte.
Vi måste också mäta strömmen som strömmar genom motståndet för att vi inte kan använda ström shunt eftersom kretsens komplexitet kommer att öka och öka motståndet i lastvägen kommer att minska cellurladdningshastigheten. Att använda mindre shuntmotstånd kräver en ytterligare förstärkarkrets för att göra spänningsavläsningen från den, läsbar för Arduino.
Så vi läser direkt spänningen över belastningsmotståndet och delar sedan med Ohms lag den spänning som erhålls av lastmotståndsvärdet för att få strömmen att strömma genom den. Motståndets minuspol är ansluten direkt till GND, så vi kan säkert anta att spänningen vi läser på motståndet är spänningsfallet i motståndet.
Arduino-program för att mäta batterikapacitet
Nu efter att ha slutfört hårdvarukretsen flyttar vi till Arduino-programmering. Nu om du inte har Arduino IDE installerad på din dator, vad gör du här! Gå till den officiella Arduino-webbplatsen och ladda ner och installera Arduino IDE eller så kan du också koda i någon annan redigerare men det är ett ämne för en annan dag för nu håller vi oss till Arduino IDE. Nu använder vi Arduino Nano, så se till att du har valt Arduino Nano-kortet genom att gå till VERKTYG> BOARDS och välja ARDUINO NANO där, välj nu rätt processor som din nano har genom att gå till VERKTYG> PROCESSORoch medan du är där väljer du också porten som din Arduino är ansluten till på din dator. Vi använder Arduino för att driva den 16 × 2 alfanumeriska LCD-enheten som är ansluten till den och för att mäta cellens spänning och ström som strömmar genom lastmotståndet som förklaras i föregående avsnitt startar vi vår kod genom att förklara rubrikfilerna för att driva 16 × 2 Alfanumerisk LCD-skärm. Du kan hoppa över det här avsnittet för att få den helt kokta och serverade koden i slutet av sidan men ha med oss medan vi delar upp koden i små sektioner och försöker förklara.
Nu när rubrikfilen är definierad går vi vidare och deklarerar variablerna, vi kommer att använda i koden för att beräkna spänning och ström. Vi måste också definiera stiften vi använder för att driva LCD-skärmen och stiften vi kommer att använda för att ge PWM-utgång och läsa de analoga spänningarna som kommer från cellen och motståndet också i detta avsnitt.
#omfatta
Kommer nu till installationsdelen, Om du vill hålla din Arduino ansluten till din dator hela tiden och övervaka framstegen med Serial Monitor och initiera LCD-skärmen här. Det kommer också att visa ett välkomstmeddelande "Batterikapacitetstestkrets" på skärmen i 3 sekunder.
ogiltig installation () {Serial.begin (9600); lcd.begin (16, 2); lcd.setCursor (0, 0); // Ställ in markören på första kolumnen och första raden. lcd.print ("Batterikapacitet"); lcd.setCursor (0,1); lcd.print ("Tester Circuit"); fördröjning (3000); lcd.clear (); }
Nu behöver vi inte deklarera Arduino PWM-stiftet som utgång eftersom den AnalogWrite- funktion vi ska använda i vår huvudslinga tar hand om den här delen. Du måste definiera PWM-värdet som ska skrivas på den stiftet i koden. Välj PWM-värdet noggrant enligt den urladdningsström som krävs i din applikation. För mycket PWM-värde kommer att resultera i hög ström med högt spänningsfall i Li-Ion-cellen och för lågt PWM-värde kommer att resultera i hög urladdningstid för cellen. I huvudslingfunktionen läser vi spänningarna på stiften A0 och A1 eftersom Arduino har en 10-bitars ADC ombord, därför bör vi få digitala utgångsvärden från 0-1023 som vi måste skala tillbaka till 0-5V-intervall genom att multiplicera det med 5,0 / 1023,0. Se till att du mäter spänningen korrekt mellan 5V- och GND-stiften på Arduino Nano med en kalibrerad voltmeter eller multimeter eftersom de flesta gånger den reglerade spänningen inte är exakt 5,0V och till och med en liten skillnad i denna referensspänning skulle resultera i krypande fel i spänningsavläsningarna så mät rätt spänning och byt ut 5.0 i multiplikatorn ovan.
För att förklara kodens logik, mäter vi kontinuerligt cellens spänning och om cellspänningen är över den övre gränsen som anges i koden, visas felmeddelandet på LCD-skärmen så att du vet om cellen är överladdad eller det är något fel på anslutningen och strömmen till MOSFET-grindstiftet stoppas så att ingen ström kan strömma genom lastmotståndet. Det är viktigt att du först laddar din cell helt innan du ansluter den till kapacitetstesterkortet så att du kan beräkna dess totala laddningskapacitet.
analogWrite (MOSFET_Pin, PWM_VALUE); // läs ingången på den analoga stift 0: int sensorValue_voltage_Cell = analogRead (A0); // Konvertera den analoga mätningen (som går från 0 - 1023) till en spänning (0 - 5V): flottörspänning = sensorValue_voltage_Cell * (5.08 / 1023.0); Serial.print ("VOLTAGE:"); Serial.println (spänning); // Här skrivs spänningen ut på Serial Monitor lcd.setCursor (0, 0); // Ställ in markören på första kolumnen och första raden. lcd.print ("Voltage:"); // Skriv ut spänningsavläsningen på skärmen lcd.print (spänning); fördröjning (100); int sensorValue_Shunt_Resistor = analogRead (A1); float voltage1 = sensorValue_Shunt_Resistor * (5.08 / 1023.0); flytström = spänning1 / motstånd; Serial.print ("Aktuellt:"); Serial.println (aktuell); lcd.setCursor (0, 1);// Ställ markören på den första kolumnen och den andra raden (räkningen börjar vid 0!). lcd.print ("Aktuell:"); lcd.print (aktuell);
Om cellspänningen nu ligger inom de övre och nedre spänningsgränserna som anges av oss kommer Nano att läsa strömvärdet enligt metoden som anges ovan och multiplicera det med tiden som gått under mätningarna och lagra det i den kapacitetsvariabel som vi definierade tidigare i mAh-enheter. Under hela denna tid visas realtidsströmmen och spänningsvärdena på den bifogade LCD-skärmen, och om du vill kan du också se dem på den seriella bildskärmen. Processen för urladdning av cellen fortsätter tills cellens spänning når under den nedre gräns som vi har angett i programmet och sedan visas cellens totala kapacitet på LCD-skärmen och strömflödet genom motståndet stoppas genom att dra i MOSFET-grinden stift låg.
annars om (spänning> BAT_LOW && spänning <BAT_HIGH) {// Kontrollera om batterispänningen ligger inom den säkra gränsen millisPassed = millis () - previousMillis; mA = ström * 1000,0; Kapacitet = Kapacitet + (mA * (millisPassed / 3600000.0)); // 1 timme = 3600000 ms för att konvertera den till mAh-enheter tidigare Millis = millis (); fördröjning (1000); lcd.clear (); }
Förbättringar av noggrannhet
Det är i alla fall ett tillräckligt bra sätt att läsa spänning och ström, men det är inte perfekt. Förhållandet mellan den faktiska spänningen och den uppmätta ADC-spänningen är inte linjär och detta kommer att uppgå till något fel i mätningarna av spänningar och strömmar.
Om du vill öka noggrannheten i resultatet måste du plotta ADC-värdena du får genom att använda olika kända spänningskällor i en graf och sedan bestämma multiplikatorekvationen från den med vilken metod du vill. På detta sätt förbättras noggrannheten och du kommer mycket nära de faktiska resultaten.
Den MOSFET som vi använde är inte heller en MOSFET på logisk nivå, så det behöver mer än 7V för att slå på den aktuella kanalen helt och om vi applicerar 5V direkt på den skulle de aktuella avläsningarna vara felaktiga. Men du kan använda en logisk nivå IRL520N N-Channel MOSFET för att eliminera användningen av en 12V-försörjning och direkt arbeta med 5V-logiknivåer du har med din Arduino.
Bygga och testa kretsen
Nu när vi designade och testade olika delar av vår krets på en bräda och efter att ha sett till att alla fungerar som avsett använder vi en Perfboard för att lödda alla komponenter tillsammans eftersom det är en mycket mer professionell och pålitlig metod för att testa kretsen. Om du vill kan du designa din egen PCB på AutoCAD Eagle, EasyEDA eller Proteus ARES eller någon annan programvara du gillar. Arduino Nano, 16 × 2 alfanumerisk LCD och LM741 OPAMP är monterade på Female Bergstik så att de kan återanvändas senare.
Jag har tillhandahållit en 12V strömförsörjning via en DC Barrel Jack-kontakt för konstant belastningsströmkrets och sedan med hjälp av LM7805 tillhandahålls 5V för Nano- och LCD-skärmen. Starta nu kretsen och justera trimmerpotten för att ställa in LCD-skärmens kontrastnivå. Du bör se välkomstmeddelandet på LCD-skärmen nu, och om cellens spänningsnivå ligger inom arbetsområdet, då är strömmen -Spänning och ström från batteriet visas där.
Detta är ett mycket grundläggande test för att beräkna kapaciteten för den cell du använder och det kan förbättras genom att ta data och lagra den i en Excel-fil för att göra efter databearbetning och visualisering med grafiska metoder. I dagens datadrivna värld kan denna urladdningskurva användas för att bygga exakta förutsägbara modeller av batteriet för att simulera och se batteriets svar under laddningsförhållanden utan verklig testning med programvara som NI LabVIEW, MATLAB Simulink, etc och mycket fler applikationer väntar på dig. Du kan hitta det fullständiga arbetet med detta projekt i videon nedan. Om du har några frågor om detta projekt, skriv dem i kommentarfältet nedan eller använd våra forum. Gå och ha kul med det och om du vill kan vi vägleda dig i kommentarfältet nedan om hur du går vidare härifrån. Fram till dess Adios !!!