Power path
Power path means the input feeds your board directly and the battery separately, instead of everything meeting at one node. It is the difference between a project that can be left plugged in and one that quietly destroys its own cell.
A TP4056 module has one pair of battery pads. So when a project needs a battery and a board, both get soldered to those pads, and the cell, the charger and the load all end up on the same node.
That is the moment the design goes wrong, and nothing about it looks wrong. Everything works. The LEDs behave. The project runs on battery and runs on USB.
What the charger can see
Pick each wiring and press play, and watch the number along the bottom — what the charger measures on its BAT pin — rather than the animation.
With everything on one node, that pin carries the cell's current and your board's. The charger has no way to tell them apart, and its only decision, the one that ends the charge cycle, is made from that single measurement.
Two failures, either side of one threshold
The TP4056 terminates when the BAT pin current falls to a tenth of the programmed current. Programmed at 1 A, that is 100 mA.
A load above 100 mA. The current can never fall that low, so the cycle never ends. The red LED stays on, and the chip holds a full cell at 4.2 V for as long as the cable is in — days, on a desk. A lithium cell held at its float voltage loses capacity measurably faster than one left at 3.8 V.
A load below 100 mA. The cycle ends. The load pulls the cell down. The recharge comparator sees it and starts another cycle. The cell goes through a complete shallow charge cycle every few minutes — hundreds a day, against the few hundred the cell has in total.
There is no load current at which sharing the node is fine. That is the point.
The project works and the battery is worn out in a season. Nothing in this failure is visible. The LEDs blink, the board runs, the capacity falls, and the obvious conclusion — "cheap battery" — is wrong.
What a power path actually is
Two switches instead of one node.
The input gets its own way to the system rail, so the load runs on the input whenever there is one. The cell gets a second, separate path with the charger in it, and takes whatever current is left over. The charger's measurement is now of the cell alone, so its termination decision is correct.
Three things follow, and they are the reasons the feature exists:
The cycle terminates properly. No load in the measurement, so a tenth of the programmed current means a full cell.
The battery is not cycled while it is plugged in. A device left on a desk with a cable in it is not wearing out its cell. This is the one people notice over a year.
It runs with no battery at all. A power-path design boots from USB with the cell unplugged. A shared-node design does too, sort of, but with the cell's voltage missing, the rail is whatever the charger's regulation loop happens to be doing — which on a TP4056 is 4.2 V with a lot of ripple, not a supply.
And the fourth, which is the one people demonstrate: unplugging does not cause a reset, because the changeover happens in hardware in microseconds and the system rail dips by tens of millivolts.
How to get one
Buy the feature. Any charger IC whose datasheet says "power path" — the BQ24074 family, the MCP73871, the IP5306 on the next page. This is the right answer for anything you are going to build more than one of.
Build it from the last chapter. An ideal diode from the USB rail to the system, a second one from the cell to the system, and the charger on the cell alone. Two LM66100s and a TP4056. The higher supply carries the load, the cell charges separately, and the charger sees only the cell. It is not as good as a real power-path IC — there is no way to reduce charge current when the system is hungry — but it fixes the termination problem entirely.
Or switch the load off while charging. Unglamorous and completely valid: a load switch on the system rail, held off while CHRG is low. The project cannot run while it charges, which for a battery-powered sensor is often not a constraint at all.
Edit this page — content/fundamentals/power/power-path.mdx
Discuss this article
Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.