

The TP4056 is a lithium-ion battery charger IC designed for single-cell lithium-ion or lithium-polymer batteries. It provides a constant current/constant voltage (CC/CV) charging profile, ensuring safe and efficient charging. The IC integrates several safety features, including thermal regulation, over-voltage protection, and automatic charge termination. Its compact design and ease of use make it a popular choice for portable electronics, DIY projects, and battery-powered devices.








The TP4056 is a versatile and reliable charging IC. Below are its key technical details:
| Parameter | Value | 
|---|---|
| Input Voltage Range | 4.0V to 8.0V | 
| Charging Voltage | 4.2V ± 1% | 
| Maximum Charging Current | 1A (adjustable via external resistor) | 
| Charging Method | Constant Current/Constant Voltage (CC/CV) | 
| Operating Temperature Range | -40°C to +85°C | 
| Standby Current | < 2µA | 
| Battery Overvoltage Protection | 4.3V | 
| Thermal Regulation | 120°C (reduces charging current) | 
The TP4056 is typically available in an 8-pin SOP package. Below is the pinout and description:
| Pin Name | Pin Number | Description | 
|---|---|---|
| BAT | 1 | Battery connection pin. Connect to the positive terminal of the lithium battery. | 
| GND | 2 | Ground pin. Connect to the system ground. | 
| VCC | 3 | Input voltage pin. Connect to a 4.0V–8.0V power source. | 
| PROG | 4 | Charging current programming pin. Connect a resistor to set the charging current. | 
| CHRG | 5 | Charging status indicator (active low). Connect to an LED for charge indication. | 
| STDBY | 6 | Standby status indicator (active low). Connect to an LED for standby indication. | 
| TEMP | 7 | Temperature monitoring pin. Connect to an NTC thermistor for thermal protection. | 
| CE | 8 | Chip enable pin. Pull low to enable charging, pull high to disable. | 
The TP4056 can be used in conjunction with an Arduino UNO to monitor battery voltage. Below is an example code snippet:
// Example: Monitor battery voltage using Arduino UNO
// Connect the BAT pin of TP4056 to an analog pin (e.g., A0) on Arduino
const int batteryPin = A0;  // Analog pin connected to TP4056 BAT pin
float voltageDividerRatio = 2.0; // Adjust if using a voltage divider
float referenceVoltage = 5.0;    // Arduino reference voltage (5V for UNO)
void setup() {
  Serial.begin(9600); // Initialize serial communication
}
void loop() {
  int rawValue = analogRead(batteryPin); // Read analog value from BAT pin
  float batteryVoltage = (rawValue / 1023.0) * referenceVoltage * voltageDividerRatio;
  // Print battery voltage to the Serial Monitor
  Serial.print("Battery Voltage: ");
  Serial.print(batteryVoltage);
  Serial.println(" V");
  delay(1000); // Wait for 1 second before next reading
}
Note: If the battery voltage exceeds the Arduino's analog input range, use a voltage divider to scale it down.
No Charging Current
Overheating
LED Indicators Not Working
Battery Not Charging
Can I use the TP4056 to charge multiple batteries in series?
What happens if the input voltage exceeds 8.0V?
Can I adjust the charging voltage?
Is the TP4056 suitable for fast charging?
By following this documentation, you can safely and effectively use the TP4056 in your projects.