3. 传感器数据采集基础

在多传感器时序与同步工程中,采集环节决定了后续所有处理的上限。无论后端做多么精细的时间对齐与融合,如果采样、量化或触发策略本身存在缺陷,数据在进入系统的那一刻就已经失真。本节从采样定理、量化、触发方式、连续采集与事件采集,以及数据流与数据包结构五个方面,建立采集链路的完整认知。

一、采样定理:把连续世界离散化的底线

奈奎斯特—香农采样定理指出:若信号最高频率为 f_max,则采样频率 f_s 必须大于 2·f_max,才能无混叠地重建原信号。工程中通常取 2.5~5 倍甚至更高,以留出抗混叠滤波器过渡带余量。

需要特别注意的是,采样定理约束的是信号带宽,而不是传感器标称量程。例如一个振动传感器量程 ±16g,但其有效信号可能集中在 0~1kHz,此时按 2kHz 采样即可;若机械冲击含有 5kHz 分量,则必须提高采样率或先做模拟低通滤波。混叠一旦发生,高频成分会“折叠”到低频,无法通过数字滤波恢复。

关键结论:抗混叠滤波必须在 ADC 之前完成,数字域无法补救已经混叠的信号。

二、量化:幅度离散化与有效位数

量化把连续幅度映射到有限码字。对 N 位 ADC、满量程 V_FS,量化步长为 LSB = V_FS / 2^N,理想量化信噪比约为 SNR ≈ 6.02N + 1.76 dB。这意味着 12 位约 74dB,16 位约 98dB,24 位约 146dB。

实际系统中,有效位数(ENOB)往往低于标称位数,原因包括:参考电压噪声、前端驱动噪声、电源纹波、时钟抖动、PCB 布局耦合等。评估采集质量时,应关注 ENOB、无噪声码分辨率与总谐波失真,而不是只看“多少位”。

三、触发方式:决定“何时采”

触发方式决定了采样时刻与外部事件的关系,常见类型如下:

  • 自由运行(Free Run):ADC 按固定周期连续转换,适合稳态监测。
  • 软件触发:由 CPU 或上位机发起单次或批量采集,灵活但抖动大。
  • 硬件边沿触发:外部电平跳变启动采集,延迟低、抖动小。
  • 阈值/窗口触发:信号超过设定阈值时启动,常用于瞬态捕获。
  • 同步触发:多设备共享同一触发源与时钟,是分布式同步采集的基础。

触发抖动(Trigger Jitter)直接转化为时间戳误差。对要求微秒级同步的系统,应优先使用硬件触发与共享时钟,而非软件轮询。

四、连续采集与事件采集

连续采集以恒定速率持续输出数据,强调吞吐与稳定性,适合温度、姿态、振动监测等场景。事件采集只在满足条件时记录数据,强调存储效率与关键片段保留,适合冲击、故障、异常检测。

工程中常采用“环形缓冲 + 事件触发”的混合模式:数据持续写入环形缓冲区,触发发生时冻结触发点前后各一段数据,既保证不丢事件前因,又避免长期存储海量无效数据。

五、数据流与数据包基本结构

采集数据从传感器到应用层,通常经历:传感器 → 信号调理 → ADC → 时间戳 → 打包 → 传输 → 解析。数据包结构决定了时间信息、通道信息与有效载荷能否被正确还原。

一个典型的多传感器数据包包含:帧头、版本、设备 ID、通道位图、时间戳、采样率、样本数、有效载荷、校验与帧尾。时间戳应尽量靠近采样时刻生成,避免在传输或软件队列中补打。

struct SensorPacket {
  uint16_t magic;        // 帧头 0xA55A
  uint8_t  version;      // 协议版本
  uint8_t  dev_id;       // 设备编号
  uint32_t ch_mask;      // 通道位图
  uint64_t timestamp_ns; // 采样时刻
  uint32_t sample_rate;  // 采样率 Hz
  uint16_t sample_count; // 样本数
  int16_t  payload[];    // 有效载荷
  uint16_t crc16;        // 校验
};

下面用一张结构图展示从物理量到数据包的完整采集链路与关键参数位置。

传感器采集链路与数据包结构 物理量 温度/振动/姿态 信号调理 放大/滤波 抗混叠滤波 f_c < f_s/2 ADC 采样 f_s / N 位 时间戳 采样时刻 打包 数据包 触发方式 自由运行 固定周期 软件触发 灵活/抖动大 硬件边沿 低抖动 阈值/窗口 瞬态捕获 同步触发 共享时钟/多设备 数据包结构 帧头 magic 版本 ver 设备ID dev_id 通道位图 ch_mask 时间戳 timestamp_ns 采样率 sample_rate 样本数 count 有效载荷 payload 校验 crc16 时间戳应尽量靠近采样时刻生成,避免在传输或软件队列中补打

六、典型场景与误区复盘

以电机振动监测为例:加速度传感器带宽 10kHz,若按 20kHz 采样,理论上满足奈奎斯特,但抗混叠滤波器在 10kHz 处衰减不足,仍会有高频噪声折叠。正确做法是选择截止频率 8kHz、过渡带陡峭的模拟滤波器,并将采样率提高到 25.6kHz 或 51.2kHz。

常见误区包括:

  • 只看 ADC 位数,忽略 ENOB 与前端噪声,导致有效分辨率远低于预期。
  • 用软件轮询代替硬件触发,造成多通道时间戳抖动达毫秒级。
  • 在数据包中只记录“接收时间”,丢失真实采样时刻,后续无法做精确对齐。
  • 连续采集不做环形缓冲,事件发生时已经丢失触发前的关键数据。
建议在采集端就统一时间基准与数据包格式,并在驱动层完成时间戳打标,为后续多传感器同步预留精度空间。
采集要素 关键参数 典型取值/做法 主要影响
采样 f_s、抗混叠截止频率 f_s ≥ 2.5·f_max 混叠、频率保真
量化 位数、ENOB、LSB 16 位 / ENOB≥14 幅度分辨率、动态范围
触发 触发源、抖动 硬件边沿 + 共享时钟 时间戳精度、同步性
采集模式 连续/事件/混合 环形缓冲 + 事件冻结 存储效率、事件完整性
数据包 时间戳、通道位图、CRC 采样时刻打标 可解析性、可对齐性

采集基础决定了时序系统的“地基”。只有在采样、量化、触发与打包四个环节都做到参数明确、时间可追溯,后续的多传感器对齐与融合才有可靠的数据支撑。