EDIT: Documentation

This commit is contained in:
Eduard Iten 2025-10-05 17:16:16 +02:00
parent 3057968c85
commit 561cbade1f
1 changed files with 70 additions and 3 deletions

View File

@ -15,6 +15,9 @@
- [Akkuschutz](#akkuschutz)
- [Fuel Gauge](#fuel-gauge)
- [CR1220](#cr1220)
- [Energiebilanz Li-Ion-Akku](#energiebilanz-li-ion-akku)
- [Ausgangsdaten](#ausgangsdaten)
- [Verbrauchsrechnung](#verbrauchsrechnung)
- [Energiewandlung](#energiewandlung)
- [Lader](#lader)
- [3.3V Buck-Boost-Wandler (DC/DC-Wandler)](#33v-buck-boost-wandler-dcdc-wandler)
@ -94,10 +97,38 @@ Damit das Gerät auch bei ausschließlich gesteckter Debug-Verbindung funktionie
Als Akku sind zwei parallelgeschaltete 18650-Zellen vorgesehen. Diese werden mittels Nickelstreifen verschweißt, mit einem NTC-Temperatursensor versehen und eingeschrumpft. Die Verbindung zur Schaltung ist vierpolig ausgeführt, da die [Akkuschutzschaltung](#akkuschutz) auf der Hauptplatine (PCB) und nicht im Akku selbst integriert ist. Würde die Schutzschaltung die Minus-Verbindung trennen, wäre der NTC ohne definiertes Potenzial (floatend). Wenn in diesem Zustand eine externe Versorgung angeschlossen wird, würde der [Lader](#lader) den NTC nicht erkennen und den Ladevorgang verweigern. Die Verbindung ist daher als `BAT+`, `BAT-`, `NTC` und `GND` ausgeführt.
#### Akkuschutz
Als Akkuschutz wird ein **FM2113** verbaut. Dieser steuert zwei N-Kanal-MOSFETs (für Laden und Entladen), die in einer Common-Drain-Schaltung zwischen `BAT-` und `GND` platziert sind. Der Baustein schützt vor *Überladung*, *Tiefentladung* und *Überstrom*.
Als Akkuschutz habe ich zuerst an den *FM2113* gedacht. Bei der Auslegung der N-FETs wurde dann aber klar, dass er nicht geeignet ist. Das Problem dabei ist, dass er R<sub>DSON</sub> zur Strommessung benutzt. Um ein Auslösen der Überstromsicherung im Worts Case kommen bei 3A Standardkandidaten wie der *AO3400A* oder de *MDD2302* nicht in Frage, sie sind leider nicht genügend Niederohmig. Der *AO3400A* kann die Wärme bei 3A nicht abführen. Der *MDD2302* würde thermisch passen. Bei 2.5V hat er einen maximalen R<sub>DSON</sub> von 35mΩ, die Verlustleistung bei 3A beträgt also
$$
P=R \cdot I^2 = 35\text{mΩ} \cdot (3\text{A})^2 = 315\text{mW}
$$
was bei 100K/W thermischen Widerstand kein Problem darstellt. Allerdings beträgt der Spannungsabfall
$$
\Delta U=R \cdot I = 35\text{mΩ} \cdot 3 \text{A} = 105\text{mV}
$$
Da in der Schutzschaltung 2 FETs in Common-Drain-Schaltung vorhanden sind ergibt das total 210mV. Laut Datenblatt kann der *FM2113* bereits bei 120mV einen Überstrom erkennen.
Bessere FETs sind selten, grösser und/oder teuerer. Bei meiner Suche bin ich dann über den **XB4908A** von XySemi gestossen, eine LiPo-Protection-IC mit integrierten FETs. Der Baustein schützt vor *Überladung*, *Tiefentladung* und *Überstrom*. Die wichtigsten Daten will ich hier aufführen, da der Chip wohl nicht sehr bekannt sein dürfte:
|Parameter|Symbol|Wert|
|---|---|---|
|Überladespannungsauslösung|OCV|4.30V|
|Überladespannungsauflösung|OCRV|4.10V|
|Tiefentladeauslösung|ODV|2.4V|
|Tiefentladeauflösung|ODRV|3V|
|Strombedarf im Betrieb|I<sub>OPE</sub>|typ. 3.3μA|
|Strombedarf im Powerdown|I<sub>PD</sub>|typ. 1.8μA|
|Widerstand|R<sub>SS(on)</sub>|typ. 13.5mΩ|
|Überstromabschaltung entladen|I<sub>IOV1</sub>|min. 6A|
|Überstromabschaltung laden|I<sub>ROV1</sub>|min. 4A|
|Thermischer Widerstand zur Umgebung|θ<sub>JC</sub>|100K/W|
Dieser IC ist also passend für diese Anwendung. Der R<sub>SS(on)</sub> (SS, da da zwei nFETs in Common-Drain-Schaltung drin sind, also der Widerstand zwischen den beiden Sourcen) ist leider nur als typischer Wert angegeben. Für die thermische Abschätzung gehe ich also daher von 20mΩ aus. Damit erhalte ich
$$
P=R \cdot I^2 = 20\text{mΩ} \cdot (3\text{A})^2 = 180\text{mW} \\
\Delta T = P \cdot \Theta_{JC} = 180\text{mW} \cdot 100\text{K/W} = 18\text{K}
$$
Eine Erwärmung um 18K bei maximalem Ladestrom sollte absolut kein Problem sein.
#### Fuel Gauge
Als Fuel Gauge wird der **BQ27441-G1** von Texas Instruments eingesetzt. Der ursprünglich vorgesehene **BQ27427** ist nur für einen Dauerstrom von 2A ausgelegt, womit die vollen Möglichkeiten des [Laders](#lader) und des [Li-Ion-Akkus](#li-ion-akku) nicht ausgenutzt werden könnten.
Als Fuel Gauge wird der **BQ27441-G1** von Texas Instruments eingesetzt. Der ursprünglich vorgesehene *BQ27427* ist nur für einen Dauerstrom von 2A ausgelegt, womit die vollen Möglichkeiten des [Laders](#lader) und des [Li-Ion-Akkus](#li-ion-akku) nicht ausgenutzt werden könnten.
Zur Strommessung ist ein `0.01Ω` Shunt-Widerstand vorgesehen. Hierbei ist vor allem die Temperaturstabilität maßgeblich, da der genaue Widerstandswert im BQ27221 konfiguriert/kalibriert werden kann.
Die Verlustleistung am Widerstand ist relativ gering:
$$
@ -119,13 +150,49 @@ stateDiagram-v2
note right of Nachlauf
DC/DC wird von der RTC regelmässig gestartet um die Temperatur zu übermitteln.
end note
note right of Tiefschlaf
note left of Tiefschlaf
DC/DC ausgeschaltet
end note
```
#### CR1220
Eine CR1220-Knopfzelle dient als Backup-Versorgung für die RTC. Die Batterie wird im Normalfall für sehr lange Zeit (>10 Jahre) ausreichen, da die RTC primär vom [Li-Ion-Akku](#li-ion-akku) versorgt wird, solange die Schutzschaltung nicht ausgelöst hat.
### Energiebilanz Li-Ion-Akku
Die Energiebilanz im Betrieb kann erst wirklich bestimmt werden, wenn die Schaltung aufgebaut ist. Um die Auslegung zu prüfen habe ich aber überschlagen, wie viel die Schaltung in einem Deep-Power-Down-Modus verbraucht. Die Strategie ist, bei unter 3V in einen sicheren Deep-Power-Down-Modus zu gehen, um eine Tiefentladung des Akkus möglichst lange zu verhindern.
Sollte Entladung des Akkus erkannt werden, so wird der Lader in den Ship-Zustand geschaltet und die Fuel Gauge in den Shutdown. Der Lader wird durch das Einstecken einer externen Versorgung automatisch wieder geweckt. Die Fuel Gauge muss über den GP-Pin vom Mikrocontroller geweckt werden.
```mermaid
stateDiagram-v2
[*] --> Betrieb
Betrieb --> DeepPowerDown: Akkuspannung < 3V
DeepPowerDown --> Aufwachen: Stecken einer externen Energiequelle
Aufwachen --> Betrieb: Übergang durch Mikrocontroller
note right of DeepPowerDown
Microcontroller schaltet Fuel Gauge und Lader in niedrigen Verbrauch, dadurch wird Speisung gekappt
end note
note left of Aufwachen
Mikrocontroller muss Fuel Gauge wecken
end note
```
Vorgesehen sind 2x3200mAh-18650-Zellen parallel. Zur Sicherheit rechne ich mit 2x2600Ah, falls doch einmal kleinere Zellen eingesetzt werden.
#### Ausgangsdaten
|Wert|Kapazität|
|---|---:|
|Nennkapazität|5'200mAh|
|Alterung, Rest 80%|4'106mAh|
|Restkapazität unter 3V bis zur kritischen Spannung von 2.5V: 10%|**41mAh**|
#### Verbrauchsrechnung
Beim Verbrauch fliessen die Worst-Case (höchsten) Angaben ein:
|Verbraucher|Verbrauch|
|---|---:|
|Schutzschaltung XB4908A|6μA|
|Fuel Gauge BQ27441-G1 (im Datenblatt steht nur der typische Verbrauch von 0.6μA, Worst-Case geschätzt)|1μA|
|Lader BQ25672(0.7μA laut Datenblatt, aufgerunden|1μA|
|**total**|**8μA**|
In der Worst-Case-Betrachtung haben wir also 41mAh zur Verfügung bei einem Verbrauch von 8uA, die Restkapazität reicht folglich für $\frac{41\text{mAh}}{8\text{uA}}=5125\text{h}$, bis der Akku in einen chemisch kritischen Zustand kommt. Das entspricht 213 Tagen oder fast sieben Monate. Die Selbstentladung ist hierbei nicht eingerechnet, trotzdem ist dies ein Wert, er mir absolut keine Bauchschmerzen bereitet, vor allem, da dies ja eine absolute Worst-Case-Berechnung ist.
### Energiewandlung
#### Lader
Als Ladechip ist der **BQ25672** vorgesehen. Dieser bietet einige Funktionen, die für das Projekt besonders interessant sind: