Innholdsfortegnelse:

Arduino LTC6804 BMS - Del 2: Balansebrett: 5 trinn
Arduino LTC6804 BMS - Del 2: Balansebrett: 5 trinn

Video: Arduino LTC6804 BMS - Del 2: Balansebrett: 5 trinn

Video: Arduino LTC6804 BMS - Del 2: Balansebrett: 5 trinn
Video: Battery Management System (BMS) Design Part 5 - Active Cell / Battery Balancing 2024, November
Anonim
Arduino LTC6804 BMS - Del 2: Balansebrett
Arduino LTC6804 BMS - Del 2: Balansebrett

Del 1 er her

Et batteristyringssystem (BMS) inkluderer funksjonalitet for å registrere viktige batteripakkeparametere, inkludert cellespenninger, batteristrøm, celletemperaturer, etc. Hvis noen av disse er utenfor et forhåndsdefinert område, kan pakken kobles fra lasten eller laderen eller andre passende tiltak kan iverksettes. I et tidligere prosjekt (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) diskuterte jeg mitt BMS-design, som er basert på Linear Technology LTC6804 Multicell Battery Monitor-brikke og en Arduino mikrokontroller. Dette prosjektet utvider BMS -prosjektet ved å legge til batteribalanse.

Batteripakker er bygget opp fra individuelle celler i parallelle og/eller seriekonfigurasjoner. For eksempel vil en 8p12s-pakke bli konstruert ved hjelp av 12 seriekoblede sett med 8 parallelt tilkoblede celler. Det ville være totalt 96 celler i pakken. For best ytelse bør alle 96 cellene ha tett tilpassede egenskaper, men det vil alltid være en viss variasjon mellom cellene. For eksempel kan noen celler ha lavere kapasitet enn andre celler. Når pakken er ladet, vil cellene med lavere kapasitet nå sin maksimale sikre spenning før resten av pakningen. BMS vil oppdage denne høyspenningen og kutte ytterligere lading. Resultatet vil være at mye av pakken ikke er fulladet når BMS kutter lading på grunn av høyere spenning i den svakeste cellen. En lignende dynamikk kan skje under utladning, når celler med høyere kapasitet ikke kan utlades helt fordi BMS kobler fra belastningen når det svakeste batteriet når sin lavspenningsgrense. Pakken er derfor bare så god som de svakeste batteriene, som en kjede som bare er så sterk som den svakeste lenken.

En løsning på dette problemet er å bruke et balansebrett. Selv om det er mange strategier for å balansere pakken, er de enkleste 'passive' balansekortene designet for å tømme ut noe av ladningen til cellene med høyest spenning når pakken nærmer seg full ladning. Selv om noe energi er bortkastet, kan pakken som helhet lagre mer energi. Blødning utføres ved å spre litt strøm gjennom en motstand/bryterkombinasjon som styres av en mikrokontroller. Denne instruksen beskriver et passivt balanseringssystem som er kompatibelt med arduino/LTC6804 BMS fra et tidligere prosjekt.

Rekvisita

Du kan bestille Balance Board PCB fra PCBWays her:

www.pcbway.com/project/shareproject/Balance_board_for_Arduino_BMS.html

Trinn 1: Teori om drift

Operasjonsteori
Operasjonsteori

Side 62 i LTC6804 -databladet diskuterer cellebalansering. Det er to alternativer: 1) bruk av den interne N-kanal MOSFETS for å tømme strøm fra de høye cellene, eller 2) bruk av den interne MOSFETS for å kontrollere eksterne brytere som bærer blødningsstrømmen. Jeg bruker det andre alternativet fordi jeg kan designe min egen blødningskrets for å håndtere høyere strøm enn det som kan gjøres ved bruk av de interne bryterne.

De interne MOSFETS er tilgjengelige via pinnene S1-S12 mens cellene selv nås ved hjelp av pinne C0-C12. Bildet ovenfor viser en av de 12 identiske blødningskretsene. Når Q1 er slått på, vil strømmen strømme fra C1 til bakken gjennom R5, noe som avleder noe av ladningen i celle 1. Jeg valgte en 6 Ohm, 1 Watt resistor, som skal kunne håndtere flere milliampere blødningsstrøm. Det er en LED lagt til slik at brukeren kan se hvilke celler som balanserer til enhver tid.

Pinnene S1-S12 styres av CFGR4 og de fire første bitene i CFGR5-registergruppene (se side 51 og 53 i databladet LTC6804). Disse registergruppene er satt i Arduino -koden (diskutert nedenfor) i funksjonen balance_cfg.

Trinn 2: Skjematisk

Skjematisk
Skjematisk

Skjemaet for BMS -balansebrettet ble designet med Eagle CAD. Det er ganske greit. Det er en avløpskrets for hvert batteripakkesegment. Bryterne styres av signaler fra LTC6804 gjennom JP2 -overskriften. Blødningsstrømmen strømmer fra batteripakken gjennom overskriften JP1. Vær oppmerksom på at blødningsstrømmen flyter til neste nedre batteripakkesegment, så for eksempel bløder C9 inn i C8, etc. Arduino Uno -skjoldsymbolet er plassert på skjematikken for PCB -oppsettet beskrevet i trinn 3. Et bilde med høyere oppløsning er gitt i zip -filen. Følgende er delelisten (Av en eller annen grunn fungerer ikke filopplastingsfunksjonen Instructables for meg ….)

Antall Verdi Enhetspakke Deler Beskrivelse

12 LEDCHIPLED_0805 CHIPLED_0805 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11, LED12 LED 12 BSS308PEH6327XTSA1 MOSFET-P SOT23-R Q1, Q2, Q3, Q7, Q6, Q9, Q10, Q11, Q12 P-Channel Mosfet 2 PINHD-1X13_BIG 1X13-BIG JP1, JP2 PIN HEADER 12 16 R-US_R2512 R2512 R5, R7, R9, R11, R13, R15, R17, R19, R21, R23, R25, R27 RESISTOR, amerikansk symbol 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTOR, amerikansk symbol 12 200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 RESISTOR, amerikansk symbol

Trinn 3: PCB -oppsett

PCB -oppsett
PCB -oppsett

Oppsettet er for det meste bestemt av utformingen av det viktigste BMS-systemet som er diskutert i en egen instruerbar (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). Overskriftene JP1 og JP2 må samsvare med matchende overskrifter på BMS. Mosfets, blødningsmotstandene og lysdiodene er arrangert på en logisk måte på Arduino Uno -skjoldet. Gerber -filer ble opprettet ved hjelp av Eagle CAD og kretskortene ble sendt ut til Sierra Circuits for fabrikasjon.

Den vedlagte filen "Gerbers Balance Board.zip.txt" er faktisk en zip -fil som inneholder Gerbers. Du kan bare slette.txt -delen av filnavnet og deretter pakke den ut som en vanlig zip -fil.

Send meg en melding hvis du ønsker å få en PCB, jeg kan fortsatt ha litt igjen.

Trinn 4: PCB -montering

Balansebrett -PCB ble loddet for hånd ved hjelp av en Weller WESD51 temperaturkontrollert loddestasjon med en ETB ET -serie 0,093 "skrutrekker" spiss og 0,3 mm loddetinn. Selv om mindre tips kan virke bedre for intrikat arbeid, beholder de ikke varmen og gjør faktisk jobben vanskeligere. Bruk en strømpenn til å rengjøre PCB -putene før lodding. 0,3 mm lodding fungerer godt for håndlodding av SMD -deler. Legg litt loddetinn på den ene puten, og legg deretter delen med en pinsett eller x-acto-kniv og slå ned puten. Den gjenværende puten kan deretter loddes uten at delen beveger seg. Sørg for ikke å overoppvarme delen eller PCB-putene. Fordi de fleste komponentene er ganske store etter SMD -standarder, er kretskortet ganske enkelt å montere.

Trinn 5: Kode

Kode
Kode

Den komplette Arduino -koden er gitt i den forrige instruksjonsdelen som er koblet til ovenfor. Her vil jeg henlede oppmerksomheten din til delen som styrer cellebalansering. Som nevnt ovenfor styres S1-S12 av CFGR4 og de fire første bitene i CFGR5-registergruppene på LTC6804 (se side 51 og 53 i LTC6804-databladet). Sløyfefunksjonen til Arduino -koden oppdager batterisegmentet med den høyeste spenningen og plasserer nummeret i variabelen cellMax_i. Hvis spenningen til cellMax_i er større enn CELL_BALANCE_THRESHOLD_V, vil koden kalle funksjonen balance_cfg (), og passere nummeret til det høye segmentet, cellMax_i. Funksjonen balance_cfg angir verdiene for det aktuelle LTC6804 -registeret. Et anrop til LTC6804_wrcfg skriver deretter disse verdiene til IC og slår på S -pinnen knyttet til cellMax_i.

Anbefalt: