电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析)
Cr:电机噪声之谐波分析(内附simulink中FFT分析的相关参数配置与解析) - iron2222 - 博客园 (cnblogs.com)
目录
正文
电机噪声
一开始我觉得,电机噪声不就是因为电机运转起来之后,转子不停的旋转引起的震动,因而产生的噪声。
后来证明我还是太嫩了,这只是从结果的角度去分析,而且只分析了人们肉眼可以看到的东西。
而且现在针对电机噪声的研究,大致可以分类两类:
- 针对电机自身的结构改来改去,比如极对数,沟槽数等
- 针对电机的控制策略角度去分析
电机的控制策略,无外乎是控制算法和驱动硬件支持两个。这里只从控制算法角度去说,硬件角度留到以后有机会再说。
谐波的产生
下面是PMSM电机FOC控制的框图:
而我们谐波就是在:PWM变频器中功率器件的开关动作所产生的高频谐波电压会在电机绕组中产生高频谐波电流。高频谐波电流会影响电机的谐波磁场,从而导致电机产生高频振动噪声。
也就是图片中,PMSM与三相逆变桥之间那块。
这下就好说了,我们想办法抑制谐波电压的产生不就行了,可以减少谐波电压的幅值,或者让谐波不集中出现。
什么是谐波?
对了,好像还没说,什么是谐波?
百度百科上说:频率等于基本频率的整倍数的正弦波分量称为谐波。
还有人说:谐波是指对周期性非正弦交流量进行傅里叶级数分解所得到的大于基波频率整数倍的各次分量,通常称为高次谐波。
用人话就是说,按咱们以前的理解正弦波形是这样子的:
但实际的我们产生用于驱动电机的电压正弦波是这样子的:
虽然从整体看仍然是正弦波的样子,但实际上它是由很多正弦波合成的一个不那么规则的正弦波。
而我们搞控制的当然想要理想的波形啊,可不能要这种东西,所以第一步我们就要先把这些谐波给找出来。
这就是这篇博文的首要目的。
傅里叶分析
提到傅里叶,大家都不陌生。
维基百科里定义:傅里叶变换是一种线性积分变换,用于信号在时域(或空域)和频域之间的变换。
在时域上看不清楚的信号,可以在频域上看的清清楚楚。
傅里叶变换本质其实就是谐波分析,这说明谐波也是正弦波,只是每个谐波都具有不同的频率,幅度与相角。
谐波可以区分为偶次谐波与奇次谐波,如第3、5、7次编号的为奇次谐波,而2、4、6、8等为偶次谐波。
所以说,傅里叶变化就是为谐波分析而生的。
既然目标明确,现在就是选择使用何种工具对咱们产生的波形进行谐波分析了。
matlab中的FFT分析工具
simulink中FFT的实现方式主要有两种:
- 1.将仿真数据保存至workspace后,自行编写程序进行FFT分析。此类方法适合有客制化需求的FFT分析,需要较好的编程功底。
- 2.采用simulink中内置的仿真分析工具FFT Analysis,此类方法简单快捷,且内置工具功能全面,较一般自行编写的FFT程序而言具有更好的操作性,故更推荐大部分人使用此种方法进行FFT分析。
第一步:打开你要进行分析的模型
打开你的模型之后,拖入一个powergui模块,该模块所在地址直接搜索这个名字就行。
这里使用的是我正在做的一个有源滤波器的仿真模型,在这里充当一个例子,powergui模块就是画线那个。
第二步:打开这个模块,设置相关参数
首先设置Simulation type为Discrete,也就是分析的对象是离散的数据。
下面是采样的时间,可以理解成采样频率,这里无特殊要求不用管它,默认就行。
第三步:进入FFT分析工具
这就是FFT快速傅里叶分析的工具界面
我们把其分为四个部分分别进行讲解。
第1、2部分
第1部分,就是你要分析的波形名字Name(改名字与你模型中使用的示波器保存的名字一致)。
第2部分,number就是你要分析的波形输入是几个
对了,在分析之前别忘了把示波器采集到的数据保存在工作区,步骤如下:
打开示波器,按这个步骤进行设置,把采样到的数据,保存在工作区。这里的变量名称可以自己随便设置,和上面保持一致就行。
第3、4部分
参数设置:
-
Start time就是分析的开始时间
-
Number of cycles指的是采集的波形中,你要进行FFT分析的波形是几个,这里设置的是1个,也就是红色的那段波形。
-
Fundamental frequency (Hz)基础频率,就是你想要的用来充当基准的频率,也就是理想波形的频率
-
Max frequency (Hz)最大频率,就是左边图中横坐标最大值,也是你要分析的谐波包括多少频率在内。
-
Max frequency for THD computation这里有两个选项
用来计算THD时,要算多少频宽内的谐波,什么是THD后面再说,这里设置成Same as Max frequency就行,而另一个选项是指采样频率的一半(奈奎斯特频率),也就是一开始进入powergui的设置的那个参数
-
Display style指的是左边显示的是什么类型的
有柱形图,还有列表。
-
Frequency axis指的是横坐标是直接显示频率,还是基础频率的倍数。
设置完这些参数,点击Display就可以了。
THD
百度百科定义:总谐波失真(THD)指音频信号源通过功率放大器时,由于非线性元件所引起的输出信号比输入信号多出的额外谐波成分。谐波失真是由于系统不是完全线性造成的,我们用新增加总谐波成份的均方根与原来信号有效值的百分比来表示。
在我看来:THD参数代表意义,THD越低越接近正弦波,就说明谐波含量越少,输出的波形质量就越高
计算公式如下:
以上便是针对谐波,使用matlab的FFT工具进行分析的大致步骤。
P.S:一些小tips
1.关于FFT补充细节
FFT是离散傅里叶变换的快速算法
做FFT分析时,幅值大小与FFT选择的点数有关,但不影响分析结果。在IFFT时已经做了处理。要得到真实的振幅值的大小,只要将得到的变换后结果乘以2除以N即可。
若fs=100Hz,Nyquist频率为fs/2=50Hz。整个频谱图是以Nyquist频率为对称轴的。并且可以明显识别出信号中含有两种频率成分:15Hz和40Hz。由此可以知道FFT变换数据的对称性。因此用FFT对信号做谱分析,只需考察0~Nyquist频率范围内的福频特性。若没有给出采样频率和采样间隔,则分析通常对归一化频率0~1进行。另外,振幅的大小与所用采样点数有关,采用128点和1024点的相同频率的振幅是有不同的表现值,但在同一幅图中,40Hz与15Hz振动幅值之比均为4:1,与真实振幅0.5:2是一致的。为了与真实振幅对应,需要将变换后结果乘以2除以N。
对信号进行频谱分析时,数据样本应有足够的长度,一般FFT程序中所用数据点数与原含有信号数据点数相同,这样的频谱图具有较高的质量,可减小因补零或截断而产生的影响。
1.示波器测量参数的平均值算法的物理意义是什么?平均值是否等于FFT的直流(0Hz)的大小
平均值对于周期信号来说,是直流分量,其等于0hz fft,但是对于非周期信号来说,平均值不等于0hz大小,物理意义上为积分。
含直流成分的正弦信号,只有整周期采样时才能在傅里叶变换时得到0频分量刚好是直流分量吧,因为0频分量即是所有信号点求和,整周期正弦信号求和为0,相当于将所有项的直流成分求和,若再除以点数,即是每一点的直流分量。同理,将信号点减去均值的方法,最好也是当信号是整周期采样时才准确吧?比如如果采一个半周期的信号,得到的均值就不是直流分量了。
去均值这个只能去平稳信号的直流分量,象你的线性信号,它不是一个平稳信号,所以很多你看到的结论都是不适用的,从你的结果来看,你要看线性信号的频谱,不严格地想一下,你的线性信号根本没有周期性,也就是所周期是无穷远,所以所有的信号都可以认为是直流分量