

The BMS 4S 20A by Stas (Manufacturer Part ID: 1) is a Battery Management System designed for managing 4 series-connected lithium-ion cells. It ensures safe operation by monitoring the voltage and temperature of each cell, balancing the cells during charging and discharging, and protecting the battery pack from overcharging, over-discharging, and overcurrent conditions. This component is ideal for applications requiring a reliable and efficient power management solution.








| Parameter | Value |
|---|---|
| Manufacturer | Stas |
| Part ID | 1 |
| Supported Battery Type | Lithium-Ion (Li-Ion) |
| Number of Cells Supported | 4 (Series Configuration) |
| Maximum Continuous Current | 20A |
| Overcharge Protection | 4.25V ± 0.05V per cell |
| Overdischarge Protection | 2.7V ± 0.05V per cell |
| Balancing Current | 60mA |
| Operating Temperature | -20°C to 60°C |
| Dimensions | 60mm x 20mm x 3mm |
The BMS 4S 20A has a set of input and output connections for battery cells, charging, and load. Below is the pin configuration:
| Pin Name | Description |
|---|---|
| B- | Battery pack negative terminal |
| B1 | Connection to the positive terminal of Cell 1 |
| B2 | Connection to the positive terminal of Cell 2 |
| B3 | Connection to the positive terminal of Cell 3 |
| B+ | Battery pack positive terminal |
| P- | Negative terminal for load and charger |
| P+ | Positive terminal for load and charger (connected internally to B+) |
Wiring the Battery Pack:
Connecting the Load and Charger:
Powering On:
The BMS 4S 20A can be monitored using an Arduino UNO by measuring the voltage of each cell. Below is an example code snippet for reading cell voltages using analog inputs:
// Define analog input pins for each cell
const int cell1Pin = A0; // Cell 1 voltage
const int cell2Pin = A1; // Cell 2 voltage
const int cell3Pin = A2; // Cell 3 voltage
const int cell4Pin = A3; // Cell 4 voltage
// Voltage divider resistors (adjust based on your circuit)
const float resistor1 = 10000.0; // 10k ohms
const float resistor2 = 10000.0; // 10k ohms
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Read analog values and convert to voltage
float cell1Voltage = analogRead(cell1Pin) * (5.0 / 1023.0) * ((resistor1 + resistor2) / resistor2);
float cell2Voltage = analogRead(cell2Pin) * (5.0 / 1023.0) * ((resistor1 + resistor2) / resistor2);
float cell3Voltage = analogRead(cell3Pin) * (5.0 / 1023.0) * ((resistor1 + resistor2) / resistor2);
float cell4Voltage = analogRead(cell4Pin) * (5.0 / 1023.0) * ((resistor1 + resistor2) / resistor2);
// Print cell voltages to the Serial Monitor
Serial.print("Cell 1 Voltage: ");
Serial.println(cell1Voltage);
Serial.print("Cell 2 Voltage: ");
Serial.println(cell2Voltage);
Serial.print("Cell 3 Voltage: ");
Serial.println(cell3Voltage);
Serial.print("Cell 4 Voltage: ");
Serial.println(cell4Voltage);
delay(1000); // Wait 1 second before the next reading
}
BMS Not Powering On:
Cells Not Balancing:
Overheating:
Load Not Receiving Power:
Q: Can this BMS be used with LiFePO4 batteries?
A: No, this BMS is specifically designed for lithium-ion cells and may not support the voltage range of LiFePO4 batteries.
Q: What happens if one cell is disconnected?
A: The BMS will detect an abnormal voltage and disable the output to protect the battery pack.
Q: Can I use this BMS for a 3S battery pack?
A: No, this BMS is designed for 4 series-connected cells. Using it with fewer cells may result in improper operation.
Q: How do I know if the BMS is balancing the cells?
A: Measure the voltage of each cell. If the voltages are equalizing during charging, the BMS is balancing the cells.