振动信号的 FFT 分析

信息处理 matlab fft 过滤器
2022-02-18 10:49:00

我正在平衡一个空气主轴。对于不平衡分析,我使用加速度计(NI 设备)。我有来自加速度计的电压信号,对应于主轴在特定频率(rpm)下的振动,保存在 Excel 文件中。为了分析这个振动信号的不平衡,我使用了fftMATLAB 中的函数。的采样频率进行采样我正在使用文档中给出的相同示例代码。fft的结果如图所示。100,000 Hzfft

FFT 图.

当前信号由各种频率的信号组成。我怎样才能过滤这个结果,以便只获得频率等于我的旋转频率()的信号。我需要这个信号通过与转速计信号进行比较来计算振动相位和幅度。我的 MATLAB 代码如下所示:40 Hz

%For vibration analysis of signal without any trial mass.

filename = '2400RPM.xlsx';
sheet = 1;
xlRange = 'C40:C516039';
x = xlsread(filename,sheet,xlRange);
T=1/100000;
L=length(x);
Fs=1/T;
t=(0:L-1)*T;
Y = fft(x);
mag1 = abs(Y/L);
mag = mag1(1:L/2+1);
mag(2:end-1) = 2*mag(2:end-1);
ph1 = rad2deg(Y/L);
ph = ph1(1:L/2+1);
ph(2:end-1) = 2*ph(2:end-1);
f=Fs*(0:(L/2))/L;

%PLOTTING RESULTS
%--------------------------------------

subplot(2,2,[1,2])
plot(t,x);
title('Vibration Signal: 2400RPM');
xlabel('Time (seconds)');
ylabel('Amplitude (voltage)');

subplot(2,2,3)
plot(f,mag);
title('Magnituge Plot');
xlabel('Frequency (Hz)');
ylabel('Amplitude');

subplot(2,2,4)
plot(f,ph);
title('Phase Plot');
xlabel('Frequency (Hz)');
ylabel('Phase (degree)');

任何帮助深表感谢。

2个回答

注意:(更新注意采样率和所需频率)您的帖子描述了以 100,000 Hz 采样率提取 40 Hz 信号。如果您在应用从指数平均器派生的二阶调谐谐振器之前将粗略的低通滤波和抽取应用到较低的速率,您的滤波实现将显着更容易(并且更有效),如下面详细所示。请查看这篇文章Fast Integer 8 Hz 2nd Order LP for Microcontroller我建议抽取到 200 Hz 的采样率,即抽取 500(在 5-10-10 等阶段)。

抽取后,考虑使用指数平均器实现,按照这篇文章将低通滤波器转换为带通,可调谐到任何频率,包括您想要的 40Hz:

二阶陷波滤波器的传递函数

上面帖子中的陷波滤波器和指数平均器之间的区别在于,指数平均器具有以下传递函数:

H(z)=αzz+α1

我想你会看到相似之处,并能够按照上面链接的帖子中的过程进行操作。下面显示了作为“指数平均器”或低通滤波器的实现图。这将在 DC 创建一个最大值,并且需要转换为类似于链接帖子中所做的带通实现。

指数平均器

更新:在我自己进行转型的过程中,我得出了以下结果:

H(z)=Kz2z22βcosωnz+β2

在哪里:

(更新,为 K 添加闭式方程)

K 是一个归一化常数,它取决于,如下所示:ωnα

K=αβ22βcos(2ωn)+1

ωn : 中心归一化弧度频率,在 0 和2π

α:带宽常数,随着接近 0,带宽变得更紧。α

β=1α

作为调谐二阶谐振器的最终实现如下所示。

调谐二阶谐振器

下面是在中心频率处具有不同带宽的两个示例。第一个图是,第二个图是ωn=π/3α=0.1α=0.001

第一个频率响应示例

第二个频率响应示例

请注意,第二个滤波器将具有非常长的延迟,这可以通过通带的非常陡峭的相位斜率来证明(群延迟 =),这是任何紧带宽滤波器所要求的。这也意味着相对较长的收敛时间。鉴于能够独立调整带宽和中心频率,您可以设想如何为某些应用启用优化实施,这些应用最初是宽带以实现快速收敛,同时带宽随着时间的推移而收紧,以最大限度地提高感兴趣信号的 SNR。此结构还可用作带通环路滤波器或用于带通采样的带通 Sigma Delta 实现。dϕ/dω

下面是指数平均器的等效形式,它只需要一个乘数,正如 Rick Lyons 在下面链接的站点上所展示的那样。在这里,我选择了与 Rick 所做的相似的 \alpha,因为是一个接近 0 的小数字,以使带宽更紧(这与我上面链接的其他帖子形成对比,用于我使用的陷波滤波器实现接近 1 的是一个更紧的带宽,因此在这两个帖子之间作为接近 1 的数字,公式会更清晰,因为它消除了我使用αααα1ααβ正如我在上面所做的那样,没有公式显得过于繁琐。

https://www.dsprelated.com/showarticle/182.php

在此处输入图像描述

正如 Dan Boschen 所指出的那样,根据您的问题描述,我提出了一个更简单的解决方案:“当前信号由各种频率的信号组成 [...] 我如何过滤此结果以便仅获得频率等于我的旋转频率[...]?”

在这里,我了解您正在尝试获取空气主轴 RPM ,通过将它们与转速计进行比较来验证您的结果

首先,您应该计算空气主轴可能的最大 RPM,应用安全裕度并乘以 2 以获得更合适的采样频率(参见奈奎斯特速率)。

采样频率 [Hz] = MaxRPM_inHz * 2 * safety_factor

根据您使用的 ADC,您将需要应用模拟低通滤波器来消除高于预期 MaxRPM_inHz 的频率,以避免混叠

仅通过这样做,您就可以消除很多您不感兴趣的高频噪声

现在您需要查看频域以确定仅通过获取最大幅度是否足以识别 40Hz(或其他)的旋转频率。

如果您需要进一步过滤,则需要考虑噪声源

  • 光谱泄漏(您可以应用窗口)
  • ADC 信噪比
  • 低频振动(使用一些柔软的材料放置加速度计)

我希望这些信息有所帮助,佩德罗