Izdelava LiFePo4 BMS (sistem za nadzor baterij)

Posted on Posted in Predelava e-Punto

Za uporabo LiFePo4 baterij v vozilu potrebujemo BMS (Battery management system), ali po slovensko “sistem za nadzor baterij”. Ta sistem je potreben, ker je ta tip baterij napetostno zelo občutljiv, kar pomeni da jih ne smemo napolniti na previsoko napetost in izprazniti na prenizko napetost. Na naši strani že obstaja članek o izgradnji takšnega BMS sistema, katerega je izgradil Arber Kramar. Članek si lahko ogledate na spodnji povezavi. Tam je tudi opisano delovanje sistema.
Povezava do Izdelava BMS za LiPoFe4

Za izdelavo potrebujemo vezalne sheme, katere lahko vidimo na spodnjih slikah. Prva je za master ploščo, katero potrebujemo samo eno. Druga shema pa je za slave plošče, katerih potrebujemo toliko, kolikor imamo baterij v vozilu, saj je na vsako baterijo priključena ena plošča.

Shematic_MasterShematic_CellTop

 

 

 

 

 

 

 

Za izvedbo pa potrebujemo PCB tiskana vezja. Ker so vezja majhnih dimenzij so le te izvedena v dvostranskem načinu in v SMD tehniki. Takšna vezja je doma zelo težko izdelati, zato sem plošče naročil pri Arberju, on pa jih je dal izdelati na kitajskem. Naročil sem eno ploščo za master in 50 plošč za slave. Tako imam 5 plošč rezerve, če mi slučajno katera odpove.

Izdelava_BMS_1 Izdelava_BMS_2

 

 

 

 

 

 

Seznam potrebnih elementov za master ploščo:

1x Izdelana PCB ploščica
1x LCD modul 1602
1x PIC16F1827 SMD ohišje SOIC18
1xLM78L05ACM voltage regulator ohišje SOIC8
1x VO615A6 SMD optocoupler, po izkušnjah dela točno ta, in nič drugega!!!
2x tranzistor mosfet N channel PMV30UN, ohišje SOT23
1xLED dioda rdeča 5mm

Upori SMD ohišje 1206:
1x 10R
2x 330R
2x 2K2
2x 10K
2x 270R
2x 22K
1x 4k7

Kondenzatorji:
2x 0,01uF ohišje 0603
1x 10uF elektrolitski smd 16V v ohišju 3527
1x 0,01uF keramični kondenzator 103 (v DIP izvedbi)

 

Seznam potrebnih elementov za en kos slave plošče:

1x Izdelana PCB ploščica
2x konektor 2pin 90°
1x PIC12F1822 SMD ohišje SOIC8
1x VO615A6 SMD optocoupler, po izkušnjah dela točno ta, in nič drugega!!!
1x tranzistor mosfet N channel PMV30UN, ohišje SOT23
1x LM385-12 referenčna dioda

Upori SMD ohišje 0805:
2x 330R
2x 1K
1x 2K7
2x 10K
1x 6K8
1x 82R
1x upor 3R3 7W DIP
1x Termistor NTC – 10K DIP ohišje

Kondenzatorji:
1x 0,01uF ohišje 1206
1x 10uF elektrolitski smd 16V

1x LED SMD ohišje 0805

Za spajkanje elementov sem uporabil 0,5mm spajko, spajkalnik z ostro ošiljeno konico, 4x osvetljeno povečevalno steklo in ostro pinceto.

Izdelava_BMS_3

 

 

 

 

 

 

S spajkanjem se začel z manjšimi elementi, in sem najprej na vseh 50 kos plošč prispajkal en element nato sem pričel z naslednjim. Ker so elementi zelo majhnih dimenzij, jih zlahka pomešamo če jih imamo več na enkrat na mizi. Ko pa so bili elementi večji, sem jih spajkal več na enkrat.

Izdelava_BMS_4

 

 

 

 

 

 

Končane plošče si lahko ogledate na spodnjih slikah:

Izdelava_BMS_5 Izdelava_BMS_6 Izdelava_BMS_7

 

 

 

 

 

 

Izdelava_BMS_9 Izdelava_BMS_10

 

 

 

 

 

 

Na originalnih slave ploščah je termo člen v SMD ohišju, vendar je v tem primeru termo člen močno oddaljen od baterije in dejansko meri samo zrak nad baterijo, zato sem prevrtal plošče in montiral klasični NTC, kateri se dejansko dotika baterije.

Ko imamo vse plošče izdelane, sledi programiranje. Za to potrebujemo programator za PIC procesorje. Jaz sem kupil na ebay nek ponaredek PICkit 2, in moram reči, da je odlično opravil svoje delo.

Izdelava_BMS_11

 

 

 

 

 

 

Na vseh ploščah je prostor za 5 pinski priključek za programiranje, vendar jaz teh priključkov nisem montiral. Za programiranje se konektor vstavi v luknje in se ga med programiranjem drži malo v stran za boljši kontakt. Seveda pa za to operacijo potrebujemo program. Le tega dobimo na spodnji povezavi.

Prenos: Program za master in slave.

Preden vpišemo program v master ploščo, moramo še prilagoditi program svojim potrebam. Za to potrebujemo program CCS C Compiler. Z njim odpremo datoteko “CellTopBMS_Master_comms_3_55_true”, katero najdemo v mapi FW_3_55. Postopek vidimo na spodnji sliki:

Programing_master_1

 

 

 

 

 

 

 

 

 

 

Ko se nam odpre koda programa, lahko spremenimo naslednje nastavitve:

  • const int8 Cells=46; // max no of cells
    Tu nastavite maksimalno število baterij, katere bo nadzoroval BMS
  • const int8 MaxCellVolts = 16;//equiv to 3.75V – max charge voltage – Arber, use 17 for 3.79 V, 18 for 3.78 V
    Tu nastavite maksimalno napetost baterije, ko se izključi polnilec
  • const int8 MinCellVolts = 171; //equiv to 2.60V which is the alarm level
    Tu nastavite minimalno napetost baterije za alarm
  • const int8 BalVal = 30; // 4.15 V used for cell balancing ie shunts turn on when V>=BalVal
    Tu nastavite napetost za balansiranje baterij

Programing_master_2

 

 

 

 

 

 

 

 

 

Vrednosti na nastavljanje so v ADC sistemu. Če želite izvedeti kaj pomeni ADC vrednost v napetosti (V), si lahko ogledate tabelo “Pretvorba ADC”, ki se nahaja v mapi poleg programa. Za zaključitev urejanja pa potrebujemo še klikniti na gumb “Compile” in v mapi kjer imamo shranjen program, se bo kreirala datoteka z istim imenom in končnico .hex. Ta datoteka pa je pripravljena za vpis v procesor. Za vpis pa potrebujemo dodatni program “PICkit2 Programmer”, katerega si potegnemo iz interneta. Dodatno potrebujemo samo kopirati datoteko “PK2Device.dat” v mapo: C:\Program Files\Microchip\PICkit 2 v2 in povoziti obstoječo datoteko. S tem dodamo možnost programiranja procesorjev, ki jih uporabljamo.

Prenos datoteke “PK2Device.dat”

Nato vključimo programator v USB in zaženemo program PICkit2 Programmer. Program nastavimo, kot je prikazano na spodnjih slikah. Po nastavitvah priključimo prvo ploščo za programiranje. Pri tem moramo paziti, da vedno priključimo pin na programatorju označen z “MCLR” oziroma v mojem primeru rdeča žica, na pin 1 v naših ploščah oziroma v kvadratni pin. V primeru, da zadevo obrnete, bo prišlo do okvare plošče in lahko tudi programatorja.

Programing_master_3

Programing_master_4

 

 

 

 

 

 

 

 

 

 

Za tem pa označimo kljukico v polju “ON ” pod napisom VDD PICkit2 in nastavimo vrednost na 5,0V

Programing_master_5

 

 

 

 

 

 

 

 

 

 

V naslednjem koraku pritisnemo gumb “Erase” in bo programator sam zaznal tip procesorja in le tega izbrisal.

Programing_master_6

 

 

 

 

 

 

 

 

 

 

Za vpis programa potrebujemo klikniti na “Auto Import Hex + Write Device” izberete ustrezno Hex datoteko (odvisno od plošče, ki jo programirate) in zadevo vpišete na procesor. To ponovite za vse plošče.

Programing_master_8

 

 

 

 

 

 

 

 

 

 

Ko imamo vse plošče vpisane z programom, moramo le te preizkusiti, saj so baterije predrage, da bi nanje montirali ne delujoče BMSe. Preizkus opravimo tako, da po dve slave plošče vežemo na master in jim z regulacijskim napajalnikom spreminjamo napetost. Tako vidimo če pravilno prikazuje napetost in če pri nastavljeni vrednosti začne balansirati z uporom. Kadar je v stanju balansiranja, sveti zelena LED na plošči. Testiranje temperature izvedemo z pritiskom s prstom na senzor. Tokrat se mora temperatura dvigovati. Vgrajeno imam tudi modro tipko za sprehajanje po LCD in rdeče stikalo, ki služi za izklop BMS v primeru napake za ponovni zagon.

Izdelava_BMS_12 Izdelava_BMS_13

 

 

 

 

 

 

Za priklop BMS, pa potrebujemo še 12V napajanje in pa nekaj krmilnih relejev. Napajanje mora biti galvansko ločeno, da ne sklenemo 12V linije v avtu z visoko napetostjo. Zato sem se jaz odločil za priklop 12v napajalnika, ki je v splošnem namenjen za 230VAC, vendar deluje tudi na 144VDC. Tako lahko med vožnjo napajam iz pogonskih baterij, ko pa polnim pa napajam iz 230V omrežja.

Izdelava_BMS_14 Izdelava_BMS_15

 

 

 

 

 

 

Napajalnik in krmilne releje sem montiral v staro odsluženo ohišje za DIN letev.

Izdelava_BMS_16 Izdelava_BMS_17 Izdelava_BMS_18

 

 

 

 

 

 

Izdelava_BMS_19 Izdelava_BMS_20Izdelava_BMS_21

 

 

 

 

 

 

Izdelava_BMS_22 Izdelava_BMS_23 Izdelava_BMS_24

 

 

 

 

 

 

Kako električno povezati zgornje vezje, si lahko ogledate na spodnji vezalni shemi.

vezalna_shema_za_BMS_napajanje

 

 

 

 

 

 

 

 

 

Rele REL1 preklaplja med dvema viroma napajanja. Brez proženja je vezje stalno napajano iz 230V omrežja, tako se BMS vedno vključi, ko priključimo polnilni kabel v vozilo. Ko pa obrnemo kontaktni ključ v pozicijo 1 se REL1 vključi in vključi 144 V DC napajanje iz pogonskih baterij. Rele REL2 služi za izklop baterijskega polnilca, ko mu BMS da komando za izklop. Rele REL3 pa služi za avtomatski vklop balansiranja, ko priključimo polnilni kabel. V tem primeru nimamo možnosti pozabiti vključiti balansiranje ročno, vsakič ko polnimo avto.

Sledi nam še vgradnja v avto. Jaz sem master ploščo montiral v eno plastično ohišje, ter ga položil v spodnji predal v sredinsko konzolo. Slave ploščice pa so izdelane po meri, tako da ustrezajo na vijake vsake baterije. Pri montaži moramo paziti, da ne obrnemo ploščice na baterije v napačno stran, saj v tem primeru sledi uničenje elektronskih komponent, na vezju. Oznaka + na plošči mora biti na oznaki + na bateriji.

Izdelava_BMS_25Izdelava_BMS_26 Izdelava_BMS_27

 

 

 

 

 

 

Napajalno in kontrolno vezje sem montiral v prtljažni prostor poleg ostalih varovalk. Poleg tega sem na 12V linijo napajalnika vezal še 1A varovalko za dodatno zaščito.

Izdelava_BMS_29

 

 

 

 

 

 

Ob montaži slave plošč na baterije, je potrebna še izdelava komunikacijskih žic. Slave ploščice so povezane v zaporedje od master enote do prve plošče in nato do vsake naslednje, na koncu pa zopet pridemo nazaj na master ploščo. Povezava je dvožilna. Jaz sem za povezavo razdrl en UTP cat6 mehko žilni kabel, iz njega vzel medsebojno zvite parice in jih dodatno zaščitil z termo krčljivo cevjo. Ko izdelamo povezave z termo krčljivo cevjo, jih moramo še tople montirati na konektorje, saj ko se shladijo niso več dovolj prožne za ukrivljanje. Povezuje se iz pina1 na pin1 na naslednji plošči.

Izdelava_BMS_32Izdelava_BMS_33 Izdelava_BMS_34

 

 

 

 

 

 

Vgradnja slave plošč na baterije in povezovanje komunikacijskih vodnikov.

Izdelava_BMS_28Izdelava_BMS_35Izdelava_BMS_36

 

 

 

 

 

 

Izdelava_BMS_37

 

 

 

 

 

 

Ko pa imamo vse potrebno povezano, sledi testiranje z polnjenjem.

Izdelava_BMS_38 Izdelava_BMS_39Izdelava_BMS_40

 

 

 

 

 

 

Na koncu, ko vidimo, da nam vse normalno deluje, pa lahko za boljšo toplotno prevodnost, termo senzorje, prilepimo z termo prevodnim lepilom na baterije.

Izdelava_BMS_43

 

 

 

 

 

 

Za lažjo predstavo delovanja balansiranja, pa si lahko ogledate še video.

Direktna povezava na video