做高压直流系统的人,迟早会跟绝缘检测打交道。我最早接触平衡电桥是在一套1500V直流牵引的绝缘监测装置上,当时不叫“平衡电桥”,板子上就是两个大功率高压电阻、两个继电器和一组采样电路。后来做到BMS和储能项目,发现这个“老掉牙”的电路依然是行业里性价比最高的绝缘检测方案,只是换了个更讲究的切法。这篇文章就围绕“平衡电桥”在高压绝缘检测里的动态切换策略和误差优化展开,重点聊聊为什么非要“切来切去”、切换时序怎么定、误差从哪来又怎么压下去。适合做BMS电池管理、储能直流侧监测、直流屏和牵引供电系统的硬件工程师、嵌入式工程师以及测试人员参考。
1. 平衡电桥在绝缘检测里的角色:先搞懂它在测什么
1.1 高压直流系统的“漏电”和桥臂电阻的关系
直流母线系统里所谓的“绝缘异常”,指的是正极母线或负极母线对地之间的绝缘电阻下降到某个阈值以下。正常情况下,正负极对地绝缘电阻都在兆欧级以上,比如10MΩ甚至更高;一旦发生线缆破损、潮湿、进水或者电机绕组受潮,这个阻值可能掉到几百kΩ、几十kΩ,这时候如果没有及时报警,轻则漏电损耗,重则引起人身电击或设备烧毁。
测量绝缘电阻不能像万用表那样直接怼上去测,因为母线是带电的,而且正负极对地之间并没有一条明确的“欧姆通路”。工程上最常用的做法就是人为在正、负极母线和地之间接入已知电阻,让绝缘电阻和这个已知电阻形成并联关系,再通过测量对地电压来反推绝缘电阻值。这就是平衡电桥的核心思路:用已知桥臂去“引导”未知绝缘电阻的电流分配,然后从电压分布里把阻值算出来。
当正负极两个桥臂电阻相等时,电路处于“平衡”状态,这时如果两侧绝缘电阻相等,正极对地电压和负极对地电压也对称,分压点电压为零。一旦某一侧绝缘电阻下降,正负极对地电压就会失去对称性,这个变化量就是绝缘故障的信号。原理听起来简单,但真正做起来会发现:单纯的平衡状态只能告诉你“对称还是不对称”,很难精确分辨出正极和负极各自的具体阻值。要同时算出R+和R-,就必须让电桥“动起来”。
注意:实际工程里说的“平衡电桥”和教科书里的惠斯通电桥有一个差别——教科书电桥用检流计判断平衡点,工程电桥则通过测量电压偏移来计算绝缘电阻,但“桥臂电阻+平衡/不平衡状态切换”的思想是完全一致的。
1.2 几种绝缘检测方案的对比:为什么没放弃电桥
这些年做绝缘检测的方案不止电桥一个方向,主流的有交流信号注入法、低频方波注入法、直流漏电流传感器法和平衡电桥法。各有各的适用范围,我在不同项目里也都试过,这里做一个横向对比。
| 方案 | 原理 | 优点 | 难点 |
|---|---|---|---|
| 平衡电桥(不平衡电桥) | 母线接入已知桥臂电阻,切桥后测电压比 | 实现简单、成本低、可定量算R+/R- | 切换有暂态过程,受母线电压波动影响 |
| 交流信号注入法 | 注入特定频率信号,检测回路阻抗 | 可在线连续监测 | 需要隔离注入变压器,分布电容影响大 |
| 低频方波注入法 | 注入方波,测量电流变化 | 对地电容影响较小 | 算法复杂,对采样同步性要求高 |
| 漏电流传感器法 | 测量正负母线电流差 | 不直接接触高压 | 精度受传感器零点漂移限制,成本偏高 |
从我的实操经验来看,平衡电桥方案在同等的测量精度要求下,物料成本可以做到注入方案的1/3甚至更低,而且故障定位到正极还是负极的判断非常直观。它的短板也很明显:需要桥臂切换才能得到两个独立方程,切换瞬间容易受到母线电压波动干扰。所以这些年大家反复优化的重点,都集中在“动态切换策略”和“误差补偿方法”上。
1.3 动态切换到底要打破哪层“平衡”
如果只有一组固定等值桥臂,测量一次只能得到一个电压比方程,而待求量有正极绝缘电阻和负极绝缘电阻两个未知数,方程不够。经典电桥法在理想情况下假设正负极绝缘电阻相等或者只求一个折算电阻,但在实际系统里,正负极绝缘状态往往不同,比如正极线缆破损而负极完好,这时候必须分别计算。
动态切换的目的就是人为制造第二次“不平衡”:第一次让正、负极桥臂都接入,得到一个电压分布;第二次只让某一侧桥臂接入,或者切换不同阻值的桥臂,再得到一组电压分布。两组方程联立,R+和R-两个未知数就解出来了。所以“动态”不是为切而切,而是用切换来打破单一平衡状态下方程欠定(未知数多于方程)的僵局。
打破平衡带来的另一个好处是提高了故障早期预警的灵敏度。假设两侧绝缘电阻同步下降且数值接近,固定电桥测得的分压比可能几乎不变,系统会误以为绝缘正常。而动态切换后,某侧桥臂断开会迫使电流路径重组,这时候隐含的绝缘劣化就会体现在电压差上。换句话说,动态切换不仅让方程可解,还解决了“对称故障漏报”这个隐患。
2. 动态切换策略设计:状态怎么切、停多久、为什么这样切
2.1 为什么要用“切”而不是“一直量”
有人会问:既然切换是为了得到两个方程,那不如把正负极桥臂永久接上,用两个电压表同时测量不行吗?严格来说也可以测,但有两个致命问题。第一,桥臂电阻等同于人为给系统增加了一个对地泄漏通路。如果桥臂电阻取得比较小(比如100kΩ),永久接入会显著增加漏电流损耗,本身也可能引发保护误动;如果取得很大,又会影响采样精度。第二,高压正负极之间长期接一个固定的电阻网络,会让绝缘材料处于持续极化状态,绝缘电阻的测量值会随着时间漂移,尤其在潮湿环境下非常明显。
动态切换策略本质上是“分时测量”:在采样窗口内短时投入桥臂,采完就断开。这样既能在测量瞬间获得足够强的信号,又能在大部分时间里保持系统绝缘状态不被干扰。对于高压系统来说,这种间歇测量方式还有一个安全考量——减少检修人员触碰线路时的持续漏电路径,毕竟规定里对系统对地总泄漏电流是有严格限制的。
2.2 三种桥臂投切拓扑与测量流程
工程上常见的桥臂投切结构有三种。
第一种是最基础的“全桥-半桥切换”:正负极各有一个高压电阻R和对应的开关K1、K2。第一拍K1、K2同时闭合,采集正极对地电压U1和负极对地电压U2;第二拍把K1断开、K2保持闭合,再采一组U1'、U2'。利用这两组电压比推算出R+和R-。
第二种是“双桥臂非对称电阻切换”:桥臂电阻本身做成两档,比如R和2R,通过开关在不同电阻档位间切换。这种结构的好处是母线电压波动对结果的影响更小,但需要更多精密电阻,成本和体积都会增加。
第三种是“补偿桥臂法”:在正负极桥臂之外,另外引入一条可调的补偿支路,配合算法进行自校准。这种方案通常用在高精度计量或实验室校验场景,工业现场用得比较少。
我实际项目里用得最多的是第一种。以常见的“全桥-半桥切换”为例,一次完整的测量流程是这样的:
- 断开全部桥臂开关,等待系统回到原始绝缘状态;
- 闭合K1、K2,延时至少5个RC时间常数,等待桥臂电压稳定;
- 同步采集正极对地电压、负极对地电压和母线总电压;
- 断开K1、保持K2闭合,再次延时等待稳定;
- 采集第二组电压数据;
- 联立两个状态下的电压方程,计算出R+和R-;
- 如果计算值低于报警阈值,立刻进故障状态;否则回到断开状态,按设定的巡检周期休眠。
这套流程看起来简单,但每一步的时序都需要仔细算计,尤其是延时和ADC采样窗口。
2.3 母线电压波动的修正:比率计算替代绝对值计算
高压直流母线的电压并不是一个恒定值。电池放电时电压会逐渐下降,充电时可能又抬升,即便是稳压电源供电的系统,纹波也容易有几伏到十几伏的波动。如果直接用“电压绝对值”去套公式算绝缘电阻,母线电压一波动,计算结果就会跟着抖得厉害。
解决办法是尽量采用比率计算,这一点非常关键。因为绝缘电阻的求解本质上是电压比的函数,而不是单个电压值的函数。我一般会同步采集母线正负端电压和分压点电压,然后构造如下的归一化量:
[ k = \frac{U_p}{U_p + U_n} ]
其中 ( U_p ) 是正极对地电压,( U_n ) 是负极对地电压,二者之和就约等于母线总电压。由于 ( U_p ) 和 ( U_n ) 的比例关系在母线电压整体抬升或下降时基本保持不变,所以用比率 k 参与计算可以抵消母线电压波动的共模影响。
当然这里有个前提:正负极电压必须同时采样,不能先后采样。如果前一次采母线电压是在电压高的时候,后一次采对地电压是在电压低的时候,那比率计算就会失效。这也是为什么我坚持用“同时采样”的ADC通道,或者至少要保证两次采样之间时间差小于1ms,并叠加数字滤波。
提示:母线电压波动较大时,建议把“总电压”也作为输入量参与计算,而不是假定它是某一固定设计值。实测中我曾遇到母线电压从800V掉到750V的情况,用固定值参与计算时绝缘电阻误差高达15%,改成同步采样比率算法后误差降低到2%以内。
2.4 切换周期和稳定时间的配合设计
动态切换的频率不能随意定,太频繁了继电器寿命堪忧、开关损耗也大;太稀疏了故障响应时间又达不到规范要求。实际项目中我是按照“正常巡检慢速轮询、故障前后快速切换”的自适应策略来做的。
正常状态下,系统绝缘电阻远高于阈值,只需周期巡检,我把切换周期放在1秒到10秒之间可调,默认3秒。这个周期对继电器来说是很大的余量,普通信号继电器机械寿命在1000万次以上,按3秒一次算,每天28800次,也能撑一年以上。进入报警预判状态后(比如检测到电压比偏移超过正常波动的3倍),周期自动缩短到200ms到500ms,连续测3到5次,确认后触发报警。
稳定时间的设计需要结合对地分布电容来看。桥臂电阻通常在500kΩ到2MΩ之间,而系统对地分布电容在几十nF到几百nF。桥臂切换后电压稳定需要大约5个RC时间常数。假设R=1MΩ,C=100nF,τ=0.1秒,5τ就是0.5秒。如果只给0.1秒就去采样,采到的一定是还在爬坡的暂态值,误差会非常大。
我见过不少新手在这上面栽跟头:测量周期压得很短,ADC采出来的数据忽大忽小,又去怀疑继电器、怀疑运放,其实问题就是稳定时间不够。稳妥的做法是先粗测一次对地电容,或者预留可配置的延时参数,在冷启动时自动执行一次“延时扫描”,把电压稳定曲线记录下来,找出进入稳态的最短时间。之后再按这个时间的1.5倍作为固定延时。
3. 误差优化:把测量精度从“能测”压到“测得准”
3.1 电阻选型与温度漂移控制
平衡电桥的测量基准是桥臂电阻,如果桥臂电阻本身不准,后面所有计算都是空中楼阁。桥臂电阻的选型我有几个硬性要求。
第一个要求是阻值不能太小也不能太大。太小会导致漏电流超标,太大又会让稳定时间过长、采样信号过弱。以1000V母线为例,桥臂电阻选择1MΩ时,单臂漏电流约0.5mA,在多数标准允许范围内;如果系统对漏电流敏感,可以提到2MΩ甚至5MΩ,代价是稳定时间变长,需要更强的抗干扰措施。
第二个要求是温度系数(TCR)要足够低。普通厚膜电阻的TCR通常在100ppm/°C到200ppm/°C,意味着温度变化25°C时阻值漂移0.25%到0.5%。如果桥臂电阻只有1MΩ,漂移几千欧很正常,这会直接造成绝缘电阻计算误差。我一般选用TCR≤25ppm/°C的精密金属膜电阻或者金属箔电阻,温度系数指标越紧越好。有条件的话,把桥臂电阻做成4线开尔文连接,排除引脚接触电阻的影响。
第三是耐压和功率。桥臂电阻直接跨在母线和地之间,工作电压可能高达上千伏,电阻的耐压等级必须留足2倍以上余量。同时要关注脉冲功率,比如继电器吸合瞬间可能存在短时过压,电阻的脉冲耐受能力要能扛得住。
3.2 开关环节误差:接触电阻、泄漏与切弧
动态切换的核心执行器件是开关,而开关恰恰是误差最容易潜入的地方。
触点接触电阻通常在几十毫欧到几百毫欧,和1MΩ的桥臂电阻比起来可以忽略不计,但如果桥臂电阻选得比较小(比如100kΩ),接触电阻的影响就会显现出来。解决办法是选择低接触电阻的继电器,比如银合金触点,或在软件里对接触电阻做一次静态校准。
更隐蔽的问题是开关断开时的泄漏电流。机械继电器断开后触点间也有绝缘电阻,通常高达GΩ级,影响很小;但固态继电器(MOSFET/光电继电器)在断态会存在皮安到微安级的漏电流,如果漏电流路径和采样通路耦合,就会在低压侧引入可观误差。因此我倾向于在高压桥臂上用高压继电器,或者用两个固态继电器串联提高断态阻抗。
切弧问题主要出现在热插拔或者带有容性负载的场合。继电器断开瞬间,如果回路中存在电感(电机的感性负载耦合到母线上),触点间会产生电弧,久而久之触点表面碳化,接触电阻漂移变大。缓解手段是采用带灭弧功能的继电器,或者增大桥臂电阻限制断开电流。曾经有项目里检测数据每周漂移一次,最后查明就是继电器触点在每次断开时拉弧,半年后触点上已经积了一圈碳,换了带磁吹灭弧的继电器后问题才彻底消失。
3.3 采样链路误差:共模电压、ADC量化与滤波
高压母线对地的共模电压可能高达几百伏甚至上千伏,而ADC的输入范围通常只有几伏。降压采样的方式有两种:一种是电阻分压直接降压,另一种是用高共模电压差分放大器。
电阻分压方式成本低,但分压比的精度和温度稳定性会直接影响测量结果。分压电阻同样要选低TCR的精密电阻,而且分压比必须校准。高共模差分放大器(比如INA117这类共模电压可达200V以上的专用运放)用起来更方便,但它对输入电阻的要求较高,需要在前级做好阻抗匹配。
ADC量化误差在小信号时比较突出。比如桥臂切换后,正极对地电压可能只有几十毫伏的变化,如果ADC是12位、参考电压5V,1LSB对应1.22mV,看起来够用,但叠加噪声后就不乐观了。我的经验是至少用16位ADC,并开启内部PGA放大合适的倍数;如果主控内置ADC只有12位,可以通过过采样结合平均值滤波来提升有效位数。
软件滤波也是必不可少的环节。我在采样后一般先做一次中值滤波剔除偶发毛刺,再做滑动平均消除随机噪声。滤波窗口长度不宜过长,否则会拖慢故障响应速度。一个比较经济的做法是:用3点中值+5点滑动平均,能够在响应延迟大约10ms的情况下把噪声平滑得比较好。
3.4 自校准与算法补偿技巧
误差优化做到最后,不能光靠换好料,还得靠算法做智能补偿。我常用的几个技巧如下。
第一是“零点自校准”。系统上电时或每隔一段时间,主动把所有桥臂开关断开,测量当前状态下的电压输出,作为系统零偏记录下来。后续所有计算都先减去这个零偏,可以有效抵消运放失调电压、ADC偏置和分压电阻不对称带来的固定误差。
第二是“通道增益校准”。在整机生产时,通过一个已知标准电阻箱接入,测一组标准曲线,把每个采样通道的实际增益系数存到EEPROM里。这样即便分压电阻有±1%的偏差,也可以通过增益修正压回去,整机不需要用可调电位器。
第三是“正反切换去极化”。如果在连续多轮测量中都让同一侧桥臂闭合,绝缘材料会逐渐极化,导致等效绝缘电阻漂移。我习惯在每两次测量之间交替切换方向:这次先切正极桥臂,下次就先断负极桥臂。这种交替策略能显著降低极化误差,尤其在橡胶电缆和潮湿环境下效果明显。
第四是“温度修正”。桥臂电阻虽然TCR低,但PCB走线、连接器、继电器触点还有环境影响仍会留下温度系数尾巴。如果系统有NTC温度采样,可以在固件里加一个温度补偿曲线,修正系数通过高低温箱实验拟合得到。拟合方法不复杂,只需要在-40°C、25°C、85°C三个温度点分别测标准电阻箱的读数,然后用二次多项式拟合补偿系数即可。
4. 实测流程与典型问题排查实录
4.1 一套可复用的状态机实现流程
动态切换策略落到代码里,最忌讳的就是用“顺序延时+阻塞”的方式实现,因为现场往往还需要同时处理其他任务。我一般用状态机来管理整个绝缘检测流程。下面这段伪代码是我在STM32平台上的实现框架,思路可以直接移植到其他平台。
typedef enum { INS_IDLE, // 空闲,等待巡检周期 INS_BRIDGE_ON, // 闭合全部桥臂,等待稳定 INS_SAMPLE_FULL, // 采样全桥状态电压 INS_BRIDGE_HALF, // 断开正极桥臂 INS_SAMPLE_HALF, // 采样半桥状态电压 INS_CALC, // 计算绝缘电阻 INS_DEBOUNCE, // 报警确认/复归处理 INS_ERROR // 异常状态 } ins_state_t; void ins_task(void) { switch (ins_state) { case INS_IDLE: if (now_ms - last_ins_ms >= ins_interval_ms) { bridge_ctrl(BRIDGE_ALL_ON); wait_settle(settle_ms); ins_state = INS_SAMPLE_FULL; } break; case INS_SAMPLE_FULL: adc_sync_read(&vol_full_p, &vol_full_n); bridge_ctrl(BRIDGE_POS_OFF); // 断开正极桥臂 wait_settle(settle_ms); ins_state = INS_SAMPLE_HALF; break; case INS_SAMPLE_HALF: adc_sync_read(&vol_half_p, &vol_half_n); ins_state = INS_CALC; break; case INS_CALC: calc_ins_res(vol_full_p, vol_full_n, vol_half_p, vol_half_n, &rp, &rn); if (rp < alarm_thr || rn < alarm_thr) { debounce_cnt++; if (debounce_cnt >= 3) ins_state = INS_ALARM; } else { debounce_cnt = 0; } bridge_ctrl(BRIDGE_ALL_OFF); last_ins_ms = now_ms; ins_state = INS_IDLE; break; default: ins_state = INS_IDLE; break; } }这个框架里有几个点值得强调。一是 wait_settle 不要用阻塞 delay,而是用时间戳查询,否则整个系统响应会被拖住。二是同步采样必须用一个触发信号同时启动两路ADC转换,绝不能先采正极再采负极。三是报警状态不要第一次测就报,加至少3次去抖确认,避免继电器抖动或瞬时干扰引起误报。
4.2 现场最常踩的五个坑
第一个坑是稳定时间不足。我遇到过一个项目,桥臂电阻1MΩ,现场电缆较长,对地电容实测达到300nF,理论稳定时间需要1.5秒,但固件里延时只有200ms,导致测出来的绝缘电阻始终偏低。后来把延时改成可配置,并通过上电自检测量稳定曲线,才彻底解决。
第二个坑是忽略了触点并联电容。继电器触点两端存在杂散电容,开关断开时这个电容仍然会耦合交流信号,在采样通道上叠加干扰。解决方法是采样电路里增加RC低通滤波,或者在PCB布局上把继电器远离模拟采样区。
第三个坑是正负极采样没有同步。早期版本用单ADC轮流采样正负极电压,结果每次采样时刻不同,正好赶上母线电压纹波的不同相位,计算出的电压比忽高忽低。改成双通道同步采样后,波形变得非常干净。
第四个坑是桥臂电阻的温漂老化。项目量产一段时间后陆续出现绝缘电阻读数偏大的投诉,排查发现是成本优化阶段把电阻换成了普通厚膜电阻,TCR高达200ppm/°C,夏天和冬天的读数差异巨大。后来强制规定桥臂电阻的TCR上限,并增加出厂校准,问题才消失。
第五个坑是继电器老化后动作时间变长。机械继电器使用次数多了,吸合释放时间可能从10ms漂移到20ms,如果固件里没有等待触点稳定就直接开始采样,很容易采到接触抖动期间的信号。稳健的做法是增加“触点稳定确认”机制,比如在采样前多等待一个固定时间,或增加状态监测引脚。
4.3 数据结果怎么判定与量化验证
系统开发阶段一定要用标准电阻箱做挡位验证,不要等到现场用真实绝缘故障去试。我的做法是:准备一组标准电阻,覆盖从10kΩ到100MΩ的若干个点,分别模拟正极故障、负极故障和双侧对称劣化,记录系统计算值,并计算相对误差。
一个合格的测量结果要求相对误差在±5%以内(低阻段可以放宽到±10%),正负极区分准确率100%。如果发现误差偏大,需要逐项排查:先查桥臂电阻精度,再查采样通道增益,最后查算法里的电压比计算是否受到母线电压波动干扰。
我在某次实测中,母线电压1000V,桥臂电阻2MΩ,标准电阻箱设置正极绝缘电阻100kΩ、负极绝缘电阻10MΩ,系统计算的输出分别是103.2kΩ和9.47MΩ,相对误差约3.2%和5.3%。这个结果在现场是完全可用的。如果是实验室计量级需求,可以通过增加校准点数、提高采样位数、延长积分时间,把误差进一步压到1%以内。
注意:现场标定时,标准电阻箱必须选耐压满足母线电压等级的型号,而且接线时先接电阻箱到母线侧,再接低压采集侧,操作过程中严禁带电徒手触碰任何导体。
我个人在实际操作中的体会是:平衡电桥方案看似朴素,但把动态切换和误差补偿做扎实之后,它的稳定性和性价比真的能打。项目初期不要急着堆高精度器件,先把切换时序、稳定时间和同步采样这些基础问题解决,再考虑用自校准和温度补偿去挤那最后几个百分点的精度。做绝缘检测这么多年,我最大的感受是“切得好比测得快更重要”——切换策略设计合理,后面的数据分析和故障判定都会轻松很多。最后再分享一个小技巧:调试阶段不要把报警阈值设到理论值,先放宽到理论值的2倍跑几天,把环境干扰和系统波动曲线摸清楚了再收紧,能省掉大量误报排查的时间。