- Individuele celspanning meten in een seriële batterijstapel
- Differentiële schakeling om individuele celspanning te meten
- Schakelschema
- PCB-ontwerp en fabricage met behulp van Easy EDA
- Monsters online berekenen en bestellen
- Het spanningscircuit testen
- Het meten van de lithiumcelspanning met Arduino
- Programmeren van de Arduino
- Individuele celspanningsweergave werkt
Het aantal kilometers en de prestaties van een elektrisch voertuig zijn afhankelijk van de capaciteit en efficiëntie van het accupakket. Het is de verantwoordelijkheid van het batterijbeheersysteem (BMS) om het batterijpakket in goede staat te houden. Een BMS is een geavanceerde eenheid in een EV die veel activiteiten verricht, zoals het bewaken van de cellen, het balanceren en zelfs beschermen tegen temperatuurveranderingen. We hebben er al genoeg van geleerd in dit artikel over het batterijbeheersysteem, dus bekijk ze hier als je nieuw bent.
Om iets te doen, zou de eerste stap voor het BMS zijn om de huidige status van de cellen in het lithiumbatterijpak te kennen. Dit wordt gedaan door de spanning en stroom (soms ook temperatuur) van de cellen in de verpakking te meten. Alleen met deze twee waarden kan het BMS de SOC of SOH berekenen en celbalancering uitvoeren enz. Het meten van de spanning en stroom van de cel is dus van vitaal belang voor elk BMS-circuit, of het nu een eenvoudige powerbank of laptopbatterij is of een zo gecompliceerd pakket als EV / Zonne-batterijen.
In dit artikel leren we hoe we de individuele celspanning kunnen meten van de cellen die worden gebruikt in een lithiumbatterijpak. In het belang van dit project zullen we vier lithium 18650-cellen gebruiken die in serie zijn verbonden om een batterijpakket te vormen en een eenvoudig circuit ontwerpen met op-amps om de individuele celspanningen te meten en weer te geven op een LCD-scherm met Arduino.
Individuele celspanning meten in een seriële batterijstapel
Het probleem met het meten van de individuele celspanning in een pakket van in serie geschakelde accu's is dat het referentiepunt hetzelfde blijft. De onderstaande afbeelding illustreert hetzelfde
Laten we voor de eenvoud aannemen dat alle vier de cellen een spanningsniveau van 4V hebben, zoals hierboven weergegeven. Als we nu een microcontroller zoals Arduino gebruiken om de celspanning te meten, zullen we geen probleem hebben om de spanning van de 1 ste cel te meten, aangezien het andere uiteinde met aarde is verbonden. Maar voor de andere cellen moeten we de spanning van die cel samen met de vorige cellen meten, bijvoorbeeld wanneer we de spanning van de 4e cel meten, zullen we de spanning van alle vier de cellen samen meten. Dit komt doordat het referentiepunt niet vanaf de grond kan worden gewijzigd.
We moeten hier dus een extra circuit introduceren dat ons kan helpen de individuele spanningen te meten. Een ruwe manier is om een potentiaalverdeler te gebruiken om de spanningsniveaus in kaart te brengen en ze vervolgens te meten, maar deze methode zal de resolutie van de leeswaarde verminderen tot meer dan 0,1 V. Daarom zullen we in deze tutorial het Op-Amp Differential Circuit gebruiken om het verschil tussen elke celterminal te meten om individuele spanning te meten.
Differentiële schakeling om individuele celspanning te meten
We kennen al een Op-Amp wanneer deze als differentiële versterker het verschil geeft tussen de twee spanningswaarden die worden geleverd aan de inverterende en niet-inverterende pin. Dus voor ons doel om 4-celspanningen te meten, hebben we drie differentiële op-amps nodig, zoals hieronder weergegeven.
Merk op dat deze afbeelding alleen voor weergave is; het eigenlijke circuit heeft meer componenten nodig en zal later in dit artikel worden besproken. De eerste op-amp O1 meet de spanning van de 2e cel door het verschil te berekenen tussen de 2e celterminal en de 1ste celterminal, dat wil zeggen (8-4). Evenzo de Op-amp O2 en O3 meet de 3 e en 4 e respectievelijk celspanning. We hebben geen gebruik gemaakt van een op-amp voor de 1 ste cel, omdat het direct konden worden gemeten.
Schakelschema
Het volledige schakelschema voor het bewaken van meercellige spanning in lithiumbatterijpak wordt hieronder gegeven. Het circuit is ontworpen met EasyEDA en we zullen hetzelfde gebruiken om ook onze PCB te fabriceren.
Zoals je kunt zien, hebben we twee Quad-pakket Rail to Rail Hoogspanning op-amp OPA4197 in ons circuit, beide gevoed door de totale pack-spanning. Eén IC (U1) wordt gebruikt als maakbuffercircuit oftewel spanningsvolger, terwijl het andere IC (U2) wordt gebruikt om het differentiële versterkercircuit te vormen. Een buffercircuit is vereist om te voorkomen dat een van de cellen afzonderlijk wordt geladen, wat betekent dat er geen stroom mag worden verbruikt uit een enkele cel, maar alleen het pakket als geheel vormt. Omdat het buffercircuit een zeer hoge ingangsimpedantie heeft, kunnen we de spanning van de cel aflezen zonder er stroom uit te halen.
Alle vier de op-amps in de IC U1 worden gebruikt om respectievelijk de spanning van de vier cellen te bufferen. De ingangsspanningen van de cellen zijn gelabeld van B1 + tot B4 + en de gebufferde uitgangsspanning is gelabeld van B1_Out tot B4_Out. Deze gebufferde spanning wordt vervolgens naar de differentieversterker gestuurd om de individuele celspanning te meten, zoals hierboven besproken. De waarde van alle weerstanden is ingesteld op 1K aangezien de versterking van de differentiële versterker is ingesteld op één. U kunt elke weerstandswaarde gebruiken, maar ze moeten allemaal dezelfde waarde hebben, behalve de weerstanden R13 en R14. Deze twee weerstanden vormen een potentiaalverdeler om de pack-spanning van de batterij te meten, zodat we deze kunnen vergelijken met de som van gemeten celspanningen.
Rail to Rail, hoogspanning Op-Amp
Het bovenstaande circuit vereist dat u een Rail to Rail hoogspannings-op-amp zoals OPA4197 gebruikt om twee redenen. Beide Op-Amp IC's werken met de pack-spanning die maximaal (4,3 * 4) 17,2V is, daarom moet de Op-amp in staat zijn om hoge spanningen te verwerken. Omdat we een buffercircuit gebruiken, moet de uitvoer van de buffer gelijk zijn aan de pack-spanning voor de 4e celterminal, wat betekent dat de uitgangsspanning gelijk moet zijn aan de bedrijfsspanning van de op-amp, daarom moeten we een rail gebruiken om Spoor op-amp
Als u geen rail naar rail op-amp kunt vinden, kunt u de IC vervangen door een eenvoudige LM324. Dit IC kan hoogspanning aan maar kan niet als rail to rail fungeren, dus je moet een pull-up weerstand van 10k gebruiken op de eerste pin van het U1 Op-Amp IC.
PCB-ontwerp en fabricage met behulp van Easy EDA
Nu ons circuit klaar is, is het tijd om het te laten fabriceren. Omdat de Op-Amp die ik gebruik alleen beschikbaar is in SMD-verpakking, moest ik een PCB voor mijn circuit maken. Dus zoals altijd hebben we de online EDA-tool EasyEDA gebruikt om onze PCB te laten fabriceren, omdat het erg handig is in gebruik omdat het een goede verzameling footprints heeft en het open-source is.
Na het ontwerpen van de PCB, kunnen we de PCB-monsters bestellen via hun goedkope PCB-fabricagediensten. Ze bieden ook een service voor het sourcen van componenten, waarbij ze een grote voorraad elektronische componenten hebben en gebruikers hun vereiste componenten samen met de PCB-bestelling kunnen bestellen.
Terwijl u uw circuits en PCB's ontwerpt, kunt u ook uw circuit- en PCB-ontwerpen openbaar maken, zodat andere gebruikers ze kunnen kopiëren of bewerken en kunnen profiteren van uw werk.We hebben ook onze hele circuit- en PCB-lay-outs openbaar gemaakt voor dit circuit. de onderstaande link:
easyeda.com/CircuitDigest/Multicell-Voltage-measuring-for-BMS
U kunt elke laag (bovenzijde, onderzijde, bovenzijde, onderzijde enz.) Van de PCB bekijken door de laag te selecteren in het venster 'Lagen'. Onlangs hebben ze ook een 3D-weergave-optie geïntroduceerd, zodat u ook de Multicell-spanningsmeetprintplaat kunt bekijken, hoe deze er na fabricage uitziet met behulp van de 3D-weergaveknop in EasyEDA:
Monsters online berekenen en bestellen
Na voltooiing van het ontwerp van dit lithium cel spanningsmeetcircuit, kunt u de print bestellen via JLCPCB.com. Om de print bij JLCPCB te bestellen heeft u Gerber File nodig. Om Gerber-bestanden van uw PCB te downloaden, klikt u op de Generate Fabrication File-knop op de EasyEDA-editorpagina en downloadt u het Gerber-bestand van daaruit of u kunt op Order at JLCPCB klikken, zoals weergegeven in onderstaande afbeelding. Hiermee wordt u doorgestuurd naar JLCPCB.com, waar u het aantal PCB's dat u wilt bestellen, het aantal koperlagen dat u nodig heeft, de PCB-dikte, het kopergewicht en zelfs de PCB-kleur kunt selecteren, zoals de onderstaande momentopname:
Nadat u op de knop bestellen op de JLCPCB-knop hebt geklikt, gaat u naar de JLCPCB-website waar u elke kleurenprintplaat kunt bestellen tegen een zeer lage prijs, namelijk $ 2 voor alle kleuren. Hun bouwtijd is ook erg kort, dat is 48 uur met een DHL-levering van 3-5 dagen, in principe ontvangt u uw PCB's binnen een week na bestelling. Bovendien bieden ze ook een korting van $ 20 op de verzendkosten voor uw eerste bestelling.
Nadat u de print heeft besteld, kunt u de productievoortgang van uw print met datum en tijd controleren. U controleert het door naar de Accountpagina te gaan en op de link "Productie Voortgang" onder de PCB te klikken, zoals weergegeven in onderstaande afbeelding.
Na een paar dagen PCB's te hebben besteld, kreeg ik de PCB-samples in een mooie verpakking, zoals te zien is op onderstaande foto's.
Na te hebben gecontroleerd of de sporen en voetafdrukken correct waren. Ik ging verder met het monteren van de PCB, ik gebruikte vrouwelijke headers om de Arduino Nano en LCD te plaatsen, zodat ik ze later kan verwijderen als ik ze nodig heb voor andere projecten. Het volledig gesoldeerde bord ziet er als volgt uit
Het spanningscircuit testen
Na het solderen van alle componenten, sluit u eenvoudig het batterijpakket aan op de H1-connector op het bord. Ik heb gebruik gemaakt van verbindingskabels om ervoor te zorgen dat ik de verbinding in de toekomst niet per ongeluk verander. Let goed op dat u het niet op de verkeerde manier aansluit, aangezien dit tot kortsluiting kan leiden en de batterijen of het circuit permanent kan beschadigen. Hieronder zie je mijn printplaat met het accupakket waarmee ik heb getest.
Gebruik nu de multimeter op de H2-terminal om de individuele verkoopspanningen te meten. De terminal is gemarkeerd met cijfers om de celspanning te identificeren die momenteel wordt gemeten. Hiermee kunnen we concluderen dat het circuit werkt. Maar om het interessanter te maken, laten we een LCD aansluiten en een Arduino gebruiken om deze spanningswaarden te meten en op het LCD-scherm weer te geven.
Het meten van de lithiumcelspanning met Arduino
Het circuit om de Arduino op onze PCB aan te sluiten, wordt hieronder weergegeven. Het laat zien hoe je de Arduino Nano op een LCD aansluit.
De header-pin H2 op de printplaat moet worden aangesloten op de analoge pinnen van het Arduino-bord, zoals hierboven weergegeven. De analoge pinnen A1 t / m A4 worden gebruikt om respectievelijk de vier celspanningen te meten, terwijl de pin A0 is verbonden met headerpin v 'van P1. Deze v'-pin kan worden gebruikt om de totale pack-spanning te meten. We hebben ook te maken van de 1 ste pin van P1 aan de Vin pin van de Arduino en 3 rd pin van P1 o de grond pin van Arduino de macht van de Arduino met de accu.
We kunnen een programma schrijven om alle vier de celspanningen en de pack-spanning van het batterijpakket te meten en op het LCD-scherm weer te geven. Om het nog interessanter te maken heb ik ook alle vier de celspanningen opgeteld en de waarde vergeleken met de gemeten pack-spanning om te zien hoe dicht we de spanning daadwerkelijk meten.
Programmeren van de Arduino
Het volledige programma vindt u onderaan deze pagina. Het programma is vrij eenvoudig, we gebruiken gewoon de analoge leesfunctie om de celspanningen te lezen met behulp van de ADC-module en de berekende spanningswaarde weer te geven op het LCD-scherm met behulp van de LCD-bibliotheek.
zweven Cell_1 = analogRead (A1) * (5.0 / 1023.0); // Meet de spanning van de 1e cel lcd.print ("C1:"); lcd.print (Cell_1);
In het bovenstaande fragment hebben we de spanning van cel 1 gemeten en deze vermenigvuldigd met 5/1023 om de ADC-waarde van 0 tot 1023 om te zetten in de werkelijke 0 tot 5V. Vervolgens geven we de berekende spanningswaarde weer op het LCD-scherm. Op dezelfde manier doen we dit voor alle vier de cellen en ook voor het totale batterijpakket. We hebben ook de variabele totale spanning gebruikt om alle celspanningen bij elkaar op te tellen en op het LCD-scherm weer te geven zoals hieronder weergegeven.
zweven Total_Voltage = Cell_1 + Cell_2 + Cell_3 + Cell_4; // Tel alle vier de gemeten spanningswaarden op lcd.print ("Total:"); lcd.print (Total_Voltage);
Individuele celspanningsweergave werkt
Zodra je klaar bent met het circuit en de code, upload je de code naar het Arduino-bord en sluit je de powerbank aan op de printplaat. Het LCD-scherm zou nu de individuele celspanning van alle vier cellen moeten weergeven, zoals hieronder wordt weergegeven.
Zoals u kunt zien, is de weergegeven spanning voor cel 1 tot 4 respectievelijk 3,78 V, 3,78 V, 3,82 V en 3,84 V. Dus toen gebruikte ik mijn multimeter om de werkelijke spanning van deze cellen te controleren, die een beetje anders bleek te zijn, het verschil staat hieronder in een tabel.
Gemeten spanning |
Werkelijke spanning |
3,78V |
3,78V |
3,78V |
3,78V |
3.82V |
3.81V |
3.84V |
3.82V |
Zoals u kunt zien, hebben we nauwkeurige resultaten voor de cellen één en twee, maar er is een fout van wel 200mV voor cellen 3 en 4. Dit is waarschijnlijk te verwachten voor ons ontwerp. Omdat we een op-amp differentiatorcircuit gebruiken, zal de nauwkeurigheid van de gemeten spanning afnemen naarmate het aantal cellen toeneemt.
Maar deze fout is een vaste fout en kan in het programma worden gecorrigeerd door steekproefmetingen te doen en een vermenigvuldiger toe te voegen om de fout te corrigeren. Op het volgende LCD-scherm kun je ook de som zien van de gemeten spanning en de werkelijke pack-spanning die is gemeten via de potentiaalverdeler. Hetzelfde wordt hieronder getoond.
De som van de gemeten spanningen is 15,21V en de werkelijke spanning gemeten via de A0-pin van Arduino blijkt 15,22V te zijn. Het verschil is dus 100mV, wat niet slecht is. Hoewel dit type circuit kan worden gebruikt voor een kleiner aantal droesem, zoals in powerbanks of laptopbatterijen. Het BMS van elektrische voertuigen maakt gebruik van een speciaal type IC's zoals de LTC2943 omdat zelfs een fout van 100mV niet kan worden getolereerd. Desalniettemin hebben we geleerd hoe we het moeten doen voor een kleinschalig circuit waar de prijs een beperking is.
De volledige werking van de set-up is te vinden op de onderstaande video. Ik hoop dat je van het project genoten hebt en er iets nuttigs van hebt geleerd. Als je vragen hebt, laat ze dan achter in het commentaargedeelte of gebruik de forums voor snellere antwoorden.