24-48V BMS: Unterschied zwischen den Versionen
Zeile 282: | Zeile 282: | ||
* Korrekter Anschluss der Zellen 5/6 und 10/11 (ohne gegenseitige Wechselwirkung) | * Korrekter Anschluss der Zellen 5/6 und 10/11 (ohne gegenseitige Wechselwirkung) | ||
'''Auchtung:''' Bitte beachte die dadurch geänderte Steckerbelegung des Molexsteckers für die Zellspannungsmessung | '''Auchtung:''' Bitte beachte die dadurch geänderte Steckerbelegung des Molexsteckers für die Zellspannungsmessung | ||
+ | |||
'''Variante 1:''' | '''Variante 1:''' | ||
Das Boardlayout des BMS Controllerboards ist mit vergrößerter Platine konstruiert, sodass diese mithilfe von Schrauben im Hutschienengehäuse von Apra Norm „Apra Rail F06" oder „Apra Rail M06“ mit den Abmessungen (B x L x H) 107 mm x 90 mm x 48 mm montiert werden kann. Mit zwei selbstschneidende Schrauben kann die Platine direkt im Gehäuse festgeschraubt werden. Mithilfe zweier weiterer Abstandshalter mit Innengewinde M3, Länge 8 mm die mit dem Gehäuseboden verklebt werden kann die Platine mit weiteren 2 M3 Schrauben sicher im Gehäuse fixiert werden. Die Dateien des Layouts (auch Gerberfiles) und des Schaltplans von Variante 1 sowie die Stückliste sind unter folgendem Link zu finden: | Das Boardlayout des BMS Controllerboards ist mit vergrößerter Platine konstruiert, sodass diese mithilfe von Schrauben im Hutschienengehäuse von Apra Norm „Apra Rail F06" oder „Apra Rail M06“ mit den Abmessungen (B x L x H) 107 mm x 90 mm x 48 mm montiert werden kann. Mit zwei selbstschneidende Schrauben kann die Platine direkt im Gehäuse festgeschraubt werden. Mithilfe zweier weiterer Abstandshalter mit Innengewinde M3, Länge 8 mm die mit dem Gehäuseboden verklebt werden kann die Platine mit weiteren 2 M3 Schrauben sicher im Gehäuse fixiert werden. Die Dateien des Layouts (auch Gerberfiles) und des Schaltplans von Variante 1 sowie die Stückliste sind unter folgendem Link zu finden: | ||
+ | |||
'''Variante 2:''' | '''Variante 2:''' |
Version vom 3. Dezember 2020, 05:55 Uhr
Anleitung zum Aufbau und Inbetriebnahme
Folgende Anleitung zum Aufbau und zur Inbetriebnahme des BMS 24V-48V von LibreSolar soll einen Leitfaden darstellen, um den selbständigen Nachbau und die Inbetriebnahme des BMS zu ermöglichen. Der Leitfaden orientiert sich am Aufbau eines BMS für einen LiFePO Akkumulator mit 9 Zellen (28,8V) integriert in einem DC Solarstromspeicher und hat keinen Anspruch auf Vollständigkeit.
Randdaten des realisierten Projektes:
- Akkupack 9x 3,2V 60Ah Innopower LiFePo Akkumulatoren, verspannt mit Kunststoffband
- Max. Ladestrom 30A über 2x MPPT 100-15 Victron Laderegler
- Max. Entladestrom von 11A über Wechselrichter AE Conversion
Grundlegende Informationen zum BMS sind unter folgenden Links zu finden:
- Genereller Überblick über das BMS, BMS-Features, Einordnung, zukünftige Entwicklungen, bisheriger Einsatz etc. [1]
- Vollständiges Repository aller Daten (Sourcecode, Leiterplattenlayouts) für das BMS, neueste Entwicklungen, Verbesserungen, Fortschritte im Projekt, behobene Bugs etc. [2]
- Überblick über die verschiedenen Elektronikentwicklungen von Martin Jäger, Einordnung BMS 24-48V [3]
- Beschreibung der Hardware BMS Controllerboard [4]
- Beschreibung der Hardware des Switch N Sense [5]
Zum selbstständigen Aufbau und zur Inbetriebnahme des BMS sind folgende Kenntnisse unbedingt erforderlich:
- Grundkenntnisse der Elektrotechnik
- Ggf. Löten von SMD Bauteilen
- handwerkliches Geschick
Systemübersicht
Das LibreSolar BMS 24-48V besteht aus zwei Hauptkomponenten: das BMS Controllerboard und das BMS Leistungsboard.
Das BMS Controllerboard ist zuständig für die Spannungsüberwachung der angeschlossenen Zellen, deren Balancing (Entladung von Zellen mit zu hohem Spannungsniveau über Widerstände), Temperaturüberwachung, Stromüberwachung, Berechnung des SoC, der Ansteuerung des BMS Leistungsboards zur Unterbrechung des Lade- und Entladeprozesses im Fehlerfall über Leistungsmosfets, der Ansteuerung des Kommunikationsinterfaces (CAN, UART/I2C/SPI) und der Abarbeitung des Hauptprogramms.
Das BMS Leistungsboard (Switch-N-Sense) enthält je 2 parallel geschaltete Hochleistungsmosfets für jede Stromrichtung in antiserieller Anordnung und einen High-Side-Treiber. Die Ansteuerung erfolgt über das BMS Controllerboard. Dort befindet sich auch der Shunt für die Strommessung. Der dazugehörige A/D-Wandler sitzt im bq769x0. Ein maximaler Strom von 80A kann geschalten werden, wobei dabei unbedingt Kühlkörper auf den Mosfets (Unterseitig auf dem BMS Leistungsboard) zur Abfuhr der Verlustleistung angebracht werden müssen. Kühlungsbedarf besteht insbesondere auch dann, wenn die MOSFETs nur in einer Stromrichtung durchgeschaltet sind und der Strom durch die Body-Dioden der anderen MOSFETs fließt.
Folgendes Bild beschreibt die wesentlichen Bestandteile der Platinen:
Das aktuelle eagle Layout, Stromlaufpläne etc. inklusive Beschreibung aller Bauteile sind unter [6] sowie [7] zu finden.
Das eigentliche Zellbalancing (Überwachung, Balancing und Hauptsicherheitsfeatures) führt der Balancing-IC bq769x0 durch. Dieser wird je nach Anzahl der angeschlossenen Zellen und Spannungsniveau des Akkupacks ausgewählt:
bq76920: 3-5 Zellen Spannung ist abhängig von Zellchemie, BMS kann nicht nur LiFePO
bq76930: 6-10 Zellen
bq76940: 9-15 Zellen
Das vorliegende Platinenlayout BMS 48V ist für den IC bq76930 (6-10 Zellen) bzw. bq76940 (9-15 Zellen ) ausgelegt. Die abweichende Bestückung beim Einsatz des bq76930 ist im Schaltplan angegeben.
Ist ein BMS für ein Akku mit bq76920: 3-5 Zellen notwendig, so kann das 5-cell Battery Management System (12V) von Matin Jäger verwendet werden [8]. Der hier in der Anleitung verwendete Balancing IC ist der bq76930. Das Datenblatt „bq769x0 Family Top 10 Design Considerations“ bzw. „bq769x0 3-Series to 15-Series Cell Battery Monitor Family
for Li-Ion and Phosphate Applications“ ist unter [9] zu finden.
Der Balancingstrom von ca. 100 mA bei 3,3V wird bestimmt durch die 33Ohm Balancingwiderstände. Allerdings verwendet der bq769x0 pro Zyklus 30% der Zeit für die Messung und nur 70% für das Balancing, so dass sich ein effektiver Balancingstrom von ca. 70mA einstellt. Weiterhin können bedingt durch das Schaltungsdesign nebeneinanderliegende Zellen nicht gleichzeitig entladen werden.
Im oben dargestellten Bild ist der IC (bq76930) (6-10 Zellen ) verwendet, sodass die Balancingwiderstände für die Zellen (11-15) nicht bestückt sind.
Werden weniger als 10 bzw. 15 Zellen verwendet, müssen überzählige Zellanschlüsse nach einem im Datenblatt dargestellten Schema überbrückt werden. Dies kann entweder durch verbinden der betreffenden Zellanschlusskabel oder durch Lötbrücken direkt an den Pins des Molex-Steckverbinders auf der Platine erreicht werden. Im vorliegenden Projekt (9 Zellen) wurden die Kontakte C8 und C9 gebrückt. In folgender Tabelle, entnommen aus dem Datenblatt des bq76930 auf Seite 46/47, ist beispielhaft der notwendige Zellkurzschluss für eine unterschiedliche Zellanzahl dargestellt.
Das Datenblatt für den Prozessor STM32F072 ist verfügbar unter: [10]
Für das vorliegende Setup benötigen wir keine CAN Schnittstelle, sondern verwenden den UEXT (Universal EXTension) Anschluss. Im ersten Schritt wird daran bspw. über einen 10-poligen Wannenstecker ein I2C fähiges Display (OLED SSD1306) an dem BMS Controllerboard angeschlossen, um so direkte Auskunft zu Lade-/Entladestrom, Akkuladezustand und Spannungsniveau der einzelnen Zellen zu bekommen.
Über die UEXT Schnittstelle stehen die seriellen Schnittstellen I2C, SPI und RS232 bereit (auch gleichzeitig!), um mit anderer Hardware zu kommunizieren. Der UEXT Standard wird unter folgenden Links erklärt:
Anschlussreihenfolge für OLED:
Anschlusspin OLED | UEXT Pin |
---|---|
I2C1_SDA | Pin 6 |
GND | Pin 2 |
+3V3 | Pin 1 |
I2C1_SCL | Pin 5 |
Cortex Stecker
An den Cortex-Stecker auf dem BMS Controllerboard wird der Cortex ST-Link Adapter angeschlossen (verfügbar unter [14] Bestellung unter: [15]) mithilfe dessen und einem Nucleo Board der Flash- bzw. Debug-Vorgang des STM32 erfolgt. Genaue Vorgehensweise siehe unter Flashvorgang.).
Batterieanschlussklemmen
Die Anschlussblöcke für Batterie und Stromverbraucher auf dem BMS Leistungsboard sind PowerOne Buchsen von Würth Electronic (Nr. 93172) [16] Würth Power Elements WP-BUCF (order code 7461059) und müssen z.B. mithilfe eines Schraubstockes in das BMS Leistungsboard eingepresst werden. Dies ist auch bei schon bestückter Platine möglich, erfordert aber folgende speziell ausgeschnittene bzw. ausgelaserte Unterlegscheiben bspw. aus Holz oder stabiler Pappe.
Die Kontur ist der Datei „Switch-N-Sense.dxf“ zu entnehmen, exportiert aus dem Eagle Board Layout des BMS Leistungsboards.
File:Switch-N-Sense.zip
Alternativ kann auch sehr weiches Holz (z.B. Balsaholz) als Widerlager verwendet werden, in das sich die Metallfüße eindrücken können.
Die c-Hack Batslergruppe aus Calw haben sich zum Einpressen der Buchsen eine professionelle Presse gebaut, deren Beschreibung unter folgenden Links zu finden ist:
Die Anschlussblöcke verfügen jeweils über ein M6 Innengewinde zur Befestigung der Kabelschuhe der Batterie- und Anlagenanschlussklemmen mit M6x10 oder M6x12 Flachkopf Sechskant- oder Innensechskantschrauben.
Die 18 bzw. 6 poligen „Molexstecker“ (Typ Micro Fit 3,0mm bzw. Würth Elektronik „3.00mm Micro Power Connector WR-MPC3“) finden u.a. auch in der Automobilbranche ihre Anwendung und werden im vorliegenden Projekt mithilfe einer „KNIPEX Crimpzange“ konfektioniert.
Da diese Crimpzange sehr hochpreisig ist kann folgende Universalzange ein guter Kompromiss darstellen: [21]
Für die Crimpung der einzelnen Litzen werden Litzenschuhe von folgendem Typ (ebenfalls Würth Sortiment) verwendet: „3.00mm Female Terminal WR-MPC3“ Nachdem der „Molexstecker“ vollständig in das BMS Controllerboard eingesteckt wurde, ist dieser nur noch schwer (mit viel Mühe) lösbar. Im Testbetrieb möglichst nicht bis zum Einrasten einstecken!
Die Funktion des An-Aus Knopf ist hier [22] ausführlich beschrieben ( Stichwort „Boot-up procedure and power supply“ )
Leistungsmosfets
Es werden vier SMD Leistungsmosfets im BMS Leistungsboard verwendet ( Typ FDMT80080DC). Im vorliegenden Projekt sind die -MOSFETs mit einer Spannung von 60V verwendet.. Unter folgendem Link gibt es Hinweise zu möglichen Mosfets: [23]
Die Bestückung der SMD Mosfets erfolgt mithilfe eines Reflowofens und sollte, um andere Bauteile nicht zu beschädigen, somit am Anfang des Bestückungsprozesses erfolgen.
Eigenheiten des bq769x0
Bis zu drei Temperatursensoren sind am BMS Controllerboard anschließbar und mit dem Controller bq769x0 verbunden. Diese liegen auf unterschiedlichen Spannungsniveaus. D.h. ein Zusammenschalten der Temperatursensoren zerstört das BMS-IC!
Ist kein Temperatursensor angeschlossen, dann funktioniert der bq769x0 nicht ordentlich. Abhilfe schafft hier bspw. ein Hilfswiderstand (10kOhm), der anstelle des Temperatursensors angeschlossen werden kann. Verwendete Temperatursensoren: NTC Thermistor Typ: TTC3A103F34D3EY
Hardwareänderungen
Momentan sollten noch vor Inbetriebnahme des BMS Hardwareänderungen am BMS Controllerboard (Überbrückungen und Leiterbahnunterbrechungen) durchgeführt werden, um fehlerhafte Spannungsmessung an Zelle 5/6 und evtl. Zelle 10/11 zu vermeiden.
Eine Dokumentation ist unter [24] zu finden.
Eine Aktualisierung des Boardlayouts ist inzwischen fertiggestellt und unter dem Abschnitt Aktualisierung des Boardlayouts zu finden.
Schematischer Aufbau, Komponenten Akkumulator
Grundlegendes
Im vorliegenden Projekt werden neun Zellen a 3,2V des Lithium-Eisen-Mangan-Phosphat Akku von Innopower INNO-LFMP 60 AH verwendet.
Abmessungen Zelle: 125x65x185mm, Gewicht:ca.2,0 kg pro Zelle. Innopower liefert den Akkupack per Post fertig mit Kunststoffband verspannt incl. Polverbinder, Polschrauben und Zellabdeckung. Datenblatt zu finden unter: [25]. Durch chemische Prozesse beim Auf- und Entladeprozess kommt es zu volumetrischen Ausdehnungen des Akkublocks. Um Verformungen zugunsten höherer Lebenserwartung klein zu halten wird empfohlen, die Zellen z.B mit einem Drahtseil oder mit Gewindestangen und beidseitigen Endplatten fest zusammenzuspannen. Die Zyklenzahl ist bei einer DoD (Depth of Discharge) von 80% mit >= 5000 angegeben.
In folgendem Bild ist die gemessene Entladungskurve des Akkupacks dargestellt entladen mit einer konstanten Last von 105W.
Folgendes Ergebnis wurde ermittelt:
- Kapazität: 70,8Ah bzw. 118% der Nennkapazität - Energieinhalt: 2,07kWh
Wie in der Abbildung zu erkennen, bleiben die Zellspannungen fast über den ganzen Bereich sehr nah beisammen. Gegen Ende fächern die Kurven auf, was auf kleine Toleranzen in der Kapazität der Zellen hinweist. Der vorliegende Akkumulator wird in den folgenden Spannungsgrenzen betrieben:
Schwellwert Überspannung: 3,65V/Zelle
Schwellwert Unterspannung: 2,85V/Zelle
Ladeschlussspannung im Normalbetrieb: 3,5V/Zelle
Entladeschlussspannung im Normalbetrieb: 3,1V/Zelle
Im bq769x0 sind keine Hysteresen implementiert.
Anschluss Akkumulator
Batterieanschlusskabel
In folgender Abbildung ist der Anschluss der Akkumulatorpole an das BMS Leistungsboard dargestellt. Verwendet wurde als Batterieanschlusskabel in rot und schwarz eine „ADERLEITUNG 1X16 RT H07V-K“. Der Anschluss an das Leistungsboard erfolgt mit Ringkabelschuhen für ein Kabel mit Querschnitt 16mm^2 und einem Lochdurchmesser für M6 Schrauben. Der Anschluss an den Akkumulator erfolgt mit Ringkabelschuhen für ein Kabel mit Querschnitt 16mm^2 und einem Lochdurchmesser für M4 Schrauben (4,3mm, Polschrauben im Lieferumfang Akkumulator).
Anschlusskabel für Zellspannungsmessung und Temperatursensoren
In folgender Abbildung ist der Anschluss der einzelnen Akkumulatorzellen an das BMS Controllerboard dargestellt. Die konkrete Belegung der „Molexstecker“ ist in untenstehender Tabelle sowie auch im Eagle Boardlayout hinterlegt. Verwendet wurde hier für die Akkumulatorzellen folgende Kabelqualität: Steuerleitung Ölflex, 12 Adern 0,5mm^2 Grau Für die Temperatursensoren wurde hier folgende Kabelqualität verwendet: Steuerleitung Ölflex, 7Adern 0,5mm^2 Grau Die zwei Temperatursensoren werden in der Mitte zwischen Zelle 3 und 4 sowie 6 und 7 angeordnet. Der Anschluss an die Akkumulatorzellen erfolgt mit Ringkabelschuhen für ein Kabel mit Querschnitt 1mm^2 und einem Lochdurchmesser für M4 Schrauben (4,3mm, Polschrauben im Lieferumfang Akkumulator).
Für die „Molexstecker“ gilt folgende Pinbelegung: Anschlüsse für Temperaturmessung
Pin Nummer | Pin Bezeichnung | Farbe | Bemerkung |
---|---|---|---|
1 | GND | schwarz | Sensor 1 - |
4 | TS1 | weiß | Sensor 1 + |
2 | VC5X | braun | Sensor 2 - |
5 | TS2 | grau | Sensor 2 + |
3 | VC10X | blau | Sensor 3 - (unbelegt beim BQ76930) |
6 | TS3 | rot | Sensor 3 + (unbelegt beim BQ76930) |
Anschlüsse für Zellspannungsmessung
Pin Nummer | Pin Bezeichnung | Farbe | Bemerkung |
---|---|---|---|
1 | GND | schwarz | Zelle 1 - |
10 | C0 | grün-gelb | Zelle 1 - |
2 | C1 | grau | Zelle 1 + |
11 | C2 | braun | Zelle 2 + |
3 | C3 | blau | Zelle 3 + |
12 | C4 | lila | Zelle 4 + |
4 | C5 | rosa | Zelle 5 + |
13 | C6 | orange | Zelle 6+ |
5 | C7 | gelb | Zelle 7 + |
14 | C8 | weiß | Zelle 8 + |
6 | C9 | - | auf Platine gebrückt mit C8 |
15 | C10 | transparent | Zelle 9 + |
7 | C11 | - | unbelegt beim BQ76930 |
16 | C12 | - | unbelegt beim BQ76930 |
8 | C13 | - | unbelegt beim BQ76930 |
17 | C14 | - | unbelegt beim BQ76930 |
9 | C15 | - | unbelegt beim BQ76930 |
18 | PWR | rot | Zelle 9 + |
Aktualisierung des Boardlayouts
Die Hardwareänderungen wurden in zwei Varianten durchgeführt. Bei beiden Varianten wurde folgendes geändert:
- Korrekter Anschluss des CAN Microcontrollers Pin „CAN_STB“ am BQ76940
- Korrekter Anschluss der Zellen 5/6 und 10/11 (ohne gegenseitige Wechselwirkung)
Auchtung: Bitte beachte die dadurch geänderte Steckerbelegung des Molexsteckers für die Zellspannungsmessung
Variante 1:
Das Boardlayout des BMS Controllerboards ist mit vergrößerter Platine konstruiert, sodass diese mithilfe von Schrauben im Hutschienengehäuse von Apra Norm „Apra Rail F06" oder „Apra Rail M06“ mit den Abmessungen (B x L x H) 107 mm x 90 mm x 48 mm montiert werden kann. Mit zwei selbstschneidende Schrauben kann die Platine direkt im Gehäuse festgeschraubt werden. Mithilfe zweier weiterer Abstandshalter mit Innengewinde M3, Länge 8 mm die mit dem Gehäuseboden verklebt werden kann die Platine mit weiteren 2 M3 Schrauben sicher im Gehäuse fixiert werden. Die Dateien des Layouts (auch Gerberfiles) und des Schaltplans von Variante 1 sowie die Stückliste sind unter folgendem Link zu finden:
Variante 2:
Das BMS Controller- und Leistungsboard sind in einer Eagle Datei vereinigt. Dadurch lassen sich die Platinenherstellungs- und bestückungskosten reduzieren. Beide Boards lassen sich an ihrer Trennstelle zersägen. Die jeweils aktualisierten Dateien des Layouts und des Schaltplans sind unter folgendem Link zu finden:
Die jeweils aktualisierten Dateien des Layouts und des Schaltplans sind unter folgendem Link zu finden: File:LibreSolar_BMS48V_mit_SNS.zip
Folgende Abbildungen zeigen das aktualisierte und modifizierte Boardlayout und die dazugehörige Steckerbelegung (20 Pins) für den Anschluss an den in diesem Projekt verwendeten 9-zelligen Akku.
Steckerbelegung (20 Pins) des modifiziertes Platinenlayouts für den vorliegenden 9 Zelligen Akku
Anschlüsse für Temperaturmessung
Pin Nummer | Pin Bezeichnung | Farbe | Bemerkung |
---|---|---|---|
1 | GND | schwarz | Sensor 1 - |
4 | TS1 | weiß | Sensor 1 + |
2 | VC5X | braun | Sensor 2 - |
5 | TS2 | grau | Sensor 2 + |
3 | VC10X | blau | Sensor 3 - (unbelegt beim BQ76930) |
6 | TS3 | rot | Sensor 3 + (unbelegt beim BQ76930) |
Anschlüsse für Zellspannungsmessung
Pin Nummer | Pin Bezeichnung | Farbe | Bemerkung |
---|---|---|---|
1 | GND | schwarz | Zelle 1 - |
11 | C0 | grün-gelb | Zelle 1 - |
2 | C1 | grau | Zelle 1 + |
12 | C2 | braun | Zelle 2 + |
3 | C3 | blau | Zelle 3 + |
13 | C4 | lila | Zelle 4 + |
4 | C5 | rosa | Zelle 5 + |
14 | C5.1 | - | auf Platine gebrückt mit C5 |
5 | C6 | orange | Zelle 6 + |
15 | C7 | gelb | Zelle 7 + |
6 | C8 | weiß | Zelle 8 + |
16 | C9 | - | auf Platine gebrückt mit C8 |
7 | C10 | transparent | Zelle 9 + |
17 | C10.1 | - | unbelegt beim BQ76930 |
8 | C11 | - | unbelegt beim BQ76930 |
18 | C12 | - | unbelegt beim BQ76930 |
9 | C13 | - | unbelegt beim BQ76930 |
19 | C14 | - | unbelegt beim BQ76930 |
10 | C15 | - | unbelegt beim BQ76930 |
20 | PWR | rot | Zelle 9 + |
Platinenherstellung und Bestückung
Auf [26] ist das Eagle Layout des BMS Controller- und Leistungsboards incl. aller Schaltpläne und bestückter elektronsicher Bauteile zu finden. Es ist darauf zu achten, bei externer Bestückung den richtigen BQ769x0 einzupflegen. Die bisherigen Platinen wurden bei https://aisler.net/ bestellt und gefertigt. Da das Bestücken für Einzelplatinen aufgrund der Rüstkosten für die Bestückungsmaschine sehr hoch sind, kostet dies derzeit bei einer Abnahme >10 Stück immer noch > 150€ für Controller- und Leistungsboard.
Im vorliegenden Projekt wurden die SMD Bauteile von Hand bestückt.
Gehäuse, Platinenbefestigung
Ein Gehäuse steht im .step bzw. . FCStd als Hutschienengehäuse bzw. zur Montage auf festem Untergrund zur Verfügung und kann als Vorlage zum 3d Druck verwendet werden.
Hierbei empfehlen sich folgende Einstellparameter bei der Verwendung von PLA Kunststoff:
Überschrift | Überschrift |
---|---|
Drucker | Ultimaker Original+ |
Material | PLA 3mm Draht |
Slicer | Ultimater Cura_Engine 3.6.0 |
Schichtdicke | 0,1mm |
Wanddicke | 0,8mm |
Anzahl Wandlinien: | 3 |
Obere/untere Dicke | 0,8mm |
Füllung | 80% |
Drucktemperatur | 200°C |
Temperatur Druckplatte | 60°C |
keine Kühlung | Beispiel |
Stützstruktur aktiviert | Beispiel |
Druckplattenhaftung | Brim |
Im Gehäuse ist auf der Rückseite des BMS Leistungsboard genügend Platz, um bei hohen Schaltströmen Kühlkörper für die Mosfets anzubringen (Kühlkörpertyp: Kühlkörper für PGA, 25 x 28 x 15,3 mm). Nach dem Druck muss die Stützkonstruktion entfernt werden. Weiterhin sind alle Löcher für ein M3 Gewinde mit einem Durchmesser von 2,5mm aufzubohren und anschließend ein M3 Gewinde einzuschneiden. Durchgangs und Senklöcher sind ebenfalls entsprechend aufzubohren.
Folgende zusätzliche Bauteile sind für den Zusammenbau notwendig:
- Gehäuseschraube 4x M3 Länge 50mm
- 8x M3 Schraube zur Befestigung der Platinen
- 4x M4 Schraube Länge 50mm mit Mutter zur Befestigung der Hutschienenaufnahme
- 2x Lichtleiter „Cliplite 4mm Litepipe Vertical“ für 4,3mm Bohrloch. Länge: 2000‘‘???
Folgende Anpassungen sind im CAD Modell noch einzupflegen:
Funktionell:
- Anpassung der Befestigungslöcher des BMS Leistungsboards an das exakte Maß der Platine
- Aufdickung der Wandstärke des Sackloches der Gehäuseschrauben
Optisch:
- Anpassung der Lüftungsschlitze auf eine Höhe
- Verkleinerung der vertikalen Schattenfuge
- Vergrößerung der Gehäuseverrundung am Deckel
- Einfügen des open source hardware logos sowie der „on/off“ Beschriftung
Flashvorgang
Vor Inbetriebnahme des BMS muss der Hauptprozessor mithilfe eines beliebigen Nucleo Boards geflasht werden. Dies erfolgt, wie unter Abschnitt „Cortex Stecker“ schon erwähnt, mithilfe des „Cortex ST-Link Adapter“ sowie der Entwicklungsumgebung „PlatformIO“. Der aktuelle Quellcode zum kompilieren ist zu finden unter [27]
Wesentliche Anpassungen dieses Quellcodes an die jeweilige Zellchemie und Akkuaufbau sind dem Kapitel „Anpassungen im Quellcode für den Prozessor STM32„ zu entnehmen.
Das Nucleo Board wird mithilfe eines Mini-USB-Kabels an den Computer angeschlossen. Flashreihenfolge:
1. 18-poliger Stecker für die Zellanschlüsse einstecken (Cortexstecker liefert keine Betriebsspannung)
2. Quellcode im Programm PlatformIO öffnen
Notwendige Anpassungen bzgl. BMS-Typ und Akku-Typ vornehmen: config.h, config_48v.h, main.cpp, nach Bedarf output.cpp. Siehe hierzu Abschnitt Anpassungen im Quellcode für den Prozessor STM32
3. BMS ohne Anschluss der Batterie / Verbraucher / Raspberry über den „Cortex ST-Link Adapter“ an das Nucleo Board anschließen
4. Nucleo Board über Mini USB Kabel an Computer anschließen
5. On/Off Taster am BMS Controllerboard betätigen
6. Quellcode kompilieren und flashen
7. Nach dem Kompilierungsvorgang Verbindung zwischen Computer und Nucleo Board trennen und BMS Controllerboard am Verwendungsort montieren.
Anschluss an Raspberry Pi zur Überwachung und Datenauswertung
Es besteht die Möglichkeit über die UEXT Schnittstelle neben einem Display (OLED) zur Überwachung des BMS ein Raspberry Pi anzuschließen, das mithilfe der Open Source Software „volkszähler“ alle ausgegebenen BMS Daten graphisch für alle gewünschten Zeitspannen darstellt und in einer Datenbank speichert.
Es ist weiterhin möglich aus der Datenbank kumulierte Werte für beliebige Zeitspannen berechnen zu lassen und via JSON oder CSV zu exportieren.
Zur Einrichtung der Datenüberwachung mithilfe eines Raspberry Pi benötigt es folgende Hardware:
- Raspberry Pi, Speicherkarte, Netzteil
- USB Schnittstellenwandler (Adapter USB-UART: CP2102) (alternativ interner UART des Raspberry Pi)
Pin „USART2_TX“ der UEXT Schnittstelle wird mit Pin RXD des USB Schnittstellenwandlers verbunden und dieser wird in einen USB Port des Raspberrys eingesteckt. Weiterhin GND von BMS und Wandler verbinden. Vorsicht: USB-Adapter mit 3,3V Logikpegel verwenden, der TX-Pin des STM32 ist nicht 5V tolerant. . Vor Anschluss des Adapters Spannung kontrollieren (manche Adapter auf Basis des CH340G arbeiten bspw. mit 5V!).
Auf volkszaehler.org wird ein Image für den Raspberry Pi angeboten, das die vollständige Betriebssysteminstallation incl. Volkszählersoftware enthält. Installation und Einrichtung sind unter folgendem Link beschrieben. [28]
Einrichtung der Kanäle im „web Frontend“ und in der Konfigurationsdatei „vzloggerconf“:
Web Frontend
Jeder Kanal verfügt über eine eindeutige UUID. Soll ein neuer Kanal erstellt werden, so wird zuerst im web Frontend unter Kanal hinzufügen, Reiter Kanal erstellen ein neuer Kanal erstellt. Mit der vzlogger.conf wird dann später die Verknüpfung zwischen dieser UUID und den eingehenden Daten von der seriellen Schnittstelle hergestellt. Bei der Kanalerstellung ist wichtig unter „Typ“ die Art der zu erfassenden Messdaten auszuwählen. Weiterhin ist der Kanalname unter „Titel“ hinzuzufügen und ggf. die Auflösung, in der die Rohdaten der Messwerte vorliegen, hier mV und mA, also Auflösung 1000. Im Falle des BMS ergeben sich also folgende Kanäle:
Titel | Typ | Auflösung |
---|---|---|
Zellspannungen | Spannungssensor | 1000 |
Ladestrom | Stromsensor | 1000 |
Akkutemperatur | Temperatur | Beispiel |
SOC | Sensor | Beispiel |
Balancing Status | Sensor | Beispiel |
Weiterhin sollte eine Farbe ausgewählt werden. Wenn das Webinterface nur im lokalen Netz zugänglich ist, kann auch der Haken bei „öffentlich“ gesetzt werden, damit die Kanäle später auch ohne Kenntnis der UUID wieder gefunden werden können.
Die Kanalerstellung im web Frontend wird mit dem Button „erstellen“ abgeschlossen.
Damit volkszähler die Verknüpfung zwischen eingehenden Daten über den USB Port zum jeweiligen Kanal im web Frontend finden kann, ist die für jeden Kanal eindeutig generierte UUID dem web Frontend zu entnehmen. Die Kanaldetails öffnen sich durch Klick auf den Infobutton hinter jedem Kanal.
Einrichten der „vzlogger.conf“
Nun ist die Datei vzlogger.conf auf dem Raspberry unter /etc/vzlogger.conf mit einem Editor (z.B. nano) zu öffnen und die Kanäle, wie hier an einem Beispiel dargestellt, einzufügen. Eine vollständige Liste der Einträge bzgl. BMS in der vzloggerconf ist unter diesem Link erreichbar: File:vzlogger.zip Die Konfigurationsdatei ist in JSON verfasst. Es ist darauf zu achten, dass die Klammerung und Kommastellung exakt den Vorgaben entspricht.
Hier ein Beispiel eines Kanals, der die Datenpunkte der Messgröße „Strom“ erfasst.
{
"uuid": "0da9ee10-8148-11e8-8297-31989604f71e", // Strom
"middleware": "http://127.0.0.1/middleware.php",
"aggmode": "AVG"
},
Erläuterung:
Quellcode | Bedeutung |
---|---|
Uuid | Eindeutige Kanalzuweisung, Wert wie oben beschrieben aus web Frontend entnehmen |
Middleware | Pfad wie die Datei middleware.php auf dem Raspberry über das web Frontend erreichbar ist |
Identifier | Präfix in der seriellen Datenübertragung (BMS Controllerboard zu Raspberry) |
Aggmode | Aggregationsmodus. Zur Auswahl steht „AVG“ (Durchschnittswert), „MAX“ (Maximalwert) und „SUM“ (für Impulse). Je nach Einstellung werden alle mit „aggtime“ definierten Zeitraum eintreffenden Messwerte mit dem Entsprechenden Modus zu einem Datensatz zusammengefasst und in die Datenbank eingetragen. |
Ausgehend vom BMS müssen die Datenpunkte für die seriellen Datenübertragung folgendermaßen ausgegeben werden:
"1-3:12.7.0*255("<Messwert>*<Einheit(optional)>)“;
wobei der erste Teil der von vzlogger zu erkennende Identifier ist. Eine entsprechend angepasste output.cpp, die das passende Ausgabeformat liefert, steht unter folgendem Link zur Verfügung. Damit die serielle Ausgabe über UEXT benutzt werden kann, muss die Funktion output_DOGLCD und die Erzeugung des entsprechenden Objekts im Quellcode deaktiviert werden.
Um bei Fehlfunktion schnell die Ursache zu finden ist es oft ratsam, die Log-Datei des vz loggers anzusehen. Diese ist zu finden unter:
/var/log/vzlogger.log
Starten des vzloggers über WinSCP:
WinSCP erlaubt den komfortablen Zugriff auf das Raspberry, um Daten z.B. per Drag and Drop zu verwalten oder über PuTTY der integrierten Eingabeaufforderung per Kommandozeile z.B. Programme auf dem Raspberry zu installieren, Datenbanken zu verwalten oder Dateirechte zu vergeben. Im Loginfenster von WinSCP ist in diesem Fall als Rechnername die fest vergebene IP des Raspberry Pi‘s eingetragen. Das WinSCP Standard Login lautet:
SSH-User /Benutzer: pi
SS-H-PW: raspberry
Die Eingabeaufforderung per Kommandozeile wird über Menü → Befehle → „In PuTTY öffnen“ geöffnet.
Folgende Befehle sind relevant für den vz-logger und das Raspberry:
Befehl in Putty | Bedeutung |
---|---|
sudo systemctl start vzlogger | Vz logger neu starten |
sudo systemctl stop vzlogger | Vz logger anhalten |
sudo systemctl status vzlogger | Statusabfrage vz logger |
sudo shutdown –r 0 | Raspberry neu starten |
Raspberry sicher herunterfahren | sudo shutdown –h 0 |
Alle BMS Kanäle können als Gruppe zusammengefasst werden, indem wie nachfolgend dargestellt, im Dialog „Kanal erstellen“ unter „Typ“ der Eintrag „Gruppe“ ausgewählt, ein Titel vergeben und mit Erstellen bestätigt wird. Im web Frontend erscheint eine neue Zeilemit einem Ordner mit dem Namen des zuvor ausgewählten „Titels“. Nun können per Drag and Drop alle dem BMS zugeordneten Kanäle in diesen Ordner verschoben werden.
Die vollständig eingerichteten Kanäle sind in folgender Abbildung dargestellt. Mit dem Häkchen auf der linken Seite kann die Darstellung eines Kanals unterdrückt oder angezeigt werden. Im oberen Bereich erfolgt die graphische Darstellung der Daten. Je nach Cursorposition werden die Messdaten in der linken oberen Ecke für alle Kanäle angezeigt.
Mit den Navigationsbuttons unterhalb des Diagramms kann jeder beliebige Zeitraum zur Anzeige eingestellt werden. In der Tabellarischen Ansicht unten werden Minimum, Maximum und Durchschnittswert im betrachteten Zeitraum sowie der aktuelle bzw. letzte Wert angezeigt.
Mithilfe der Push-Funktion werden unter Umgehung der Datenbank alle vom BMS eingehenden Messwerte ohne Aggregation „live“ im Diagramm dargestellt. und der aktuelle Pushwert unter der Spalte „Aktuell“ angezeigt. (vgl. [29], im Standard-Image ist diese Funktion nicht eingerichtet).
Export von Datenbanksätzen
Ausgabe von Logdaten aus der volkszähler Datenbank in einer .csv Datei. Die .csv Dateien können bspw. in Excel oder OpenCalc eingelesen werden.
Folgender Link ist entsprechend angepasst in einen beliebigen Browser einzugeben:
http://192.168.1.2/middleware.php/data/c80541f0-26b9-11e7-95ac-f32e1bfb5a39.csv?from=2017-12-01&to=2018-01-01&group=hour
Aufschlüsselung:
Linkphrase | Bedeutung |
---|---|
192.168.1.2 | Webadresse des Volkszähler Frontends |
c80541f0-26b9-11e7-95ac-f32e1bfb5a39 | UUID des gewünschten Kanals |
.csv | Dateiformat der Ausgabe (alternativ auch z.B. json) |
from=2017-12-01&to=2018-01-01 | Zeitraum der Ausgabe der gewünschten Daten |
group=hour | Auflösung der Daten (alternativ hour, min, month) |
Beispiel des Abrufs zweier Kanäle gleichzeitig:
http://192.168.1.2/middleware.php/data.csv?uuid[]=c80541f0-26b9-11e7-95ac-f32e1bfb5a39&uuid[]=24e632f0-9b85-11e6-86da-f5af135fa7f8&from=2017-01-01&to=2018-01-01&group=month]
Für weitere und tiefergehende Infos siehe: [31]
Stromverbrauch BMS:
Bei 30V Akkuspannung ca. 5mA ohne und 7mA mit OLED.
Anpassungen im Quellcode für den Prozessor STM32
Im Stammverzeichnis des Quellcodes unter [32] sind folgende Dateien zu finden, die geladen und verknüpft im Kompilierungsprogramm „PlatformIO“ den gesamten Quellcode darstellen:
Config.h, Config_5s.h, Config_48v.h, Data_objects.h, Main.cpp, Output.cpp, Output.h, Output_can.cpp, Output_can.h
Im Quellcode sind folgende Änderungen vorzunehmen, um den hier beschriebenen Akku mit 28,8V und 9 Zellen an das BMS anzuschließen:
Config.h Auswahl der PCB Variante 48V
// select BMS board
//define BMS_PCB_5S
#define BMS_PCB_48V
Config_48v.h Auf der Unterseite des Switch N Sense Modul befinden sich bis zu vier parallel geschaltete Widerstände (R11 bis R14). Der Berechnete Summenwiderstandswert muss hier in den Quellcode eingetragen werden. Im vorliegenden Fall sind drei Widerstände mit 3mOhm parallel geschaltet, was einen Summenwiderstandswert von 1mOhm entspricht.
#define SHUNT_RESISTOR 1.0 // mOhm
main.cpp
Parameter setzen für die Akkuschutzfunktion (erster Wert in Klammer: Strom in mA, zweiter Wert: Zeit in us oder ms)
// ToDo: Ensure that these settings are set even in case of initial communication error
BMS.setTemperatureLimits(-20, 45, 0, 45);
BMS.setShuntResistorValue(SHUNT_RESISTOR);
BMS.setShortCircuitProtection(35000, 200); // delay in us
BMS.setOvercurrentChargeProtection(30000, 200); // delay in ms
BMS.setOvercurrentDischargeProtection(30000, 320); // delay in ms
BMS.setCellUndervoltageProtection(2800, 2); // delay in s
BMS.setCellOvervoltageProtection(3650, 2); // delay in s
BMS.setOCV(OCV);
BMS.setBatteryCapacity(72000); // mAh
BMS.update(); // get voltage and temperature measurements before switching on
BMS.setBalancingThresholds(5, 3350, 5); // minIdleTime_min, minCellV_mV, maxVoltageDiff_mV
BMS.setIdleCurrentThreshold(6000);
BMS.enableAutoBalancing();