电机控制杂谈(26)——电机驱动系统的编码器的测速噪声
1.引言
之前想过在仿真里模拟编码器,但是一直没有去做,最近刚好有任务需求,前来学习一下。编码器的分辨率较低的话,容易产生较大的测速噪声,本篇内容就来看看如何确定编码器产生的噪声频率是多少,并且使用简单的方法抑制噪声的不良影响。
2.编码器噪声分析
参考文献:[1]陈扬洋.永磁交流伺服系统参数免调试策略研究[D].哈尔滨工业大学,2021.DOI:10.27061/d.cnki.ghgdu.2021.005397.
编码器会产生特定频率的噪声,这个噪声与控制频率、电机转速、编码器线数相关。
以编码器线数为2500的编码器为例子(暂且不考虑四倍频细化。反正分析方法是完全同理的,知道原理即可。),电机转一圈会产生2500个脉冲,假如我的转速环控制频率是1kHz(转速环控制周期0.001s),电机速度是2000r/min=33.333r/s。那么一个控制器周期内,我电机转的圈数就是33.333r/s*0.001s=0.033333r。
这样一来:
控制器在相邻控制周期内测量到的脉冲数(理论值)就是0.033333r*2500=83.3325
但是!控制器只能获取到整数个脉冲,不会得到小数,所以控制器在相邻控制周期内测量到的脉冲数(实际值)就是83。
好的,现在发现每个控制周期会少测量到0.3325个脉冲,这部分损失的小脉冲数会不断叠加,直到溢出1。例如第一个周期测到的脉冲数为83,丢掉的脉冲为0.3325个脉冲;第二个周期测到的脉冲数仍为83,但丢掉的脉冲数累计叠加到0.6650个脉冲;第三个周期测到的脉冲数仍为83,丢掉的脉冲数累计叠加到0.9975个脉冲;再到第四个周期的时候,小脉冲数要破1了,所以这时候测到的脉冲数为84(=83+1),丢掉的脉冲数累计叠加到0.3300(=0.9975+0.3325-1)个脉冲。
这样一来,这个电机在第四个周期测量得到的速度就会不同与前三个周期,进而造成速度波动。
关于上文所述的小脉冲积累现象,在参考文献中已有详细表述,我这里粘贴以下论文的内容。
同时论文中还推导了测速噪声的表达式:
有兴趣的可以自行搜论文,我下面就直接仿真验证。
3. 仿真验证测速噪声频率
为了模拟测速噪声,首先要搭建能够模拟编码器输出的位置信号。
我这里设置编码器位数为2500,即转子转一周,转子位置从0到2pi,编码器位数输出0到2500。当然了,实际的电机中,转子位置为0度,对的可不是编码器输出为0的地方。我这里只是简单模拟,对于验证效果而言,足够了。下面是编码器输出信号的放大图,编码器输出的信号只能是整数,不能有小数。
接着进行仿真验证。
3.1 2000r/min条件下的验证
先进行速度2000r/min(=33.333r/s),2.5kHz转速环控制频率(转速环控制周期0.0004s),编码器线数2500情况下的验证。
控制器在相邻控制周期内测量到的脉冲数(理论值)就是33.333r/s*0.0004s*2500=333.33。
那么每个控制周期内丢失的小脉冲数就是0.33333333(3无线循环)。
根据文章中的测速噪声频率表达式,可得到噪声频率=0.3333333333*2.5kHz转速环控制频率=833.33333Hz。仿真中的电机波形如下(由于速度噪声比较大,所以电流/转矩脉动也很大):
速度的FFT分析结果如下,转速噪声幅值最大的频率为833.3Hz,与计算结果一致。
我仿真的测速部分是会加低通滤波器(LPF)进行滤波的,我现在把LPF去掉看看不滤波的效果。从下图可以看到,转速不加LPF的话,电机转矩脉动更大,且速度波动更大。
从下图的速度FFT分析来看,不加LPF后,控制器得到的速度数值中会存在更为明显的833.3Hz噪声,这与理论计算结果一致。
3.2 1000r/min条件下的验证
先进行速度1000r/min(=16.666667r/s),2.5kHz转速环控制频率(转速环控制周期0.0004s),编码器线数2500情况下的验证。
控制器在相邻控制周期内测量到的脉冲数(理论值)就是33.333r/s*0.0004s*2500=166.66666667。
那么每个控制周期内丢失的小脉冲数就是0. 66666666(6无限循环)。
根据文章中的测速噪声频率表达式,可得到噪声频率=(1-0.66666666)*2.5kHz转速环控制频率=833.33333Hz。这里一定要注意哈,当小脉冲数大于0.5时,需要拿1减去小脉冲再乘以速度环控制频率。
仿真中的电机波形如下:
可以看到,1000r/min条件下的最大测速噪声对应的频率仍为833.33Hz,符合理论计算。
3.3 1210r/min条件下的验证
先进行速度1210r/min(=20.166666667r/s),2.5kHz转速环控制频率(转速环控制周期0.0004s),编码器线数2500情况下的验证。
控制器在相邻控制周期内测量到的脉冲数(理论值)就是20.166666667r/s*0.0004s*2500=20.166666667。
那么每个控制周期内丢失的小脉冲数就是0. 166666666(6无限循环)。
根据文章中的测速噪声频率表达式,可得到噪声频率=0. 166666667*2.5kHz转速环控制频率=416.67Hz。
仿真中的电机波形如下:
可以看到,1210r/min条件下的最大测速噪声对应的频率为416.7Hz,符合理论计算。
4.测速噪声抑制方法
4.1高分辨率的编码器
编码器分辨率提高,有助于降低测速噪声。下面展示了不同编码器线数的仿真波形。
三相电流、转矩、转速波形(编码器位数2500)
三相电流、转矩、转速波形(编码器位数5000)
三相电流、转矩、转速波形(编码器位数10000)
4.2采用速度观测器
不再使用原有的速度计算方法(即给计算的速度加上LPF进行滤波),而是采用速度观测器,例如基于扩张状态观测器的速度观测器等等。
仿真对比如下。
从下图可以发现,采用基于扩张状态观测器的速度观测器后,电机的三相电流、转矩脉动得到大幅抑制。基于扩张状态观测器的速度观测器对应的电流THD为2.86%,速度无滤波对应的电流THD为16.97%,速度采用LPF(LPF截止频率为500Hz)对应的电流THD为9.36%。
三相电流、转矩、转速波形(速度无滤波)
三相电流、转矩、转速波形(速度采用LPF)
三相电流、转矩、转速波形(基于扩张状态观测器的速度观测器)
相电流FFT分析(速度无滤波)
相电流FFT分析(速度采用LPF)
相电流FFT分析(基于扩张状态观测器的速度观测器)
4.3采用先进的测速方法
这里可搜一下相关参考文献内容。
5.总结
本文对编码器产生的测速噪声进行了分析,并通过仿真验证不同转速条件下对应的测速噪声频率。其次简单阐述了如何抑制测速噪声。