4. 过流阈值设定:热效应与I²T曲线、电机热模型、阈值计算方法、安全裕度设计

过流保护阈值怎么定?这是很多工程师问我的第一个问题。有人直接抄手册上的额定电流,有人凭感觉加个系数。说实话,这两种做法我都踩过坑。

阈值设低了,电机还没出力就保护,设备频繁停机。阈值设高了,绕组都冒烟了保护还没动作。真正合理的阈值,必须从热效应出发,理解电流产生的热量怎么积累、怎么消散。

4.1 热效应与I²T曲线

先讲一个基本概念:电流流过绕组,发热量跟电流的平方成正比。这就是I²T曲线的物理基础。

I²T曲线描述的是:多大的电流,能持续多长时间,才会导致电机损坏。它是一条反时限曲线——电流越大,允许的时间越短。

核心公式:

I² × t = 常数(热容量)

这个常数由绕组材料、绝缘等级、散热条件决定。

举个例子。某电机额定电流10A,热容量常数为500 A²·s。那么:

  • 20A过流(2倍额定):允许时间 = 500 / 400 = 1.25秒
  • 30A过流(3倍额定):允许时间 = 500 / 900 ≈ 0.56秒
  • 50A过流(5倍额定):允许时间 = 500 / 2500 = 0.2秒

你看,电流翻倍,允许时间不是减半,而是变成四分之一。这就是平方关系的威力。

注意:I²T曲线是电机厂商给出的极限值。我曾经见过一个项目,直接把厂商的I²T曲线当保护曲线用,结果电机频繁烧毁。为什么?因为厂商给的是破坏极限,不是保护阈值。保护阈值必须留余量。

4.2 电机热模型

I²T曲线是个简化模型。实际电机发热是个动态过程,有热积累也有热消散。更精确的做法是用热模型来描述。

电机热模型,说白了就是一个RC电路。热阻R对应散热能力,热容C对应储热能力。电流产生的热量相当于电流源,绕组温度相当于电容电压。

电机热模型等效电路 I²R Rth Cth T_winding T_ambient 绕组温度 = 环境温度 + I²R × Rth × (1 - e^(-t / (Rth × Cth))) 热时间常数 τ = Rth × Cth,决定了温度上升的快慢

这个模型告诉我们两件事:

  1. 温度不会瞬间跳变。因为有热容,温度上升需要时间。这就是为什么短时过流可以允许。
  2. 散热一直在进行。热阻Rth决定了最终稳态温度。散热条件越好,Rth越小,允许的过流能力越强。

我在做伺服驱动器时,就遇到过散热被忽略的案例。客户把电机装在密闭腔体里,散热条件变差,结果同样的过流阈值,以前没事,现在频繁烧机。后来我加了散热系数修正,才解决问题。

4.3 阈值计算方法

讲完理论,说说实际怎么算。我一般分三步走:

4.3.1 基于I²T的快速计算

这是最常用的方法,适合大多数应用场景。

步骤 操作 说明
1 获取电机I²T常数 从电机手册或厂商获取,单位A²·s
2 确定保护目标 通常取I²T常数的60%~80%作为保护阈值
3 计算各电流下的保护时间 t = K / I²,K为保护阈值
4 生成保护曲线 将计算结果离散化,存入控制器

我的习惯:保护阈值取I²T常数的70%。比如电机I²T常数为500 A²·s,我设保护阈值为350 A²·s。这样既有保护效果,又不会太灵敏导致误动作。

4.3.2 基于热模型的实时计算

如果要求更高精度,我会用热模型做实时计算。代码实现大概是这样的:

// 热模型实时计算
// 输入:当前电流I,采样周期dt
// 输出:绕组温升delta_T

float Rth = 0.5;    // 热阻,单位 °C/W
float Cth = 100.0;  // 热容,单位 J/°C
float tau = Rth * Cth;  // 热时间常数

float delta_T = 0;  // 当前温升

void thermal_model_update(float I, float dt) {
    float P = I * I * R_winding;  // 发热功率
    float dT = (P * Rth - delta_T) / tau * dt;
    delta_T += dT;
    
    if (delta_T > T_max) {
        // 触发过流保护
        trigger_overcurrent_protection();
    }
}

这段代码每毫秒执行一次,实时跟踪绕组温升。好处是:

  • 能处理间歇性过流——电流忽大忽小时,温度不会突变
  • 能考虑散热——电流降下来后,温度会慢慢回落
  • 能适应不同工况——低速堵转和高速过载,热效应不同

我曾经踩过的坑:热模型参数Rth和Cth不是固定值。转速不同、环境温度不同,散热条件会变。我后来加了一个转速相关的修正系数,低速时Rth增大(散热差),高速时Rth减小(散热好)。这样模型才准。

4.4 安全裕度设计

阈值算出来了,直接就用吗?不行。必须加安全裕度。

为什么?因为:

  • 参数有离散性——同一批电机,Rth和Cth可能有±20%的偏差
  • 工况有变化——环境温度从-10°C到40°C,散热条件天差地别
  • 传感器有误差——电流采样精度、温度采样精度都会影响判断
  • 软件有延迟——从检测到保护动作,中间有几十毫秒的延迟

我建议的安全裕度设计原则:

因素 裕度系数 说明
电机参数离散 0.85~0.90 取I²T常数的下限值
环境温度变化 0.80~0.85 高温环境降额使用
采样误差 0.90~0.95 考虑ADC和传感器精度
软件延迟 0.95~0.98 延迟时间内温度继续上升

把这些系数乘起来,就是最终的保护阈值系数。举个例子:

电机I²T常数 = 500 A²·s
参数离散系数 = 0.88
环境温度系数 = 0.82
采样误差系数 = 0.92
软件延迟系数 = 0.96

最终保护阈值 = 500 × 0.88 × 0.82 × 0.92 × 0.96 ≈ 319 A²·s

你看,从500降到了319,差不多打了六四折。这个裕度看起来大,但实际运行中,它帮我避免了很多次误保护。

我的经验:安全裕度不是越大越好。裕度太大,保护过于灵敏,设备频繁停机,影响生产效率。我一般控制在0.6~0.8之间。具体取多少,要看应用场景——

  • 普通工业电机:0.7~0.8
  • 伺服电机(高动态):0.6~0.7
  • 牵引电机(安全关键):0.5~0.6

嗯,到这里,过流阈值设定的核心内容就讲完了。从I²T曲线到热模型,从计算方法到安全裕度,每一步都有讲究。你想想看,如果只是简单抄手册上的额定电流,能应对这么多复杂工况吗?