Bauteile · 14 Min. Lesezeit

TP4056 anschließen: 18650-Lademodul, Schutzschaltung und ESP32

TP4056-Lademodul anschließen: B+/B- und OUT+/OUT-, Version mit DW01-Schutz, LED-Anzeigen, Ladestrom per Rprog, 5 V mit MT3608 und Akkuspannung am ESP32 messen.

Den TP4056 anschließen ist der günstigste Weg, einen einzelligen 18650- oder LiPo-Akku sicher über USB zu laden und mit demselben Akku ein Arduino-, ESP32- oder Raspberry-Pi-Pico-Projekt zu versorgen: Das USB-Kabel kommt an den Eingang des Moduls, der Akku an B+ und B- und deine Schaltung bei Modulen mit Schutzschaltung an OUT+ und OUT-. Das Modul lädt den Akku nach dem Konstantstrom-/Konstantspannungsverfahren bis 4,2 V, beendet den Ladevorgang selbstständig, wenn der Akku voll ist, und zeigt den Zustand mit zwei LEDs an. Die fingernagelgroße Platine ist das Herz von Projekten, die ohne Steckdose laufen, etwa mobile Wetterstationen, Roboter, Akkulampen und Funksensoren.

Doch das günstige Modul hat ein paar Fallen: Versionen mit und ohne Schutzschaltung werden unterschiedlich angeschlossen, der voreingestellte Ladestrom von 1 A ist für kleine Akkus zu hoch, eine Schaltung, die während des Ladens mitversorgt wird, kann das Ladeende verhindern, und zwei in Reihe geschaltete Zellen lassen sich mit diesem Modul niemals laden. In diesem Artikel lernst du Schritt für Schritt jeden Anschluss und die Bedeutung der LEDs kennen, stellst den Ladestrom mit dem Rprog-Widerstand ein, ergänzt ein MT3608-Step-up-Modul für Boards, die 5 V brauchen, und misst die Akkuspannung mit dem ESP32, um sie in Prozent umzurechnen.

TP4056-Lademodul für 18650-Akkus mit Schutzschaltung und USB-C
TP4056-Modul mit Schutzschaltung: links der USB-C-Eingang und die Pads IN+/IN-, rechts die Pads B+/B- (Akku) und OUT+/OUT- (Ausgang). Der große Chip in der Mitte ist der TP4056, die kleinen Chips daneben sind der Schutz-IC DW01A und der Doppel-MOSFET 8205A.

Was ist der TP4056 und wie funktioniert er?

Der TP4056 ist ein linearer Lade-IC für einzellige Lithium-Ionen- (Li-Ion) und Lithium-Polymer-Akkus (LiPo). Lithium-Akkus lassen sich nicht mit einem beliebigen Netzteil laden; sie brauchen ein bestimmtes Ladeprofil, und der TP4056 setzt es ganz allein um. Liegt der Akku unter 2,9 V, lädt er ihn zuerst in der Vorladephase (Trickle Charge) behutsam mit etwa einem Zehntel des eingestellten Stroms, bei der 1-A-Einstellung also mit rund 130 mA. Steigt die Spannung über 2,9 V, wechselt er in die Konstantstromphase (CC) und liefert den vollen eingestellten Strom. Erreicht der Akku 4,2 V, beginnt die Konstantspannungsphase (CV): Die Spannung wird bei 4,2 V gehalten, und der Strom sinkt langsam. Fällt der Strom auf ein Zehntel des eingestellten Werts (bei 1 A also 100 mA), endet die Ladung. Sinkt der Akku später auf etwa 4,05 V, startet das Modul die Ladung automatisch neu. Wird der Chip sehr heiß, drosselt er den Ladestrom selbst; deshalb ist es normal, dass das Modul beim Laden warm wird.

MerkmalWert
Eingangsspannung4,0–8 V (empfohlen 5 V; Micro-USB oder USB-C)
Ladeschlussspannung4,2 V (±1,5 %)
LadestromMaximal 1 A; bei Modulen standardmäßig 1 A (Rprog = 1,2 kΩ)
VorladungUnter 2,9 V etwa 1/10 des eingestellten Stroms
LadeendeWenn der Strom auf 1/10 des eingestellten Werts fällt (C/10)
NachladenAutomatisch, wenn der Akku auf etwa 4,05 V sinkt
StatusausgängeLEDs für CHRG (lädt) und STDBY (voll)
Geeignete AkkusNur einzellige (1S) 3,7-V-Li-Ion- und LiPo-Akkus; kein LiFePO4

TP4056 mit Schutzschaltung (DW01) und ohne: der Unterschied

Unter demselben Namen werden zwei verschiedene Platinen verkauft. Das Modul ohne Schutzschaltung hat nur den TP4056-Chip und vier Anschlüsse: IN+/IN- und BAT+/BAT-. Es lädt den Akku, überwacht beim Entladen aber gar nichts. Das Modul mit Schutzschaltung hat zusätzlich den Schutz-IC DW01A und den Doppel-MOSFET 8205A sowie sechs Pads: IN+/IN-, B+/B- und OUT+/OUT-. Die Schutzschaltung sitzt wie ein Schalter zwischen dem Minuspol des Akkus und dem Minuspol deiner Schaltung (OUT-). Wird der Akku tiefentladen oder überladen, zieht die Schaltung zu viel Strom oder gibt es am Ausgang einen Kurzschluss, öffnet sie diesen Schalter und trennt den Akku von der Schaltung.

MerkmalModul ohne SchutzModul mit Schutz (DW01A + 8205A)
PadsIN+, IN-, BAT+, BAT-IN+, IN-, B+, B-, OUT+, OUT-
ÜberladeschutzNur die 4,2-V-Grenze des TP4056Schaltet zusätzlich bei etwa 4,25–4,3 V ab
TiefentladeschutzKeinerSchaltet bei etwa 2,4 V ab, gibt um 3,0 V wieder frei
Überstrom und KurzschlussKeinerSchaltet bei etwa 3 A und bei Kurzschluss ab
Wann wählen?Wenn der Akku eine eigene Schutzschaltung hatBei ungeschützten Zellen, also in fast jedem Projekt
Welche Version du hast, erkennst du leicht: Siehst du auf der Akkuseite sechs Pads (B+, B-, OUT+, OUT-) und neben dem TP4056 zwei weitere kleine Chips, ist das Modul geschützt. Steht dort nur BAT+ und BAT-, ist es ungeschützt. Der Preisunterschied ist winzig, nimm also immer die Version mit Schutzschaltung.

18650-Akku: die Spannungswerte, die du kennen musst

Der Name 18650 kommt von den Maßen der Zelle: 18 mm Durchmesser, 65 mm Länge. Die Nennspannung beträgt 3,6–3,7 V, doch das ist ein Mittelwert; ein voller Akku hat 4,2 V, ein leerer etwa 3,0 V. Echte Kapazitäten liegen zwischen 2000 und 3500 mAh; Zellen mit Aufschriften wie 6800 oder 9900 mAh sind Fälschungen und liefern oft nicht einmal 1000 mAh. Geschützte 18650-Zellen mit eigener Schutzschaltung sind ein paar Millimeter länger und passen nicht in jede Halterung. Wie lange dein Projekt mit einem Akku läuft, berechnest du mit dem Akkulaufzeit-Rechner; mehr über Kapazitätsangaben liest du in mAh und Wh erklärt.

ZustandSpannungErklärung
Voll geladen4,20 VHier beendet der TP4056 die Ladung
Nennspannung3,6–3,7 VWert auf dem Etikett, mittlere Betriebsspannung
Gilt als leer3,0–3,3 VHier abzuschalten verlängert die Lebensdauer
Schutzabschaltung2,4–2,5 VDer DW01A schaltet den Ausgang ab; so tief besser nicht entladen
GefahrenbereichUnter 2,0 VEinen Akku, der lange so tief lag, nicht laden, sondern ersetzen
18650-Li-Ion-Akku
18650-Li-Ion-Akku: 18 mm Durchmesser, 65 mm Länge und 3,7 V Nennspannung. Angeschlossen wird er über eine Akkuhalterung oder punktgeschweißte Nickelstreifen.
Löte niemals direkt mit dem Lötkolben an eine 18650-Zelle; die Hitze schädigt das Innere des Akkus und ist gefährlich. Verwende eine Akkuhalterung oder punktgeschweißte Nickelstreifen. Benutze keine gequetschten oder aufgeblähten Akkus und keine mit beschädigter Hülle, lade auf einer nicht brennbaren Unterlage und niemals unter 0 °C. Bei fertigen Modulen liegt der TEMP-Pin auf GND, die Akkutemperatur wird also nicht überwacht; fühle beim Laden ab und zu, ob der Akku warm wird.

TP4056 anschließen: die Pins IN, B+/B- und OUT+/OUT-

PadWird verbunden mitHinweis
USB-Eingang5-V-Netzteil oder ComputerMicro-USB oder USB-C; der einfachste Weg
IN+ / IN-Plus und Minus einer externen 5-V-QuelleZum Anlöten statt USB; nicht beides gleichzeitig nutzen
B+ / B-Plus und Minus des 18650-AkkusHier kommt nur der Akku dran
OUT+ / OUT-Plus und Minus deiner Schaltung (Last)Beim geschützten Modul gehört die Last immer hierher
BAT+ / BAT- (ohne Schutz)Akku und Last gemeinsamKein Schutz; die Last liegt parallel zum Akku
  1. Löte das rote Kabel der Akkuhalterung an B+ und das schwarze an B-. Setze den Akku noch nicht ein.
  2. Löte die Plusleitung deiner Schaltung an OUT+ und die Minusleitung (GND) an OUT-. Willst du ein Board mit 5 V versorgen, kommt dazwischen ein MT3608-Step-up-Modul.
  3. Prüfe die Lötstellen und stelle mit dem Multimeter sicher, dass zwischen B+ und B- kein Kurzschluss besteht.
  4. Setze den Akku polrichtig in die Halterung ein. Bei manchen geschützten Modulen ist der Ausgang anfangs aus; einmal USB anstecken setzt die Schutzschaltung zurück und schaltet den Ausgang frei.
  5. Stecke das USB-Kabel an: Leuchtet die rote LED, hat das Laden begonnen. Ist der Akku voll, erlischt die rote LED, und die blaue oder grüne leuchtet.
  6. Sobald das Multimeter zwischen OUT+ und OUT- die Akkuspannung (3,0–4,2 V) anzeigt, kannst du deine Schaltung in Betrieb nehmen.
Der häufigste Fehler: beim geschützten Modul die Schaltung an B+ und B- anzuschließen. So funktioniert die Schaltung zwar, aber der DW01A-Schutz ist umgangen: Der Akku kann unter 2 V entladen werden, und bei einem Kurzschluss fließt unbegrenzt Strom. Den Akku verpolt anzuschließen, zerstört das Modul sofort; der TP4056 hat keinen Verpolungsschutz.

Was bedeuten die LEDs am TP4056?

Rote LED (CHRG)Blaue oder grüne LED (STDBY)Bedeutung
AnAusAkku wird geladen
AusAnLadung beendet (4,2 V)
Blinkt oder flackertAnKein Akku eingesetzt oder Wackelkontakt
AusAusEingangsspannung unter 4 V oder keine USB-Versorgung
Stundenlang anAusDie Last verhindert das Ladeende, oder der Akku ist verschlissen

Ohne Akku ist es normal, dass die blaue LED leuchtet und die rote flackert: Das Modul lädt und entlädt ständig den Kondensator am leeren Akkuanschluss. Die Ladezeit schätzt du grob mit Kapazität / Strom × 1,2. Ein 2600-mAh-Akku ist bei 1 A nach etwa 3 Stunden voll; weil der Strom in der letzten Phase immer weiter sinkt, dauert es etwas länger, als die einfache Division ergibt.

Ladestrom einstellen: der Rprog-Widerstand

Den Ladestrom bestimmt ein einziger Widerstand zwischen dem PROG-Pin (Pin 2) des TP4056 und GND. Auf den meisten Modulen ist er mit R3 beschriftet und trägt den Code 122 für 1,2 kΩ, was 1 A entspricht. Zum Entschlüsseln solcher Codes kannst du den SMD-Code-Rechner verwenden. Die Formel lautet ungefähr I (mA) = 1200 / Rprog (kΩ). Um den Strom zu ändern, lötest du den SMD-Widerstand aus und den gewünschten Wert ein; findest du keinen SMD-Widerstand in passender Größe, kannst du auch einen kleinen bedrahteten Widerstand auf die beiden Pads löten.

RprogLadestromPassender Akku
10 kΩ130 mA200–300 mAh, kleiner LiPo
5 kΩ250 mA300–500 mAh LiPo
4 kΩ300 mA500–600 mAh LiPo
3 kΩ400 mAEtwa 800 mAh
2 kΩ580 mA1000–1200 mAh
1,5 kΩ780 mA1500 mAh und mehr
1,2 kΩ1000 mA18650 ab 2000 mAh (Standard des Moduls)

Als Faustregel hältst du den Ladestrom bei etwa der halben Akkukapazität (0,5C): 250 mA passen zu einem 500-mAh-LiPo, 1 A zu einem 2600-mAh-18650. Denk auch an die Wärme: Weil der TP4056 linear arbeitet, wird die Spannungsdifferenz zwischen Eingang und Akku zu Wärme. Lädt er einen 3,6-V-Akku an 5 V mit 1 A, setzt der Chip (5 − 3,6) × 1 = 1,4 W in Wärme um; deshalb wird das Modul sehr heiß und kann den Strom selbst drosseln. Solche Leistungsrechnungen erledigst du auch mit dem Rechner für das ohmsche Gesetz. Ein USB-2.0-Port am Computer liefert nur 500 mA; wenn du oft am Computer lädst, ist es sinnvoll, den Strom auf etwa 500 mA zu senken.

Schaltung während des Ladens versorgen (Load Sharing)

Soll dein Projekt weiterlaufen, während USB angesteckt ist, lässt du die Schaltung am einfachsten an OUT+ und OUT- angeschlossen; der TP4056 lädt dann den Akku und versorgt gleichzeitig die Schaltung. Der Chip kann aber nicht unterscheiden, welcher Strom in den Akku und welcher in die Schaltung fließt. Zieht deine Schaltung dauerhaft mehr als 100 mA, sinkt der Gesamtstrom nie unter die Abschaltschwelle, die Ladung endet nie, und der Akku wird stundenlang auf 4,2 V gehalten, was seine Lebensdauer verkürzt. Zieht deine Schaltung fast 1 A, wird der Akku nicht einmal voll. Bei einem ESP32 im Deep Sleep oder kleinen Schaltungen mit wenigen mA ist die direkte Verbindung in der Praxis unproblematisch; für dauerhaft laufende WLAN-Projekte, Motoren und LED-Streifen baust du eine Load-Sharing-Schaltung.

BauteilAnschlussAufgabe
Schottky-Diode (1N5817, SS14)Anode an USB 5 V (IN+), Kathode an den Pluseingang der SchaltungVersorgt die Schaltung direkt, wenn USB anliegt
P-Kanal-MOSFET (AO3401, DMG2305)Drain an den Akku (OUT+), Source an den Pluseingang der SchaltungVerbindet den Akku mit der Schaltung, wenn kein USB anliegt
Gate des MOSFETDirekt an USB 5 V (IN+)Mit USB bleibt der MOSFET gesperrt, der Akku wird nur geladen
100-kΩ-WiderstandZwischen Gate und GNDZieht das Gate ohne USB auf 0 V, der MOSFET schaltet durch
Mit dieser Schaltung läuft deine Schaltung bei angestecktem USB über die Diode mit etwa 4,7 V, und der TP4056 lädt ausschließlich den Akku; so endet die Ladung zum richtigen Zeitpunkt. Ziehst du den Stecker, schaltet der MOSFET sehr schnell durch, und die Schaltung läuft nahezu unterbrechungsfrei am Akku weiter. Wie ein MOSFET funktioniert, erfährst du in MOSFET am Arduino verwenden, die Wahl der Diode in Was ist eine Diode?.

5 V nötig? Ein MT3608-Step-up-Modul ergänzen

Die Spannung eines 18650-Akkus wandert zwischen 3,0 und 4,2 V; für einen Arduino Uno, Relaismodule, Servomotoren oder WS2812B-LEDs, die 5 V wollen, reicht das nicht. Die Lösung ist ein Step-up-Wandler (Aufwärtswandler), der die Spannung anhebt. Am verbreitetsten ist das MT3608-Modul: Es liefert aus 2–24 V Eingangsspannung einen einstellbaren Ausgang bis 28 V, arbeitet mit 1,2 MHz, und sein interner Schalter hat eine Strombegrenzung von 4 A. Aus einer einzelnen 18650-Zelle kannst du bei 5 V in der Praxis etwa 0,5–1 A sicher entnehmen; darüber wird das Modul heiß, und der Wirkungsgrad sinkt. Musst du eine Spannung dagegen absenken, nimmst du das LM2596-Step-down-Modul, das genau das Gegenteil macht.

  1. Verbinde die Eingänge VIN+ und VIN- des MT3608 mit OUT+ und OUT- des TP4056.
  2. Schließe noch nichts an den Ausgang an, sondern nur das Multimeter zwischen VOUT+ und VOUT-.
  3. Drehe das blaue Trimmpoti mit einem kleinen Schraubendreher, bis der Ausgang 5,0–5,1 V zeigt. Es ist ein Mehrgang-Trimmer, die Spannung ändert sich eventuell erst nach mehreren Umdrehungen; dreh geduldig weiter.
  4. Ist alles eingestellt, verbinde den 5V-Pin deines Boards mit VOUT+ und den GND-Pin mit VOUT-.
  5. Miss die Spannung im Betrieb noch einmal; fällt sie unter Last unter 4,8 V, kürze die Leitungen oder verringere die Stromaufnahme.
BoardVersorgung aus einer 18650-ZelleHinweis
Arduino Uno / Nano5,0 V vom MT3608 → 5V-PinDer 5V-Pin umgeht den Regler; niemals über 5,5 V
Arduino Pro Mini 3,3 V (8 MHz)OUT+ direkt an den RAW-PinSein Low-Drop-Regler kommt mit der Akkuspannung aus
ESP32 DevKit5 V vom MT3608 → VIN-Pin (5V)Der AMS1117 auf dem Board verliert etwa 1 V; Akku nicht direkt anschließen
Raspberry Pi PicoOUT+ → Schottky-Diode → VSYS (Pin 39)VSYS verträgt 1,8–5,5 V; kein Step-up nötig
GSM-Modul SIM800LOUT+ und OUT- direktBraucht 3,4–4,4 V; ideal für Li-Ion
Schließe den MT3608 nie an dein Board an, bevor du ihn eingestellt hast: Die Module kommen ab Werk mit einer unbekannten, oft weit über 5 V liegenden Ausgangsspannung, die einen Arduino oder ESP32 sofort zerstören kann. Außerdem haben Step-up-Wandler keine Ausgangstrennung; selbst wenn das Modul nicht arbeitet, gelangt die Akkuspannung über Spule und Diode an den Ausgang. Um dein Projekt wirklich auszuschalten, setze einen Schalter zwischen Akku und Modul.

Steckst du das Board zum Hochladen per USB an, während der Step-up-Ausgang noch verbunden ist, verbindest du zwei Stromquellen miteinander. Am sichersten trennst du den Step-up-Ausgang beim Hochladen ab. Über welchen Pin ein Arduino wie versorgt wird, liest du ausführlich in Arduino richtig mit Strom versorgen.

In Reihe geschaltete Akkus lädt der TP4056 nicht

Der TP4056 lädt nur eine einzelne Zelle (1S) bis 4,2 V. Ein in Roboterautos beliebter Pack aus zwei 18650-Zellen in Reihe (2S) hat 7,4 V Nennspannung und 8,4 V im vollen Zustand; schließt du ihn an einen einzelnen TP4056 an, wird er nicht geladen, und Modul und Zellen können Schaden nehmen. Auch ein eigener TP4056 pro Zelle funktioniert nicht: Die Minuseingänge der Module treffen sich an derselben USB-Quelle; da der Minus des oberen Moduls am Pluspol der unteren Zelle liegt, wird die untere Zelle kurzgeschlossen. Weil seine Ladeschlussspannung fest bei 4,2 V liegt, eignet sich der TP4056 auch nicht für LiFePO4-Akkus, deren Ladung bei 3,6 V enden muss.

  • Parallel schalten (1S2P): Bei zwei parallel geschalteten Zellen bleibt die Spannung bei 3,7 V, die Kapazität verdoppelt sich, und du kannst sie mit dem TP4056 laden. Achte darauf, dass beide Zellen vor dem Verbinden die gleiche Spannung haben.
  • Mit Step-up anheben: Brauchst du 7–12 V, hebst du die Spannung der parallelen Zellen mit einem MT3608 an.
  • 2S-Ladeschaltung verwenden: Ein Reihenpack braucht ein CC/CV-Ladegerät mit 8,4 V und ein 2S-BMS mit Balancer.
  • Zellen zum Laden herausnehmen: Du kannst die Zellen eines Reihenpacks aus der Halterung nehmen und einzeln in einem separaten 18650-Ladegerät laden.

Akkuspannung messen: Spannungsteiler anschließen

Um zu wissen, wie voll der Akku ist, reicht es, seine Spannung zu messen. Ein 4,2-V-Akku darf aber nicht direkt an einen Analogpin des ESP32 oder Pico, denn deren ADC-Eingänge vertragen höchstens 3,3 V. Die Lösung ist ein Spannungsteiler aus zwei gleichen Widerständen: 100 kΩ + 100 kΩ teilen 4,2 V auf 2,1 V und ziehen nur 21 µA aus dem Akku. Die Werte berechnest du mit dem Spannungsteiler-Rechner; wie die Schaltung funktioniert, liest du in Der Spannungsteiler. Ein 100-nF-Kondensator zwischen Messpunkt und GND beruhigt Messungen über hochohmige Widerstände spürbar.

VerbindungArduino UnoESP32Raspberry Pi Pico
Oberer Widerstand (100 kΩ)OUT+ → MittelpunktOUT+ → MittelpunktOUT+ → Mittelpunkt
Unterer Widerstand (100 kΩ)Mittelpunkt → GNDMittelpunkt → GNDMittelpunkt → GND
Mittelpunkt (Messung)A0GPIO 34 (ADC1)GP26 (ADC0)
100-nF-KondensatorOptionalMittelpunkt → GNDMittelpunkt → GND
TP4056 OUT-GNDGNDGND
ADC-Bereich0–5 V, 10 BitEtwa 0–3,1 V, 12 Bit0–3,3 V, 12 Bit
Nutze beim ESP32 zum Messen des Akkus nur ADC1-Pins (GPIO 32–39). ADC2-Pins lassen sich bei eingeschaltetem WLAN nicht lesen und liefern falsche Werte. GPIO 34–39 sind reine Eingangspins und eignen sich genau für diese Aufgabe.

Der ADC des Arduino Uno arbeitet mit 5 V Referenz; dank des Teilers erscheint ein 4,2-V-Akku an A0 als 2,1 V, und die 10-Bit-Messung liefert einen Wert zwischen 0 und 1023. Wird das Board über USB oder ein Step-up-Modul versorgt, liegen am 5V-Pin womöglich nicht genau 5,00 V; misst du die Spannung mit dem Multimeter und trägst sie im Code als VREF ein, steigt die Genauigkeit deutlich.

C++ (Arduino IDE)
1// Arduino Uno: 18650 pil voltajı, A0'da 100k + 100k bölücü / battery voltage, 100k + 100k divider on A0
2const float VREF = 5.0;      // 5V pinini multimetreyle ölçüp yaz / measure the 5V pin and enter it
3const float DIVIDER = 2.0;   // bölücü oranı / divider ratio
4
5void setup() {
6  Serial.begin(9600);
7}
8
9void loop() {
10  long sum = 0;
11  for (int i = 0; i < 16; i++) {      // 16 ölçümün ortalaması / average of 16 readings
12    sum += analogRead(A0);            // 0-1023
13    delay(2);
14  }
15  float v = (sum / 16.0) * VREF / 1024.0 * DIVIDER;
16  Serial.print(F("Pil / Battery: "));
17  Serial.print(v, 2);
18  Serial.println(F(" V"));
19  if (v < 3.3) Serial.println(F("Pil zayif / Battery low"));
20  delay(1000);
21}

Akkuspannung mit dem ESP32 messen und in Prozent anzeigen

Der ADC des ESP32 ist nicht ganz linear und streut von Board zu Board. Statt des rohen analogRead ist deshalb analogReadMilliVolts genauer: Die Funktion nutzt die Werkskalibrierung des Chips und gibt direkt Millivolt zurück. Der folgende Code mittelt 16 Messungen, multipliziert sie mit dem Teilerverhältnis, um die Akkuspannung zu erhalten, rechnet sie über eine Tabelle in Prozent um und schickt den ESP32 für 10 Minuten in den Deep Sleep, wenn der Akku unter 3,3 V fällt.

C++ (Arduino IDE)
1// TP4056 + 18650: ESP32 ile pil voltajı ve yüzdesi / battery voltage and percentage with ESP32
2const int BAT_PIN = 34;          // ADC1 pini, Wi-Fi açıkken de çalışır / ADC1 pin, works with Wi-Fi on
3const float DIVIDER = 2.0;       // 100k + 100k bölücü: pil / 2 / 100k + 100k divider: battery / 2
4const float LOW_BAT = 3.30;      // bu değerin altında uykuya geç / go to sleep below this voltage
5
6// Yaklaşık gerilim-yüzde tablosu (dinlenen pil) / approximate voltage-percent table (resting cell)
7const float volts[]   = {3.30, 3.60, 3.70, 3.80, 3.85, 3.90, 4.00, 4.10, 4.20};
8const int   percent[] = {   0,    5,   12,   40,   55,   63,   78,   89,  100};
9const int POINTS = 9;
10
11float readBattery() {
12  uint32_t sum = 0;
13  for (int i = 0; i < 16; i++) {           // 16 ölçümün ortalaması / average of 16 readings
14    sum += analogReadMilliVolts(BAT_PIN);  // kalibre edilmiş mV / calibrated millivolts
15    delay(2);
16  }
17  return (sum / 16.0) * DIVIDER / 1000.0;  // pil gerilimi (V) / battery voltage (V)
18}
19
20int toPercent(float v) {
21  if (v <= volts[0]) return 0;
22  if (v >= volts[POINTS - 1]) return 100;
23  for (int i = 1; i < POINTS; i++) {
24    if (v < volts[i]) {                    // iki nokta arasında doğrusal / linear between two points
25      float k = (v - volts[i - 1]) / (volts[i] - volts[i - 1]);
26      return (int)(percent[i - 1] + k * (percent[i] - percent[i - 1]));
27    }
28  }
29  return 100;
30}
31
32void setup() {
33  Serial.begin(115200);
34  analogReadResolution(12);                // 0-4095 aralığı / 0-4095 range
35}
36
37void loop() {
38  float v = readBattery();
39  Serial.printf("Pil / Battery: %.2f V  %%%d\n", v, toPercent(v));
40
41  if (v < LOW_BAT) {                       // yazılımla derin deşarj koruması / software deep-discharge guard
42    Serial.println("Pil zayif, uyku / Battery low, sleeping");
43    esp_sleep_enable_timer_wakeup(10ULL * 60 * 1000000);  // 10 dakika sonra tekrar bak / check again in 10 min
44    esp_deep_sleep_start();
45  }
46  delay(5000);
47}
AkkuspannungUngefährer Ladezustand
4,20 V100 %
4,10 V89 %
4,00 V78 %
3,90 V63 %
3,80 V40 %
3,70 V12 %
3,60 V5 %
3,30 V0 % (Projekt abschalten)

Diese Werte gelten für einen ruhenden Akku. Zieht der ESP32 beim Senden über WLAN kurzzeitig hohe Ströme, sackt die Akkuspannung etwas ab, und beim Laden hebt der TP4056 sie künstlich an; am genauesten misst du deshalb, bevor du das WLAN einschaltest, und ohne angeschlossenes Ladegerät. Für eine lange Akkulaufzeit misst du alle paar Minuten und nutzt dazwischen den Deep Sleep des ESP32. Denk auch daran: DevKit-Boards mit USB-Seriell-Chip und Power-LED verbrauchen selbst im Schlaf einige mA; für Projekte, die monatelang am Akku laufen sollen, sind stromsparende Boards die bessere Wahl.

Akku mit dem Raspberry Pi Pico messen (MicroPython)

Der Pico hat es hier leicht: Sein VSYS-Pin speist einen internen Buck-Boost-Regler, der 1,8–5,5 V verträgt; er läuft also ohne Step-up-Modul an einer einzelnen 18650-Zelle. Verbinde OUT+ des TP4056 über eine Schottky-Diode (1N5817) mit VSYS (Pin 39) und OUT- mit GND (Pin 38); die Diode verhindert, dass bei angestecktem USB die 5 V des Pico zurück in den Akku fließen. Die Akkuspannung misst du mit einem Teiler aus 100 kΩ und 100 kΩ an GP26. Beim normalen Pico misst GP29 bereits ein Drittel von VSYS, dieser Wert liegt aber um den Spannungsabfall der Diode zu niedrig; beim Pico W teilt sich dieser Pin die Leitung mit dem WLAN-Chip, daher ist ein externer Teiler der sicherere Weg.

MicroPython
1from machine import ADC
2import time
3
4adc = ADC(26)                  # GP26 = ADC0, 100k + 100k bölücü / divider
5CONV = 3.3 / 65535             # read_u16 değerini volta çevirir / converts read_u16 to volts
6DIVIDER = 2                    # bölücü oranı / divider ratio
7
8while True:
9    total = 0
10    for _ in range(16):        # 16 ölçümün ortalaması / average of 16 readings
11        total += adc.read_u16()
12        time.sleep_ms(2)
13    v = total / 16 * CONV * DIVIDER
14    print("Pil / Battery: {:.2f} V".format(v))
15    if v < 3.3:
16        print("Pil zayif / Battery low")   # projeyi durdur / stop the project
17    time.sleep(2)

read_u16 liefert einen Wert von 0 bis 65535; mal 3,3 / 65535 ergibt die Spannung am Pin, mal dem Teilerverhältnis 2 die Akkuspannung. Wenn du neu beim Pico bist, erklärt dir Was ist der Raspberry Pi Pico? die Installation von MicroPython Schritt für Schritt.

Projektideen mit TP4056 und 18650-Akku

  • Mobile Wetterstation: Betreibe einen ESP32, einen Temperatursensor und ein OLED-Display mit einer einzigen 18650-Zelle und zeige den Ladezustand in einer Ecke des Displays an.
  • Solarbetriebener Sensor: Schließe ein kleines 6-V-Solarmodul, dessen Leerlaufspannung unter 8 V bleibt, an IN+/IN- an und halte einen ESP32 mit Deep Sleep tagelang am Laufen.
  • SMS-Alarmbox: Das SIM800L braucht 3,4–4,4 V, läuft also direkt an einer 18650-Zelle und verschickt eine SMS, sobald es Bewegung erkennt.
  • Akku-Nachtlicht: Baue eine Lampe, die mit einem LDR bei Dunkelheit angeht und über USB-C geladen wird.
  • Roboterauto: Lade zwei parallele 18650-Zellen mit dem TP4056 und hebe die Spannung für die Motoren mit einem Step-up-Modul an; Details in Arduino-Roboterauto bauen.
  • Akkuwarnung aufs Handy: Fällt der Akku unter 20 %, schickt dir der ESP32 eine Nachricht über einen Telegram-Bot.

Häufige Fehler und ihre Lösungen

ProblemMögliche UrsacheLösung
Keine Spannung zwischen OUT+ und OUT-Schutzschaltung hat ausgelöst (Tiefentladung oder erstes Einsetzen des Akkus)USB einige Sekunden anstecken; der Schutz wird zurückgesetzt
Rote LED leuchtet stundenlangDie Last zieht mehr als 100 mA, oder der Akku ist verschlissenLoad-Sharing-Schaltung bauen, Akku einzeln testen
Beide LEDs ausWeniger als 4 V am Eingang: defektes Kabel oder schwaches NetzteilAnderes Kabel und ein Netzteil mit mindestens 1 A probieren
Lädt nicht mit USB-C-auf-USB-C-KabelBei manchen billigen Modulen fehlen die CC-WiderständeKabel von USB-A auf USB-C verwenden
Modul wird sehr heißNormale Verlustleistung des Linearladers bei 1 A (etwa 1,4 W)Strom mit größerem Rprog senken, Platine belüften
ESP32 startet ständig neuSchwacher Akku oder Brownout durch den Spannungsabfall des AMS11175 V per Step-up zuführen, Akkuspannung prüfen
Gemessene Spannung weicht vom Multimeter abFalsches Teilerverhältnis oder falsche ReferenzspannungMit dem Multimeter vergleichen und den Faktor im Code korrigieren
Wenn du vor dem Einschalten jeden Punkt mit dem Multimeter misst, vermeidest du die meisten Fehler: Der Akku sollte 3–4,2 V zeigen, die OUT-Anschlüsse die Akkuspannung und der MT3608-Ausgang 5,0 V. Bist du neu beim Multimeter, hilft dir Multimeter richtig benutzen; startet dein ESP32 bei schwachem Akku ständig neu, lies ESP32-Brownout-Fehler.

Richtig angeschlossen ist der TP4056 ein zuverlässiges, günstiges Bauteil, das deine Projekte vom Kabel befreit: Akku an B+ und B-, Schaltung an OUT+ und OUT-, Strom passend zum Akku einstellen, für 5 V einen Step-up ergänzen und die Akkuspannung per Software überwachen. In der BlueGrays-App findest du akkutaugliche Projekte wie Stromsparen mit dem Deep Sleep des ESP32, ein digitales Voltmeter mit LCD und einen Temperaturlogger Schritt für Schritt mit Schaltplänen und fertigem Code.

Häufige Fragen

Was ist der Unterschied zwischen B+ und OUT+ beim TP4056?

An B+ und B- wird nur der Akku angeschlossen; OUT+ und OUT- sind der Ausgang hinter der Schutzschaltung, und dort kommt deine Schaltung dran. Beim geschützten Modul ist OUT+ tatsächlich derselbe Punkt wie B+. Der Unterschied liegt auf der Minusseite, denn zwischen OUT- und B- sitzen die MOSFETs, die den Akku bei Bedarf abtrennen.

Wie lange lädt ein TP4056 einen 18650-Akku?

Mit den voreingestellten 1 A ist ein 18650-Akku mit 2500–3000 mAh nach etwa 3–3,5 Stunden voll. Weil der Strom in der letzten Phase immer weiter sinkt, dauert es rund 20 Prozent länger, als Kapazität geteilt durch Strom ergibt. Hast du den Strom gesenkt, verlängert sich die Zeit im selben Verhältnis.

Kann der TP4056 beim Laden gleichzeitig eine Schaltung versorgen?

Ja, eine Schaltung an den OUT-Anschlüssen wird auch während des Ladens versorgt. Zieht sie aber dauerhaft mehr als 100 mA, endet die Ladung womöglich nie, und der Akku wird ständig auf 4,2 V gehalten. Bei größeren Lasten ist eine Load-Sharing-Schaltung mit Schottky-Diode und P-Kanal-MOSFET die bessere Lösung.

Kann man mit einem TP4056 zwei 18650-Akkus laden?

Zwei parallel geschaltete Zellen (3,7 V) lassen sich problemlos laden, es dauert nur länger. Zwei Zellen in Reihe (7,4 V) kann der TP4056 nicht laden, weil er für eine einzelne Zelle bei 4,2 V stoppt. Reihenpacks brauchen ein 2S-Ladegerät mit 8,4 V und ein BMS mit Balancer.

Was bedeuten die rote und die blaue LED am TP4056?

Die rote LED zeigt, dass der Akku geladen wird, die blaue oder grüne, dass die Ladung beendet ist. Ohne Akku leuchtet die blaue LED, und die rote flackert. Sind beide aus, bekommt das Modul nicht genug Eingangsspannung.

Kann man einen ESP32 direkt mit einem 18650-Akku betreiben?

Der ESP32-Chip arbeitet mit 3,3 V; ein 4,2-V-Akku darf nicht direkt an den Chip. Der AMS1117-Regler auf DevKit-Boards verliert etwa 1 V, sodass die Spannung nicht mehr reicht, sobald der Akku auf 3,7 V fällt. Am einfachsten erzeugst du mit einem MT3608 5 V für den VIN-Pin oder verwendest einen 3,3-V-Low-Drop-Regler.

Alle Projekte ansehen
LED Blinken mit ESP32
#103Anfänger

LED Blinken mit ESP32

Lehrt die grundlegende Verwendung von GPIO-Ausgängen mit ESP32. Wir erreichen einen Blinkeffekt, indem wir eine LED über einen digitalen Pin ein- und ausschalten. ESP32-Version des klassischen Blink-Projekts auf Arduino UNO; die grundlegenden Blink-Befehle in der Arduino-Umgebung bleiben gleich, aber die Pinbelegung und die GPIO-Pegel von 3,3 V des ESP32 unterscheiden sich von denen des Arduino UNO.

4.7(37)
99
Messung der Lichtintensität mit dem ESP32-LDR-Modul
#113Anfänger

Messung der Lichtintensität mit dem ESP32-LDR-Modul

Echtzeit-Anzeige des ADC-Rohwerts des LDR-Moduls und des anhand von Dunkel- und Hellreferenzwerten berechneten relativen Lichtwerts in Prozent im Serial Monitor. Dieser Prozentwert ist keine Lux-Messung. Vermittelt die Kalibrierungslogik des Moduls. Sollte idealerweise vor Projekt 10 durchgeführt werden, da es zur Festlegung des Schwellenwerts dient.

4.6(36)
55
ESP32 Deep Sleep – Batteriesparmodus (OLED + RTC-RAM-Zähler)
#135Fortgeschritten
Premium

ESP32 Deep Sleep – Batteriesparmodus (OLED + RTC-RAM-Zähler)

Der Deep-Sleep-Modus des ESP32 senkt den Stromverbrauch auf etwa 10 µA, indem er die CPU und die meisten Peripheriegeräte abschaltet, und ist für batteriebetriebene IoT-Geräte von entscheidender Bedeutung. In diesem Projekt verwenden wir drei verschiedene Weckquellen: den Timer (15 s), einen externen Pin (EXT0 – Taste GPIO 33) und die Berührungserkennung (T0/GPIO 4). Mit RTC_DATA_ATTR markierte Variablen bleiben während des Deep-Sleep-Modus erhalten – der Boot-Zähler, der Timer-Wake-Zähler und

4.3(10)
16
Digitales Voltmeter mit LCD-Anzeige
#56Mittel
Premium

Digitales Voltmeter mit LCD-Anzeige

Finde mit einem selbstgebauten Messgerät heraus, wie viel Spannung eine Batterie oder ein Netzteil liefert. Ein Teiler aus zwei Widerständen senkt hohe Spannungen auf ein Niveau, das die Platine lesen

4.5(27)
36
ESP32 Temperatur-Datenlogger (DHT22 + DS1307 RTC + microSD + OLED)
#144Fortgeschritten
Premium

ESP32 Temperatur-Datenlogger (DHT22 + DS1307 RTC + microSD + OLED)

Baue einen zeitgestempelten Temperaturlogger mit ESP32! Lese Temperatur/Feuchtigkeit vom DHT22 jede Minute, hole die aktuelle Zeit vom DS1307 RTC und protokolliere auf microSD-Karte als CSV. Das OLED zeigt live Temperatur (große Schrift), Luftfeuchtigkeit, Zeitstempel und Logzähler. Die /temp_log.csv-Datei auf der SD-Karte öffnet sich in Excel, Google Sheets oder Python pandas zur Analyse — perfekt für Gewächshausüberwachung, Raumtemperaturverfolgung, Laboraufzeichnung, Lebensmittellageru

4.7(7)
12
ESP32 HTTPClient + Wetter-API (mit SSD1306-OLED-Display)
#134Fortgeschritten
Premium

ESP32 HTTPClient + Wetter-API (mit SSD1306-OLED-Display)

In diesem Projekt führen wir mit dem ESP32 über das Internet mithilfe von HTTPClient.h einen REST-API-Aufruf an die Wetter-API (wttr.in) durch. Im Gegensatz zur vorherigen I2C-LCD-Version verwenden wir hier ein SSD1306-OLED-Display (128×64) – dies ermöglicht große Schriftarten, Vektor-Symbole und eine reichhaltige visuelle Darstellung auf einem einzigen Bildschirm. Für die Wetteranzeige werden 7 verschiedene Vektor-Symbole (sonnig, teilweise bewölkt, bewölkt, regnerisch, schneereich, stürmisch

4.3(10)
19
ESP32 Bewegungsalarmsystem (PIR + Buzzer + LED + Telegram)
#145Fortgeschritten
Premium

ESP32 Bewegungsalarmsystem (PIR + Buzzer + LED + Telegram)

Ein intelligentes Sicherheitsalarmsystem, das Buzzer und LED aktiviert, sobald der PIR-Sensor Bewegung erkennt, und gleichzeitig eine sofortige Benachrichtigung per Telegram an den Besitzer sendet. Ein 30-sekündiger Cooldown begrenzt die Häufigkeit wiederholter Alarme; dieser Mechanismus überprüft weder die Gültigkeit der PIR-Erkennungen noch verhindert er Fehlauslösungen. Geeignet für Heimsicherheit, Garagenüberwachung, Lagerräume oder Arbeitszimmer. Mit ESP32-CAM sind Foto-Benachrichtigungen m

0.0(0)
9
Bluetooth-gesteuertes Auto mit L298N
#80Fortgeschritten
Premium

Bluetooth-gesteuertes Auto mit L298N

Mach dein Handy zur Fernbedienung und steuere dein eigenes Roboterauto. Der Arduino empfängt über ein Bluetooth-Modul die Befehle einer Fernsteuer-App auf dem Handy und treibt die Räder über einen Mot

5.0(38)
65