数据采集基础:传感器类型与选型、模拟信号与数字信号、采样定理与量化
做遥测系统这么多年,我最大的感触就是——数据采集是地基。地基没打好,后面再漂亮的算法、再炫酷的界面都是空中楼阁。今天咱们就聊聊数据采集最核心的几个概念。
传感器类型与选型
传感器说白了就是「把物理世界的信号变成电信号」的器件。我刚开始做项目时,总觉得传感器越贵越好,结果被现实狠狠教育了一回。
传感器按测量对象分,常见的有这么几类:
- 温度传感器:热电偶、热电阻(PT100)、半导体温度传感器(DS18B20)
- 压力传感器:压阻式、电容式、谐振式
- 加速度传感器:MEMS电容式、压电式
- 位移传感器:LVDT、光栅尺、霍尔效应
- 流量传感器:涡轮式、电磁式、超声波式
选型时我一般会问自己三个问题:
- 测量范围够不够? 别让信号超出量程,否则数据直接废了
- 精度和分辨率满足要求吗? 精度是「准不准」,分辨率是「细不细」
- 环境条件能扛住吗? 温度、湿度、振动、电磁干扰——这些都会影响传感器寿命
我的经验: 选传感器时,留出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,结果发现噪声比量化误差还大——白白浪费了分辨率。先评估你的信号噪声水平,再决定位数。
下面这张图,把整个数据采集的流程串起来了:
嗯,这里要注意一点:采样和量化是两个不同的步骤。采样是在时间轴上离散化,量化是在幅值轴上离散化。两者缺一不可。
我个人的习惯是:先确定信号带宽,再选采样率,最后定量化位数。顺序别搞反了。
避坑指南: 我曾经在一个遥测项目里,传感器输出信号有50mV的工频干扰。我直接接了ADC,结果量化后的数据全是噪声。后来加了一级低通滤波器,数据才干净。记住——信号调理和ADC是搭档,别让ADC孤军奋战。
好了,数据采集的基础就聊到这儿。这些概念看着简单,但每个坑我都踩过。你动手做项目时,多想想我今天说的这些,能省不少调试时间。