3、电气系统噪声分析:编码器信号噪声、电机电流纹波、电源波动与地环路、PWM死区时间影响

电气噪声,说白了就是控制信号里混进了不该有的东西。我做运动控制这些年,碰到的轨迹抖动问题,十有七八都能追溯到电气噪声上。你想想看,编码器信号抖一下,控制器以为位置变了,立马调整输出,电机跟着一哆嗦——整个系统就开始颤了。

这一节,我把最常见的四个噪声源掰开揉碎了讲。每个我都踩过坑,有些坑现在想起来还肉疼。

3.1 编码器信号噪声

编码器是控制器的眼睛。眼睛花了,后面全是瞎忙活。

编码器信号噪声,最常见的就是A/B相脉冲边沿上出现毛刺。我遇到过一台六轴机器人,空载跑圆弧时轨迹特别漂亮,一夹持工件就开始抖。查了两天,最后用示波器看编码器信号——好家伙,A相每个上升沿旁边都跟着一串小毛刺。

编码器噪声的典型表现:

  • 静止时位置读数来回跳变(±1~3个脉冲)
  • 低速运行时速度估算值忽大忽小
  • 高速运行时偶尔出现位置跳变(丢脉冲或多脉冲)

为什么会这样?原因其实就三个:

  1. 长线传输——编码器线缆超过5米,又没有屏蔽,信号反射和串扰就来了
  2. 共模干扰——电机动力线和编码器线走同一个线槽,强电场耦合到信号线上
  3. 接地不当——编码器屏蔽层单端接地没做好,地环路引入噪声

我个人习惯,处理编码器噪声分三步走:

步骤 做法 效果
1 编码器线用双绞屏蔽线,屏蔽层驱动器端单点接地 抑制共模干扰
2 信号线上加RC低通滤波(R=100Ω,C=1nF) 滤除高频毛刺
3 软件里做边沿去抖(连续采样3次一致才认) 消除残余抖动

一个小技巧:编码器线缆和动力线交叉走线时,务必保持90°交叉。平行走线哪怕只隔5cm,干扰也够你喝一壶的。

3.2 电机电流纹波

电流纹波,就是电机相电流上叠加的高频波动。这东西直接反映到转矩上,转矩一波动,速度就跟着抖。

我记得有一次调试一个直驱转台,低速运行时能听到明显的嗡嗡声,用手摸转台表面能感觉到高频振动。用电流探头一看,三相电流上全是锯齿状的纹波,频率刚好是PWM开关频率的整数倍。

电流纹波的来源,主要有两个:

  • PWM开关动作——IGBT或MOSFET开关时,母线电压被斩波,电流自然有纹波
  • 死区效应——上下桥臂切换时插入的死区时间,导致电流波形畸变

怎么治?我一般这么干:

  1. 提高PWM频率——从8kHz提到16kHz,纹波幅值能降一半。代价是开关损耗增加,散热要做好
  2. 加输出电抗器——电机侧串一个几mH的小电抗,平滑电流波形
  3. 优化电流环PI参数——带宽别设太高,否则电流环会把纹波当成真实信号去追

注意:提高PWM频率不是万能的。频率太高,电机铁损增加,温升会上去。我见过有人把PWM提到40kHz,结果电机半小时就烫得不敢摸。一般伺服系统推荐12~16kHz,够用就好。

3.3 电源波动与地环路

电源波动和地环路,这两个经常一起出现,而且特别隐蔽。

电源波动,说白了就是驱动器母线电压不稳。电机急加速时电流猛增,母线电压会被拉低;急减速时能量回馈,母线电压又会飙升。电压一波动,电流环的输出就跟着变,轨迹自然不稳。

地环路更恶心。我曾经调试一个多轴系统,四台伺服驱动器共用一个电源。其中一台一启动,其他三台的位置反馈就开始乱跳。查到最后,发现是驱动器之间的地线形成了环路,大电流在地线上产生压降,干扰了编码器信号的地参考点。

解决思路其实不复杂:

问题 解决方案 我的经验
母线电压波动 母线电容加大(容量翻倍) 加电容比加稳压器管用
急减速过压 加制动电阻或能量回馈单元 制动电阻阻值别选太小,否则电流太大
地环路 星型接地,各驱动器地线单独拉回电源地 别用菊花链接地,那是给自己挖坑
共模干扰 动力线加共模扼流圈 扼流圈选磁环材质,锰锌铁氧体效果好

避坑指南:我曾经在一个项目里,为了省一根地线,把两台驱动器的地通过机壳连在一起。结果系统一跑就抖,查了三天。最后老老实实各拉一根地线到电源地,问题立刻消失。地线的事,千万别省。

3.4 PWM死区时间影响

死区时间,是PWM驱动里一个不得不提的坑。

为了防止上下桥臂直通短路,驱动芯片会在切换时插入一段死区时间——上下桥臂都关断,等一会儿再打开另一个。死区时间一般几微秒,但就是这几微秒,足以让电流波形产生畸变。

死区时间带来的问题:

  • 电流过零点畸变——电流过零时,死区导致输出电压和理想值偏差,电流波形出现平顶
  • 转矩脉动——电流畸变直接导致转矩波动,低速时尤其明显
  • 位置误差——转矩脉动累积成位置误差,轨迹上表现为周期性抖动

怎么补偿?我常用的方法:

  1. 死区补偿算法——根据电流方向,在PWM占空比里加上补偿量。电流正方向时加一个死区时间的占空比,负方向时减一个
  2. 缩短死区时间——如果IGBT开关速度够快,死区可以从3μs缩到1μs。但别缩太狠,短路了可别怪我
  3. 用更快的开关器件——SiC MOSFET或GaN器件开关速度极快,死区可以缩到几百纳秒

实测经验:死区补偿不是万能的。电流方向检测不准时,补偿反而会引入更大的误差。我建议在电流环带宽较低的系统里用死区补偿,带宽高的系统里优先考虑缩短死区时间。

下面这张图,把电气噪声的四个来源和它们的影响路径串起来了。你看一眼就能明白,噪声是怎么一步步传到轨迹上的。

电气噪声源 → 轨迹抖动 传导路径 编码器信号噪声 毛刺/丢脉冲/跳变 电机电流纹波 PWM开关/死区效应 电源波动与地环路 母线电压/共模干扰 PWM死区时间 电流畸变/转矩脉动 中间影响层 位置反馈抖动 → 速度估算偏差 → 电流指令波动 转矩脉动 → 机械谐振激发 → 控制环路失稳 轨迹抖动 位置超调 / 速度波动 / 轮廓误差 / 末端振动 解决策略(对症下药) 编码器:屏蔽/滤波/去抖 | 电流纹波:提频/电抗/调PI | 电源:加大电容/星型接地 | 死区:补偿算法/缩短时间 硬件滤波 + 软件滤波 + 接地优化 + 控制算法补偿 = 四管齐下

总结一下我的经验:电气噪声这东西,别指望一个方法全搞定。编码器噪声靠屏蔽和滤波,电流纹波靠提高PWM频率和加电抗,电源问题靠加大电容和星型接地,死区影响靠补偿算法。四个方向都照顾到了,轨迹抖动基本能压下去八成。