3、电气系统噪声分析:编码器信号噪声、电机电流纹波、电源波动与地环路、PWM死区时间影响
电气噪声,说白了就是控制信号里混进了不该有的东西。我做运动控制这些年,碰到的轨迹抖动问题,十有七八都能追溯到电气噪声上。你想想看,编码器信号抖一下,控制器以为位置变了,立马调整输出,电机跟着一哆嗦——整个系统就开始颤了。
这一节,我把最常见的四个噪声源掰开揉碎了讲。每个我都踩过坑,有些坑现在想起来还肉疼。
3.1 编码器信号噪声
编码器是控制器的眼睛。眼睛花了,后面全是瞎忙活。
编码器信号噪声,最常见的就是A/B相脉冲边沿上出现毛刺。我遇到过一台六轴机器人,空载跑圆弧时轨迹特别漂亮,一夹持工件就开始抖。查了两天,最后用示波器看编码器信号——好家伙,A相每个上升沿旁边都跟着一串小毛刺。
编码器噪声的典型表现:
- 静止时位置读数来回跳变(±1~3个脉冲)
- 低速运行时速度估算值忽大忽小
- 高速运行时偶尔出现位置跳变(丢脉冲或多脉冲)
为什么会这样?原因其实就三个:
- 长线传输——编码器线缆超过5米,又没有屏蔽,信号反射和串扰就来了
- 共模干扰——电机动力线和编码器线走同一个线槽,强电场耦合到信号线上
- 接地不当——编码器屏蔽层单端接地没做好,地环路引入噪声
我个人习惯,处理编码器噪声分三步走:
| 步骤 | 做法 | 效果 |
|---|---|---|
| 1 | 编码器线用双绞屏蔽线,屏蔽层驱动器端单点接地 | 抑制共模干扰 |
| 2 | 信号线上加RC低通滤波(R=100Ω,C=1nF) | 滤除高频毛刺 |
| 3 | 软件里做边沿去抖(连续采样3次一致才认) | 消除残余抖动 |
一个小技巧:编码器线缆和动力线交叉走线时,务必保持90°交叉。平行走线哪怕只隔5cm,干扰也够你喝一壶的。
3.2 电机电流纹波
电流纹波,就是电机相电流上叠加的高频波动。这东西直接反映到转矩上,转矩一波动,速度就跟着抖。
我记得有一次调试一个直驱转台,低速运行时能听到明显的嗡嗡声,用手摸转台表面能感觉到高频振动。用电流探头一看,三相电流上全是锯齿状的纹波,频率刚好是PWM开关频率的整数倍。
电流纹波的来源,主要有两个:
- PWM开关动作——IGBT或MOSFET开关时,母线电压被斩波,电流自然有纹波
- 死区效应——上下桥臂切换时插入的死区时间,导致电流波形畸变
怎么治?我一般这么干:
- 提高PWM频率——从8kHz提到16kHz,纹波幅值能降一半。代价是开关损耗增加,散热要做好
- 加输出电抗器——电机侧串一个几mH的小电抗,平滑电流波形
- 优化电流环PI参数——带宽别设太高,否则电流环会把纹波当成真实信号去追
注意:提高PWM频率不是万能的。频率太高,电机铁损增加,温升会上去。我见过有人把PWM提到40kHz,结果电机半小时就烫得不敢摸。一般伺服系统推荐12~16kHz,够用就好。
3.3 电源波动与地环路
电源波动和地环路,这两个经常一起出现,而且特别隐蔽。
电源波动,说白了就是驱动器母线电压不稳。电机急加速时电流猛增,母线电压会被拉低;急减速时能量回馈,母线电压又会飙升。电压一波动,电流环的输出就跟着变,轨迹自然不稳。
地环路更恶心。我曾经调试一个多轴系统,四台伺服驱动器共用一个电源。其中一台一启动,其他三台的位置反馈就开始乱跳。查到最后,发现是驱动器之间的地线形成了环路,大电流在地线上产生压降,干扰了编码器信号的地参考点。
解决思路其实不复杂:
| 问题 | 解决方案 | 我的经验 |
|---|---|---|
| 母线电压波动 | 母线电容加大(容量翻倍) | 加电容比加稳压器管用 |
| 急减速过压 | 加制动电阻或能量回馈单元 | 制动电阻阻值别选太小,否则电流太大 |
| 地环路 | 星型接地,各驱动器地线单独拉回电源地 | 别用菊花链接地,那是给自己挖坑 |
| 共模干扰 | 动力线加共模扼流圈 | 扼流圈选磁环材质,锰锌铁氧体效果好 |
避坑指南:我曾经在一个项目里,为了省一根地线,把两台驱动器的地通过机壳连在一起。结果系统一跑就抖,查了三天。最后老老实实各拉一根地线到电源地,问题立刻消失。地线的事,千万别省。
3.4 PWM死区时间影响
死区时间,是PWM驱动里一个不得不提的坑。
为了防止上下桥臂直通短路,驱动芯片会在切换时插入一段死区时间——上下桥臂都关断,等一会儿再打开另一个。死区时间一般几微秒,但就是这几微秒,足以让电流波形产生畸变。
死区时间带来的问题:
- 电流过零点畸变——电流过零时,死区导致输出电压和理想值偏差,电流波形出现平顶
- 转矩脉动——电流畸变直接导致转矩波动,低速时尤其明显
- 位置误差——转矩脉动累积成位置误差,轨迹上表现为周期性抖动
怎么补偿?我常用的方法:
- 死区补偿算法——根据电流方向,在PWM占空比里加上补偿量。电流正方向时加一个死区时间的占空比,负方向时减一个
- 缩短死区时间——如果IGBT开关速度够快,死区可以从3μs缩到1μs。但别缩太狠,短路了可别怪我
- 用更快的开关器件——SiC MOSFET或GaN器件开关速度极快,死区可以缩到几百纳秒
实测经验:死区补偿不是万能的。电流方向检测不准时,补偿反而会引入更大的误差。我建议在电流环带宽较低的系统里用死区补偿,带宽高的系统里优先考虑缩短死区时间。
下面这张图,把电气噪声的四个来源和它们的影响路径串起来了。你看一眼就能明白,噪声是怎么一步步传到轨迹上的。
总结一下我的经验:电气噪声这东西,别指望一个方法全搞定。编码器噪声靠屏蔽和滤波,电流纹波靠提高PWM频率和加电抗,电源问题靠加大电容和星型接地,死区影响靠补偿算法。四个方向都照顾到了,轨迹抖动基本能压下去八成。