传感器基础:常见传感器类型的工作原理与输出特性

TinyML 应用的起点是物理世界与数字世界的交汇点——传感器。无论你是在做可穿戴设备、工业预测性维护,还是智能家居中的语音唤醒,模型性能的上限往往由传感器数据质量决定。本章将系统梳理 TinyML 开发中最常用的七类传感器,从物理原理、电气输出特性到数据形态,帮助你建立"选型—采样—预处理"的完整认知链路。

TinyML 传感器数据链路总览 物理世界 运动 / 姿态 环境 / 声学 磁场 / 压力 温度 / 湿度 传感器阵列(本章核心) 加速度计 陀螺仪 磁力计 温湿度 气压计 麦克风 信号调理 放大 / 滤波 ADC 采样 数字接口 (I²C/SPI/PDM) 输出特性对比 传感器 输出类型 数据维度 典型采样率 加速度计 数字 (I²C/SPI) 3 轴 (x,y,z) 1–1000 Hz 陀螺仪 数字 (I²C/SPI) 3 轴角速度 1–1000 Hz 麦克风 PDM / I²S 单通道时域波形 8–48 kHz

上图展示了 TinyML 数据链路的完整视图:物理世界的信号首先被传感器阵列捕获,经过信号调理后转换为数字量,最终进入微控制器进行特征提取和推理。理解每个环节的输出特性,是后续设计采样策略和模型输入格式的前提。

2.1 惯性传感器:加速度计与陀螺仪

核心原理:加速度计基于 MEMS(微机电系统)技术,内部包含一个由硅微结构构成的悬臂梁和检测质量块。当设备加速时,质量块因惯性产生位移,改变电容或压阻值,通过 ASIC 电路转换为数字信号。陀螺仪则利用科里奥利效应——当质量块在旋转参考系中振动时,会产生垂直于振动方向的位移,该位移与角速度成正比。

输出特性对比:

参数加速度计 (如 LIS3DH)陀螺仪 (如 L3GD20)
输出量线加速度 (m/s² 或 g)角速度 (°/s 或 rad/s)
量程±2g ~ ±16g±250 ~ ±2000 °/s
轴数3 轴 (X, Y, Z)3 轴 (X, Y, Z)
噪声密度~220 µg/√Hz~0.03 °/s/√Hz
典型接口I²C / SPII²C / SPI
数据格式16-bit 有符号整数16-bit 有符号整数

工程判断方法:在 TinyML 项目中,选择加速度计量程时需考虑应用场景。例如,人体活动识别(走路、跑步)通常使用 ±2g 或 ±4g 量程,而工业设备振动监测可能需要 ±16g。采样率方面,根据奈奎斯特定理,采样率应至少为信号最高频率的 2 倍。人体运动频率通常低于 20 Hz,因此 50 Hz 采样率已足够;而机械振动分析可能需要 1 kHz 以上。

经验提醒:加速度计静态输出包含重力分量(1g),在姿态解算中可作为参考基准。但陀螺仪存在零偏漂移,长时间积分会产生累积误差,因此常需与加速度计进行互补滤波或卡尔曼滤波融合。

2.2 磁力计与姿态参考系统

核心原理:磁力计(电子罗盘)基于磁阻效应或霍尔效应,测量地球磁场在三个轴向上的分量。典型量程为 ±49 gauss(高斯),分辨率可达 0.15 mgauss。磁力计与加速度计、陀螺仪组合构成 9 轴姿态参考系统(AHRS),可提供航向角(Yaw)的绝对参考。

输出特性与校准:磁力计输出易受硬铁(周围铁磁性材料)和软铁(磁场扭曲)效应影响,导致椭圆拟合误差。在部署前必须进行校准:

  1. 将设备在空间中缓慢旋转,画"8"字轨迹,采集至少 200 个样本点。
  2. 计算三轴数据的最大值和最小值,得到偏移量 offset = (max + min) / 2。
  3. 计算缩放因子 scale = (max - min) / 2,归一化到单位球面。
  4. 将校准参数写入设备 Flash,在运行时实时补偿。
实战场景:在室内定位项目中,磁力计用于行人航位推算(PDR)的航向修正。某团队发现原始磁力计数据在走廊拐角处偏差达 15°,导致定位漂移。通过实施上述椭球拟合校准,并将校准后的数据与陀螺仪积分值进行加权融合,航向误差降低至 3°以内。关键参数:校准样本数 300 点,融合权重 α=0.05(磁力计),β=0.95(陀螺仪)。

2.3 环境传感器:温湿度与气压

核心原理:温湿度传感器(如 SHT30)内部集成电容式湿度传感元件和带隙温度传感器。湿度测量基于聚合物吸湿后介电常数变化,温度测量基于 PN 结电压与温度的线性关系。气压传感器(如 BMP280)则利用压阻式或电容式膜片,测量大气压力变化,分辨率可达 0.18 Pa(相当于 1.5 cm 高度差)。

输出特性与数据形态:

传感器输出范围精度响应时间典型应用
SHT30 温度-40 ~ 125 °C±0.2 °C2 s环境监测
SHT30 湿度0 ~ 100 %RH±2 %RH8 s农业大棚
BMP280 气压300 ~ 1100 hPa±1 hPa1 s楼层检测

采样策略:环境传感器变化缓慢,通常采用低采样率(0.1 ~ 1 Hz)以节省功耗。在 TinyML 场景中,气压计可用于室内楼层识别——每升高 1 米,气压下降约 0.12 hPa。通过滑动窗口滤波(窗口大小 10 个样本)去除瞬时噪声,可稳定区分相邻楼层。

风险提示:温湿度传感器对 PCB 布局敏感,应远离发热元件(如 MCU、电源芯片)至少 5 mm。气压计的通气孔不能被遮挡,否则会因密封腔体效应导致读数漂移。在户外部署时,需使用透气膜保护传感器免受灰尘和水滴侵入。

2.4 声学传感器:麦克风阵列与 PDM 接口

核心原理:MEMS 麦克风基于电容变化原理,振膜在声压作用下产生位移,改变与背板之间的电容,通过 ASIC 转换为数字信号。TinyML 中常用的数字麦克风(如 ICS-43434)输出 PDM(脉冲密度调制)信号,由 1-bit 高速脉冲流(典型 2.4 MHz)表示模拟波形,需通过抽取滤波器转换为 PCM 数据。

输出特性与数据链路:

// PDM 到 PCM 转换流程(伪代码)
// 1. 配置 MCU 的 PDM 外设,设置时钟分频
pdm_config.clk_freq = 2400000;  // 2.4 MHz PDM 时钟
pdm_config.decimation = 64;     // 抽取因子
pdm_config.gain = 40;           // 数字增益 (dB)

// 2. 启动 DMA 传输,接收 PDM 数据
pdm_start_dma(pdm_buffer, PDM_BUFFER_SIZE);

// 3. 在中断回调中执行抽取滤波
void pdm_data_ready(uint8_t *pdm_data, uint32_t size) {
    // 使用 CIC 滤波器 + FIR 补偿滤波器
    cic_filter(pdm_data, pcm_output, size, 64);
    fir_compensation(pcm_output, pcm_output, size/64);
}

关键参数:麦克风灵敏度通常为 -26 dBFS(相对于 1 Pa 声压),信噪比(SNR)典型值为 61 dBA,最大声压级(AOP)为 105 dB SPL。在 TinyML 语音唤醒应用中,采样率通常设为 16 kHz,帧长 30 ms(480 个样本),帧移 10 ms(160 个样本)。

案例拆解:关键词唤醒(KWS)数据采集
背景:某智能家居项目需要识别"小智小智"唤醒词,MCU 为 Cortex-M4F @ 80 MHz,Flash 512 KB。
初始现象:直接使用 48 kHz 采样率导致 CPU 占用率 85%,无法同时运行 VAD(语音活动检测)和神经网络推理。
分析过程:唤醒词主要能量集中在 300 Hz ~ 3.4 kHz 频段,48 kHz 采样率存在大量冗余高频信息。
操作步骤:① 将采样率降至 16 kHz;② 使用 512 点 FFT 提取 40 维 Mel 滤波器组特征;③ 将特征帧率控制在 50 帧/秒。
结果对比:CPU 占用率降至 32%,模型准确率从 91.2% 提升至 93.5%(因为减少了高频噪声干扰)。
复盘经验:采样率并非越高越好,应根据任务频段需求和数据量约束综合权衡。对于语音任务,16 kHz 是精度与计算量的最佳平衡点。

2.5 传感器数据采集的通用方法论

操作流程:无论使用哪种传感器,TinyML 数据采集都应遵循以下标准化流程:

  1. 需求分析:明确任务类型(分类、回归、异常检测),确定所需传感器类型和数量。
  2. 量程与分辨率匹配:确保传感器量程覆盖信号动态范围,分辨率满足最小可检测变化。
  3. 采样率设定:根据信号最高频率和 MCU 算力确定采样率,预留 2~3 倍过采样余量。
  4. 数据同步:多传感器场景下,使用时间戳或中断同步机制,确保数据对齐。
  5. 数据标注:在采集时同步记录标签(如动作类别、环境状态),避免事后标注的歧义。
  6. 数据存储:使用二进制格式(如 NPY、TFRecord)存储,减少体积并便于后续加载。

常见误区与总结:

  • 误区一:忽略传感器上电稳定时间。MEMS 传感器通常需要 10~50 ms 稳定,立即读取会产生初始漂移。
  • 误区二:直接使用原始 ADC 值而不进行单位换算。不同传感器的量程和位宽不同,统一转换为物理单位(g、°/s、Pa)是模型泛化的基础。
  • 误区三:忽视温度对传感器的影响。加速度计和陀螺仪的零偏随温度变化,在宽温范围应用时需进行温度补偿。
  • 误区四:采样率过高导致数据冗余。过高的采样率不仅增加功耗,还会使模型输入维度膨胀,增加过拟合风险。
工程实践建议:在开始模型训练前,先对传感器数据进行可视化分析。绘制时域波形、频谱图和散点图,检查是否存在饱和、削波、周期性干扰等问题。一个简单的经验法则:如果数据可视化阶段就难以区分不同类别,那么再复杂的模型也难以取得好效果。

传感器选型和数据采集是 TinyML 项目中最具"杠杆效应"的环节——前期投入 30% 的精力做好数据基础,可以节省后期 70% 的模型调优时间。建议读者在开发板上实际运行本章涉及的传感器驱动代码,记录不同运动状态和环境条件下的数据波形,建立对传感器输出特性的直觉认识。这种"手感"将在后续特征工程和模型设计时发挥重要作用。