2、加速度计基础:加速度计工作原理、常见型号(如MPU6050、ADXL345)、数据输出格式与采样率设置

加速度计是振动检测系统的前端感知核心,它将物理世界的加速度信号转换为电信号,再经模数转换(ADC)后以数字量输出。在TinyML振动检测场景中,加速度计选型、配置与数据质量直接决定后续模型推理的准确性与实时性。本章从工作原理出发,对比主流型号,解析数据输出格式与采样率设置方法,为后续的推理时间测量与优化奠定硬件基础。

加速度计振动检测链路与关键配置 物理层 MEMS敏感结构 (质量块+悬臂梁) 信号调理 C/V转换 → 放大 → 低通滤波 → ADC 数字接口 I2C / SPI FIFO / 中断输出 主控MCU TinyML推理 时间戳/缓存 关键配置参数(影响推理时间与精度) 量程 (±2/4/8/16g) 灵敏度与分辨率 输出数据率 ODR 1.6Hz ~ 6.4kHz 滤波带宽 数字低通/高通 FIFO/中断 批量读取/唤醒 数据流与时间测量关键路径 ① 物理采样 MEMS响应时间 ② ADC转换 固定延迟 ③ 数字滤波 群延迟 ④ 总线传输 I2C/SPI速率 ⑤ 推理计算 TinyML模型

2.1 加速度计工作原理:从MEMS敏感结构到数字输出

现代振动检测用加速度计几乎全部采用MEMS(微机电系统)技术。其核心结构是一个由硅材料制成的质量块,通过弹性悬臂梁悬挂在固定框架上。当加速度作用于传感器时,质量块因惯性产生微小位移,该位移改变敏感电容的极板间距,从而引起电容值变化。测量电路通过电荷-电压(C/V)转换将电容变化量转化为电压信号,再经放大、滤波和ADC采样,最终输出数字加速度值。

在振动检测场景中,需要特别关注加速度计的频率响应范围。MEMS加速度计的机械结构决定了其固有频率通常在数千赫兹以上,但实际可用带宽受限于信号调理电路中的低通滤波器。例如,ADXL345的带宽可通过寄存器配置为0.1Hz至3200Hz,而MPU6050的DMP(数字运动处理器)内部滤波路径则提供独立的可配置带宽。对于旋转机械的振动检测(如电机轴承故障),通常需要覆盖10Hz至1kHz的频率范围,因此应选择带宽不低于1kHz的配置。

另一个关键参数是噪声密度,单位为μg/√Hz。它决定了传感器能够分辨的最小加速度变化。ADXL345的噪声密度约为110μg/√Hz,而MPU6050约为400μg/√Hz。在低振动幅值(如0.01g)检测场景中,噪声密度直接影响信噪比,进而影响TinyML模型的分类准确率。若被测振动信号较弱,应优先选择低噪声型号,或通过提高采样率并采用数字滤波来改善有效分辨率。

工作原理要点:加速度计输出的是“比力”(specific force),即加速度与重力加速度的矢量和。在静态安装时,传感器会输出1g的重力分量;在振动检测中,我们关注的是动态加速度分量,因此通常需要启用高通滤波或进行零偏校准来消除重力影响。

2.2 常见型号对比:MPU6050与ADXL345的选型决策

MPU6050和ADXL345是当前TinyML振动检测项目中最常用的两款加速度计,但它们在设计定位上存在显著差异。MPU6050由InvenSense(现TDK)推出,集成三轴加速度计和三轴陀螺仪,采用16位ADC,量程可选±2g、±4g、±8g、±16g。其内部DMP可进行姿态融合,但振动检测中通常直接读取原始加速度数据。ADXL345由Analog Devices推出,是纯三轴加速度计,同样具备13位分辨率(在±16g量程下为10位有效位),量程可选±2g、±4g、±8g、±16g,但功耗更低(测量模式低至23μA)。

从接口角度看,两者均支持I2C和SPI。MPU6050的I2C地址可通过AD0引脚配置为0x68或0x69;ADXL345的I2C地址固定为0x53(SDO接地)或0x1D(SDO接高)。在数据读取速率方面,SPI接口通常比I2C快2-4倍。例如,在1MHz的I2C时钟下,读取6字节(三轴各16位)需要约60μs;而SPI在5MHz时钟下仅需约15μs。对于需要高采样率(>1kHz)的振动检测,推荐使用SPI接口。

对比维度MPU6050ADXL345选型建议
集成度三轴加速度+三轴陀螺仪仅三轴加速度纯振动检测选ADXL345;需姿态参考选MPU6050
ADC位数16位(实际有效位约14位)13位(±16g时10位)高精度测量选MPU6050
噪声密度约400μg/√Hz约110μg/√Hz低幅值振动选ADXL345
功耗(测量模式)约3.9mA约23μA(低功耗模式)电池供电选ADXL345
FIFO容量1024字节32级(每级6字节)批量读取选MPU6050
内置运动中断支持(任意运动/静止)支持(活动/非活动)唤醒检测两者均可

在实际选型中,还需考虑封装与安装方式。MPU6050采用QFN-24封装(4×4mm),ADXL345采用LGA-14封装(3×3mm)。对于PCB空间受限的TinyML节点,ADXL345更占优势。但MPU6050的陀螺仪功能在需要测量角速度的旋转机械故障诊断中具有额外价值。若项目仅需单轴或双轴振动数据,也可考虑ADXL335等模拟输出型号,但数字接口更便于与MCU直连。

2.3 数据输出格式与寄存器配置:从原始数据到物理量

加速度计的数字输出格式通常为二进制补码(two's complement)。以MPU6050为例,其加速度数据寄存器为ACCEL_XOUT_H(0x3B)至ACCEL_ZOUT_L(0x40),每个轴占16位,高字节在前。读取时需将高低字节拼接为有符号整数,再根据量程换算为物理加速度值。换算公式为:加速度(g) = 原始值 × 量程 / 32768。例如,在±2g量程下,原始值16384对应1g;在±16g量程下,原始值2048对应1g。

ADXL345的数据格式略有不同。其DATAX0(0x32)等寄存器存储13位有效数据,左对齐存储在16位寄存器中。当量程为±2g时,分辨率为3.9mg/LSB;±16g时分辨率为31.2mg/LSB。读取时需将高低字节拼接后右移3位(若使用13位模式)或直接使用16位模式(需设置DATA_FORMAT寄存器)。为简化代码,建议将ADXL345配置为16位模式(FULL_RES=1),此时分辨率固定为3.9mg/LSB,与量程无关。

采样率设置是振动检测的关键步骤。MPU6050的采样率由SMPLRT_DIV寄存器控制,公式为:采样率 = 陀螺仪输出率 / (1 + SMPLRT_DIV)。陀螺仪输出率默认为1kHz(当DLPF使能时)或8kHz(当DLPF禁用时)。ADXL345的采样率由BW_RATE寄存器控制,低4位设置输出数据率(ODR),从0.1Hz到3200Hz可选。例如,设置BW_RATE=0x0A(10Hz)对应ODR=100Hz,设置0x0D(13)对应ODR=3200Hz。需注意,ODR必须高于振动信号最高频率的2倍(奈奎斯特定理),否则会产生混叠。

// MPU6050 初始化示例(I2C,采样率1kHz,量程±2g)
void mpu6050_init() {
    write_reg(0x6B, 0x00);      // 退出睡眠模式
    write_reg(0x1C, 0x00);      // ACCEL_CONFIG: ±2g
    write_reg(0x1A, 0x03);      // CONFIG: DLPF=44Hz, 陀螺仪输出率1kHz
    write_reg(0x19, 0x00);      // SMPLRT_DIV=0 → 采样率=1kHz
}

// ADXL345 初始化示例(SPI,ODR=3200Hz,±16g)
void adxl345_init() {
    write_reg(0x31, 0x0B);      // DATA_FORMAT: FULL_RES=1, ±16g
    write_reg(0x2C, 0x0F);      // BW_RATE: ODR=3200Hz, 低功耗模式禁用
    write_reg(0x2D, 0x08);      // POWER_CTL: 测量模式
}

在TinyML推理时间测量中,数据格式的转换开销不可忽视。若每次读取都进行浮点换算,将增加MCU计算负担。建议在驱动层将原始整数数据直接送入模型输入缓冲区,仅在预处理阶段进行归一化(如除以2048或32768)。对于量化模型,可直接使用整数数据,避免浮点转换。

经验提醒:在振动检测中,建议将加速度计量程设置为±4g或±8g。过小的量程(±2g)在强振动下会饱和削波,过大的量程(±16g)会降低分辨率。对于大多数工业旋转机械,振动幅值通常在0.1g~2g之间,±4g是较均衡的选择。

2.4 采样率设置策略与工程案例:以电机轴承故障检测为例

采样率设置直接影响数据量、功耗和推理时间。过高的采样率会产生大量冗余数据,增加MCU的读取和推理负担;过低的采样率则会丢失高频故障特征。以电机轴承故障检测为例,轴承外圈故障的特征频率通常在数百赫兹至数千赫兹之间。根据奈奎斯特定理,采样率至少为最高特征频率的2倍,但工程上建议设置为5~10倍,以保留足够的谐波信息。

假设某电机转速为3000rpm(50Hz),轴承外圈故障特征频率约为3.5倍转频,即175Hz。考虑谐波成分,最高关注频率设为1kHz,则采样率应不低于2kHz。若使用ADXL345,可设置ODR=3200Hz,并启用内部低通滤波(带宽设为1600Hz)以抑制高频噪声。此时每秒产生3200个采样点,每点6字节(三轴),数据量为19.2KB/s。对于TinyML模型,通常采用滑动窗口(如256个采样点)进行推理,窗口时间约为80ms,可满足实时性要求。

在推理时间测量中,采样率还影响数据读取的耗时。若使用I2C接口(400kHz),读取6字节需要约120μs;若使用SPI(5MHz),仅需约15μs。对于3200Hz采样率,每312.5μs需读取一次数据,I2C的读取时间占比高达38%,而SPI仅占5%。因此,在高采样率场景下,SPI接口是保证推理时间稳定性的关键。

案例拆解:某工业振动监测节点采用STM32L4系列MCU(主频80MHz)搭配ADXL345(SPI接口,ODR=3200Hz,±4g)。模型为1D-CNN,输入为256点单轴数据,推理耗时约12ms。实测数据读取耗时(SPI+DMA)为0.8ms,预处理(滑动平均滤波)为2.1ms,总周期为14.9ms,满足20ms的实时控制要求。若改用I2C接口,读取耗时增至6.4ms,总周期达20.5ms,超出实时性预算。该案例表明,接口选择对推理时间预算有显著影响。

另一个常见误区是盲目提高采样率。当采样率超过信号带宽的10倍时,数据冗余度增加,但有效信息并未增加。例如,将ODR从3200Hz提升到6400Hz,数据量翻倍,但振动信号的频谱能量主要集中在1kHz以下,额外采样点仅包含噪声。这不仅增加MCU负载,还可能导致模型过拟合噪声。建议根据振动信号的频谱分析结果,选择ODR为最高关注频率的4~8倍。

风险提示:在设置采样率时,务必确认加速度计的抗混叠滤波器是否启用。ADXL345的内部滤波器是数字低通滤波器,其截止频率为ODR/2。若ODR设置过高而滤波器未正确配置,高频噪声会混叠到低频段,污染振动特征。MPU6050的DLPF同样需要根据采样率合理设置,建议将DLPF截止频率设为ODR/4左右。

2.5 常见误区与总结复盘

在加速度计选型与配置中,工程师常犯以下错误:忽略量程与分辨率的权衡,在低幅值振动场景使用±16g量程,导致有效分辨率不足;未校准零偏,导致静态重力分量混入动态信号;采样率与滤波器不匹配,造成混叠或信号衰减;接口选择不当,在高速采样时使用I2C导致数据读取超时。

总结本章要点:首先,理解MEMS加速度计的工作原理,明确频率响应和噪声密度对振动检测的影响;其次,根据项目需求选择合适型号,MPU6050适合需要陀螺仪或高分辨率的场景,ADXL345适合低功耗、低噪声的纯振动检测;再次,掌握数据格式转换和寄存器配置方法,确保原始数据正确转换为物理量;最后,根据振动信号特征合理设置采样率,并选择SPI接口以保证高采样率下的实时性。