3、信号采集与预处理:加速度计/振动传感器选型、采样率与分辨率设置、去噪与归一化基础
TinyML振动异常检测的成败,往往不取决于模型有多深、训练有多久,而取决于进入模型的第一毫秒信号质量。传感器选型不当、采样率设置错误、原始数据未做预处理,都会让后续的FFT窗函数选择与特征提取失去意义。本章聚焦信号链路的源头,系统讲解加速度计与振动传感器的选型逻辑、采样率与分辨率(位深)的工程设定方法,以及去噪与归一化的基础操作,为后续FFT频谱分析打下可靠的数据基础。
3.1 传感器选型:从应用场景反推硬件参数
振动传感器选型不是参数越高越好,而是要与目标设备的振动特征、安装环境、功耗约束和成本预算匹配。在TinyML场景下,传感器通常直接连接MCU的ADC或通过SPI/I2C接口输出数字信号,因此选型时需同时考虑模拟性能与数字接口的适配性。
3.1.1 核心原理:量程、灵敏度与带宽的三角平衡
振动传感器有三个核心参数需要权衡:量程(Full Scale)、灵敏度(Sensitivity)和带宽(Bandwidth)。量程决定了能测量的最大振动幅度,灵敏度决定了小信号的检测能力,带宽则决定了能捕捉的最高频率成分。三者之间存在物理约束:量程越大,灵敏度通常越低;带宽越宽,噪声密度越高。
对于工业旋转机械(如电机、泵、风机),振动加速度通常在0.1g~5g之间,特征频率集中在50Hz~2kHz。此时选择±8g量程、灵敏度400mV/g、带宽3kHz的传感器较为合适。对于高精密设备(如硬盘、精密主轴),振动幅度可能低至0.01g,需要选择±2g量程、高灵敏度传感器,并配合低噪声放大器。
3.1.2 判断方法:五步选型流程
- 确定振动类型:位移(低频<10Hz)、速度(中频10Hz~1kHz)、加速度(高频>1kHz)。TinyML异常检测通常使用加速度计,因为FFT分析需要高频成分。
- 估算最大振动幅度:通过设备规格书或实测数据,确定最大加速度峰值(g值)。
- 确定目标频率范围:根据轴承故障特征频率(BPFO、BPFI、BSF)或齿轮啮合频率,确定需要分析的最高频率fmax。
- 选择传感器类型:MEMS加速度计(ADXL345、MPU6050、LIS3DH)适合低频到中频(0.5Hz~5kHz);压电式加速度计(PCB 352C33)适合高频(1Hz~10kHz),但需要电荷放大器。
- 验证接口与功耗:确认传感器输出是模拟(需外接ADC)还是数字(I2C/SPI),并评估功耗是否满足电池供电的TinyML设备要求。
3.1.3 案例拆解:电机轴承故障检测的传感器选型
某工厂需要对一台4极异步电机(转速1480rpm)进行振动监测,目标是检测轴承外圈故障。已知轴承型号为6205,节径39.04mm,滚动体直径7.94mm,滚动体数量9个。计算得外圈故障特征频率BPFO≈89.5Hz,内圈故障特征频率BPFI≈132.5Hz。
选型过程:
- 最大振动幅度:电机正常运行时约0.5g,故障初期可能达到2g,取安全系数2,量程选±4g。
- 目标频率范围:BPFO的3倍频≈268Hz,考虑高频噪声,fmax取1kHz。
- 传感器选择:选用ADXL345(±16g量程,13bit分辨率,带宽1.6kHz),虽然量程偏大,但通过配置可降低量程至±4g,灵敏度提升至约3.9mg/LSB。
- 接口与功耗:I2C接口,测量模式功耗40μA,适合电池供电的无线监测节点。
结果对比:使用该配置在实验室转子试验台上验证,成功在FFT频谱中清晰识别出BPFO及其谐波,信噪比达到18dB以上。若误选±16g量程且不调整灵敏度,则BPFO幅值仅占ADC量程的1.5%,FFT后特征几乎被噪声淹没。
3.1.4 常见误区与总结
误区2:忽略传感器带宽与采样率的匹配。如果传感器带宽只有1kHz,即使采样率设为25.6kHz,也无法获取超过1kHz的有效信号,反而引入高频噪声。
误区3:不检查传感器的零偏稳定性。MEMS加速度计存在零偏漂移(温度、时间),需要在预处理中做高通滤波去除直流分量。
3.2 采样率与分辨率设置:奈奎斯特之外的工程考量
采样率与分辨率(位深)直接决定了FFT频谱的频率分辨率和幅值精度。在TinyML设备上,这两者还受限于MCU的ADC采样速度、存储空间和功耗预算。
3.2.1 核心原理:采样率、频率分辨率与混叠
根据奈奎斯特采样定理,采样率fs必须大于信号最高频率fmax的2倍。但在工程实践中,由于FFT频谱存在频谱泄漏和栅栏效应,通常取fs ≥ 2.56 × fmax,即过采样率至少为2.56倍。频率分辨率Δf = fs / N,其中N为FFT点数。要区分两个相邻频率成分(如BPFO的边带),需要Δf小于两者频率差的一半。
分辨率(位深)影响幅值量化精度。12bit ADC的理论动态范围为72dB,16bit为96dB。对于振动信号,若最小目标信号幅值为0.01g,最大为2g,则动态范围需求为20×log10(2/0.01)=46dB,12bit足够。但如果需要检测早期微弱故障(0.001g),则动态范围需求为66dB,需14bit以上。
3.2.2 操作流程:采样参数设定步骤
- 确定fmax:根据设备转速和故障特征频率,取最高关注频率的3~5倍作为fmax。
- 计算最小采样率:fs_min = 2.56 × fmax,取整到标准采样率(如12.8kHz、25.6kHz)。
- 确定采样时长T:至少包含10个最低特征频率的周期,即T ≥ 10 / f_min。例如f_min=10Hz,则T≥1秒。
- 计算FFT点数N:N = fs × T,取2的幂次(如1024、2048、4096)。
- 配置ADC位深:根据动态范围需求选择12/14/16bit,并设置合适的增益。
3.2.3 案例拆解:采样参数不当导致的诊断失败
某风电齿轮箱监测系统使用fs=2kHz采样,FFT点数1024,频率分辨率Δf=1.95Hz。现场发现频谱中无法清晰分辨齿轮啮合频率的边带(边带间隔为轴频0.5Hz),导致无法判断齿轮磨损程度。
分析过程:齿轮啮合频率为500Hz,边带间隔为轴频0.5Hz。要分辨0.5Hz的边带,频率分辨率需小于0.25Hz。原配置Δf=1.95Hz,远大于0.5Hz,边带被平均化而消失。
解决方案:将采样率降至1kHz(fmax=400Hz足够),采样时长增至4秒,N=4000,取4096点FFT,Δf=0.244Hz。修改后频谱清晰显示边带,诊断出齿轮存在不均匀磨损。
代价与经验:降低采样率牺牲了高频分析能力,但针对该齿轮箱的故障特征频率范围是合理的。经验是:采样率不是越高越好,而是要与目标频率匹配;频率分辨率不足时,优先增加采样时长而非采样率。
3.2.4 常见误区与总结
误区2:忽略抗混叠滤波器。如果传感器或ADC没有内置抗混叠滤波,高频噪声会折叠到低频段,污染FFT频谱。
误区3:FFT点数N不是2的幂次,导致计算效率低下。TinyML设备上的FFT库(如CMSIS-DSP)通常要求N为2的幂次。
3.3 去噪与归一化基础:让FFT看到真正的特征
原始振动信号包含直流偏置、趋势项、随机噪声和工频干扰。如果不做预处理,FFT频谱会被这些非目标成分主导,窗函数的选择和特征提取都会失真。去噪与归一化是FFT分析前的最后一道工序。
3.3.1 核心原理:噪声来源与预处理策略
振动信号的噪声来源包括:传感器本底噪声(热噪声、1/f噪声)、环境振动(地面振动、其他设备干扰)、电气干扰(50Hz工频及其谐波)、量化噪声(ADC分辨率限制)。去噪的目标是保留目标频带内的有效信号,抑制带外噪声。
归一化的目的是消除幅值尺度差异,使不同设备、不同工况下的信号具有可比性。常用的归一化方法有:Z-score归一化(减去均值除以标准差)、Min-Max归一化(缩放到[0,1]区间)、峰值归一化(除以最大绝对值)。
3.3.2 操作流程:预处理流水线
- 去直流分量:计算信号均值并减去,消除传感器零偏和重力分量。
- 高通滤波:截止频率设为0.5Hz~1Hz,去除趋势项和低频漂移。
- 低通滤波:截止频率设为0.5×fs,作为抗混叠滤波,去除高频噪声。
- 陷波滤波(可选):若存在50Hz工频干扰,使用陷波器去除。
- 平滑处理(可选):移动平均或Savitzky-Golay滤波,去除随机噪声。
- 归一化:根据后续FFT和特征提取的需求,选择Z-score或Min-Max。
// 伪代码示例:振动信号预处理流水线
float signal[N]; // 原始信号
float filtered[N];
// 1. 去直流
float mean = 0;
for (int i = 0; i < N; i++) mean += signal[i];
mean /= N;
for (int i = 0; i < N; i++) signal[i] -= mean;
// 2. 高通滤波(一阶IIR,fc=1Hz, fs=12800Hz)
float alpha = 1.0f / (1.0f + 2.0f * 3.14159f * 1.0f / 12800.0f);
float prev_y = 0;
for (int i = 0; i < N; i++) {
float y = alpha * (prev_y + signal[i] - signal[i-1]);
filtered[i] = y;
prev_y = y;
}
// 3. 低通滤波(移动平均,窗口=5)
for (int i = 2; i < N-2; i++) {
filtered[i] = (filtered[i-2] + filtered[i-1] + filtered[i] + filtered[i+1] + filtered[i+2]) / 5.0f;
}
// 4. Z-score归一化
float std = 0;
for (int i = 0; i < N; i++) std += filtered[i] * filtered[i];
std = sqrt(std / N);
for (int i = 0; i < N; i++) filtered[i] /= std;
3.3.3 案例拆解:去噪前后FFT频谱对比
某泵站振动监测系统采集到一组信号,采样率12.8kHz,时长1秒。原始信号FFT频谱显示:0Hz处有巨大直流分量(幅值达2.5g),50Hz处有工频干扰(幅值0.3g),目标故障特征频率在120Hz处(幅值仅0.05g)。
预处理前:直流分量和工频干扰完全掩盖了120Hz特征,FFT频谱中120Hz处几乎不可见。
预处理后:先去除直流分量,再使用50Hz陷波器,最后进行Z-score归一化。处理后的FFT频谱中,120Hz处幅值清晰可见,信噪比从3dB提升至22dB。
关键操作:
- 去直流:计算均值并减去,直流分量从2.5g降至0.01g以下。
- 陷波器:使用二阶IIR陷波器,带宽2Hz,中心频率50Hz,工频干扰衰减40dB。
- 归一化:Z-score后,信号幅值范围变为[-3, 3],FFT幅值具有可比性。
复盘经验:预处理不是越多越好。过度滤波会滤除有效信号成分,例如高通截止频率过高会衰减低频故障特征。建议先做频谱分析,确定噪声频带后再设计滤波器参数。
3.3.4 常见误区与总结
误区2:对所有信号使用相同的滤波器参数。不同设备的振动特征频率不同,滤波器参数应根据目标频带定制。
误区3:忽略传感器安装谐振。传感器安装不当会产生谐振峰,在FFT频谱中形成虚假特征,需通过安装验证和模态分析排除。
3.4 本章总结与工程清单
信号采集与预处理是TinyML振动异常检测的基石。传感器选型决定了信号的上限质量,采样率与分辨率设置决定了FFT的观测能力,去噪与归一化则确保特征提取的可靠性。三者环环相扣,任何一环的失误都会在后续FFT窗函数选择和模型训练中被放大。
| 环节 | 关键参数 | 推荐值/方法 | 常见错误 |
|---|---|---|---|
| 传感器选型 | 量程、灵敏度、带宽 | 量程=1.5~2×最大振动;灵敏度保证10~20 LSB;带宽≥3×fmax | 量程过大、忽略零偏漂移 |
| 采样率设置 | fs、N、T | fs≥2.56×fmax;N取2的幂次;T≥10/f_min | 采样率过高、N非2的幂次 |
| 分辨率设置 | ADC位深 | 12bit满足一般需求,16bit用于微弱信号 | 位深不足导致量化噪声 |
| 去噪 | 滤波器类型与截止频率 | 高通0.5Hz、低通0.5×fs、陷波50Hz | 滤波过度、顺序错误 |
| 归一化 | 方法选择 | Z-score适合高斯分布,Min-Max适合有界信号 | 先归一化再去噪 |
- □ 传感器量程是否覆盖最大振动且留有裕量?
- □ 采样率是否满足2.56倍过采样?FFT点数是否为2的幂次?
- □ 是否配置了抗混叠滤波?截止频率是否正确?
- □ 预处理顺序是否为:去直流→高通→低通→陷波→归一化?
- □ 归一化方法是否与后续特征提取算法匹配?
- □ 是否保存了预处理参数(均值、标准差)以便推理阶段复用?
在TinyML部署阶段,预处理参数(滤波器系数、归一化均值/标准差)必须固化到设备端,且与训练阶段保持一致。任何参数不一致都会导致特征分布偏移,使模型在部署后性能下降。建议在训练阶段将预处理参数导出为C头文件,直接嵌入MCU固件。