数据采集基础:传感器类型与选型、模拟信号与数字信号、采样定理与量化

做遥测系统这么多年,我最大的感触就是——数据采集是地基。地基没打好,后面再漂亮的算法、再炫酷的界面都是空中楼阁。今天咱们就聊聊数据采集最核心的几个概念。

传感器类型与选型

传感器说白了就是「把物理世界的信号变成电信号」的器件。我刚开始做项目时,总觉得传感器越贵越好,结果被现实狠狠教育了一回。

传感器按测量对象分,常见的有这么几类:

  • 温度传感器:热电偶、热电阻(PT100)、半导体温度传感器(DS18B20)
  • 压力传感器:压阻式、电容式、谐振式
  • 加速度传感器:MEMS电容式、压电式
  • 位移传感器:LVDT、光栅尺、霍尔效应
  • 流量传感器:涡轮式、电磁式、超声波式

选型时我一般会问自己三个问题:

  1. 测量范围够不够? 别让信号超出量程,否则数据直接废了
  2. 精度和分辨率满足要求吗? 精度是「准不准」,分辨率是「细不细」
  3. 环境条件能扛住吗? 温度、湿度、振动、电磁干扰——这些都会影响传感器寿命

我的经验: 选传感器时,留出20%-30%的余量。比如你测的温度最高100℃,那就选量程到130℃的传感器。别问我为什么,问就是吃过亏。

模拟信号与数字信号

传感器输出的信号,要么是模拟的,要么是数字的。这两者的区别,我打个比方你就明白了:

模拟信号就像水龙头出来的水流——连续、平滑、可以有无穷多个值。温度、压力、声音这些自然界的物理量,本质上都是模拟的。

数字信号就像开关——要么开(1),要么关(0)。它不连续,但抗干扰能力强。

实际项目中,我们经常遇到这样的场景:传感器输出的是模拟信号(比如0-10V电压或4-20mA电流),但我们的单片机只能处理数字信号。怎么办?

中间需要一个「模数转换器」(ADC)。ADC把连续的模拟电压,变成一串离散的数字码。

关键点: 模拟信号是连续的,数字信号是离散的。从模拟到数字,必然会有信息损失——我们的目标是把损失控制在可接受范围内。

采样定理与量化

这里有个经典问题:采样频率到底设多少才够?

答案是——奈奎斯特采样定理:采样频率必须大于信号最高频率的两倍。

用公式说就是:fs > 2 * fmax

举个例子:你要采集一个50Hz的交流电压信号,那采样频率至少得100Hz以上。我一般会取3-5倍,留点安全余量。

为什么会这样?

采样频率不够,就会出现「混叠」现象——高频信号被误认为低频信号。我在一个电机振动监测项目里就遇到过这问题,当时采样率设低了,频谱图上出现了根本不存在的低频分量,排查了好几天才发现是混叠。

量化呢,就是把采样后的电压值,用有限位数的二进制数表示。

比如一个12位的ADC,它的输出范围是0-4095。如果参考电压是5V,那么每个量化步长就是:

5V / 4096 ≈ 1.22 mV

量化位数越高,分辨率越细,但成本也越高。8位、10位、12位、16位、24位——选哪个?

位数 量化级数 典型应用
8位 256 简单开关量、低速控制
10位 1024 Arduino、消费电子
12位 4096 工业遥测、电机控制
16位 65536 精密测量、音频
24位 16777216 地震监测、高精度传感器

注意: 量化位数不是越高越好。我曾经在一个项目里用了24位ADC,结果发现噪声比量化误差还大——白白浪费了分辨率。先评估你的信号噪声水平,再决定位数。

下面这张图,把整个数据采集的流程串起来了:

数据采集流程 物理量 温度/压力/振动 传感器 模拟信号输出 信号调理 放大/滤波/隔离 ADC 采样+量化 ↓ 采样定理决定采样频率,量化位数决定分辨率 ↓ 数字信号 二进制数据流 数据处理 滤波/校准/计算 存储/显示 数据库/界面 模拟域 → 数字域 → 应用域

嗯,这里要注意一点:采样和量化是两个不同的步骤。采样是在时间轴上离散化,量化是在幅值轴上离散化。两者缺一不可。

我个人的习惯是:先确定信号带宽,再选采样率,最后定量化位数。顺序别搞反了。

避坑指南: 我曾经在一个遥测项目里,传感器输出信号有50mV的工频干扰。我直接接了ADC,结果量化后的数据全是噪声。后来加了一级低通滤波器,数据才干净。记住——信号调理和ADC是搭档,别让ADC孤军奋战。

好了,数据采集的基础就聊到这儿。这些概念看着简单,但每个坑我都踩过。你动手做项目时,多想想我今天说的这些,能省不少调试时间。


专注资料整理