- Måling af individuel cellespænding i en serie batteristak
- Differential Circuit til måling af individuel cellespænding
- Kredsløbsdiagram
- Print og fabrikation af printkort ved hjælp af Easy EDA
- Beregning og bestilling af prøver online
- Test af spændingsovervågningskredsløbet
- Måling af litiumcelle spænding ved hjælp af Arduino
- Programmering af Arduino
- Individuel cellespændingsvisning fungerer
Kilometertal og ydeevne for et elektrisk køretøj afhænger af kapaciteten og effektiviteten af dets batteripakke. Batterihåndteringssystemet (BMS) har ansvaret for at opretholde batteriet fuldt ud. En BMS er en sofistikeret enhed i en EV, der gør en masse aktivitet som at overvåge cellerne, afbalancere dem og endda beskytte dem mod temperaturændringer. Vi har allerede lært nok af det i denne artikel om batteristyringssystem, så tjek dem, hvis du er ny her.
For at gøre noget, ville det første skridt for BMS være at kende den aktuelle status for cellerne i Lithium-batteripakken. Dette gøres ved at måle spændingen og strømmen (undertiden også temperaturen) af cellerne i pakken. Kun med disse to værdier kunne BMS beregne SOC eller SOH og udføre cellebalancering osv. Så måling af spænding og strøm i celle er afgørende for ethvert BMS-kredsløb, det være sig et simpelt powerbank- eller laptop-batteri eller så kompliceret pakke som EV / Solbatterier.
I denne artikel lærer vi, hvordan vi kan måle den individuelle cellespænding for cellerne, der bruges i en Lithium-batteripakke. Af hensyn til dette projekt vil vi bruge fire lithium 18650-celler, der er forbundet i serie, til at danne en batteripakke og designe et simpelt kredsløb ved hjælp af op-forstærkere til at måle de individuelle cellespændinger og vise det på en LCD-skærm ved hjælp af Arduino.
Måling af individuel cellespænding i en serie batteristak
Problemet med at måle individuel cellespænding i en serie serieforbundet batterier er, at referencepunktet forbliver det samme. Billedet nedenfor illustrerer det samme
For nemheds skyld antager vi, at alle fire celler er på et spændingsniveau på 4V som vist ovenfor. Nu, hvis vi bruger en microcontroller som Arduino at måle cellens spænding, vil vi have noget problem i at måle spændingen på en st celle, da det har den anden ende forbundet til jord. Men for de andre celler er vi nødt til at måle spændingen i den celle sammen med de tidligere celler, for eksempel når vi måler spændingen i 4. celle, måler vi spændingen på alle fire celler sammen. Dette skyldes, at referencepunktet ikke kan ændres fra jorden.
Så vi er nødt til at introducere noget ekstra kredsløb her, som kan hjælpe os med at måle de enkelte spændinger. På rå måde er det at bruge en potentiel skillevæg til at kortlægge spændingsniveauerne og derefter måle dem, men denne metode reducerer opløsningen af læseværdien til mere end 0,1V. Derfor vil vi i denne vejledning bruge Op-Amp Differential Circuit til at måle forskellen mellem hver celleterminal til at måle individuel spænding.
Differential Circuit til måling af individuel cellespænding
Vi kender allerede en Op-Amp, når vi arbejder som en differensforstærker, giver forskellen mellem de to spændingsværdier, der leveres til dens inverterende og ikke-inverterende pin. Så til vores formål at måle 4 cellespændinger har vi brug for tre forskellige op-forstærkere som vist nedenfor.
Bemærk, at dette billede kun er til repræsentation; det faktiske kredsløb har brug for flere komponenter og vil blive diskuteret senere i denne artikel. De første op-amp O1 måler spænding af 2 nd celle ved at beregne forskellen mellem 2 nd celle terminal og 1 st celle terminal, som er (8-4). Tilsvarende Op-amp O2 og O3 måler 3 rd og 4 th cellespændingen henholdsvis. Vi har ikke brugt en op-amp for 1 st celle, da det kunne måles direkte.
Kredsløbsdiagram
Det komplette kredsløbsdiagram til overvågning af multicellespænding i litiumbatteripakke er angivet nedenfor. Kredsløbet blev designet ved hjælp af EasyEDA, og vi vil også bruge det samme til at fremstille vores printkort.
Som du kan se, har vi to firpakke-skinner til skinner Højspændings-op-amp OPA4197 i vores kredsløb begge drevet af den samlede pakke spænding. Én IC (U1) bruges til et make-buffer-kredsløb, aka spændingsfølger, mens det andet IC (U2) bruges til at danne differentialforstærkerkredsløbet. Et bufferkredsløb er påkrævet for at forhindre, at nogen af cellerne indlæses individuelt, hvilket ikke er strøm, der skal forbruges fra en enkelt celle, men kun danne pakken som helhed. Da bufferkredsløbet har meget høj indgangsimpedans, kan vi bruge til at aflæse spændingen fra cellen uden at trække strøm fra den.
Alle de fire op-forstærkere i IC U1 bruges til at buffere spændingen i henholdsvis de fire celler. Indgangsspændingerne fra cellerne er mærket fra B1 + til B4 +, og den bufrede udgangsspænding er mærket fra B1_Out til B4_Out. Denne bufrede spænding sendes derefter til differentia-forstærkeren for at måle den individuelle cellespænding som beskrevet ovenfor. Værdien af hele modstanden er indstillet til 1K, da forstærkningen af differentialforstærkeren er indstillet til enhed. Du kan bruge en hvilken som helst modstandsværdi, men de skal alle have samme værdi undtagen modstandene R13 og R14. Disse to modstande danner en potentiel skillevæg til måling af batterispændingen, så vi kan sammenligne det med summen af målte cellespændinger.
Skinne til skinne, højspænding Op-Amp
Ovenstående kredsløb kræver, at du bruger en Rail to Rail højspændings op-amp som OPA4197 på grund af to grunde. Både Op-Amp IC fungerer med en pakke spænding, der maksimalt er (4.3 * 4) 17.2V, og derfor skal Op-amp være i stand til at håndtere høje spændinger. Også da vi bruger et bufferkredsløb, bør udgangssignalet fra bufferen lig at pakke spænding for 4 th celle terminal, hvilket betyder udgangsspændingen bør være lig med driftsspænding af op-amp dermed vi nødt til at bruge en Rail til Rail op-amp
Hvis du ikke kan finde en skinne til skinne-op-amp, kan du udskifte IC med simpel LM324. Denne IC kan håndtere højspænding, men kan ikke fungere som skinne til skinne, så du skal bruge en pull-modstand på 10k på den første ben på U1 Op-Amp IC.
Print og fabrikation af printkort ved hjælp af Easy EDA
Nu hvor vores kredsløb er klar, er det tid til at få det fabrikeret. Da Op-Amp, jeg bruger, kun er tilgængelig i SMD-pakke, måtte jeg fremstille et printkort til mit kredsløb. Så som altid har vi brugt online EDA-værktøjet kaldet EasyEDA til at få vores PCB fabrikeret, fordi det er meget praktisk at bruge, da det har en god samling fodspor, og det er open source.
Efter design af PCB kan vi bestille PCB-prøver ved hjælp af deres billige PCB-fabrikationstjenester. De tilbyder også komponentsourcingtjeneste, hvor de har et stort lager af elektroniske komponenter, og brugere kan bestille deres nødvendige komponenter sammen med printkortordren.
Mens du designer dine kredsløb og printkort, kan du også gøre dit kredsløb og printkortdesign offentligt, så andre brugere kan kopiere eller redigere dem og drage fordel af dit arbejde, vi har også gjort vores hele kredsløbs- og printkortlayouts offentlige for dette kredsløb, tjek nedenstående link:
easyeda.com/CircuitDigest/Multicell-Voltage-measuring-for-BMS
Du kan se ethvert lag (Top, Bottom, Topsilk, bottomsilk osv.) På printkortet ved at vælge laget fra vinduet 'Layers'. For nylig har de også introduceret en 3D-visningsindstilling, så du også kan se Multicell-spændingsmåle-printkortet, hvordan det vil se ud efter fabrikation ved hjælp af 3D-visningsknappen i EasyEDA:
Beregning og bestilling af prøver online
Efter at have afsluttet designet af dette Lithium cell Voltage målingskredsløb, kan du bestille printkortet via JLCPCB.com. For at bestille printkortet fra JLCPCB skal du have Gerber File. For at downloade Gerber-filer på din PCB skal du blot klikke på Generer fabrikationsfil-knappen på EasyEDA-redigeringssiden, og derefter downloade Gerber-filen derfra, eller du kan klikke på Bestil på JLCPCB som vist i billedet nedenfor. Dette omdirigerer dig til JLCPCB.com, hvor du kan vælge antallet af printkort, du vil bestille, hvor mange kobberlag du har brug for, PCB-tykkelsen, kobbervægt og endda PCB-farven, som det viste øjebliksbillede:
Efter at have klikket på ordren ved JLCPCB-knappen, vil det tage dig til JLCPCB-webstedet, hvor du kan bestille enhver farve-printkort i meget lav pris, hvilket er $ 2 for alle farverne. Deres byggetid er også meget mindre, hvilket er 48 timer med DHL-levering på 3-5 dage, dybest set får du dine printkort inden for en uge efter bestilling. Desuden tilbyder de også 20 $ rabat på forsendelse til din første ordre.
Efter bestilling af printkortet kan du kontrollere produktionsforløbet for dit printkort med dato og klokkeslæt. Du tjekker det ved at gå til kontosiden og klikke på "Produktionsfremdrift" -linket under printkortet som vist i billedet nedenfor.
Efter få dage med bestilling af printkort fik jeg printkortprøverne i pæn emballage som vist på nedenstående billeder.
Efter at have sørget for, at sporene og fodsporene var korrekte. Jeg fortsatte med at samle printet, jeg brugte kvindelige overskrifter til at placere Arduino Nano og LCD, så jeg kan fjerne dem senere, hvis jeg har brug for dem til andre projekter. Det fuldstændigt lodde bord ser sådan ud nedenfor
Test af spændingsovervågningskredsløbet
Efter lodning af alle komponenter skal du blot slutte batteripakken til H1-stikket på kortet. Jeg har brugt tilslutningskabler for at sikre, at jeg ikke ændrer forbindelsen i fremtiden ved et uheld. Vær meget forsigtig med ikke at tilslutte den på den forkerte måde, da det kan føre til kortslutning og skade batterierne eller kredsløbet permanent. Mit printkort med den batteripakke, som jeg brugte til test, er vist nedenfor.
Brug nu multimeteret på H2-terminalen til at måle de enkelte salgsspændinger. Terminalen er markeret med tal for at identificere den cellespænding, som den aktuelle måles. Her kan vi konkludere, at kredsløbet fungerer. Men for at gøre det mere interessant, lad os forbinde en LCD og bruge en Arduino til at måle disse spændingsværdier og vise den på LCD-skærmen.
Måling af litiumcelle spænding ved hjælp af Arduino
Kredsløbet til at forbinde Arduino til vores PCB er vist nedenfor. Det viser, hvordan du forbinder Arduino Nano til LCD.
Header pin H2 på PCB skal tilsluttes de analoge ben på Arduino-kortet som vist ovenfor. De analoge ben A1 til A4 bruges til at måle henholdsvis de fire cellespændinger, mens pin A0 er forbundet til header pin v 'af P1. Denne v 'pin kan bruges til at måle den samlede pakke spænding. Vi har også tilsluttet den 1 st pin af P1 til Vin pin af Arduino og 3 rd pin af P1 o jorden pin af Arduino til magten Arduino med batteripakken.
Vi kan skrive et program til at måle alle de fire cellespændinger og batterispakke på batteripakken og vise det på LCD'et. For at gøre det mere interessant har jeg også tilføjet alle de fire cellespændinger og sammenlignet værdien med den målte pakkespænding for at kontrollere, hvor tæt vi faktisk måler spændingen.
Programmering af Arduino
Det komplette program kan findes i slutningen af denne side. Programmet er ret simpelt, vi bruger simpelthen den analoge læsefunktion til at læse cellespændingerne ved hjælp af ADC-modulet og vise den beregnede spændingsværdi på LCD'et ved hjælp af LCD-biblioteket.
flyde Cell_1 = analogRead (A1) * (5.0 / 1023.0); // Mål 1. celle spænding lcd.print ("C1:"); lcd.print (Cell_1);
I ovenstående uddrag har vi målt spændingen i celle 1 og ganget den med 5/1023 for at konvertere 0 til 1023 ADC-værdien til faktisk 0 til 5V. Vi viser derefter den beregnede spændingsværdi på LCD'et. På samme måde gør vi dette for alle de fire celler og den samlede batteripakke også. Vi har også brugt den variable samlede spænding til at opsummere alle cellespændingerne og vise den på LCD'et som vist nedenfor.
flyde Total_Voltage = Cell_1 + Cell_2 + Cell_3 + Cell_4; // Tilføj alle de fire målte spændingsværdier lcd.print ("Total:"); lcd.print (Total_Voltage);
Individuel cellespændingsvisning fungerer
Når du er klar med kredsløbet og koden, skal du uploade koden til Arduino-kortet og slutte strømbanken til printkortet. LCD'et skal nu vise den individuelle cellespænding for alle de fire celler som vist nedenfor.
Som du kan se, er spændingen, der vises for celle 1 til 4, henholdsvis 3,78V, 3,78V, 3,82V og 3,84V. Så så brugte jeg mit multimeter til at kontrollere den faktiske spænding af disse celler, som viste sig at være en smule anderledes, forskellen er anført nedenfor.
Målt spænding |
Faktisk spænding |
3.78V |
3.78V |
3.78V |
3.78V |
3.82V |
3.81V |
3.84V |
3.82V |
Som du kan se, har vi nøjagtige resultater for cellerne en og to, men der er en fejl så høj som 200 mV for cellerne 3 og 4. Dette forventes sandsynligvis for vores design. Da vi bruger et op-amp-differentieringskredsløb, vil nøjagtigheden af den målte spænding falde, når antallet af celler stiger.
Men denne fejl er en fast fejl og kan rettes i programmet ved at tage prøvelæsninger og tilføje en multiplikator for at rette fejlen. På den næste LCD-skærm kan du også se summen af den målte spænding og den faktiske pakkespænding, der blev målt gennem en potentiel opdeler. Det samme er vist nedenfor.
Summen af de spændinger, der blev målt, er 15,21V, og den faktiske spænding målt gennem A0-stiften i Arduino viser sig at være 15,22V. Således er forskellen 100mV, hvilket ikke er dårligt. Mens denne type kredsløb kan bruges til mindre antal strømme som i strømbanker eller bærbare batterier. Det elektriske køretøjs BMS bruger speciel type IC'er som LTC2943, fordi selv en fejl på 100mV ikke er acceptabel. Ikke desto mindre har vi lært, hvordan man gør det til kredsløb i mindre skala, hvor prisen er en begrænsning.
Den komplette bearbejdning af opsætningen kan findes i videoen, der er linket nedenfor. Håber du nød projektet og lærte noget nyttigt af det. Hvis du har spørgsmål, skal du lade dem være i kommentarsektionen eller bruge foraerne til hurtigere svar.