2、频谱分析基础理论:时域与频域、傅里叶变换概念、采样定理(奈奎斯特定理)

好,咱们正式开始第二讲。说实话,频谱分析这玩意儿,刚接触的时候我也觉得挺玄乎的。示波器上一条弯弯曲曲的波形,怎么就变成了一根根竖线了呢?别急,今天咱们就把这层窗户纸捅破。

2.1 时域与频域:看世界的两种方式

先说说时域。你打开示波器,看到的那条随时间变化的电压曲线,就是时域。横轴是时间,纵轴是电压。这是我们最熟悉的视角——信号长什么样,随时间怎么变,一目了然。

但问题来了。一个正弦波和一个方波,在时域里看起来完全不同。可它们都是由哪些频率成分组成的?哪个频率占主导?哪个是噪声?时域波形里,这些信息是混在一起的,你很难一眼看出来。

这时候,频域就派上用场了。频域看的是信号里包含了哪些频率,每个频率的幅度有多大。横轴是频率,纵轴是幅度。说白了,就是把信号拆开,看看它到底由哪些“纯音”拼起来的。

我打个比方。你听一首交响乐,时域就是录音的波形文件,记录了每个瞬间的声压变化。频域呢,就是乐谱——告诉你哪个时刻有哪些乐器在演奏,每个音符多响。你想想看,哪个更容易分析音乐的结构?显然是乐谱。

所以,时域和频域不是对立的,它们是同一个信号的两种描述方式。就像一个人,你可以看他的照片(时域),也可以看他的体检报告(频域)。信息不同,用途也不同。

2.2 傅里叶变换:连接时域与频域的桥梁

那怎么从时域变到频域呢?靠的就是傅里叶变换。

傅里叶老爷子在19世纪就发现了一个惊人的事实:任何周期信号,都可以分解成一系列不同频率、不同幅度、不同相位的正弦波之和。注意,是任何周期信号。方波、三角波、锯齿波,甚至你随便画个波形,只要它是周期的,就能拆。

公式长这样:

X(f) = ∫ x(t) · e^(-j2πft) dt

别被这个积分吓到。你只需要理解它的物理意义:傅里叶变换就是在做“相关性检测”。它拿一个已知频率的正弦波,去和你的信号做乘法再积分。如果匹配上了,结果就大;匹配不上,结果就小。扫过所有频率,你就得到了信号的频谱。

核心理解:傅里叶变换的本质,就是“找相似”。用不同频率的正弦波去试探你的信号,看它在哪个频率上最“像”正弦波。

我在项目中遇到过一件事。有一次调试一个音频采集板,发现录出来的声音总有“嗡嗡”声。时域波形看着挺干净,就是有点毛刺。我拿FFT(快速傅里叶变换,就是傅里叶变换的快速算法)一看,好家伙,50Hz和它的谐波上竖着几根大柱子。立马锁定——是工频干扰。加了个陷波滤波器,问题解决。如果没有频域分析,你光看时域波形,可能折腾半天也找不到根因。

2.3 采样定理:数字世界的“交通规则”

好,现在我们知道怎么把模拟信号变到频域了。但我们的MCU是数字的,它只能处理离散的采样点。这就引出了一个关键问题:采样频率得设多高,才能无失真地还原原始信号?

答案就是奈奎斯特定理,也叫采样定理。它说:采样频率必须大于信号最高频率的两倍

用公式表示:

fs > 2 * fmax

其中 fs 是采样频率,fmax 是信号中包含的最高频率成分。

为什么是两倍?我简单解释一下。采样其实是在用离散的点去“描”连续的波形。如果采样频率太低,一个周期内只采到一两个点,你根本不知道原始波形长什么样。更糟糕的是,高频信号会被“伪装”成低频信号,这就是混叠

注意:混叠一旦发生,是不可逆的。你无法从混叠后的数据中恢复出原始信号。所以,采样前的抗混叠滤波器(低通滤波器)是必须的,不是可选的。

我曾经吃过这个亏。刚做第一个ADC采集项目时,觉得采样率设高点就行了,没加抗混叠滤波器。结果采集50Hz的工频信号,采样率设了200Hz,按理说够了。但现场有高频噪声,混叠后变成了低频波动,数据完全没法用。后来老老实实加了一阶RC低通滤波,把截止频率设在80Hz,问题才解决。

所以,我建议你在设计频谱仪时,记住这几个要点:

  • 先确定你要分析的最高频率。比如你想看20kHz以内的音频,那fmax就是20kHz。
  • 采样率至少设到2.5倍以上。理论上是2倍,但工程上我习惯留余量,设到2.5倍甚至3倍。这样抗混叠滤波器的设计压力也小一些。
  • 抗混叠滤波器必须加。在ADC之前,用一个低通滤波器把高于fs/2的频率成分滤掉。这是硬性要求,不是锦上添花。
  • 采样点数决定频率分辨率。频率分辨率 = fs / N,其中N是采样点数。比如fs=48kHz,N=1024,那频率分辨率就是46.875Hz。你想分辨更细的频率,要么降低采样率,要么增加采样点数。

下面这个表格总结了不同应用场景下的典型参数,供你参考:

应用场景 最高频率 fmax 建议采样率 fs 典型采样点数 N 频率分辨率
音频分析 20 kHz 48 kHz 1024 46.9 Hz
振动监测 1 kHz 2.5 kHz 256 9.8 Hz
电力谐波 2.5 kHz (50次谐波) 6.4 kHz 128 50 Hz
低速传感器 100 Hz 250 Hz 64 3.9 Hz

2.4 小结与避坑指南

嗯,这一讲的内容就这些。总结一下:

  • 时域看波形,频域看成分。两者互补,缺一不可。
  • 傅里叶变换是把时域信号拆成频率成分的数学工具。在MCU里,我们用FFT(快速傅里叶变换)来实现。
  • 采样定理是数字信号处理的基石。采样率不够,混叠就会找上门。

避坑指南:

  • 千万别信“采样率刚好两倍就行”。工程上至少留20%的余量。
  • 抗混叠滤波器要放在ADC之前,不是之后。数字滤波救不了已经混叠的信号。
  • FFT的点数不一定是2的整数次幂,但MCU上的FFT库通常只支持2的幂次(如256、512、1024)。选点的时候注意一下。

下一讲,咱们就进入实战了——怎么在MCU上把FFT跑起来,以及怎么把频谱画到屏幕上。到时候我会带着你一步步搭代码,别错过。