ADD: Added Power Supply documentation
This commit is contained in:
parent
8f411b174b
commit
6faecc51a2
|
|
@ -0,0 +1,145 @@
|
|||
# Energieversorgung
|
||||
|
||||
## Übersicht
|
||||
Die Energieversorgung besteht aus 3 Komponenten:
|
||||
- Externe Energieversorgung (USB, Debug-Stecker)
|
||||
- Interner 1S LiPo/LiIon-Akku
|
||||
- Interne Knopfzelle (CR1220)
|
||||
|
||||
Aus diesen Quellen werden verschiedene Versorgungen erzeugt:
|
||||
- ```VDD```ist die generelle Versorgung, die den Mikrocontroller, den Sensor und das externe Flash versorgt. Sie wird duch einen Buck-Boost-Wandler aus der externen Versorgung oder dem LiIon Akku erzeugt. Der Wandler ist ein- und ausschaltbar, um Energie zu sparen.
|
||||
- ```VDDSD``` versorgt den MicroSD-Kartenslot. Sie ist schaltbar, da eine SD-Karte ziemlich viel Energie braucht, auch wenn sie nichts tut.
|
||||
- ```VRTC``` versorgt die RTC und den ```VBAT```-Pin des Mikrocontrollers. Die Spannung ist immer vorhanden, solange der Batterieschutz nicht angesprochen hat. Die Versorgung erfolgt über einen Power-MUX, der prioritär von ```VDD``` gespiesen wird. Fällt ```VDD``` weg, so erfolgt die Speisung über einen LDO direkt ab LiIon-Akku (natürlich nach der Schutzschaltung).
|
||||
- ```VBACKUP``` ist die CR1220-Zelle. Sie dient als Backup-Versorgung für die RTC, falls der Akku entfernt wird oder der Entladeschutz anspricht.
|
||||
|
||||
Als vereinfachtes Blockschaltbild schaut dies so aus:
|
||||
```mermaid
|
||||
graph TD;
|
||||
subgraph "Batterien"
|
||||
LIPO[(Li-Ion Akku)];
|
||||
PROTECTION[Akkuschutz];
|
||||
GAUGE[Fuel Gauge];
|
||||
CR1220[(CR2012)];
|
||||
end
|
||||
LIPO <--> PROTECTION;
|
||||
PROTECTION <--> GAUGE;
|
||||
CR1220 --> VBACKUP;
|
||||
|
||||
subgraph "Externe Quellen"
|
||||
USBC[USB-C Port];
|
||||
DEBUG[Programmier-Port];
|
||||
end
|
||||
|
||||
subgraph "Energiewandlung"
|
||||
LDO[3.3V LDO];
|
||||
DCDC[3.3V Buck-Boost];
|
||||
CHARGER[Lader];
|
||||
SDSWITCH[SD Schalter];
|
||||
MUX[Power-Mux]
|
||||
end
|
||||
USBC --> CHARGER;
|
||||
DEBUG --> CHARGER;
|
||||
GAUGE <--> CHARGER;
|
||||
CHARGER --> DCDC --> VDD;
|
||||
CHARGER --> LDO;
|
||||
LDO --> MUX;
|
||||
DCDC --> MUX --> VDDRTC;
|
||||
DCDC --> SDSWITCH --> VDDSD;
|
||||
|
||||
subgraph "Verfügbare Versorgungen"
|
||||
VBACKUP(VBACKUP);
|
||||
VDDRTC(VDDRTC);
|
||||
VDDSD(VDDSD);
|
||||
VDD(VDD);
|
||||
end
|
||||
```
|
||||
|
||||
## Externe Quellen
|
||||
### USB-C Port
|
||||
Das Gerät soll über einen USB-C-Port verfügen. Dieser dient sowohl als Datenverbindung und als Energieversorgungsverbindung. Das Gerät soll sowohl am PC/Laptop wie auch an gängigen Netzteilen (Handy-Ladegerät, USB-C Laptop-Netzteil etc.) geladen werden können. Dabei muss natürlich der verfügbare Strom beachtet werden. Mehr dazu unter [Lader](#lader).
|
||||
|
||||
### Debug Port
|
||||
Damit das Gerät auch funktioniert, wenn nur die Debug-Verbindung gesteckt ist, kann auf dem Debug-Port 5V eingespeist werden. Bei den meisten Debug-Adaptern ist dieser Strom beschränkt. Deshalb muss darauf geachtet werden, dass von diesem Eingang maximal 300mA bezogen wird.
|
||||
|
||||
## Batterien
|
||||
### Li-Ion-Akku
|
||||
Als Akku sind zwei parallelgeschaltete 18650-Zellen vorgesehen. Diese werden mittels Nickelstreifen verschweist, mit einem NTC versehen und Eingeschrumpft. Die Verbindung zur Schaltung ist vierpolig vorgesehen, da der [Akkuschutz](#akkuschutz) auf dem PCB und nicht im Akku verbaut wird. Trennt der Akkuschutz die Minus-Verbindung, so wäre der NTC floatend. Würde nun in diesem Zustand eine externe Versorgung angeschlossen, so erkennt der [Lader](#lader) keinen NTC, da ```BAT-``` unterbrochen ist und würde nicht laden. Die Verbindung ist also als ```BAT+```, ```BAT-```, ```NTC``` und ```GND``` vorgesehen.
|
||||
|
||||
### Akkuschutz
|
||||
Als Akkuschutz wird ein **FM2113** verbaut. Dieser steuert zwei N-Fets (Laden und Entladen), welche in Common-Drain-Beschaltung zwischen ```BAT-``` und ```GND``` geschaltet werden. Er unterstüzt den Schutz vor *Überladen*, *Tiefentladen* und *Überstrom*.
|
||||
|
||||
### Fuel Gauge
|
||||
Als Fuel Gauge wird der **BQ27221** von Texas Instruments eingesetzt. Der ursprünglich vorgesehene **BQ27427** verträgt leider nur 2A dauerhaft. Damit würden wir nicht die vollen Möglichkeiten des [Laders](#lader) und des [Li-Ion-Akkus](#li-ion-akku) ausnutzen.
|
||||
Zur Strommessung ist ein ```0.01Ω``` Shunt vorgesehen. Dabei ist zu beachten, dass vor allem die Temperaturstabilität massgeblich ist, da der genaue Wert im BQ27221 eingestellt/kalibriert werden kann.
|
||||
Die Leistung, welche über dem Widerstand verloren geht, ist relativ gering:
|
||||
$$
|
||||
\begin{align}
|
||||
P &= R \cdot I^2 \\
|
||||
&= 0.01\text{Ω} \cdot 3\text{A}\\
|
||||
&= 0.09\text{W}
|
||||
\end{align}
|
||||
$$
|
||||
Diese 90mW Verlustleistung würde zwar schon ein 0603 SMD-Widerstand problemlos verkraften. damit aber eine saubere Kelvin-Verbinung möglich ist, sehe ich hier einen Widerstand in der Bauform 1206 vor.
|
||||
Die Konfiguration der Fuel Gauge kann über die TI-Software und den TI-Adapter stattfinden. Dazu kann der Adapter an einen externe I²C-Anschluss (OLED-Anschluss oder Tasten/Tocu-Controller-Anschluss) verbunden werden. Dabei ist sicherzustellen, dass der Mikrocontroller keine Software geladen hat, die einen I²C-Master implementiert.
|
||||
|
||||
### CR1220
|
||||
Eine CR1220 dient als Backup-Versorgung der RTC. Die Batterie wird im Normalfall für sehr lange Zeit (>10 Jahre) ausreichen, da die RTC vom [Li-Ion-Akku](#li-ion-akku) versorgt wird, solange die Schutzschaltung nicht angesprochen hat.
|
||||
|
||||
## Energiewandlung
|
||||
### Lader
|
||||
Als Ladechip ist der **BQ25672** vorgesehen. Dieser hat einige Funktionen, die für das Projekt ausserordentlich interessant sind:
|
||||
- Unterstützt die Erkennung von zwei externen Spannungen und kann Interrupts auslösen, wenn diese Verbunden oder getrennt werden.
|
||||
- Unterstützt einen Ladestrom von bis zu 3A, welcher in 10mA-Schritten über I²C eingestellt werden kann.
|
||||
- Unterstützt eine Eingangsstrombegrenzung, welche über I²2 eingestellt werden kann.
|
||||
- Unterstützt die Erkennung von speziellen Quellen (USB BC1.2 und HVDCP).
|
||||
- Hohe Effizienz dank Buck-Boost-Konzept.
|
||||
- Unterstützt die NVDC-Funktion.
|
||||
- Shipping Mode um die Energieversorgung auf ein absolutes Minimum zu reduzieren. Kann nur durch verbinden einer Externen Versorgung aufgehoben werden.
|
||||
- Integrierte FETs
|
||||
|
||||
Einzig eine Erkennung der USB-C Ladeströme ist damit nicht direkt möglich. Das ist aber kein Problem, die CC-Leitungen des USB-C-Steckers können einfach über den ADC des Mikrocotrollers ausgewertet werden. Der Ablauf in der Firmware ist so angedacht:
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[START] -->|Stecken erkannt| B{CC-Leitungen Messen}
|
||||
B -->|grösser 1.31V| C[USB-C 3A]
|
||||
B -->|zwischen 0.71V und 1.16V| D[USB-C 1.5A]
|
||||
B -->|kleiner 0.61V| E(BQ25672 auslesen)
|
||||
E --> F{BQ25672 hat USB-Port bestimmt}
|
||||
F -->|SDP erkannt| G(USB Enumerieren) -->H[Strombegrenzung gemäss Enumerierungs-Ergebnis]
|
||||
F -->|ansonsten| I(BQ25672 A-Port-Erkennung auslesen) -->J[Strombegrenzung entsprechend setzen]
|
||||
|
||||
```
|
||||
|
||||
Dazu ist diese Beschaltung nötig:
|
||||
```mermaid
|
||||
graph TD;
|
||||
USBC[USB-C Port];
|
||||
MCU[Microcontroller];
|
||||
CHARGER[Lader];
|
||||
|
||||
USBC -- D+, D-, VBUS --> CHARGER;
|
||||
USBC -- D+, D-, CC1, CC2 --> MCU;
|
||||
MCU <-- I²C --> CHARGER;
|
||||
```
|
||||
Der Shipping Mode kann dazu benutzt werden, um ein Wiedereinschalten des Geräts bei einem niedrigen Akkustand (zum Beispiel ```< 3V```) zuverlässig zu Verhindern. Zudem ist ein "Lagermodus" vorgesehen, bei dem das Gerät möglichst wenig Energie aus dem Akku entnehmen soll.
|
||||
|
||||
### 3.3V Buck-Boost-Wandler (DC/DC-Wandler)
|
||||
Der DC/DC-Wandler ist die Hauptenergieversorgung der Schaltung. Da die Li-Ion-Akkuspannung von 3V bis 4.2V betragen kann, ist ein Buck-Boost-Design notwendig. Die Wahl fällt dabei auf den TPS63020. Die Argumente dafür sind:
|
||||
- Sehr Effizient
|
||||
- Integrierte FETs
|
||||
- Hohe Frequenz, damit kleine Induktivität
|
||||
- Enable-Eingang, sehr kleiner Energieverbrauche im ausgeschalteten Zustand
|
||||
Der DC/CD-Wandler wird, wenn immer Möglich, ausgeschaltet. Weckquellen sind:
|
||||
- Einschalt-Taster
|
||||
- RTC
|
||||
- Lader (wenn erkannt wird, das eine Versorgung gesteckt wurde)
|
||||
Zudem wird ein GPIO des Mikrocontrollers mit dem ENABLE-Eingang verbunden, damit dieser den DC/DC-Wandler eigneschaltet lassen kann. Dabei sind die Signale zu invertieren, da sie Active Low sind. Die Signale werden über Dioden zusammengefasst und erst dann mit einem N-FET invertiert, um Transistoren zu sparen. Somit reichen zwei Doppeldioden und ein N-FET für die Beschaltung, was 3 SOT-323-Gehäuse bedeutet.
|
||||
|
||||
### SD Schalter
|
||||
Die SD-Karte hat auch im Ruhezustand einen relativ grossen Leistungsbedarf. Um eine höhere Energieeffizienz zu erreichen wird die Speisung zum Mikro-SD-Slot über einen P-FET vom Mikrocontroller nur bei bedarf eingeschaltet.
|
||||
|
||||
### 3.3V LDO
|
||||
Der 3.3V LDO dient dazu, die RTC und den ```VBAT```-Eingang des Mikrocontrollers mit Spannung zu versorgen, wenn der [DC/DC-Wandler](#3-3v-buck-boost-wandler) ausgeschaltet ist. Die Wahl fällt auf den **XC6206P332MR-G** von Torex. Er hat einen Eigenverbrauch von lediglich 1uA. Bei einer Akkuspannung unter 3.3V reicht er die Eingangsspannung einfach durch (sehr geringer Spannungsabfall). Das führt allerdings dazu, dass in diesem Fall die I²C-Kommunikation mit der RTC problematisch werden kann. Aus diesem Grund wird ein [Power-MUX](#power-mux) eingesetzt, welcher den DC/DC-Wandler bevorzugt, wenn er vorhanden ist. Damit ist sichergestellt, dass alle Geräte den gleichen Pegel verwenden, wenn I²C aktiv ist.
|
||||
|
||||
### Power-Mux
|
||||
Ein **TPS2116** wird als Power-Multiplexer eingesetzt. Am Eingang werden der DC/DC-Wandler (priorisiert) und der LDO angeschlossen. Am Ausgang stellt er ```VRTC``` zur Verfügung.
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# Dokumentation
|
||||
Dieses Verzeichnis enthält die Dokumentation zum Projekt.
|
||||
Im Verzeichnis [datasheets](datasheets) sind die Datenblätter der verwendeten Komponenten enthalten, sofern diese relevant sind. Ich habe mir gespart, zu jedem Widerstand das Datenblatt herunterzuladen.
|
||||
|
||||
## Design
|
||||
[Energieversorgung](PowerSupply.de.md)
|
||||
Loading…
Reference in New Issue