BMS绝缘检测完全指南:不平衡电桥法原理、完整参数设计与仿真
一、引言
电池包电压高达几百伏甚至 1500V,若高压回路对地绝缘失效,会导致人员触电、设备损坏。绝缘检测的作用是实时监测高压正、负极对底盘(地)的绝缘电阻,在绝缘下降到危险值前报警或断电。
绝缘检测是 BMS 功能安全的必备项,国标 GB/T 18384 要求绝缘电阻 > 100Ω/V。本文以800V 储能系统为例,给出不平衡电桥法的完整参数设计和电路实现。
【图片位置1:绝缘检测系统框图】
二、基本概念
2.1 绝缘电阻模型
电池包的高压正、负极与底盘(地)之间存在等效绝缘电阻 Rp(正对地)和 Rn(负对地):
电池+ ────[Rp]──── GND(底盘) 电池- ────[Rn]──── GND(底盘)正常时 Rp、Rn 很大(MΩ 级);绝缘老化或受潮后阻值下降,存在漏电风险。
2.2 国标要求
| 标准 | 绝缘电阻要求 | 适用场景 |
|---|---|---|
| GB/T 18384 | > 100Ω/V | 电动汽车 |
| GB/T 36276 | > 500Ω/V | 电力储能 |
| 企业标准 | > 1000Ω/V | 高端储能/车规 |
800V 系统阈值计算:
报警阈值 = 800V × 100Ω/V = 80kΩ 故障阈值 = 800V × 50Ω/V = 40kΩ三、不平衡电桥法原理
3.1 电路结构(含完整参数)
电池+ (800V) │ ├──[ R1 = 500kΩ ]──[ S1 ]── GND │ (4×125kΩ串联) (3×AQY212GS串联) │ 0.1% 250V 1W 耐压1050V │ ├──[ R3 = 500kΩ ]──────────── GND │ (4×125kΩ串联) │ 0.1% 250V 1W │ └── Vp(正对地电压) │ ├──[ 2MΩ ]──┐ │ (4×500kΩ) │ │ ├──[ AMC1350 ]── MCU ADC ├──[ 10kΩ ]──┘ (隔离放大,±5V输入) │ 0.1% │ GND 电池- (0V) │ ├──[ R2 = 500kΩ ]──[ S2 ]── GND │ (4×125kΩ串联) (3×AQY212GS串联) │ 0.1% 250V 1W 耐压1050V │ ├──[ R4 = 500kΩ ]──────────── GND │ (4×125kΩ串联) │ 0.1% 250V 1W │ └── Vn(负对地电压) │ ├──[ 2MΩ ]──┐ │ (4×500kΩ) │ │ ├──[ AMC1350 ]── MCU ADC ├──[ 10kΩ ]──┘ (隔离放大,±5V输入) │ 0.1% │ GND元件说明:
- R1、R2:投切电阻,通过开关 S1、S2 接入/断开
- R3、R4:固定参考电阻,长期接入
- S1、S2:高压光耦继电器,MCU GPIO 控制
- Vp、Vn:正负极对地电压,经高压分压+隔离放大器送 MCU ADC
3.2 检测步骤(两次测量法)
第1次测量(S1、S2 都断开):
Vp1 = Vpack × Rn / (Rp + Rn) (正对地电压) Vn1 = Vpack × Rp / (Rp + Rn) (负对地电压) Vpack = Vp1 + Vn1 (总压校验)第2次测量(闭合 S1,接入 R1=500kΩ):
此时正对地等效电阻变为 Rp ∥ R1:
Rp_eq = Rp × R1 / (Rp + R1) Vp2 = Vpack × Rn / (Rp_eq + Rn) Vn2 = Vpack × Rp_eq / (Rp_eq + Rn)联立方程求解 Rp、Rn:
Rp = R1 × (Vp1 × Vn2 - Vp2 × Vn1) / (Vp2 × Vn1 - Vp1 × Vn2 + Vp1 × Vp2) Rn = R1 × (Vp1 × Vn2 - Vp2 × Vn1) / (Vn2 × Vp1 - Vn1 × Vp2 + Vn1 × Vn2)核心是两次测量的电压变化量包含了绝缘电阻信息。
四、完整参数设计
4.1 投切电阻 R1、R2
| 参数 | 具体值 | 计算依据 |
|---|---|---|
| 总阻值 | 500kΩ | 平衡灵敏度和对原电路影响 |
| 实现方式 | 4 × 125kΩ 串联 | 单颗耐压不够,串联分压 |
| 单颗阻值 | 125kΩ | 500kΩ ÷ 4 |
| 精度 | 0.1% | 直接影响计算精度 |
| 温漂 TCR | ≤25ppm/℃ | 低温漂金属膜电阻 |
| 单颗耐压 | 250V | 2512 封装高压电阻 |
| 总耐压 | 1000V | 4×250V > 800V,留 25% 裕量 |
| 额定功率 | 单颗 1W,总 4W | P=800²/500k=1.28W,选 4W 留裕量 |
| 推荐型号 | 国巨 HV2512 125kΩ 0.1% | 或 VISHAY VR37 |
为什么选 500kΩ?
- 太小(100kΩ):接入后显著改变绝缘电路,正常时也拉低读数
- 太大(2MΩ):接入后电压变化太小,ADC 测不准
- 500kΩ:接入 50kΩ 故障绝缘时电压变化约 15%,ADC 可清晰分辨
4.2 固定电阻 R3、R4
| 参数 | 具体值 | 说明 |
|---|---|---|
| 总阻值 | 500kΩ | 与 R1/R2 相同,简化公式 |
| 实现方式 | 4 × 125kΩ 串联 | 同 R1/R2 |
| 精度 | 0.1% | 与 R1/R2 匹配 |
| 温漂 | ≤25ppm/℃ | 同批次电阻,温漂一致性好 |
| 耐压 | 1000V | 同 R1/R2 |
| 功率 | 4W | 长期接入,功耗 1.28W |
R3/R4 长期接在电路中,持续发热 1.28W,PCB 上需远离温度敏感元件。
4.3 投切开关 S1、S2
| 参数 | 具体值 | 说明 |
|---|---|---|
| 方案 | 高压光耦继电器串联 | 无机械磨损,寿命无限 |
| 推荐型号 | AQY212GS × 3 串联 | 松下光耦继电器,单颗 350V |
| 总耐压 | 1050V | 3×350V > 800V |
| 导通电阻 | <90Ω(3颗串联) | 相对 500kΩ 可忽略 |
| 关断漏电流 | <1nA | 关断时不影响测量 |
| 控制电压 | 3.3V(LED侧) | MCU GPIO 直接驱动 |
| 控制电流 | 5~10mA | GPIO 可直接驱动 |
| 切换时间 | <1ms | 闭合后等待稳定 |
为什么不用普通继电器?机械继电器寿命约 10 万次,绝缘检测每秒投切一次,1 年即到寿命。光耦继电器无磨损。
4.4 电压测量电路
| 参数 | 具体值 | 说明 |
|---|---|---|
| 上分压电阻 | 2MΩ(4×500kΩ 串联) | 限制电流 |
| 下分压电阻 | 10kΩ | 决定分压比 |
| 分压比 | 201:1 | (2M+10k)/10k |
| 800V 输入输出 | 3.98V | 800÷201=3.98V |
| 隔离放大器 | AMC1350 | ±5V 输入,5000V_RMS 隔离 |
| 增益 | 1 | 固定增益 |
| 带宽 | 800kHz | 远大于测量需求 |
| ADC 分辨率 | 12位 | 4096 级 |
| ADC 参考电压 | 3.3V | MCU 基准 |
| 输入滤波 | 1kΩ + 100nF | 截止频率 1.6kHz |
4.5 测量时序参数
| 参数 | 具体值 | 说明 |
|---|---|---|
| 开关闭合后等待 | 200ms | RC 充电稳定(5τ) |
| 每次 ADC 采样数 | 16 点 | 取平均降噪 |
| 两次测量间隔 | 100ms | 开关断开后恢复 |
| 完整检测周期 | 1s | 正常工况 |
| 故障时检测周期 | 100ms | 加快监测 |
稳定时间计算:等效电容约 10nF,等效电阻 500kΩ,τ=R×C=5ms,5τ=25ms 基本稳定,取 200ms 留足裕量。
五、精度验证(80kΩ 报警阈值)
以 Rp=Rn=80kΩ(报警阈值)为例验证:
第1次(S1断开): Vp1 = 800 × 80k/(80k+80k) = 400V Vn1 = 400V 第2次(S1闭合,R1=500kΩ): Rp_eq = 80k ∥ 500k = 68.97kΩ Vp2 = 800 × 80k/(68.97k+80k) = 424.5V Vn2 = 800 × 68.97k/(68.97k+80k) = 375.5V 电压变化量: ΔVp = 424.5 - 400 = 24.5V 经 201:1 分压后 = 0.122V 12位ADC分辨率 = 3.3/4096 = 0.8mV 0.122V / 0.8mV = 152 级 → 可清晰分辨 ✓结论:80kΩ 报警阈值时,ADC 有 152 级变化量,测量精度足够。
六、软件实现
#defineR_BRIDGE500000.0f// 投切电阻 500kΩ#defineV_PACK800.0f// 电池包电压#defineINS_WARN_TH80000.0f// 报警阈值 80kΩ#defineINS_FAULT_TH40000.0f// 故障阈值 40kΩtypedefstruct{floatrp;// 正对地绝缘电阻floatrn;// 负对地绝缘电阻floatr_min;// 最小绝缘电阻}Insulation_t;staticfloatADC_ReadVp(void){// 经 AMC1350 + 201:1 分压,还原真实电压uint16_tadc=HAL_ADC_GetValue(&hadc1);return(adc*3.3f/4096.0f)*201.0f;}staticfloatADC_ReadVn(void){uint16_tadc=HAL_ADC_GetValue(&hadc2);return(adc*3.3f/4096.0f)*201.0f;}Insulation_tInsulation_Measure(void){floatvp1,vn1,vp2,vn2;Insulation_t result;// 第1次测量:S1、S2断开HAL_GPIO_WritePin(S1_PORT,S1_PIN,GPIO_PIN_RESET);HAL_GPIO_WritePin(S2_PORT,S2_PIN,GPIO_PIN_RESET);osDelay(200);// 等待稳定vp1=ADC_ReadVp();vn1=ADC_ReadVn();// 第2次测量:闭合S1,接入R1HAL_GPIO_WritePin(S1_PORT,S1_PIN,GPIO_PIN_SET);osDelay(200);vp2=ADC_ReadVp();vn2=ADC_ReadVn();HAL_GPIO_WritePin(S1_PORT,S1_PIN,GPIO_PIN_RESET);// 恢复// 计算绝缘电阻floatdelta=vp1*vn2-vp2*vn1;floatdenom_rp=vp2*vn1-vp1*vn2+vp1*vp2;floatdenom_rn=vn2*vp1-vn1*vp2+vn1*vn2;if(fabs(denom_rp)>0.1f&&fabs(denom_rn)>0.1f){result.rp=R_BRIDGE*delta/denom_rp;result.rn=R_BRIDGE*delta/denom_rn;}else{result.rp=999999.0f;// 绝缘极好result.rn=999999.0f;}result.r_min=(result.rp<result.rn)?result.rp:result.rn;returnresult;}voidInsulation_Task(voidconst*argument){while(1){Insulation_t ins=Insulation_Measure();if(ins.r_min<INS_FAULT_TH){Fault_Report(INSULATION_FAULT);Contactor_Open();// 断开高压}elseif(ins.r_min<INS_WARN_TH){Alarm_Report(INSULATION_WARNING);}osDelay(1000);// 每秒检测一次}}七、Multisim 仿真
7.1 仿真电路
V1(800V) ──┬──[R1=500k]──[S1]── GND │ ├──[R3=500k]──────── GND │ Vp(万用表) V2(800V) ──┬──[R2=500k]──[S2]── GND │ ├──[R4=500k]──────── GND │ Vn(万用表) 模拟绝缘电阻: 电池+ ──[Rp=1MΩ]── GND 电池- ──[Rn=1MΩ]── GND7.2 仿真步骤
| 步骤 | 操作 | 预期结果 |
|---|---|---|
| 1 | S1、S2 断开,Rp=Rn=1MΩ | Vp≈Vn≈400V(对称) |
| 2 | 闭合 S1(接入 R1=500k) | Vp 下降,Vn 上升 |
| 3 | 记录两次电压,代入公式 | 计算出 Rp≈Rn≈1MΩ |
| 4 | 改 Rp=80kΩ(模拟报警阈值) | Vp 明显偏低,计算出 Rp≈80kΩ |
| 5 | 改 Rp=40kΩ(严重故障) | 触发绝缘故障阈值 |
Multisim 中 800V 电源可用两个 400V 串联,开关用电压控制开关。
八、设计注意点
- 电阻耐压:单颗电阻耐压通常 200~300V,必须串联多颗分担高压
- 漏电流影响:开关断开时漏电流 <1nA,否则引入测量误差
- 测量稳定时间:投切后等待 200ms,确保 RC 充分充电
- 电池电压波动:两次测量间电池电压可能变化,需同时测总压做修正
- Y 电容影响:EMC 滤波的 Y 电容影响交流阻抗,直流检测不受影响
- 湿度影响:潮湿环境绝缘电阻下降,需考虑环境温度补偿
- 检测周期:正常 1s 一次,故障时加快到 100ms
- 冗余设计:重要系统可双路绝缘检测互相校验
- R3/R4 散热:长期功耗 1.28W,PCB 留足散热铜箔
九、常见问题
| 问题 | 原因 | 解决 |
|---|---|---|
| 绝缘电阻读数跳动 | 测量未稳定/电池波动 | 增加延时到 200ms,多次平均 |
| 正负绝缘电阻不对称 | 正常现象 | 取 r_min 作为判断依据 |
| 计算出负值 | 电压变化太小 | 变化量<阈值时判为绝缘良好 |
| 高压报警误触发 | 电阻精度不够/温漂 | 用 0.1% 精度电阻,温度补偿 |
| 潮湿时绝缘下降 | 正常现象 | 设置预警阈值,不立即断电 |
十、完整元件清单
| 元件 | 参数 | 数量 | 推荐型号 |
|---|---|---|---|
| R1/R2 投切电阻 | 125kΩ 0.1% 250V 1W | 8(4×2) | 国巨 HV2512 |
| R3/R4 固定电阻 | 125kΩ 0.1% 250V 1W | 8(4×2) | 国巨 HV2512 |
| S1/S2 开关 | AQY212GS 光耦继电器 | 6(3×2) | 松下 |
| 分压上电阻 | 500kΩ 0.1% 250V 1W | 8(4×2) | 国巨 HV2512 |
| 分压下电阻 | 10kΩ 0.1% | 2 | 0805 金属膜 |
| 隔离放大器 | AMC1350 | 2 | TI |
| ADC 滤波电阻 | 1kΩ | 2 | 0805 |
| ADC 滤波电容 | 100nF | 2 | 0805 X7R |
| 去耦电容 | 0.1μF + 10μF | 各4 | 0805 + 钽电容 |
十一、总结
BMS 绝缘检测最常用不平衡电桥法,核心是用已知电阻扰动未知绝缘电阻,通过两次测量的电压变化反推阻值。
关键设计参数(800V 系统):
| 参数 | 值 |
|---|---|
| 投切/固定电阻 | 500kΩ(4×125kΩ 串联) |
| 开关 | AQY212GS × 3 串联(1050V) |
| 分压比 | 201:1(2MΩ+10kΩ) |
| 隔离放大器 | AMC1350 |
| 测量等待时间 | 200ms |
| 检测周期 | 1s |
| 报警阈值 | 80kΩ(100Ω/V) |
绝缘检测的本质是:用已知电阻去"扰动"未知绝缘电阻,通过电压变化反推未知阻值。
如果文章对你有帮助,欢迎点赞、收藏、关注!有问题欢迎评论区交流。
主要参考:
- GB/T 18384 电动汽车安全要求
- GB/T 36276 电力储能用锂离子电池
- TI AMC1350 隔离放大器数据手册
- 松下 AQY212GS 光耦继电器数据手册
系列导航:
- 本文:BMS绝缘检测完全指南(Pack检测方向第三篇)