4、数据采集与预处理:传感器数据采集方法、采样率与分辨率选择、数据格式与存储、数据清洗基础(去噪、滤波)

TinyML振动检测系统的性能上限,在数据采集与预处理阶段就已经被决定。传感器输出的原始信号质量、采样策略的合理性以及数据清洗的彻底程度,直接决定了后续特征提取、模型训练与边缘推理的可靠性。本章将围绕振动传感器数据从物理世界到数字特征的完整链路,系统讲解采集方法、参数选择、存储规范与清洗技术,帮助你在项目启动阶段就建立正确的数据工程基础。

TinyML振动检测数据采集与预处理工程链路 物理感知层 加速度计/陀螺仪 量程·灵敏度·带宽 安装耦合方式 采样与量化层 采样率 fs 分辨率/位深 抗混叠滤波 数据组织层 CSV/二进制/JSON 时间戳·通道管理 分片与压缩 信号清洗层 去均值·去趋势 低通/带通滤波 异常值剔除 关键参数决策点 ① 采样率 ≥ 2×最高关注频率(工程上取5~10倍) ② 分辨率:12位≈±2g量程时分辨率0.98mg;16位≈0.061mg ③ 存储带宽:100Hz×3轴×2字节 = 600B/s → 1小时约2.1MB 原始信号 含噪声·趋势项·尖峰 预处理后 零均值·带限·干净 特征提取 时域/频域/统计特征 TinyML推理 异常分类·置信度 TP1: 原始信号检查 TP2: 清洗效果验证

4.1 传感器数据采集方法:从物理振动到数字信号

振动检测的核心传感器通常采用MEMS加速度计(如ADXL345、MPU6050、LSM6DS3)或压电式加速度计。在TinyML场景下,MEMS器件因其低功耗、小体积、数字接口(I2C/SPI)而成为首选。采集方法的关键在于理解传感器的工作模式与数据输出机制。加速度计输出的是比力(specific force),即传感器感受到的加速度与重力加速度的矢量和。在静态放置时,输出为1g(约9.8m/s²)指向地心;在振动工况下,输出为重力分量与动态振动分量的叠加。

采集方法分为轮询(Polling)与中断驱动(Interrupt-driven)两种。轮询方式简单但浪费CPU资源,适合低频采样(<50Hz);中断驱动方式通过传感器内置的FIFO缓冲区或运动检测中断唤醒MCU,适合高频采样与低功耗场景。对于振动检测,推荐使用FIFO模式:传感器以固定采样率连续采集数据并存入内部FIFO,MCU在FIFO半满或满时一次性读取批量数据,既保证采样均匀性,又降低唤醒频率。

工程要点:安装耦合方式直接影响信号保真度。使用螺丝刚性固定时,谐振频率可达10kHz以上;使用双面胶或磁吸安装时,有效带宽会降至1-2kHz,且可能引入额外共振。在TinyML振动检测中,若目标故障频率在500Hz以下,磁吸安装尚可接受;若需检测轴承故障的高频成分(2-10kHz),必须采用螺纹或胶粘刚性连接。

4.2 采样率与分辨率选择:奈奎斯特之外的工程考量

采样率的选择遵循奈奎斯特采样定理:采样率必须大于信号最高频率成分的两倍。但在工程实践中,直接以2倍频率采样会导致频谱混叠边缘效应,且数字滤波器的过渡带需要额外带宽。因此,TinyML振动检测的采样率通常设置为最高关注频率的5~10倍。例如,要分析电机转速为3000RPM(基频50Hz)的振动信号,关注其1倍频到10倍频(50~500Hz),则采样率应设为2.5kHz~5kHz。若使用更高采样率(如10kHz),虽然数据量增大,但能保留更多高频信息,为后续特征提取提供余量。

分辨率(位深)决定了信号的动态范围与最小可分辨变化。12位ADC在±2g量程下的分辨率为4g/4096≈0.98mg;16位ADC在同样量程下分辨率为0.061mg。对于振动异常检测,若需捕捉早期轴承磨损产生的微弱冲击信号(幅值可能仅为正常振动的1%~5%),建议至少使用14位分辨率。同时要注意量程的选择:量程过小会导致削波(Clipping),量程过大会降低小信号分辨率。一般原则是让正常振动幅值占量程的30%~70%。

参数低速设备(<1800RPM)中速设备(1800-3600RPM)高速设备(>3600RPM)
关注频率范围10~500Hz20~1000Hz50~5000Hz
推荐采样率2~5kHz5~10kHz10~25kHz
推荐分辨率12~14位14~16位16位
典型传感器ADXL345(12位)MPU6050(16位)LSM6DS3(16位)
数据速率(3轴)12~30KB/s30~60KB/s60~150KB/s
风险提示:采样率并非越高越好。过高的采样率会带来三方面问题:①MCU的ADC采样与DMA传输占用更多总线带宽;②数据存储与无线传输功耗急剧上升;③TinyML模型输入维度增大,推理时间与内存占用增加。在电池供电的无线传感器节点中,采样率每提高一倍,整体功耗约增加40%~60%。务必根据故障特征频率与功耗预算综合权衡。

4.3 数据格式与存储:嵌入式环境下的高效组织

在TinyML振动检测系统中,数据格式的选择直接影响存储效率、传输带宽与后续处理复杂度。常用的数据格式包括:

  • CSV(逗号分隔值):适合开发调试阶段,人类可读,但体积大(约比二进制大3~5倍),解析开销高。
  • 二进制原始格式:直接将ADC值或浮点值按固定字节序存储,体积最小,解析最快,适合嵌入式端存储与传输。
  • JSON:适合云端对接或配置信息,但序列化/反序列化开销大,不适合高频振动数据流。
  • HDF5/Parquet:适合离线大数据分析,但嵌入式端无法直接使用。

推荐在MCU端使用紧凑二进制格式,并附加轻量级元数据头。一个典型的帧格式如下:

帧头(2字节: 0xAA55) | 时间戳(4字节: uint32 ms) | 通道数(1字节) | 
采样率(2字节: uint16 Hz) | 数据区(N×3×2字节: int16三轴) | CRC16(2字节)

存储策略上,建议采用环形缓冲区(Ring Buffer)配合SD卡或Flash分块写入。每块大小建议为4KB~32KB,对齐Flash扇区大小以减少写放大。同时,为每个数据文件添加采集开始时间、设备ID、采样率等元数据,便于后续离线分析时对齐上下文。

经验之谈:在开发阶段,建议同时输出CSV与二进制两种格式。CSV用于快速可视化验证,二进制用于模型训练数据集构建。使用Python的pandas.read_csv()或numpy.fromfile()可快速加载两种格式。注意在二进制格式中明确字节序(小端/大端),避免不同平台间解析错误。

4.4 数据清洗基础:去噪、滤波与异常值处理

原始振动信号中通常包含多种噪声与干扰成分:传感器自身的热噪声(白噪声)、电源工频干扰(50/60Hz及其谐波)、安装共振、温度漂移导致的趋势项、以及偶发的尖峰脉冲(如电磁干扰或机械冲击)。数据清洗的目标是在保留有效振动特征的前提下,最大程度抑制这些干扰。

去均值与去趋势:MEMS加速度计输出包含重力分量,导致信号存在较大的直流偏置。首先应减去信号均值,消除直流分量。若信号存在缓慢漂移(如温度变化引起),需进行去趋势处理,常用方法包括:一阶差分、高通滤波(截止频率设为0.5~1Hz)或多项式拟合去除。对于旋转机械,高通滤波还能消除转频附近的低频摆动。

滤波策略:根据振动检测目标选择合适的滤波器类型。低通滤波器用于消除高频噪声,截止频率设为最高关注频率的1.5~2倍;带通滤波器用于突出特定频带(如轴承故障特征频率带);陷波滤波器用于消除工频干扰。在TinyML场景下,滤波器实现需考虑计算开销:IIR滤波器(如Butterworth)阶数低、计算量小,但存在相位失真;FIR滤波器线性相位但阶数高。对于离线预处理,推荐使用scipy.signal.butter设计滤波器;对于MCU在线处理,可使用一阶或二阶IIR滤波器级联。

# Python离线预处理示例
import numpy as np
from scipy import signal

def preprocess_vibration(data, fs, cutoff_low=0.5, cutoff_high=500):
    # 去均值
    data = data - np.mean(data, axis=0)
    # 设计带通滤波器(4阶Butterworth)
    b, a = signal.butter(4, [cutoff_low, cutoff_high], btype='bandpass', fs=fs)
    # 零相位滤波(filtfilt避免相位偏移)
    filtered = signal.filtfilt(b, a, data, axis=0)
    return filtered

异常值剔除:振动信号中的尖峰脉冲(Spike)会严重干扰特征提取。常用的检测方法包括:基于绝对阈值的截断(超过±5σ视为异常)、基于中值绝对偏差(MAD)的鲁棒检测、以及基于滑动窗口的局部异常因子检测。对于TinyML场景,推荐使用简单的Hampel滤波器:在滑动窗口内计算中位数与标准差,若中心点偏离中位数超过3倍MAD,则用中位数替换。

实战案例:某泵站离心泵振动监测项目,传感器采样率设为4kHz,16位分辨率,±4g量程。原始信号中观察到明显的50Hz工频干扰(幅值约0.2g)和偶发的尖峰(幅值达1.5g)。预处理流程为:①去均值消除重力分量;②4阶Butterworth带通滤波(10~1000Hz)抑制工频及高频噪声;③Hampel滤波(窗口长度31,阈值3σ)剔除尖峰。处理后信号的信噪比从12dB提升至28dB,后续提取的时域特征(RMS、峰值因子)与频域特征(1倍频幅值)的稳定性显著提高,模型准确率从82%提升至94%。

4.5 常见误区与总结复盘

在数据采集与预处理环节,工程师常犯以下错误:

  • 误区一:采样率刚好设为2倍最高频率。这会导致抗混叠滤波器设计困难,且实际信号在截止频率附近衰减严重。应留出至少2~3倍的过渡带余量。
  • 误区二:忽略抗混叠滤波。即使采样率足够高,若传感器或ADC前端存在高于奈奎斯特频率的噪声,仍会混叠到低频段。务必在采样前加入硬件RC低通滤波器或使用传感器内置的抗混叠功能。
  • 误区三:对所有数据统一使用固定阈值清洗。不同工况(启停、稳态、负载变化)下振动幅值差异巨大,固定阈值会误删有效信号或漏掉异常。应根据工况分段设置自适应阈值。
  • 误区四:滤波过度导致特征失真。过度滤波会平滑掉冲击特征(如轴承故障的周期性冲击),使峰值因子、峭度等敏感指标失效。滤波参数需结合故障机理验证。

总结复盘:数据采集与预处理是TinyML振动检测系统的地基。正确的做法是:首先明确故障特征频率范围,据此确定采样率与滤波器参数;其次选择合适的传感器量程与分辨率,确保信号不削波且量化噪声可接受;然后设计高效的数据存储格式,兼顾嵌入式资源限制与后续分析便利;最后建立标准化的清洗流程,并针对不同工况验证清洗效果。建议在项目初期就建立数据质量评估指标(如信噪比、有效信号占比、异常点率),并在每次采集后自动生成质量报告,确保进入模型训练的数据集干净、一致、可复现。