Forum: Analoge Elektronik und Schaltungstechnik Wer kennt den BQ2040 - Gas Gauge IC with SMBus Interface


von Robert H. (softtroniker)


Lesenswert?

Hallo zusammen,
Ich repariere gerade einen Akkupack bzw. Akku-Einschub aus einem 
Meßgerät. Dieser Akkupack hat 10 NiMH Zellen und wird über ein externens 
Ladegerät geladen. Die Ladeelektronik selbst befindet sich somit nicht 
im Pack.

Auf der Platine des Akkueinschubes befindet sich aber ein BQ2040 (Gas 
Gauge IC with SMBus Interface). Diese integrierte Schaltung ist ein 
Schaltung die den Ladevorgang überwacht. Dazu hat das IC ein externes 
EEProm in dem die Daten des Akkus "in vielen Parametern" gespeichert 
sind.

Das Meßgerät kommuniziert über das SM-Bus-Interface des Akku-Einschubes 
bzw. über das SMBus-Interface des BQ2040 und zeigt den Ladezustand des 
Packs an.

Die Schaltung auf der Platine entspricht genau der Schaltung aus der 
Applikation im Datenblatt. (Seite 3). Nur die LEDs gibt es nicht.
https://www.ti.com/lit/ds/symlink/bq2040.pdf

Ich hätte zwei Fragen:
a) Ich habe das Pack durch das Meßgerät automatisch entladen und 
geladen. Danach zeigte das Meßgerät "99% Akku" an. Ich habe dann auch 
nochmal auf 90% entladen und wieder auf 99% aufgeladen.
Dann habe ich die Zusatzverdrahtung zum automatischen entladen und zur 
Aufzeichung der Entlade- Ladekurve abgelötet.
Vorher habe ich aus Sicherheitsgründen den Akkupack abgelötet.
Nach dem wiederanlöten des Akkus an die Elektronik (BQ2040 Schaltung) 
des Akkupacks und dem Wiedereinsetzen in das Meßgerät zeigte der das 
Meßgerät 0% Akkuladung.
Diesen Effekt hatte ich schon einmal. Nach erneutem Entladen durch das 
Meßgerät und externer Überwachung auf die Entladeschlußspannung und 
anschließenden wurde die Kapazität wieder angezeigt.

FRAGE1:
Kann es sein das der BQ2040 das Ablöten als Akkuwechsel erkennt und den 
den Wert auf 0% setzt, dass das ganze wieder "initialisiert" werden muß?

Wenn ich den geladenen Pack (99%) aus dem Meßgerät entnehme und nach 
einer Nacht wieder einstecke werden immer noch 99% angezeigt. Somit 
sollte es nicht aus der Entnahme aus dem Messgerät liegen-

FRAGE2:
Weiß jemand, wo letztendlich im EEProm die momentane Kapazität 
gespeichert wird. An welcher Adresse bzw. an welchen Adressen ist der 
aktuelle Ladezustand abgelegt der dann als 0%...99% angezeigt wird.

Ich habe mir schon alle Werte im EEP rausgeschrieben und als 
"Akku-Grundwerte", "Lade-Parameter" und "ASCII-Werte" markiert. Aber ich 
bin nicht schlau geworden wo hier die Momentankapazität angelegt ist.

Ich habe auch schon ein Programm geschrieben, dass die EEP-Werte den 
Bedeutungen zuweist und in eine Textdatei schreibt. Das habe ich mit 
zwei EEPs (99% und 70%) gemacht. Aber der Vergleich der beiden erzeugten 
Textdateien brachte mir auch keine Erkenntnisse.

Auch die Application-Note slua233.pdf "U513 Using the BQ2040 Gas Gauge 
IC"
https://www.ti.com/lit/an/slua233/slua233.pdf?ts=1739865272498
brachte mich nicht weiter.

Doch noch eine FRAGE3:
Wenn ich richtig gemessen habe, wird das EEP nicht ständig mit 5V 
versorgt.
Wird der Ausgang +Veep des BQ2040 nur bei Zugriffen auf das EEP 
eingeschaltet?

Danke schon mal
Gruß Robert
- SoftTroniker -

von Roland E. (roland0815)


Lesenswert?

Ohne diese spezielle GasGauge jetzt zu kennen: Alle deine Fragen werden 
im Datenblatt und/oder den Appnotes zu dem Chip beantwortet.
Und nein, das muss nicht explizit drin stehen, das kann auch zwischen 
den Zeilen sein. Batteriepacks parametrisieren und konfektionieren ist 
keine triviale Angelegenheit mehr. Dazu sind die Chips inzwischen viel 
zu weit entwickelt, auch in die Richtung "Manipulationssicherung" und 
"vorhersehbarem Missbrauch".

Ich wäre mit solchen Spielereien wie Akkuzellen ablöten sehr vorsichtig, 
sonst brickst du dir deinen Pack ganz schnell, weil der BQ dann aufgrund 
der ausgefallenen Spannung der Meinung ist, dass eine oder mehrere 
Zellen defekt sind und sperrt laden/entladen final.
Zum zurücksetzen brauchst du dann das Vendor-Passwort. Oder einen neuen 
BQ, den du dann aber selber komplett parametrisieren musst. Auch die 
Parameter, die du ohne VendorPass nicht auslesen kannst.

Zu Frage 1:Du hast wohl einfach Glück gehabt, dass der BQ sich nicht 
endgültig dazu entschieden hatte, deine Zellen als "defect" zu 
markieren. Sondern im Ersten Schritt einfach nur soft abgeschaltet hat 
und erst mal nur totgestellt hat.

zu Frage 2: Die Registeradressen sind doch im Datenblatt. Was hindert 
dich daran, die entsprechenden Adressen mal auszulesen und zu 
überprüfen?
Einige Werte hält der BQ im RAM, die landen gar nicht im EEprom. Viele 
errechnete Werte betrifft das, macht ja auch keinen Sinn, die persisten 
zu sichern. Denn so lange in den Zellen Saft ist, merkt sich der BQ das. 
Danach ist es eh egal.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Robert H. schrieb:
> Weiß jemand, wo letztendlich im EEProm die momentane Kapazität
> gespeichert wird.

Wird nicht im EEPROM gehalten. Im EEPROM sind Initialisierungswerte, die 
sich im Betrieb nicht verändern.
der RM (Remaing Capacity) Zähler ist im BQ2040.

von Robert H. (softtroniker)


Lesenswert?

Hallo Roland,
Danke dir für deine ausführliche Antwort ABER:
>dass eine oder mehrere Zellen defekt sind und sperrt laden/entladen final.
Der BQ2040 hat in diesem Fall gar ncihts mit der Ladung zu tun. Er 
erfasst nur die Werte beim Laden und entladen und stelle diese dem 
Messgerät zur Anzeige zur Verfügung.
Aufgrund der Schaltung kann er das Laden oder Entladen gar nicht 
sperren.

>Zum zurücksetzen brauchst du dann das Vendor-Passwort
Von einem Passwort habe ich im ganzen Datenblatten des BQ2040 auch bei 
mehrfachen lesen noch nicht's gelesen. Auch nicht zwischen den Zeilen.

> Einige Werte hält der BQ im RAM, die landen gar nicht im EEprom
Das wäre dann auch die Erklärung warum nach den ab-/anlöten die Anzeige 
bei 0% ist

DANKE Dir

von Robert H. (softtroniker)


Lesenswert?

Hallo Matthias,
auch dir vielen Dank für deine Antwort.

> Im EEPROM sind Initialisierungswerte, die sich im Betrieb nicht verändern.
Das erklärt auch die Ergebnisse meines Analyseprogramms mit dem ich auf 
keine Änderungen bezüglich der Kapazität komme.

>> Ich habe mir schon alle Werte im EEP rausgeschrieben und als
>> "Akku-Grundwerte", "Lade-Parameter" und "ASCII-Werte" markiert
> Im EEPROM sind Initialisierungswerte, die sich im Betrieb nicht verändern.
Danke für die Bestätigung meiner Analyse ich gemacht habe. ;-)

> Wird nicht im EEPROM gehalten. ....
> der RM (Remaing Capacity) Zähler ist im BQ2040.
Dann ist das klar, wie auch schon Roland geschieben hat. Dann suche ich 
aber nochmal im Datenblatt explzit danach.

Danke nochmals
Gute Nacht
Robert

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Robert H. schrieb:
> Dann suche ich
> aber nochmal im Datenblatt explzit danach.

Steht in der Beschreibung nach den EEPROM Tabellenwerten. Nicht nur der 
RM, sondern auch der DCR sind aus dem BQ2040 und nicht aus dem EEPROM. 
Mir nicht ganz klar ist das Handling des Cycle Count.

Ein einfacher SMBus Reader sollte dir Zugriff auf die Standard Register 
geben. SMBus ist einfach nur langsames I²C und kann simpel ausgelesen 
werden.

: Bearbeitet durch User
von Vanye R. (vanye_rijan)


Lesenswert?

> Ein einfacher SMBus Reader sollte dir Zugriff auf die Standard Register
> geben.

Tut es auch. Ich hab die Teile vor 20Jahren als die noch Frisch waren
programmiert. Und man sollte das auch tun. Ein Hersteller kann auch
auf die Idee kommen da Kennungen rein zu programmieren welche
bei einem Akkuwechsel verloren gehen und dann weigert sich der
Laptop ploetzlich mit dem Akku klar zu kommen.

Selbstverstaendlich haben die Register welche bei Spannungsverlust
verloren gehen. Ausserdem ist das Prinzip nicht 100% idiotensicher
nach dem die arbeiten. Nach einer gewissen Anzahl von Ladezyklen,
besonders halben, kann es passieren das die Idee die der 2040
vom Akku hat und der Realitaet etwas auseinander laufen.
Dazu kommt noch das ein Akku auch leer ist wenn er aus alterungsgruenden
einen leicht erhoehten Innenwiderstand hat und dann bei 30% 
Restkapazitaet
die Spannung staerker zusammenbricht als es die Gegenstelle zu
akzeptieren bereit ist.
Ausserdem war der 2040 IMHO eines der ersten dieser ICs, ich wuerde
erwarten das da in den letzten 25Jahren auch mal was verbessert wurde...

Vanye

von Robert H. (softtroniker)


Lesenswert?

Hallo zusammen,
Danke euch nochmals für die Infos. Jetzt ist mir das Ganze etwas klarer.
An einem SMReader habe ich auch schon gedacht. Da gibt es ja von TI das 
EV2200 mit uralter Software.
Wäre interesannt ob es im www für Firmaware dafür gibt. Vom EV2200 
scheint es ja verschiedene Versionen, je nach "BQ-Typ" zu geben. Dann 
könnte ich mal die Register anschauen.

Selber was zu schreiben rentiert sich nicht. Ich will ja bei den 
Akkueinschüben nur die Akkus wechseln und dann den Ladezustand wieder 
richtig anzeigen.

NOCHMAL: Bei dem Pack den ich vorliegen habe handelt es sich um einen 
Pack der mit einem externen Ladegerät nach dem -deltaU Verfahren geladen 
wird. Beim Erreichen des -deltaU "Buckels" wird das Laden vom externen 
Ladegerät beendet. Das Ladegerät kommuninizert NICHT mit dem Akkupack.
Der BQ2040 wird nur genutzt um an dem Gerät in den der Akku-Einschub 
eingeschoben wird den Akku-Ladezustand anzuzeigen. Dazu stehen natürlich 
die Daten/Parameter für die verbauten Zellen im EEP.

Ich wollte nur verstehen warum nach einem Akkuwechsel das Gerät 
plötzlich 0% anzeigt und nach dem Ablöten der Zellen wieder 0% angezeigt 
wird statt 99%.
Aber dieses Frage habt ihr gelöst.

PS: :-(
Bei einem Pack habe ich durch Handlingsfehler den BQ und das EEP 
geschrottet. Deswegen bin ich etwas tiefer in die Schaltung und Technik 
eingestiegen.
Der BQ wird gewechselt und das EEP wird aus einem funktionierenden 
Einschub kopiert.
Dann werden die Zellen entladen und wieder geladen und daraufhin sollte 
auch hier wieder 99% angezeigt werden, wenn der Pack voll ist.

Danke Robert
SoftTroniker

: Bearbeitet durch User
von Roland E. (roland0815)


Lesenswert?

Robert H. schrieb:
> ... einen
> Pack der mit einem externen Ladegerät nach dem -deltaU Verfahren geladen
> wird. ...

Ich hoffe, da hängen keine LiIon-Zellen dran...

von Vanye R. (vanye_rijan)


Lesenswert?

> Wäre interesannt ob es im www für Firmaware dafür gibt.
> Selber was zu schreiben rentiert sich nicht.

Also wenn man bedenkt das es nur um I2C geht dann nenne ich das
Faulheit.

> Ich will ja bei den Akkueinschüben nur die Akkus wechseln und
> dann den Ladezustand wieder richtig anzeigen.

Es mag ja sein das bei dir nichts ungewoehnliches drin steht
und dann ist das vielleicht okay. Aber ich hab nach 20Jahren
so die grobe nebuloese Erinnerung das da auch die Groesse
des Akkus drin stand. Du willst also doch sicher die Kapazitaet
deiner neuen Zellen da reinschreiben oder?

> Ich hoffe, da hängen keine LiIon-Zellen dran...

Hehe, wenn nicht lesen wir es morgen in der Zeitung. :-D

Vanye

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Angehängte Dateien:

Lesenswert?

Robert H. schrieb:
> verschiedene Versionen, je nach "BQ-Typ"

Das ist nicht nötig, denn die Standard Register sind immer an der 
gleichen Stelle und derselben I²C Adresse. Ich habe sowas, weil ich ab 
und zu mal Notebook Akkus bekomme und damit im Status des Packs 
rumschnüffeln kann. Das ist einfach nur ein ATMega mit LCD, mit den I²C- 
und LCD Libraries von Peter Fleury. I²C auf 25kHz gedrosselt und nach 
Registerbeschreibeung programmiert. Mit 3 Tastern wird das ganze 
bedient.
Daten aufs Gauge schreiben geht damit aber nur sehr bedingt.

: Bearbeitet durch User
von Robert H. (softtroniker)


Lesenswert?

>> Pack der mit einem externen Ladegerät nach dem -deltaU Verfahren geladen

> Ich hoffe, da hängen keine LiIon-Zellen dran...

Wenn da LiIon, drin wären, dann hätte der Entwickler sicher nicht den 
BQ2040 verwendet...

Robert

von Robert H. (softtroniker)


Lesenswert?

>> Selber was zu schreiben rentiert sich nicht.
> Also wenn man bedenkt das es nur um I2C geht dann nenne ich das
Faulheit.

Der Forscherdrang würde sofort sagen "baue es dir". Aber ich habe leider 
noch ganz viele andere offene Projekte und Ideen.

> Du willst also doch sicher die Kapazitaet deiner neuen Zellen da reinschreiben 
oder?

Nein, das blieb mir erspart. Ich konnte Zellen mit der selben Kapazität 
bekommen.

Aber da hätte ich gleich eine Frage - nur aus Neugierde:
Wenn ich das EEProm das DIL und gesockelt ist mit einem Programmer 
patche, würde das klappen? Oder gibt es dann Probleme weil die Prüfsumme 
über das EEP nicht mehr passt?

von Robert H. (softtroniker)


Lesenswert?

Hallo Matthias,
vielen Dank für den C-Code und die "Bauanleitung". Vielleicht schaffe 
ich es doch das mal nachzubauen.

Ganz vergessen: Vayne die auch Danke für die Tips.

Gruß Robert

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Robert H. schrieb:
> Oder gibt es dann Probleme weil die Prüfsumme
> über das EEP nicht mehr passt?

Eine Prüfsumme scheint es nicht zu geben, lediglich das Anfangs- und das 
Endbyte. Die Werte stehen in der Tabelle und scheinen fix zu sein.

Robert H. schrieb:
> vielen Dank für den C-Code

Da nich' für - es ist aber nur ein schneller Hack, basierend auf anderen 
Projekten. Deswegen stehen da auch öfter mal merkwürdige Dinge.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.