Grüße, Leser.
Sehr oft habe ich die Aufgabe, tragbare Geräte zu entwickeln, die mit einem Einzelzellen-Li-Ionen-Akku betrieben werden. Und wenn dies normalerweise kein Problem für den Kunden ist, läuft mir als erfahrener Ingenieur ein Schauer durch den Rücken, wenn ich eine solche TK sehe. Dies liegt an der Tatsache, dass die Beurteilung des Batteriestands sowie der verbleibenden Batterielebensdauer eine sehr schwierige Aufgabe ist, obwohl dies auf den ersten Blick anders erscheinen mag.

In diesem Fall gibt es mehrere Handlungsoptionen, auf die wir weiter unten eingehen werden.
- Am einfachsten ist es, nichts zu tun, um den Ladezustand des Akkus zu bestimmen. Die Ladeschaltung auf einem einfachen linearen Speicher (z. B. auf TP4054) und einem Spannungswandler zur Stromversorgung des Geräts. Schaltet sich ohne Vorwarnung und im ungünstigsten Moment aus.
- Batteriespannung messen. Das Ergebnis ist ungefähr das gleiche wie im vorherigen Absatz, erfordert jedoch mehr Aufwand. Typisches Messschema:

Tatsächlich ist dies ein Spannungsteiler für die Widerstände R19 und R21, die über einen VT6-Schlüssel verbunden sind. Der VT7-Transistor wird benötigt, um die parasitäre Stromversorgung des MK über den EN-Anschluss zu eliminieren.
VBAT - Batteriespannung
VBAT_mes - Spannung, die zum ADC kommt
DE - Teilersteuersignal (0-aus, 1-ein)
Jetzt kennen wir die Batteriespannung, wir sind tolle Leute. ABER es gibt fast nichts !!! Tatsache ist, dass eine typische Entladungskurve eines Li-Ionen-Akkus, gelinde gesagt, nicht linear ist und vom Stromverbrauch und der Temperatur des Akkus selbst abhängt:

Können Sie anhand dieser Grafiken feststellen, wie hoch die verbleibende Batteriekapazität bei einer Spannung von 3,5 V ist? Ich denke nicht ...
Diese Methode kann leicht verbessert werden, indem der im MC integrierte Wärmesensor verwendet wird, um die Temperatur der Batterie zu approximieren, oder Sie können entweder einen Sensor zum Messen des Stroms einsetzen oder (wenn der Stromverbrauch ungefähr konstant ist) eine Entladungskurve für einen typischen Stromverbrauch erstellen. Dies wird zumindest eine kleine Rechtfertigung der Arbeitskosten ermöglichen, aber von Genauigkeit kann nicht die Rede sein. Um die Ladung auf 3 LEDs anzuzeigen - ja, wird es.
Bei konstantem Stromverbrauch können Sie die Batterielebensdauer nutzen und die verbrauchte Ladung sowie die zum Laden aufgewendete Zeit zur Beurteilung der akkumulierten Ladung schätzen. Diese Methode ergibt einen kumulativen Fehler, da die Kalibrierung nur an zwei Punkten (Vollladung oder Vollentladung) erfolgen kann und diese nicht immer erreicht werden. Wenn sich die Batterie verschlechtert, sollte außerdem die maximale Betriebszeit angepasst werden. Im Allgemeinen hat die Methode jedoch das Recht auf Lebensdauer.
- Erstellen Sie Ihr eigenes Batterieladeüberwachungssystem (BMS). Für die Implementierung benötigen wir Sensoren für Strom, Temperatur und Batteriespannung. Wir glauben, dass MK bereits im Gerät vorhanden ist und es „nur“ bleibt, Software dafür zu schreiben, was mich einmal etwas weniger als ein Jahr gekostet hat.
- Nehmen Sie den fertigen Gasanzeige-Chip (z. B. von TI oder Maxim Integrated), konfigurieren Sie ihn, kalibrieren Sie und arbeiten Sie. Zum Beispiel das Diagramm für bq27220:

Bei der Auswahl dieses Konzepts gibt es mehrere Nuancen:
- Wenn der Akku herausnehmbar ist, müssen Sie entweder den Stromkreis zur Ermittlung der Ladung auf den Akku selbst setzen (andernfalls wird er beim Trennen auf Null zurückgesetzt) oder spezielle Versionen der Gasanzeige verwenden, mit denen der Akku getrennt werden kann. Im ersten Fall wird der Akku Ihres Geräts einzigartig und kann nur mit Ihrer Teilnahme ausgetauscht werden, was nicht immer bequem ist. Im zweiten Fall besteht das Problem, den Temperatursensor an der Batterie anzubringen.
- Kostengünstige Lösung. Hauptkomponenten: Gasanzeigechip, Schutzchip, Transistoren, Thermistor, Stromsensorwiderstand.
- Verwenden Sie einfachere Optionen für schlüsselfertige Lösungen wie CW2015:

Dies ist das chinesische Analogon des MAX17048-Chips. Ein absolut einfacher Chip ohne Temperatur- und Stromsensoren, mit entsprechend geringer Genauigkeit, aber gleichzeitig billig, einfach zu bedienen und zu programmieren. Es kann an der Seite des Geräts arbeiten, wodurch der Akku selbst nicht verändert werden kann. Die Mikroschaltung wurde beim Schreiben von Material auf den Freiflächen des Netzwerks gefunden, es gibt keine Erfahrung damit, aber es besteht der Wunsch, es zu versuchen, da die Option wirklich interessant ist. Vielleicht werde ich im nächsten Artikel ausführlicher über diesen Chip sprechen.
- Und schließlich die letzte Methode, die ich kenne und die ich dem heutigen Artikel widmen möchte. Meiner Meinung nach ist diese Methode die einfachste, liefert aber das beste Ergebnis. Es besteht darin, dass wir den Akku mit integrierter Gasanzeige und Schutz vom iPhone nehmen, über HDQ oder I2C verbinden, abfragen und arbeiten. In diesem Fall ist die Batterie bereits zusammengebaut und kalibriert. Unten finden Sie eine Tabelle mit mir bekannten Batterieoptionen:

Die Tabelle stammt teilweise von den Websites
ripitapart.com und
www.macplus.ru . Bitte achten Sie besonders auf den unbekannten Controller mit der Bezeichnung A1141. Dieser Chip wird von
PowerFlash hergestellt und dies sind alle Informationen, die gefunden werden konnten. Der Autor des
Blogs, aus dem ich den Tisch nahm, war sich nicht sicher, ob er den Originalakku vom iPhone SE erhalten hatte. Dank des Rückrufs von
asterix_tyumen , mit dem die Originalbatterie von SE zerlegt wurde, wurde festgestellt, dass sie sn27545 kostet. Im Folgenden werden wir gezwungen sein, den A1141 genauer zu betrachten. Aber jetzt schauen wir uns die Batterien an:

Wie Sie sehen können, ist der Akku für jeden Geschmack und jede Farbe mit und ohne Apfel geeignet. Sie können auch parallel geschaltet werden, um die Kapazität durch separate Abfrage zu erhöhen. Von den Mängeln ist anzumerken, dass das Verhältnis von Länge zu Breite etwa 3: 1 beträgt, was nicht immer praktisch ist, sowie ein einzigartiger Anschluss zum Anschließen. Aufgrund der Beliebtheit von Apple-Handys können diese Akkus an vielen Orten und in großen Mengen sicher gekauft werden (wie sich herausstellte, ist dies nicht ganz richtig).
Bei der Entwicklung eines
drahtlosen eigenständigen RFID-Lesegeräts sind wir diesen Weg gegangen.

Der Akku des iPhone 6 wurde ausgewählt, der uns in Bezug auf Kapazität und Größe entsprach. Zur Überprüfung wurden mehrere Exemplare an verschiedenen Orten gekauft:

Der richtige wurde in China gekauft, der Rest in Moskau. Die Kosten betragen $ 6-11. Wenn sie überprüft werden, werden ziemlich interessante Ergebnisse erhalten. Achten Sie besonders auf die Box mit der Aufschrift "Orig", später werden wir darauf zurückkommen. Die Überprüfung wurde mit dem RFID-Lesegerät selbst, dem Programmierer TI EV2300 und Battery Management Studio durchgeführt.
Die Stromversorgungsschaltung des RFID-Lesegeräts ist in der Abbildung dargestellt:

Linearer Speicher basierend auf STC4054 (TP4054), Ladestrom 500 mA, selbst wählender Leistungsschalter basierend auf Reedschalter SF1, Kondensator C19, Diode VD4 und Widerstand R15 sowie ein Impulswandler basierend auf NCP1529.
Das erste Mal habe ich eine Kopie aus China für 6 Dollar angeschlossen:

Die Batterie reagiert, ABER der Strom wurde weder während des Ladens noch während des Entladens angezeigt, die Spannung entsprach nicht dem, was tatsächlich gemessen wurde, und der Ladungsgrad änderte sich nicht. Der Akku reagierte nicht auf Befehle. Es wurde angenommen, dass es sich bei dieser Instanz um eine Fälschung handelt, daher habe ich ein Schutzband entfernt, um auf die Tafel zu schauen:

Dies ist eine Wende ... Ich habe die Schaltung nicht einmal neu gezeichnet - hier ist klar, dass es einen bq27545-Emulator und eine Schutzschaltung vor Überentladung / Überladung gibt. Sofort kam die Idee, sich Zeit zu sparen und alle Batterien zu öffnen.

Der Nachbar links vom chinesischen Kollegen für 8 US-Dollar ähnelt dem Unterschied in der Markierung auf den Chips. Der Rest verhält sich genauso. Diese 2 Kopien sind sofort im Papierkorb. Leider hatte ich das iPhone 6 nicht zur Hand, um diese Batterien im Zielgerät zu überprüfen. Es war sehr interessant zu sehen, wie sich das Telefon verhalten würde, wenn mit diesen Batterien gearbeitet wird.

Und dies ist eine zentrale Batterie, die 8 US-Dollar kostet. Es hat sogar einen Stromsensor und eine Art 8-poligen Mikroschaltkreis mit einer bescheidenen Markierung 6G3. In Battery Management Studio gibt diese Batterie vor, die bq27545 geschickter zu sein. Der Ladezustand, die korrekte Spannung und der Batteriestrom werden angezeigt. Aber wenn all dies real wäre, wäre die Fälschung keine Fälschung. In der Realität wurde die Temperatur durch eine Konstante eingestellt, der Strom wurde sehr schlecht gemessen. Das Bild zeigt den Stromverbrauch des RFID-Lesegeräts, der von der Batterie bei konstantem Ablesen der Karte gemessen wird.

In der Realität beträgt sie für einen solchen Betriebsmodus ~ 55 mA, und da das Leserfeld immer eingeschaltet ist, kann es nicht Null sein. Beim Laden (wenn der Strom über einen langen Zeitraum konstant ist) funktioniert der Stromsensor einwandfrei. Natürlich werden alle anderen Parameter falsch berechnet (Ladezustand, Betriebszeit bis zur vollständigen Entladung usw.). Das FC-Flag (Full Charge) ist auf 4,4 V gesetzt.

Die Batterie reagiert nicht auf Befehle, die Flags QEN und RUP_DIS sind nicht gesetzt. Im Allgemeinen ist dies ein erfolgloser Versuch der Chinesen, den Trick bq27545 auf MK zu schreiben (auf jeden Fall denke ich, dass dies der Fall ist). Auch im Müll.
Denken Sie daran, ich habe darum gebeten, der Kopie in der Schachtel mit der Aufschrift "Orig" besondere Aufmerksamkeit zu schenken. Es war er, der sich als so nah wie möglich an dem herausstellte, wonach wir suchten (und wie man der Werbung jetzt nicht glauben kann?):

Die Kosten betrugen 9 US-Dollar. In der Mitte sehen Sie deutlich den Chip mit der Bezeichnung SN27545 - genau das haben wir gesucht. Mit dieser Instanz begann ich enger zu arbeiten. Während des Lade-Entlade-Testzyklus traten Probleme auf. Ich konnte das FC-Flag (Full Charge) nicht setzen, was das Ende des Ladevorgangs bedeutete. Der Ladestrom bei einer Batteriespannung nahe 4,2 V wurde extrem klein (ca. 20 mA) und der Ladevorgang drohte niemals zu enden. Einer der möglichen Gründe war ein USB-Kabel mit einem großen Spannungsabfall (4,5 V erreichten den Speicherchip). Wir haben es durch ein besseres mit einem geringeren Spannungsabfall ersetzt. Die Anzeigen verbesserten sich, die Batterie wurde auf 4,2 V aufgeladen, der Strom fiel auf 0 ab, aber der Ladezustand (Ladezustand - Ladezustand) erreichte nur 85, sodass das FC-Flag nicht gesetzt wurde.

Ich fuhr mehrere Tage lang Fahrräder mit der Erwartung, dass die Batterie lernen würde, aber das half nicht. Das Problem stellte sich als alltäglich heraus, aber die Suche dauerte 2 Tage. Irgendwann bemerkte ich, dass die Batterie 4,35 V hat und dies war die Antwort auf alle Fragen. Der Speicher ist Standard bei 4,2 V und ich habe überhaupt nicht bemerkt, dass der Akku bei 4,35 V ist und eine unvollständige Ladung vorliegt. Da die Platinen bereits hergestellt wurden, bestand die einzige Möglichkeit, aus der Situation herauszukommen, darin, nach einem Ersatz für den STC4054 mit einer Spannung von 4,35 V zu suchen. Es stellte sich heraus, dass solche Mikroschaltungen existieren, aber Sie können sie in unserem großartigen Land nicht kaufen (anscheinend sind sie vom Wort her völlig unbeliebt). Daher wurde die MCP73832T-3-Version mit ein paar Wochen Wartezeit bestellt.
In der Zwischenzeit, die bestellten Fahrten, werden wir einen kollektiven Farm-Patch erstellen, um das Konzept zu überprüfen. Erstellen Sie dazu mit einer Diode ein "Backup" von 0,15 V für den Speicherchip:

Ich muss zugeben, dass die Kollektivfarm funktioniert hat, das FC-Flag gesetzt wurde, alles funktioniert, aber die endgültige Batteriespannung beträgt 4,4 V (der Abfall der Diode ist größer als die erforderlichen 0,15 V).

Es ist wichtig zu beachten, dass es möglich ist, bis zu 4,2 V mit einem entsprechenden Verlust von ~ 15% der Kapazität aufzuladen, gleichzeitig aber die Lebensdauer des Akkus erheblich zu verlängern. Wir haben die Kopie von Orig fertiggestellt - sie kann sicher in die Entwicklung übernommen werden.
Die letzte Kopie bleibt übrig. Am teuersten (11 US-Dollar), in der coolsten Verpackung und mit der höchsten Zeit für sich. Wir schauen hinein:

Hier handelt es sich um einen unbekannten A1141-Chip, für den es keine andere Dokumentation als die
Herstellerseite gibt . Bei erzwungener Verbindung zu bq27545 in Battery Management Studio wird das folgende Bild angezeigt:

Voller Müll. Beim Versuch, mit einem Strom von ~ 500 mA zu laden, werden 125 mA angezeigt, während beim Entladen mit einem Strom von ~ 25 mA 214 mA angezeigt werden. Es ist klar, dass, wenn der A1141 andere Parameteradressen oder ein anderes Format zum Speichern von Daten als bq27545 hat, nichts ohne Dokumentation mit dieser Batterie leuchtet. Daher wurde es beiseite gelegt, aber am Ende des Schreibens des Materials entschied ich mich, es wieder anzuschließen. Ich habe die Chipbefehlstabelle bq27545 genommen:

Und ich habe die Spannungsregister (0x08 und 0x09) über das Menü Advanced Comm gelesen:

Holen Sie sich 0x10 << 8 | 0x38 = 4152 oder 4,152 V, was einer mit einem Multimeter gemessenen Spannung von 4,15 V entspricht. Wenn die Daten korrekt sind, warum werden im Programm 57 mV angezeigt? Wir stellen fest, dass 57 mV genau 0x38 ist, dh der Wert ist 0x08 Register. Mit einer Spannung von 4,152 V an der Batterie sieht der Ladezustand von 96% ganz richtig aus. Sie können ihn erhalten, indem Sie die Register 0x2c und 0x2d lesen. Lesen Sie 0x2c = 0x60, 0x2d = 0 (im Fall des SOC-Parameters ist das höchste Register immer Null). Es wurde angenommen, dass das Programm oder der EV2300 weder das High-Byte in der Anforderung noch ein Byte mit einer ungeraden Adresse lesen kann (oder die Batterie nicht reagiert). Um diese Theorie zu testen, wurde die Batterie direkt an den RFID-Leser angeschlossen und die Batterie wurde über den MK abgefragt. Die HDQ-Schnittstelle wurde gemäß einem
Dokument von TI implementiert. Der bq27545-Chip verwendet das Single-Wire-HDQ-Protokoll zur Kommunikation mit dem Steuercontroller, der auf STM32 dank der Unterstützung des Halbduplex-Modus auf der Basis eines Single-Wire-UART recht bequem implementiert wird.
Weil Unser RFID-Lesegerät funktioniert mit MicroPython. Wir haben die Arbeit mit HDQ in einer Klasse zusammengefasst und die Arbeit mit dem Laderegler in der folgenden Form erhalten:
von hdq HDQ importieren
bat = HDQ (pyb.UART (1))
bat.charge () # Gebühr
bat.read_u16 (0x14) # beliebiges Register
Tatsächlich stellte sich heraus, dass A1141 nicht auf eine Anforderung zum Lesen von Bytes mit ungeraden Adressen reagiert.

Die Wellenform zeigt an, dass eine Anforderung vorliegt, jedoch keine Antwort. Als sie vor jeder Anforderung einen Neustart der Logik des Datenaustauschs (Pause) hinzufügten - jedes zweite Mal, aber die Mikroschaltung begann korrekt zu reagieren.

Dann haben wir den Wechselkurs des EV2300 und die RFID des Lesegeräts verglichen und es stellte sich heraus, dass der EV2300 eine Geschwindigkeit verwendet, die 10-15% niedriger ist als die TI-Sätze:

Nachdem der HDQ verlangsamt und Break abgeschlossen wurde, funktionierte der Akku bei jeder Anfrage normal! Die Hauptparameter der Batterie wurden gelesen:

Kompletter Sieg! Tatsächlich stellte sich heraus, dass A1141 ein hochwertiger Klon von bq27545 mit geringfügigen Fehlern ist. Es bleibt noch über die Nuancen der Arbeit mit dem Akku von der Softwareseite aus zu sprechen (unter Verwendung von Schlafmodi, Weckstrom usw.), aber dies wird die Menge der Aufnahme verdoppeln und ich werde es vielleicht ein anderes Mal schreiben.
Schlussfolgerungen
Wie Sie sehen, gibt es viele Möglichkeiten, Geräte mit Li-Ionen-Batterien zu entwickeln. Ehrlich gesagt war ursprünglich geplant, Material im Stil von Come, Saw, Won zu schreiben, aber dabei kamen viele Nuancen heraus (der Kampf mit A1141 ist besonders gut), und das Material erwies sich als sehr interessant und umfangreich. Von den 5 Batterien können tatsächlich nur 2 normal verwendet werden. Daher ist die Wahl des Lieferanten in diesem Fall sehr relevant. Wenn Sie den Akku von anderen Geräten gesehen haben, die BMS enthalten, schreiben Sie das Modell in die Kommentare. Vielen Dank für Ihre Aufmerksamkeit!