- Mäta individuell cellspänning i en serie batteristack
- Differentialkrets för att mäta individuell cellspänning
- Kretsschema
- PCB-design och tillverkning med Easy EDA
- Beräkning och beställning av prover online
- Testa spänningsövervakningskretsen
- Mätning av litiumcellspänning med Arduino
- Programmering av Arduino
- Individuell cellspänningsdisplay fungerar
Körsträckan och prestandan för ett elfordon beror på kapaciteten och effektiviteten i dess batteripaket. Att hålla batteripaketet helt hälsosamt är batterihanteringssystemet (BMS). En BMS är en sofistikerad enhet i en EV som gör mycket aktivitet som att övervaka cellerna, balansera dem och till och med skydda dem från temperaturförändringar. Vi har redan lärt oss nog av det i den här artikeln om batterihantering, så kolla in dem om du är ny här.
För att göra vad som helst är det första steget för BMS att känna till den aktuella statusen för cellerna i litiumbatteripaketet. Detta görs genom att mäta spänningen och strömmen (ibland också temperaturen) hos cellerna i förpackningen. Bara med dessa två värden kunde BMS beräkna SOC eller SOH och utföra cellbalansering osv. Så att mäta cellens spänning och ström är avgörande för alla BMS-kretsar, vare sig det är ett enkelt powerbank- eller laptopbatteri eller så komplicerat paket som EV / Solbatterier.
I den här artikeln lär vi oss hur vi kan mäta den individuella cellspänningen för cellerna som används i ett litiumbatteripaket. För detta projekts skull kommer vi att använda fyra litium 18650-celler kopplade i serie för att bilda ett batteripaket och utforma en enkel krets med hjälp av op-förstärkare för att mäta de enskilda cellspänningarna och visa den på en LCD-skärm med Arduino.
Mäta individuell cellspänning i en serie batteristack
Problemet med att mäta individuell cellspänning i ett serie seriekopplade batterier är att referenspunkten är densamma. Bilden nedan illustrerar detsamma
För enkelhetens skull antar vi att alla fyra cellerna har en spänningsnivå på 4V som visas ovan. Om vi nu använder en mikrokontroller som Arduino för att mäta cellspänningen, kommer vi att ha några problem att mäta spänningen i en st cell eftersom den har den andra änden ansluten till jord. Men för de andra cellerna måste vi mäta spänningen i den cellen tillsammans med de tidigare cellerna, till exempel när vi mäter spänningen i 4: e cellen kommer vi att mäta spänningen för alla fyra cellerna tillsammans. Detta beror på att referenspunkten inte kan ändras från marken.
Så vi måste införa lite extra krets här som kan hjälpa oss att mäta de enskilda spänningarna. På grovt sätt är att använda en potentiell avdelare för att kartlägga spänningsnivåerna och sedan mäta dem, men denna metod kommer att minska upplösningen på läsvärdet till mer än 0,1V. Därför kommer vi i denna handledning att använda Op-Amp Differential Circuit för att mäta skillnaden mellan varje cellterminal för att mäta individuell spänning.
Differentialkrets för att mäta individuell cellspänning
Vi känner redan till en Op-Amp när vi arbetar som en differentiell förstärkare ger skillnaden mellan de två spänningsvärdena som ges till dess inverterande och icke-inverterande stift. Så för vårt syfte att mäta 4 cellspänningar behöver vi tre differentiella op-förstärkare som visas nedan.
Observera att den här bilden endast är för representation; den faktiska kretsen behöver fler komponenter och kommer att diskuteras senare i den här artikeln. Den första op-amp O1 mäter spänningen i den andra cellen genom att beräkna skillnaden mellan den andra cellterminalen och den första cellterminalen som är (8-4). På liknande sätt Op-amp O2 och O3 mäter 3 : e och 4 : e cellspänningen respektive. Vi har inte använt en op-förstärkare för en st cellen eftersom det kan mätas direkt.
Kretsschema
Det fullständiga kretsschemat för övervakning av multicellspänning i litiumbatteripaket ges nedan. Kretsen designades med EasyEDA och vi kommer att använda samma för att tillverka vår PCB också.
Som du kan se har vi två fyrpaketskena till skena Högspännings-förstärkare OPA4197 i vår krets båda drivs av den totala packningsspänningen. En IC (U1) används som en buffertkrets, alias spänningsföljare, medan den andra IC (U2) används för att bilda differentiell förstärkarkrets. En buffertkrets krävs för att förhindra att någon av cellerna laddas individuellt, vilket inte är någon ström som ska konsumeras från en enda cell utan bara bildar paketet som helhet. Eftersom buffertkretsen har mycket hög ingångsimpedans kan vi läsa av spänningen från cellen utan att dra ström från den.
Alla de fyra op-förstärkarna i IC U1 används för att buffra spänningen i de fyra cellerna. Ingångsspänningarna från cellerna är märkta från B1 + till B4 + och den buffrade utspänningen är märkt från B1_Out till B4_Out. Denna buffrade spänning skickas sedan till differentiaförstärkaren för att mäta den individuella cellspänningen som diskuterats ovan. Värdet på hela motståndet är inställt på 1K eftersom förstärkaren hos differentialförstärkaren är inställd på enhet. Du kan använda vilket motståndsvärde som helst, men alla ska ha samma värde, förutom motstånden R13 och R14. Dessa två motstånd bildar en potentialdelare för att mäta batteriets packspänning så att vi kan jämföra det med summan av uppmätta cellspänningar.
Rail to Rail, högspänning Op-Amp
Ovanstående krets kräver att du använder en Rail to Rail högspännings-förstärkare som OPA4197 av två skäl. Både Op-Amp IC arbetar med en packningsspänning som är högst (4,3 * 4) 17,2V, varför Op-amp bör kunna hantera höga spänningar. Eftersom vi använder en buffertkrets bör buffertens utgång vara lika med packningsspänningen för den fjärde cellterminalen, vilket innebär att utspänningen ska vara lika med driftspänningen för op-amp, därför måste vi använda en skena för att Rälsförstärkare
Om du inte hittar en järnväg för att skena op-amp kan du byta ut IC mot enkel LM324. Denna IC kan hantera högspänning men kan inte fungera som järnväg till järnväg, så du måste använda ett uppdragsmotstånd på 10k på den första stiftet på U1 Op-Amp IC.
PCB-design och tillverkning med Easy EDA
Nu när vår krets är klar är det dags att fabrikera den. Eftersom Op-Amp jag använder är endast tillgänglig i SMD-paket var jag tvungen att tillverka ett kretskort för min krets. Så som alltid har vi använt EDA-verktyget online som heter EasyEDA för att få våra PCB-tillverkade eftersom det är väldigt bekvämt att använda eftersom det har en bra samling fotavtryck och det är öppen källkod.
Efter att ha designat kretskortet kan vi beställa kretskortproverna med deras billiga tjänster för tillverkning av kretskort. De erbjuder också komponentinköpstjänster där de har ett stort lager av elektroniska komponenter och användare kan beställa sina nödvändiga komponenter tillsammans med PCB-ordern.
När du designar dina kretsar och kretskort kan du också göra din krets- och kretskortsdesign offentlig så att andra användare kan kopiera eller redigera dem och dra nytta av ditt arbete, vi har också gjort hela krets- och kretskortlayouterna offentliga för den här kretsen, kolla nedanstående länk:
easyeda.com/CircuitDigest/Multicell-Voltage-measuring-for-BMS
Du kan se vilket lager som helst (Top, Bottom, Topsilk, bottomsilk etc) på kretskortet genom att välja lagret från "Layers" -fönstret. Nyligen har de också introducerat ett 3D-visningsalternativ så att du också kan se multicell-spänningsmätningskretskortet för hur det kommer att se ut efter tillverkning med hjälp av knappen 3D View i EasyEDA:
Beräkning och beställning av prover online
Efter avslutad utformningen av denna litiumcell Spänning mätkrets kan du beställa PCB genom JLCPCB.com. För att beställa PCB från JLCPCB behöver du Gerber File. För att ladda ner Gerber-filer på din PCB klickar du bara på knappen Generate Fabrication File på EasyEDA-redigeringssidan och laddar sedan ner Gerber-filen därifrån eller så kan du klicka på Order at JLCPCB som visas i bilden nedan. Detta kommer att omdirigera dig till JLCPCB.com, där du kan välja antalet PCB du vill beställa, hur många kopparlager du behöver, PCB-tjockleken, kopparvikten och till och med PCB-färgen, som ögonblicksbilden som visas nedan:
Efter att ha klickat på beställning vid JLCPCB-knappen kommer det att ta dig till JLCPCB-webbplats där du kan beställa valfri PCB i mycket lågt pris, vilket är $ 2 för alla färger. Deras byggtid är också mycket mindre vilket är 48 timmar med DHL-leverans på 3-5 dagar, i princip får du dina PCB inom en vecka efter beställning. Dessutom erbjuder de också 20 $ rabatt på frakt för din första beställning.
Efter beställning av kretskortet kan du kontrollera produktionsförloppet för ditt kretskort med datum och tid. Du kontrollerar det genom att gå till kontosidan och klicka på "Produktionsförlopp" -länken under kretskortet som visas i bilden nedan.
Efter några dagars beställning av PCB fick jag PCB-proverna i fin förpackning som visas på bilderna nedan.
Efter att ha kontrollerat att spåren och fotspåren var korrekta. Jag fortsatte med att montera kretskortet, jag använde kvinnliga rubriker för att placera Arduino Nano och LCD så att jag kan ta bort dem senare om jag behöver dem för andra projekt. Det helt lödda kortet ser ut så här nedan
Testa spänningsövervakningskretsen
Efter lödning av alla komponenter ansluter du helt enkelt batteriet till H1-kontakten på kortet. Jag har använt anslutningskablar för att se till att jag inte ändrar anslutningen i framtiden av misstag. Var mycket försiktig med att inte ansluta den på fel sätt eftersom det kan leda till kortslutning och kan skada batterierna eller kretsen permanent. Mitt kretskort med batteripaketet som jag använde för testning visas nedan.
Använd nu multimetern på H2-terminalen för att mäta de enskilda försäljningsspänningarna. Terminalen är markerad med siffror för att identifiera den cellspänning som nu mäts. Här kan vi dra slutsatsen att kretsen fungerar. Men för att göra det mer intressant, låt oss ansluta en LCD och använda en Arduino för att mäta dessa spänningsvärden och visa den på LCD-skärmen.
Mätning av litiumcellspänning med Arduino
Kretsen för att ansluta Arduino till vår PCB visas nedan. Den visar hur du ansluter Arduino Nano till LCD.
Huvudstiftet H2 på kretskortet ska anslutas till de analoga stiften på Arduino-kortet som visas ovan. De analoga stiften A1 till A4 används för att mäta de fyra cellspänningarna respektive, medan stiftet A0 är anslutet till huvudstiftet v 'hos P1. Denna v-stift kan användas för att mäta den totala packningsspänningen. Vi har också anslutit en st stift av P1 till Vin-stiftet i Arduino och 3 : e stift hos P1 o jordstiftet av Arduino till effekt Arduinoen med batteripaketet.
Vi kan skriva ett program för att mäta alla fyra cellspänningar och packspänning för batteriet och visa det på LCD-skärmen. För att göra det mer intressant har jag också lagt till alla de fyra cellspänningarna och jämfört värdet med den uppmätta packningsspänningen för att kontrollera hur nära vi faktiskt mäter spänningen.
Programmering av Arduino
Hela programmet finns i slutet av denna sida. Programmet är ganska enkelt, vi använder helt enkelt den analoga läsfunktionen för att läsa cellspänningarna med hjälp av ADC-modulen och visa det beräknade spänningsvärdet på LCD-skärmen med hjälp av LCD-biblioteket.
float Cell_1 = analogRead (A1) * (5.0 / 1023.0); // Mät första cellspänningen lcd.print ("C1:"); lcd.print (Cell_1);
I utdraget ovan har vi mätt spänningen i cell 1 och multiplicerat den med 5/1023 för att konvertera 0 till 1023 ADC-värdet till faktiskt 0 till 5V. Vi visar sedan det beräknade spänningsvärdet på LCD-skärmen. På samma sätt gör vi detta för alla fyra celler och det totala batteripaketet också. Vi har också använt den variabla totalspänningen för att summera alla cellspänningar och visa den på LCD-skärmen som visas nedan.
flyta Total_Voltage = Cell_1 + Cell_2 + Cell_3 + Cell_4; // Lägg till alla de fyra uppmätta spänningsvärdena lcd.print ("Total:"); lcd.print (Total_Voltage);
Individuell cellspänningsdisplay fungerar
När du är redo med kretsen och koden laddar du upp koden till Arduino-kortet och ansluter kraftbanken till kretskortet. LCD-skärmen ska nu visa den individuella cellspänningen för alla de fyra cellerna som visas nedan.
Som du kan se är spänningen för cell 1 till 4 3,78V, 3,78V, 3,82V respektive 3,84V. Så sedan använde jag min multimeter för att kontrollera den faktiska spänningen i dessa celler som visade sig vara lite annorlunda. Skillnaden visas nedan.
Uppmätt spänning |
Verklig spänning |
3.78V |
3.78V |
3.78V |
3.78V |
3,82V |
3,81V |
3.84V |
3,82V |
Som du kan se har vi fått exakta resultat för cellerna en och två, men det finns ett fel så högt som 200 mV för cellerna 3 och 4. Detta är sannolikt att förväntas för vår design. Eftersom vi använder en op-amp-differentieringskrets, kommer noggrannheten hos den uppmätta spänningen att minska när antalet celler ökar.
Men detta fel är ett fast fel och kan korrigeras i programmet genom att ta provavläsningar och lägga till en multiplikator för att korrigera felet. På nästa LCD-skärm kan du också se summan av den uppmätta spänningen och den faktiska packspänningen som mättes genom potentialdelaren. Samma visas nedan.
Summan av spänningarna som mättes är 15,21V och den faktiska spänningen som uppmätts genom A0-stiftet i Arduino visar sig vara 15,22V. Således är skillnaden 100mV vilket inte är dåligt. Medan den här typen av kretsar kan användas för mindre antal stötar som i kraftbanker eller bärbara batterier. Elfordonets BMS använder speciell typ av IC som LTC2943 eftersom även ett fel på 100mV inte är acceptabelt. Ändå har vi lärt oss hur man gör det för småskaliga kretsar där priset är en begränsning.
Den kompletta bearbetning av set-up kan hittas på videon länkad nedan. Hoppas att du gillade projektet och lärde dig något användbart av det. Om du har några frågor lämnar du dem i kommentarsektionen eller använder forumen för snabbare svar.