

The BMS 3S is a Battery Management System designed specifically for managing and protecting 3-cell series lithium-ion battery packs. It ensures the safe operation of the battery pack by monitoring critical parameters such as voltage, current, and temperature. Additionally, it provides cell balancing to maintain uniform voltage levels across all cells, thereby extending the battery pack's lifespan and improving performance.








The BMS 3S is engineered to provide robust protection and monitoring for 3-cell lithium-ion battery packs. Below are its key technical specifications:
| Parameter | Value |
|---|---|
| Supported Battery Type | Lithium-ion (Li-ion) |
| Number of Cells | 3 (in series) |
| Operating Voltage Range | 9V - 12.6V |
| Overcharge Protection | 4.25V ± 0.05V per cell |
| Over-discharge Protection | 2.5V ± 0.05V per cell |
| Maximum Continuous Current | 20A |
| Balancing Current | 50mA |
| Operating Temperature | -40°C to 85°C |
| Dimensions | 50mm x 20mm x 3mm |
The BMS 3S typically has the following pin configuration:
| Pin Name | Description |
|---|---|
| B- | Battery pack negative terminal |
| B1 | Connection to the positive terminal of the first cell |
| B2 | Connection to the positive terminal of the second cell |
| B+ | Battery pack positive terminal |
| P- | Load/device negative terminal |
| P+ | Load/device positive terminal (usually connected to B+) |
Connect the Battery Pack:
B- pin.B1 pin.B2 pin.B+ pin.Connect the Load:
P- pin.P+ pin (or directly to B+).Verify Connections:
Power On:
The BMS 3S can be used with an Arduino UNO to monitor battery voltage. Below is an example code snippet for reading the voltage of each cell using the Arduino's analog pins:
// Define analog pins for voltage measurement
const int cell1Pin = A0; // Pin connected to B1
const int cell2Pin = A1; // Pin connected to B2
const int cell3Pin = A2; // Pin connected to B+
// 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
int cell1Raw = analogRead(cell1Pin);
int cell2Raw = analogRead(cell2Pin);
int cell3Raw = analogRead(cell3Pin);
// Convert raw values to voltage
float cell1Voltage = (cell1Raw / 1023.0) * 5.0 * ((resistor1 + resistor2) / resistor2);
float cell2Voltage = (cell2Raw / 1023.0) * 5.0 * ((resistor1 + resistor2) / resistor2);
float cell3Voltage = (cell3Raw / 1023.0) * 5.0 * ((resistor1 + resistor2) / resistor2);
// Print voltages to Serial Monitor
Serial.print("Cell 1 Voltage: ");
Serial.print(cell1Voltage);
Serial.println(" V");
Serial.print("Cell 2 Voltage: ");
Serial.print(cell2Voltage);
Serial.println(" V");
Serial.print("Cell 3 Voltage: ");
Serial.print(cell3Voltage);
Serial.println(" V");
delay(1000); // Wait for 1 second before next reading
}
Note: Use appropriate voltage dividers to ensure the Arduino's analog pins do not exceed their maximum input voltage (5V).
BMS Not Powering On:
Overcharge/Over-discharge Protection Triggered:
Uneven Cell Voltages:
Excessive Heat:
Q: Can the BMS 3S be used with other battery chemistries?
A: No, the BMS 3S is specifically designed for lithium-ion batteries and may not work correctly with other chemistries.
Q: How do I know if the BMS is balancing the cells?
A: During charging, the BMS will automatically balance the cells. You can measure the cell voltages to confirm they are equalizing.
Q: What happens if I exceed the maximum current rating?
A: The BMS will trigger overcurrent protection and disconnect the load to prevent damage.
Q: Can I use the BMS 3S for a 2-cell battery pack?
A: No, the BMS 3S is designed for 3-cell series configurations only. Use a 2S BMS for 2-cell packs.