二、信号与采样:从连续世界到离散世界的桥梁

大家好,我是老张。今天咱们聊聊信号与采样。说实话,这是整个离散控制系统最基础、也最容易踩坑的地方。我当年刚入行时,就因为采样频率没选好,把一个电机控制项目搞砸了——嗯,那滋味可不好受。

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 知识体系总览

下面这张图,是我自己画的采样与信号处理的核心逻辑。你看一遍,基本就明白整个流程了。

信号与采样知识体系 模拟信号 连续时间·连续幅值 采样 离散时间·连续幅值 量化与编码 离散时间·离散幅值 数字信号 0和1的序列 关键条件:采样定理 f_s > 2 × f_max 不满足 → 混叠现象 解决方案:抗混叠滤波器 混叠:高频信号伪装成低频信号 实践建议 • f_s = 5~10倍 f_max • 必须加抗混叠滤波器 • ADC位数留2位余量

2.7 小结

这一章的内容,说白了就三件事:

  1. 采样:把连续信号变成离散时间信号
  2. 量化编码:把连续幅值变成离散数字
  3. 采样定理:采样频率必须大于信号最高频率的2倍

记住一句话:采样不足,一切白干。我见过太多工程师在这个问题上翻车了。你只要记住加抗混叠滤波器、采样频率留够余量,基本就不会出大问题。

个人经验总结:

我做了十几年控制系统,最深的体会就是:采样环节看似简单,但80%的疑难杂症都出在这里。每次调试新系统,我第一件事就是检查采样频率和抗混叠滤波器。这个习惯,帮我省了无数排查时间。


公众号:蓝海资料掘金营,微信deep3321