1. Startseite
  2. AKKU
  3. Akku-Reset: SoH & Ladezyklenzähler

Akku-Reset: SoH & Ladezyklenzähler

Die folgenden Abschnitte enthalten ein paar technische Basisinformationen zu den Stromerakkus der BQ-Serie. Sie dienen lediglich als Hilfe für IT-versierte DIY, welche eine Lösung für den Reset des SoH & Ladezyklenzählers nach einer Zellerneuerung finden möchten.

Es ist nicht die Absicht hier eine ‚Endkunden-Easy-Going-Lösung‘ zu veröffentlichen. Auch der Autor hat diese nicht.

Allgemeine Informationen

Beim Reset muss man unterscheiden zwischen ‚Akku-Reset‘ und Reset des ‚SoH‘ (State of Health) sowie ‚Ladezyklenzählers‘. 

Ein Akku-Reset kann nötig werden, wenn der Akku, aufgrund eines unerwarteten externen Fehlers in der Stromerelektrik (z.B. Kurzschluss), in den Sicherheitsmodus schaltet. Wenn dies passiert werden die 48 V des Akkus abgeschaltet und der Stromer kann nicht mehr gefahren werden. Der Akku muss zu Stromer um den Sicherheitsmodus zurückzusetzen (Akku-Reset).

Anders liegt der Sachverhalt beim Reset des State of Health (SoH) und des Ladezyklenzählers, Dieser wird nach einer Zellerneuerung (Refit, Refurbish, Aufbereitung) nötig.

SoH & Ladezyklenzähler Reset – warum?

Nach meinem Wissenstand ist ein spezifischer SoH/Ladezyklenreset nach einem Zellentausch bei den alten BO-Akkus und den älteren BQ-Akkus (vor 2016) nicht nötig. Das BMS ‚akzeptiert‘ die neuen Zellen und die Neureichweite kann wieder erreicht werden. Anders bei den Akkus der BQ Serie ab ca. 2016. Hier wird bei einem Zellentausch der alte im EEPROM 24LC256 abgespeicherte Wert des SoH und des Ladezyklenzähler NICHT auf Werkseinstellung zurückgesetzt. Das BMS ‚rechnet‘ nach wie vor mit den alten Werten. Resultat ist, dass der Akku nun zwar neue Zellen hat aber nur die alte ‚Reichweite‘ gefahren werden kann. Ein Reset ist bei den BQ Akkus nicht über einen einfachen Resetknopf oder Jumper auf der Platine möglich. Vielmehr passiert dieser über den CAN-Bus, was entsprechende Software voraussetzt.

Muss ich IT Kenntnisse haben? Geht es ohne den Akku zu öffnen?

Es geht ohne IT-Kenntnisse und ohne den Akku zu öffnen. Die Schweizer Firma Swissvolts bietet den Reset über den CAN-Bus an. Bei meinem BQ983 konnte ich zusehen. Der Rosenbergerstecker wurde mit dem Akkusockel verbunden und in wenigen Sekunden war der SoH/Ladezyklenzähler auf Werkseinstellung gesetzt. Allerdings konnte das vor Ort nicht kontrolliert werden weil mein Akku 100 % geladen war. Man sagte mir ich solle ein paar km fahren. Das Omni zeigte bei der ersten Fahrt zuerst einen SoC von 74 % an, was dem alten SoH entsprach. Und tatsächlich sprang der Wert nach ein paar km Fahrt auf 100 %. Über das API konnte ich danach den SoH auslesen – wieder 100 %!

Swissvolts ist nicht die einzige Forma die den Rest anbietet. Siehe die entsprechende Tabelle unter AKKU – ‚Reparatur / Neubestückung (Refit / Refurbishing) / Occasionen‘

Akkutypen

Welche Akkumodelle es von Stromer gibt kann man unter ’Modellpalette – Technische Daten und Sicherheitshinweise’ nachlesen.

Bei den neueren Akkus der BQ-Serie mit 48 V Nennspannung gibt es zwei Lieferanten, HTE (TD Hightech Energie) und Simplon. Sie unterscheiden sich äusserlich durch die Anzahl Schrauben beim Ladesockel.

Nur bei den Akkus des Herstellers HTE gibt es die Möglichkeit den SoH (State of Health) und den Ladezyklenzähler nach einer Zellenerneuerung zurückzusetzen. Bei Simplon sind die entsprechenden Bereiche im EEPROM durch einen Schreibschutz des Herstellers geschützt und können nachträglich nicht geändert werden.

Platine der BQ-Akkus von HTE (3-Schrauben)

Hier zeige ich eine Platine des BQ-Akkus von HTE (3-Schrauben) und verorte die massgeblichen Bauteile für einen SoH/Ladezyklenzähler-Reset. Die Öffnung der JST GH Steckverbindungen ‚J303‘ & ‚J304‘ (Bild in der linken Ecke) liegt auf der Gegenseite der Platine.

J304
1- x
2- PGC= Programming Clock Pin
3- PGD= Programming Data Pin
4- GND= Ground (Vss)
5- VDD= Power Supply
6- VPP= Programming Voltage

J303
1- GND= Ground
2- SCL= Serial Clock
3- SDA= Serial Address/Data I/O
4- VDD= Power Supply

Reverse-Engineering

Entscheidend für den Reset des SoH und Ladezyklenzählers sind die beiden CHIP’s Microchip PIC18F4685 und das externe Microchip EEPROM 24LC256. Um die ‚Innereien‘ zu erforschen muss man etwas Forensik betreiben.

OD Dump des CAN-Bus

OD steht für octal dump und bezeichnet ein UNIX Kommando mit dem ein Dump (Speicherauszug) in verschiedenen für Menschen lesbaren Formaten möglich ist. Dieser Dump ist nötig um ein sog. Reverse Engineering durchführen zu können. Er dient als Basis um herauszufinden, welche Speichersegmente für einen SoH/Ladezyklenzähler Reset zurückgesetzt werden müssen.

Software: Mit dumpcap kann ein OD Dump realisiert und danach in Wireshark analysiert werden. Wie das geht kann man u.a. hier anschauen. Weitere Theorie gibt es hier. Verschiedene CAN-Bus Adapter bieten auch All in One Lösungen an.

Hardware: Hardwareseitig braucht man einen CAN-Bus Adapter um den Bus sniffen (abhören) zu können. Siehe u.a. 1 | 2 | 3.

Dump der BQ-Akkus: Im speedpedelecreview.com – Forum hat der User Jebolisch einen solchen CAN-Bus Dump für die Akkus BQ983 & 814 von HTE sowie den BQ618/655 von Simplon veröffentlicht und soweit möglich dokumentiert. Ich habe die Datei grafisch etwas aufgehübscht und stelle sie hier zur Verfügung.

Schreiben und Lesen eines EEPROM

Um die entscheidenden Speicheradressen, in denen der SoH/Ladezyklenzähler gespeichert ist, neu schreiben zu können muss man wissen wie ein EEPROM (Electrically Erasable Programmable Read-Only Memory) gelesen/beschrieben wird. Ein EEPROM behält seine gespeicherten Daten auch nach dem Ausschalten der Stromversorgung bei. Diese Funktion ist nützlich für die Speicherung kritischer Daten, die über Stromzyklen hinweg erhalten bleiben müssen. Bsp. sind Konfigurationseinstellungen, Kalibrierungswerte, Benutzereinstellungen, Speicherung der kritischen Variablen des Programms oder historische Datenprotokolle.

Wie ein EEPROM programmiert werden kann ist z.B. hier beschrieben.

Voraussetzungen
  • Python-Installation: Stelle sicher, dass Python auf deinem System installiert ist.
  • I2C-Bibliothek: Du benötigst eine Python-Bibliothek, die die I2C-Kommunikation ermöglicht. Eine beliebte Option ist smbus2.
  • Hardware: Der PIC18F4685, der 24LC256 und die entsprechenden Verbindungen müssen entsprechend aufgebaut sein.
Beispiel für das Schreiben und Lesen
1 import smbus2

2 # I2C-Bus und EEPROM-Adresse anpassen
3 bus = smbus2.SMBus(1) # Ändere 1, wenn du einen anderen Bus verwendest
4 address = 0x50 # Ändere die Adresse, wenn sie bei deinem EEPROM anders ist

5 def write_byte(register, data):
6 "Schreibt ein Byte an die angegebene Registeradresse im EEPROM."
7 bus.write_byte_data(address, register, data)

8 def read_byte(register):
9 "Liest ein Byte von der angegebenen Registeradresse im EEPROM."
10 return bus.read_byte_data(address, register)

10 # Beispiel für das Schreiben und Lesen
11 write_byte(0x00, 0x55) # Schreibe 0x55 an die Adresse 0x00
12 data = read_byte(0x00) # Lese das Byte von der Adresse 0x00
13 print("Gelesenes Byte:", data)
Erklärung
  • Import: Die smbus2-Bibliothek wird importiert, um die I2C-Kommunikation zu ermöglichen.
  • I2C-Bus und Adresse: Die Variablen bus und address werden definiert, um den I2C-Bus und die Adresse des EEPROMs anzugeben.
  • Funktionen: write_byte: Schreibt ein Byte an eine bestimmte Adresse im EEPROM. ead_byte: Liest ein Byte von einer bestimmten Adresse im EEPROM.

Ist ein Reset auch hardwaremässig (Reset-Jumper) möglich?

Für den DIY ist diese Variante die einfachste. Es muss keine Software geschrieben werden. Der Nachteil ist, dass der Akku geöffnet werden muss. Weiter muss man wissen, wo und wie ein solcher Reset gemacht werden kann.
Entwickler von BMS erleichtern einem manchmal diese Aufgabe indem sie einen ‚Reset-Jumper‘ auf der Platine anbieten. Das ist z.B. bei den Stromerakkus der BO-Serie der Fall (Siehe auch ,Akku Reset‘). Bei den BQ-Akkus fehlt dieser.

Es gibt mehrere Methoden den Microchip und das EEPROM urückzusetzen: Link 1 | Link 2 | Link 3. Bei den BQ-Akkus liegt der Schlüssel bei der JST GH Steckverbindung ‚J304‘ (Pin 4 & 6) auf der Rückseite des BMS.

Sie bedienen die entsprechenden Pins der Microchip PIC18F4685.

Weitere Informationen

Datenblatt Microchip PIC18F4685 Datenblatt Microchip EEPROM 24LC256

Dokumentation CIA 301 CiA develops and publishes technical documents. Specifications contain functional requirements and permissions to be implemented in hardware or software. Typical examples are the CANopen CC (classic) application layer (CiA 301) or the CANopen device profile for generic I/O modules (CiA 401 series).

Phyton Documentation This is the official documentation for Python 3.13.1.

Viel Spass! … und wie geschrieben – Rückmeldungen sind gerne gesehen!

Aktualisiert am 25. August 2025
War dieser Artikel hilfreich?

Verwandte Artikel

Einen Kommentar hinterlassen