2. 传感器噪声分析:加速度计、陀螺仪、编码器的噪声特性
做控制最怕什么?最怕你明明觉得参数调得挺好,一上实际系统就开始抖。我早年吃过这个亏——在仿真里跑得稳稳的PID,装到机器人上一通电,电机嗡嗡响,机身像筛糠一样。查了三天,最后发现是加速度计的噪声被控制器放大了。
说白了,传感器噪声是控制抖动的头号元凶。你调参数之前,得先搞清楚你的传感器到底有多「脏」。这一章我们就掰开揉碎,看看加速度计、陀螺仪、编码器这三种常见传感器的噪声长什么样,以及怎么从数据手册里把噪声水平挖出来。
2.1 加速度计噪声特性
加速度计测的是比力,也就是物体感受到的加速度。但实际输出里,除了真实加速度,还混着一堆乱七八糟的东西。
2.1.1 噪声来源
- 热机械噪声:MEMS结构里的分子热运动,白噪声为主。这是物理极限,没法消除。
- 量化噪声:ADC把模拟量转成数字量时丢掉的精度。分辨率越低,噪声越大。
- 1/f 噪声:低频段出现的闪烁噪声,频率越低越明显。静止时输出缓慢漂移,就是它在作怪。
- 振动整流误差:高频振动被非线性效应解调成低频误差。我遇到过无人机悬停时高度慢慢往下掉,查到最后是螺旋桨振动被加速度计整流成了直流偏置。
2.1.2 数据手册怎么看
加速度计手册里,噪声指标通常写在「Noise」或「RMS Noise」那一栏。单位一般是 µg/√Hz 或 mg rms。举个例子:
| 参数 | 典型值 | 单位 |
|---|---|---|
| 噪声密度 | 75 | µg/√Hz |
| 输出数据速率 | 1000 | Hz |
| RMS噪声(@100Hz带宽) | 0.75 | mg |
怎么算?RMS噪声 = 噪声密度 × √(带宽)。上面那个例子,75µg/√Hz × √100 = 0.75mg。嗯,这个值就是你滤波器设计时的底线——你不可能把噪声压到比它还低。
2.2 陀螺仪噪声特性
陀螺仪测角速度,它的噪声比加速度计更棘手。为什么?因为角速度积分一次就是角度,噪声会随着时间累积。
2.2.1 噪声来源
- 角度随机游走:白噪声积分后变成随机游走,角度误差随时间以 √t 增长。这是陀螺仪噪声的核心指标。
- 速率随机游走:低频噪声积分后产生的慢变漂移,比角度随机游走更难对付。
- 零偏不稳定性:陀螺仪静止时输出偏离零点的程度,通常用 °/h 表示。好的工业级陀螺仪能做到 1°/h 以下。
2.2.2 数据手册怎么看
陀螺仪手册里,噪声指标通常写成 0.005 °/s/√Hz 或者 0.2 °/√h。注意单位!前者是噪声密度,后者是角度随机游走。
| 参数 | 典型值 | 单位 |
|---|---|---|
| 噪声密度 | 0.005 | °/s/√Hz |
| 角度随机游走 | 0.2 | °/√h |
| 零偏不稳定性 | 2 | °/h |
举个例子:如果你用这个陀螺仪做姿态估计,带宽设到 50Hz,那角速度的RMS噪声就是 0.005 × √50 ≈ 0.035 °/s。积分1秒后,角度误差大约 0.035°。但积分10秒呢?误差会涨到 0.035 × √10 ≈ 0.11°。你想想看,如果控制周期是10ms,这个误差累积速度有多快。
2.3 编码器噪声特性
编码器测位置,看起来比MEMS传感器干净,但实际用起来也有不少坑。
2.3.1 噪声来源
- 量化误差:增量式编码器的分辨率有限,比如 1000线,每转只能输出 4000 个脉冲。位置误差就是 ±1/2 个脉冲。
- 抖动:码盘刻线不均匀、安装偏心、读数头振动,都会导致输出脉冲边沿位置随机抖动。
- 电磁干扰:长线传输时,电机驱动产生的共模噪声会耦合到编码器信号上。我见过一个案例,编码器线没做屏蔽,电机一加速位置反馈就跳变几十个脉冲。
- 速度估算噪声:用位置差分求速度时,量化误差会被放大。公式是 v = Δx/Δt,Δx 只有 ±1 个脉冲的误差,但 Δt 越小,速度噪声越大。
2.3.2 数据手册怎么看
编码器手册里,噪声指标通常不直接写「噪声」两个字,而是藏在精度和分辨率里。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 分辨率 | 1000 PPR | 每转脉冲数,决定了位置量化步长 |
| 精度 | ±0.1° | 位置误差,包含刻线误差和安装误差 |
| 最大响应频率 | 200 kHz | 决定了最高可测转速 |
量化步长怎么算?360° / (4 × PPR)。1000线的编码器,步长 = 360/4000 = 0.09°。也就是说,你看到的位置反馈永远以 0.09° 为台阶跳变。如果控制周期很短,这个台阶就会在速度环里产生明显的噪声。
2.4 噪声评估实战:从手册到代码
光看手册还不够,你得把噪声水平换算成控制环路里实际看到的值。我一般按这个步骤来:
- 查手册:找到噪声密度或RMS噪声值。
- 算带宽:确定传感器输出数据速率,或者你打算用的滤波器带宽。
- 算RMS噪声:噪声密度 × √(带宽)。
- 换算到控制量:比如加速度噪声换算成角度噪声,或者位置噪声换算成速度噪声。
- 对比控制精度要求:如果噪声RMS值超过控制精度的 1/10,你就得考虑滤波或者换传感器了。
举个例子,假设你用加速度计做倾角测量,噪声密度 100µg/√Hz,带宽 20Hz:
RMS噪声 = 100µg/√Hz × √20Hz ≈ 447µg ≈ 0.447mg
换算成角度:假设倾角很小,sin(θ) ≈ θ
θ_noise ≈ 0.447mg / 1g ≈ 0.000447 rad ≈ 0.0256°
如果你的控制精度要求 0.1°,那这个噪声水平可以接受。如果要求 0.01°,那你就得换传感器或者把带宽压到 1Hz 以下。
2.5 知识体系:传感器噪声分析框架
下面这张图是我自己总结的噪声分析框架,每次做新项目我都会先过一遍:
这张图把整个分析流程串起来了。从左到右是三种传感器,从上到下是从噪声来源到控制影响的链路。每次做新项目,我都会按这个框架走一遍,心里就有底了。