BMS là gì: mạch bảo vệ pin lithium quá sạc, quá xả, quá dòng, cân bằng cell và cách chọn BMS
BMS là gì: mạch bảo vệ khối pin lithium; bên trong có IC, MOSFET, cân bằng; ngưỡng Li-ion và LiFePO4; cân bằng thụ động, chủ động; cổng chung, cổng riêng; cách chọn BMS; BMS tòa nhà là gì.
BMS là gì? Với pin, BMS (Battery Management System) là mạch bảo vệ và quản lý khối pin lithium: ngắt khi một cell bị sạc quá đầy hoặc xả quá cạn, ngắt khi quá dòng, ngắn mạch, quá nhiệt, và cân bằng điện áp giữa các cell nối tiếp. Bài này giải thích vì sao pin lithium bắt buộc có BMS, bên trong BMS có gì, các ngưỡng bảo vệ của pin Li-ion và LiFePO4, cân bằng thụ động và chủ động, BMS cổng chung và cổng riêng, cách chọn BMS (có script tính). Cuối bài phân biệt với "BMS" trong tòa nhà (tủ BMS, phòng BMS).
1. Vì sao pin lithium cần BMS
- Quá sạc: cell Li-ion sạc vượt khoảng 4,2–4,25 V bị hư cấu trúc điện cực, nóng lên, có thể phồng, cháy.
- Quá xả: xả xuống quá thấp (dưới khoảng 2,5 V với Li-ion) làm cell mất dung lượng vĩnh viễn; sạc lại một cell đã xả quá sâu có nguy cơ chập trong.
- Quá dòng, ngắn mạch: pin lithium cấp được dòng rất lớn; chập dây có thể làm nóng chảy dây, cháy.
- Nhiệt độ: sạc pin Li-ion dưới 0 °C hoặc khi pin quá nóng làm pin hỏng nhanh, kém an toàn.
- Lệch cell: trong khối nối tiếp, các cell không bao giờ giống hệt nhau. Bộ sạc chỉ thấy tổng điện áp (12,6 V cho 3S): một cell có thể đã 4,35 V trong khi cell khác mới 4,1 V. Chỉ BMS nhìn thấy từng cell.
2. Bên trong một mạch BMS

- IC bảo vệ đo điện áp từng cell qua dây cân bằng (B−, B1, B2…, B+), đo dòng (qua điện trở đo dòng nhỏ hoặc điện áp rơi trên MOSFET), đọc nhiệt độ.
- Hai MOSFET nằm nối tiếp trên đường âm, giữa B− (âm khối pin) và P− (âm ra tải, bộ sạc): một cái chặn chiều xả, một cái chặn chiều sạc. Nhờ vậy khi quá xả, BMS ngắt xả nhưng vẫn cho sạc vào; khi quá sạc thì ngược lại.
- Điện trở cân bằng xả bớt cell có điện áp cao nhất ở cuối quá trình sạc.
- BMS "thông minh" có thêm vi điều khiển, Bluetooth, UART hoặc CAN để xem điện áp từng cell, dòng, nhiệt độ trên điện thoại hoặc gửi cho bộ điều khiển.
Ví dụ quen thuộc nhất là mạch bảo vệ 1S trên module sạc pin: IC DW01A cùng cặp MOSFET 8205A. Theo datasheet, DW01A ngắt sạc ở khoảng 4,25 V (cho sạc lại khi xuống 4,05 V), ngắt xả ở khoảng 2,4 V (cho xả lại khi lên 3,0 V), và ngắt khi điện áp rơi trên MOSFET vượt khoảng 150 mV: dòng cắt vì vậy phụ thuộc điện trở của cặp MOSFET. Jack Type-C tích hợp mạch sạc pin 1S của shop có sẵn phần bảo vệ cho một cell.
3. Ngưỡng bảo vệ

BMS được làm riêng cho từng loại hóa học: Li-ion (NMC, NCA: pin 18650, 21700 thông dụng) và LiFePO4 có điện áp khác hẳn nhau. Dùng BMS Li-ion cho pin LiFePO4 thì không bao giờ bảo vệ quá sạc (ngưỡng 4,25 V quá cao so với 3,65 V), ngược lại thì pin Li-ion không bao giờ sạc đầy. Mỗi ngưỡng có một mức "nhả": BMS chỉ đóng lại khi điện áp quay về mức này, để không bật tắt liên tục.
Ngưỡng quá xả của BMS là lớp bảo vệ cuối cùng, không phải mức nên xả tới hằng ngày. Thiết bị nên tự tắt sớm hơn (ví dụ 3,2–3,3 V mỗi cell Li-ion); cách đo điện áp pin bằng ESP32 có ở bài đọc ADC và đo điện áp pin 18650.
4. Cân bằng cell

BMS thông dụng cân bằng thụ động: cell nào vượt khoảng 4,18 V (Li-ion) thì nối điện trở song song để xả bớt, cho các cell khác đuổi kịp. Dòng cân bằng chỉ vài chục mA nên chỉ sửa được chênh lệch nhỏ, tích lũy qua nhiều lần sạc. Khối pin ghép từ cell lệch nhiều (khác dung lượng, khác mức pin) thì BMS sẽ ngắt quá sạc ở cell yếu trong khi các cell khác chưa đầy, khối pin dùng được ít hơn ghi trên giấy.
Vì vậy trước khi ghép: chọn cell cùng loại, cùng dung lượng, nội trở gần nhau, và sạc riêng từng cell tới cùng điện áp. Cách đo và so nội trở có ở bài nội trở pin cùng cụm chủ đề; cách ghép nối tiếp, song song ở bài ghép pin 18650 nối tiếp, song song.
5. Cổng chung, cổng riêng và cách đấu

- Cổng chung: chỉ có B− và P−; tải và bộ sạc cùng nối vào P−. Dễ đấu nhất.
- Cổng riêng: có thêm C−; bộ sạc nối vào C−, tải nối vào P−. Đường sạc thường chịu dòng nhỏ hơn đường xả. Đấu bộ sạc vào P− thì có thể mất bảo vệ quá sạc.
- Trình tự đấu thường được nhà sản xuất khuyên: nối B− trước, rồi dây cân bằng lần lượt từ cell thấp lên cao, cắm giắc cân bằng vào BMS sau cùng; đo kiểm tra điện áp từng chân giắc trước khi cắm. Đấu sai thứ tự dây cân bằng có thể làm hỏng IC bảo vệ.
Sơ đồ đấu mạch sạc, BMS 3S và khối pin, vì sao mạch sạc tăng áp vẫn cần thêm BMS có ở bài mạch sạc pin 2S, 3S, 4S từ Type-C 5 V. Mạch sạc lo đưa dòng vào pin tới đúng điện áp; BMS lo ngắt khi có sự cố và cân bằng từng cell: hai việc khác nhau, thường cần cả hai.
6. Chọn BMS
- Số cell nối tiếp (S) đúng với khối pin: 3S cho 3 cell nối tiếp, dù mỗi "cell" là nhiều cell song song.
- Loại pin: Li-ion hay LiFePO4.
- Dòng liên tục lớn hơn dòng tải khoảng 30 %; MOSFET chạy lâu ở dòng định mức sẽ nóng.
- Dòng đỉnh: động cơ, máy khoan, inverter có dòng khởi động lớn gấp nhiều lần; BMS ngưỡng quá dòng thấp sẽ ngắt mỗi lần khởi động. Tải có tụ lớn (inverter) có thể làm BMS tưởng ngắn mạch khi vừa đấu vào.
- Cân bằng, cảm biến nhiệt, giao tiếp theo nhu cầu.
# PYWORLD.VN - Chọn mạch bảo vệ BMS cho khối pin nhiều cell: số cell, loại pin, dòng tải liên tục và dòng đỉnh
# PYWORLD.VN - In điện áp khối pin, điện áp sạc đầy, ngưỡng bảo vệ thường gặp, dòng BMS nên chọn và lưu ý cân bằng
# PYWORLD.VN - Ví dụ: python chon_bms.py 3 li-ion 5 12 (3 cell Li-ion, tải 5 A liên tục, đỉnh 12 A)
"""Gợi ý thông số BMS cho khối pin nối tiếp nS.
Ngưỡng là giá trị thường gặp của mạch bảo vệ bán sẵn; ngưỡng thật đọc trong thông số của đúng BMS mua về.
Dòng BMS chọn dư khoảng 30 % so với dòng liên tục (MOSFET nóng lên khi chạy lâu ở dòng định mức).
"""
from __future__ import annotations
import argparse
import math
LOAI = {
# tên: (điện áp danh định, sạc đầy, ngưỡng quá sạc, nhả quá sạc, ngưỡng quá xả, nhả quá xả, bắt đầu cân bằng)
"li-ion": (3.6, 4.20, 4.25, 4.15, 2.75, 3.0, 4.18),
"lifepo4": (3.2, 3.65, 3.75, 3.55, 2.5, 2.8, 3.55),
}
DU_PHONG = 1.3
def goi_y(so_cell: int, loai: str, dong_lien_tuc: float, dong_dinh: float) -> list[str]:
dd, day, ov, ov_nha, uv, uv_nha, cb = LOAI[loai]
bms_a = math.ceil(dong_lien_tuc * DU_PHONG)
dong = [f"Khoi pin {so_cell}S {loai}: danh dinh {so_cell * dd:.1f} V, sac day {so_cell * day:.2f} V, "
f"het pin khoang {so_cell * uv:.1f} V",
f" Bo sac: dung loai {so_cell}S, dien ap ra {so_cell * day:.2f} V (khong dung bo sac cua loai pin khac)",
f" Nguong moi cell: qua sac {ov:.2f} V (nha {ov_nha:.2f} V), qua xa {uv:.2f} V (nha {uv_nha:.2f} V)",
f" BMS {so_cell}S, dong lien tuc it nhat {bms_a} A (tai {dong_lien_tuc:g} A x {DU_PHONG}, lam tron len)"]
if dong_dinh > bms_a * 2:
dong.append(f" Chu y: dong dinh {dong_dinh:g} A lon hon 2 lan dong BMS: chon BMS lon hon hoac kiem tra nguong qua dong, do tre")
else:
dong.append(f" Dong dinh {dong_dinh:g} A: kiem tra nguong qua dong cua BMS lon hon so nay")
if so_cell >= 2:
dong.append(f" Can bang thu dong bat dau khoang {cb:.2f} V/cell; can day can bang den tung cell")
dong.append(" Cac cell phai cung loai, cung dung luong, cung muc pin khi ghep")
return dong
def main() -> None:
ap = argparse.ArgumentParser(description=__doc__)
ap.add_argument("so_cell", type=int, nargs="?", help="so cell noi tiep (S)")
ap.add_argument("loai", nargs="?", choices=list(LOAI), help="li-ion hoac lifepo4")
ap.add_argument("dong_lien_tuc", type=float, nargs="?", help="dong tai lien tuc, A")
ap.add_argument("dong_dinh", type=float, nargs="?", help="dong dinh (khoi dong dong co...), A")
a = ap.parse_args()
if a.so_cell is None:
for vi_du in [(1, "li-ion", 1.0, 2.0), (3, "li-ion", 5.0, 12.0), (4, "lifepo4", 10.0, 40.0)]:
print("\n".join(goi_y(*vi_du)))
return
print("\n".join(goi_y(a.so_cell, a.loai, a.dong_lien_tuc, a.dong_dinh)))
if __name__ == "__main__":
main()

Chạy cho khối pin của bạn: python chon_bms.py 4 li-ion 8 20 (4 cell Li-ion, tải 8 A, đỉnh 20 A). Khay giữ cell cho khối pin nhỏ: khay pin 18650 1S–4S; mạch sạc tăng áp từ 5 V: mạch sạc pin 2S, 3S, 4S.
7. BMS "khóa" sau khi xả cạn
Sau khi ngắt vì quá xả, nhiều BMS giữ đầu ra P− ngắt dù điện áp cell đã hồi lên một chút: đo P+ với P− thấy 0 V hoặc vài vôn chập chờn, tưởng pin hỏng. Cách đánh thức thường là nối bộ sạc đúng loại vào vài giây. Nếu đo trực tiếp B+, B− thấy cell nào dưới khoảng 2 V (Li-ion) thì cell đó đã xả quá sâu: không nên cố sạc lại, nên thay.
8. BMS trong tòa nhà là gì
Trong xây dựng, BMS là Building Management System, hệ thống quản lý tòa nhà: giám sát và điều khiển điều hòa thông gió, chiếu sáng, bơm nước, thang máy, điện năng, liên kết với báo cháy, an ninh. "Tủ BMS" là tủ chứa bộ điều khiển (DDC, PLC) đặt ở các tầng, "phòng BMS" là phòng điều khiển trung tâm có máy chủ và màn hình giám sát. Đây là lĩnh vực khác hẳn mạch bảo vệ pin; hai nghĩa chỉ trùng tên viết tắt.
9. Lỗi hay gặp
| Hiện tượng | Nguyên nhân thường gặp | Cách xử lý |
|---|---|---|
| Khối pin không bao giờ sạc đầy, ngắt sớm | Cell lệch nhau; một cell yếu chạm ngưỡng quá sạc trước | Đo từng cell; sạc cân bằng riêng hoặc thay cell yếu |
| Đầu ra 0 V sau khi dùng cạn | BMS khóa sau quá xả | Nối bộ sạc để đánh thức; kiểm tra điện áp từng cell |
| Ngắt mỗi lần động cơ khởi động | Dòng đỉnh vượt ngưỡng quá dòng | BMS dòng lớn hơn; khởi động mềm cho động cơ |
| BMS nóng khi chạy tải | Dòng gần hoặc vượt định mức | Chọn BMS dư 30 % trở lên, tản nhiệt tốt |
| Dùng BMS Li-ion cho LiFePO4 | Ngưỡng sai loại hóa học | Đổi đúng BMS LiFePO4 |
| Hỏng BMS ngay khi cắm giắc cân bằng | Đấu dây cân bằng sai thứ tự hoặc sai chân | Đo điện áp từng chân giắc trước khi cắm |
10. Xem thêm
- Mạch sạc pin 2S, 3S, 4S từ Type-C 5 V: đấu dây và vì sao vẫn cần BMS
- Ghép pin 18650 nối tiếp, song song
- Đo dung lượng và dòng xả pin 18650 bằng ESP32
- Pin LiPo cho flycam: sạc cân bằng và bảo quản
Bài cùng cụm chủ đề: nội trở pin; pin 18650 thật giả; chọn cell 18650 theo dòng xả.
Xem thêm