

The TP4056 is a lithium battery charger module designed for charging single-cell lithium-ion batteries. It employs a constant current/constant voltage (CC/CV) charging method, ensuring safe and efficient charging. This module is equipped with overcharge protection, thermal regulation, and a straightforward interface, making it ideal for integration into a wide range of electronic projects.








The TP4056 module is compact and highly efficient, with the following key specifications:
| Parameter | Value |
|---|---|
| Input Voltage Range | 4.5V to 5.5V |
| Charging Voltage | 4.2V ± 1% |
| Maximum Charging Current | Adjustable up to 1A (default: 1A) |
| Charging Method | Constant Current/Constant Voltage (CC/CV) |
| Battery Type Supported | Single-cell lithium-ion or lithium-polymer |
| Overcharge Protection | Yes |
| Thermal Regulation | Yes |
| Dimensions | ~25mm x 19mm |
The TP4056 module has six pins, as described in the table below:
| Pin Name | Description |
|---|---|
| IN+ | Positive input voltage (4.5V to 5.5V). Connect to a USB power source or adapter. |
| IN- | Negative input voltage (ground). |
| BAT+ | Positive terminal of the lithium-ion battery. |
| BAT- | Negative terminal of the lithium-ion battery. |
| OUT+ | Positive output voltage for the load (optional, depending on module version). |
| OUT- | Negative output voltage for the load (optional, depending on module version). |
IN+ and IN- pins. Ensure the input voltage is within the range of 4.5V to 5.5V.BAT+ pin and the negative terminal to the BAT- pin.OUT+ and OUT- pins, you can connect a load to these pins. Note that the load will draw power directly from the battery.The TP4056 module can be used to charge a battery that powers an Arduino UNO. Below is an example of how to monitor the charging status using the Arduino:
// Example code to monitor TP4056 charging status with Arduino UNO
const int chargingPin = 2; // Connect to the CHRG pin of the TP4056 module
const int donePin = 3; // Connect to the DONE pin of the TP4056 module
void setup() {
pinMode(chargingPin, INPUT);
pinMode(donePin, INPUT);
Serial.begin(9600);
}
void loop() {
int chargingStatus = digitalRead(chargingPin);
int doneStatus = digitalRead(donePin);
if (chargingStatus == LOW) {
// CHRG pin is LOW when charging is in progress
Serial.println("Battery is charging...");
} else if (doneStatus == LOW) {
// DONE pin is LOW when charging is complete
Serial.println("Charging complete!");
} else {
// Both pins HIGH indicates no battery or no charging
Serial.println("No battery detected or not charging.");
}
delay(1000); // Wait for 1 second before checking again
}
Module Overheating:
Battery Not Charging:
No Output Voltage on OUT+ and OUT- Pins:
LED Indicators Not Working:
Q1: Can I use the TP4056 module to charge multiple batteries in series?
A1: No, the TP4056 is designed for single-cell lithium-ion or lithium-polymer batteries only. Charging multiple batteries in series requires a specialized charger.
Q2: What do the LEDs on the module indicate?
A2: The red LED indicates charging is in progress, while the blue or green LED indicates charging is complete.
Q3: Can I power my project directly from the TP4056 module while charging the battery?
A3: Yes, if your module version includes OUT+ and OUT- pins. However, ensure the load does not exceed the battery's discharge capacity.
Q4: How do I calculate the charging time for my battery?
A4: Charging time can be estimated using the formula:
[
T_{CHG} = \frac{C}{I_{CHG}} \times 1.2
]
where ( C ) is the battery capacity in mAh, and ( I_{CHG} ) is the charging current in mA. The factor 1.2 accounts for charging inefficiencies.