4. 基于电流幅值的检测法:阈值设定、采样窗口、低通滤波处理

电流幅值检测法,说白了就是盯着电机三相电流的峰值或有效值。正常运行时电流在一个范围内波动,一旦堵转,电流会瞬间飙升。这个方法实现简单,硬件成本低,很多低成本驱动器都在用。

但我得说句实话——这个方法虽然基础,想做好却不容易。我早期一个项目就吃过亏,阈值设得太死,结果频繁误报,产线差点把我电话打爆。后来才慢慢摸清楚里面的门道。

4.1 阈值设定:不是拍脑袋的事

阈值设定是整个方法的核心。设高了,堵转检测不灵敏,电机可能烧了才报警;设低了,正常负载波动就触发保护,设备根本没法用。

我个人习惯分三步走:

  1. 标称电流摸底:先测电机在额定负载、最大负载下的稳态电流峰值。这个数据是基准线。
  2. 留出安全余量:一般取额定电流的 1.5~2.0 倍作为堵转阈值。但这不是死规矩,得看应用场景。
  3. 动态微调:如果负载变化大,阈值也得跟着变。我做过一个风机项目,风道堵塞时电流只涨 30%,但确实是堵转。这时候固定阈值就不灵了。
应用场景 推荐阈值倍数 说明
恒转矩负载(如传送带) 1.5 ~ 1.8 倍 负载波动小,阈值可以设紧一些
风机/泵类 1.8 ~ 2.2 倍 启动电流大,需要避开
高惯性负载(如飞轮) 2.0 ~ 2.5 倍 加速过程电流本身就高
精密伺服 1.2 ~ 1.5 倍 保护要求高,配合速度环判断
避坑提醒:我曾经在一个项目中直接把阈值设为额定电流的 2 倍,结果电机堵转 3 秒才触发保护,绕组温度已经飙到 120°C。后来改成 1.6 倍 + 200ms 延时,才把问题解决。阈值和延时必须搭配着调。

4.2 采样窗口:选多长才合适?

采样窗口决定了你看多长时间的电流数据来做判断。窗口太短,容易受噪声干扰;窗口太长,响应速度跟不上。

我一般这样选:

  • 基波周期法:取一个完整电周期(比如 50Hz 对应 20ms)内的电流峰值。适合稳态运行。
  • 滑动窗口法:用 FIFO 缓存最近 N 个采样点,实时计算有效值。窗口长度通常取 1~2 个电周期。
  • 半周期法:只取半个周期,响应更快,但抗噪能力弱一些。

你想想看,如果 PWM 开关频率是 10kHz,每个电周期有 200 个采样点。窗口设 400 个点(2 个周期),计算量不大,效果也稳。我习惯用这个配置做起点。

我的经验:采样窗口和阈值要联动。窗口越长,阈值可以设得越接近实际堵转电流;窗口越短,阈值就得适当抬高,防止误触发。

4.3 低通滤波处理:把噪声滤干净

电流信号里全是高频噪声——PWM 开关噪声、死区效应、电流采样毛刺。直接拿原始数据做判断,结果就是频繁误报。

低通滤波是必须的。我常用的方案有两种:

4.3.1 一阶 RC 数字滤波器

最简单,也最实用。公式就一行:

y[n] = α * x[n] + (1 - α) * y[n-1]

其中 α 是滤波系数,范围 0~1。α 越小,滤波越强,但响应也越慢。

α 怎么选?我有个经验公式:

α = 1 / (1 + fc * Ts * 2π)

fc 是截止频率,Ts 是采样周期。比如我想把 1kHz 以上的噪声滤掉,采样周期 100μs,算出来 α ≈ 0.14。

关键点:截止频率不能设太低。我见过有人把 fc 设到 10Hz,结果堵转发生后 500ms 才检测到,电机都冒烟了。一般 fc 取 100~500Hz 比较合理。

4.3.2 滑动平均滤波器

另一种常用方案,适合嵌入式实现:

// 滑动平均,窗口长度 N=16
static uint16_t buf[16];
static uint8_t idx = 0;
static uint32_t sum = 0;

sum -= buf[idx];
buf[idx] = adc_value;
sum += buf[idx];
idx = (idx + 1) & 0x0F;

filtered = sum >> 4;  // 除以 16

这个实现没有浮点运算,全是整数移位,跑在低成本 MCU 上毫无压力。窗口长度取 2 的幂次,除法用移位代替,效率很高。

注意:滑动平均的延迟是 (N-1)/2 个采样周期。N=16 时延迟约 8 个采样点。如果采样率 10kHz,延迟不到 1ms,完全可以接受。但 N 别超过 64,否则响应太慢。

4.4 整体检测流程

把上面三块串起来,就是完整的检测流程。我画了张图,你看一眼就明白了:

基于电流幅值的堵转检测流程图 基于电流幅值的堵转检测流程 电流采样 (ADC) 低通滤波处理 滑动窗口计算有效值 与阈值比较 正常运行,继续监测 触发堵转保护 说明:阈值需结合采样窗口长度和滤波截止频率综合设定,三者相互影响

流程不复杂,但每一步的参数都得仔细调。我建议你在调试阶段把原始电流、滤波后电流、有效值、阈值这四个量都通过 DAC 或串口输出,看着波形调参数,效率最高。

4.5 实际项目中的坑

最后分享几个我踩过的坑:

  • 启动电流误触发:电机启动时电流可能达到额定值的 5~8 倍。解决办法是启动后延时 500ms 再使能检测,或者用速度环辅助判断。
  • 单相堵转漏检:如果只检测一相电流,另一相堵转可能漏掉。我建议三相都采,取最大值做判断。
  • 温度漂移:MOSFET 导通电阻随温度升高而增大,同样负载下电流会下降。阈值最好做温度补偿,或者留够余量。
我的习惯:量产前做 100 次堵转测试,记录每次的检测时间和电流值。如果标准差超过 10%,说明参数还有优化空间。别偷懒,这个测试能帮你省掉很多售后麻烦。