二、信号与采样:从连续世界到离散世界的桥梁
大家好,我是老张。今天咱们聊聊信号与采样。说实话,这是整个离散控制系统最基础、也最容易踩坑的地方。我当年刚入行时,就因为采样频率没选好,把一个电机控制项目搞砸了——嗯,那滋味可不好受。
2.1 模拟信号 vs 数字信号
先说说最基础的概念。模拟信号,就是连续变化的信号。比如你说话的声音,温度计里的水银柱,都是模拟信号。它的特点是:在时间和幅值上都是连续的。
数字信号呢?说白了就是一堆0和1。它只在离散的时间点上取值,而且幅值也被量化成了有限的等级。
我打个比方你就明白了:
- 模拟信号:像水龙头流出的水,连续不断
- 数字信号:像用杯子接水,一杯一杯的,每杯水量固定
你想想看,计算机只能处理数字信号。所以我们要把模拟信号变成数字信号,这个过程就叫模数转换(ADC)。
2.2 采样过程:把连续信号“切”成片段
采样,就是每隔一段时间,测量一次信号的值。这个时间间隔叫采样周期 T,它的倒数就是采样频率 f_s。
我在项目中遇到过这样一个问题:有个温度传感器,我每10秒采一次样。结果发现温度波动很大,但采样值看起来却很平稳。为什么?因为采样频率太低了,错过了中间的波动细节。
核心公式:
采样频率 f_s = 1 / T
其中 T 是采样周期(单位:秒)
2.3 量化与编码:把测量值变成数字
采样得到的是连续幅值,但计算机只能存离散值。所以我们要量化——把连续的幅值分成若干等级,每个等级对应一个数字。
举个例子:假设ADC是8位的,那它能把信号分成2^8=256个等级。每个等级对应一个二进制数,这就是编码。
| ADC位数 | 量化等级数 | 分辨率(满量程5V时) |
|---|---|---|
| 8位 | 256 | 19.53 mV |
| 10位 | 1024 | 4.88 mV |
| 12位 | 4096 | 1.22 mV |
| 16位 | 65536 | 0.076 mV |
这里有个坑:量化会产生量化误差。比如实际电压是2.501V,但量化等级只有2.50V和2.51V,那就会产生误差。我建议你选ADC时,位数至少比需求高2位,留点余量。
2.4 采样定理(奈奎斯特频率)
这是整个章节的重中之重。采样定理说:采样频率必须大于信号最高频率的2倍。这个临界值就叫奈奎斯特频率。
警告:采样频率 f_s 必须满足:
f_s > 2 × f_max
其中 f_max 是信号中的最高频率成分。
如果不满足,就会发生混叠现象。
我曾经在一个音频处理项目里,采样频率设成了44.1kHz,信号最高频率是20kHz。按理说44.1 > 2×20=40,没问题。但实际电路里有个22kHz的噪声,结果混叠到了2.1kHz,听起来特别刺耳。从那以后,我每次都会在ADC前加一个抗混叠滤波器。
2.5 混叠现象:采样不足的后果
混叠,说白了就是高频信号“伪装”成了低频信号。你想想看,如果采样频率不够,那些高频成分就会“折叠”回低频段,让你误以为存在不存在的信号。
举个直观的例子:
- 真实信号:100Hz的正弦波
- 采样频率:120Hz(不满足奈奎斯特条件)
- 采样结果:看起来像20Hz的信号
这就是混叠。我刚开始做控制系统时,就因为这个现象,把系统振荡误判成了低频扰动,调了好几天参数都没用。后来一查,原来是采样频率设低了。
避坑指南:
- 采样频率至少取信号最高频率的5~10倍,别卡着2倍
- ADC前一定要加低通滤波器(抗混叠滤波器)
- 实际项目中,我习惯用 f_s = 10 × f_max 作为起点
2.6 知识体系总览
下面这张图,是我自己画的采样与信号处理的核心逻辑。你看一遍,基本就明白整个流程了。
2.7 小结
这一章的内容,说白了就三件事:
- 采样:把连续信号变成离散时间信号
- 量化编码:把连续幅值变成离散数字
- 采样定理:采样频率必须大于信号最高频率的2倍
记住一句话:采样不足,一切白干。我见过太多工程师在这个问题上翻车了。你只要记住加抗混叠滤波器、采样频率留够余量,基本就不会出大问题。
个人经验总结:
我做了十几年控制系统,最深的体会就是:采样环节看似简单,但80%的疑难杂症都出在这里。每次调试新系统,我第一件事就是检查采样频率和抗混叠滤波器。这个习惯,帮我省了无数排查时间。
公众号:蓝海资料掘金营,微信deep3321