陀螺仪基础:MEMS陀螺仪原理、角速度与角度、数据输出格式与常用型号
各位同学好,我是老张。今天咱们聊聊陀螺仪,这是OIS防抖算法里最核心的传感器之一。说实话,我刚开始做防抖那会儿,对陀螺仪也是一知半解,踩了不少坑。后来慢慢摸透了它的脾气,才发现这东西其实没那么玄乎。
MEMS陀螺仪的工作原理
MEMS陀螺仪,全称是微机电系统陀螺仪。说白了,就是在一个指甲盖大小的芯片里,用微加工技术做出一个能感知旋转的机械结构。
它的核心原理是科里奥利效应。嗯,这个名字听起来挺唬人,但你可以这么理解:
- 芯片内部有一个质量块,在驱动力的作用下做高速振动
- 当整个芯片发生旋转时,这个质量块会受到一个垂直于振动方向的力
- 这个力的大小,正比于旋转的角速度
- 通过检测这个力导致的电容变化,就能算出角速度
我在项目中遇到过一个问题:有些便宜的陀螺仪,驱动频率不稳定,导致零偏漂移特别大。后来我学乖了,选型时一定先看驱动频率的温漂指标。
关键点:MEMS陀螺仪输出的是角速度(单位:°/s),不是角度。要得到角度,必须对时间积分。
角速度与角度的关系
这个关系其实很简单:
角度 = ∫ 角速度 dt
但在实际工程中,这个积分可没那么简单。为什么?因为陀螺仪有零偏误差,积分时间一长,误差会累积,角度就飘了。
举个例子:
假设陀螺仪零偏为 0.1°/s
积分 10 秒后,角度误差 = 0.1 × 10 = 1°
积分 60 秒后,角度误差 = 0.1 × 60 = 6°
你看,才一分钟就偏了6度。这就是为什么纯陀螺仪积分不能长时间用,必须配合加速度计做融合。
我的经验:在OIS应用中,我们通常只关心短时间(几毫秒到几百毫秒)的角度变化。所以陀螺仪的零偏漂移对OIS影响不大,反而是高频噪声更让人头疼。
陀螺仪数据输出格式
陀螺仪和主控芯片通信,主流方式有两种:I2C和SPI。
| 特性 | I2C | SPI |
|---|---|---|
| 引脚数 | 2根(SDA, SCL) | 4根(MOSI, MISO, SCLK, CS) |
| 速度 | 通常 400kHz ~ 1MHz | 可达 10MHz 以上 |
| 多设备支持 | 地址寻址,可挂多个 | 片选信号,每个设备一根CS |
| 数据格式 | 通常 16位有符号整数 | 通常 16位有符号整数 |
我个人习惯在OIS项目里用SPI。为什么?因为OIS需要高采样率(通常1kHz以上),I2C的速率有时候会成为瓶颈。我曾经在一个项目里用I2C读陀螺仪,采样率只能跑到800Hz,换成SPI后直接飙到2kHz,效果立竿见影。
数据格式方面,大部分陀螺仪输出的是16位有符号整数。比如你读到0x01F4,换算成十进制是500,如果量程是±2000°/s,那实际角速度就是:
实际角速度 = 原始值 × 量程 / 32768
= 500 × 2000 / 32768
≈ 30.5 °/s
注意:不同厂家的陀螺仪,数据格式可能略有差异。有的用补码,有的用偏移二进制。读数据手册时一定要看清楚。
常用陀螺仪型号介绍
市面上陀螺仪型号很多,我挑几个OIS领域常用的说说:
- ICM-20602(InvenSense):6轴IMU,噪声低,温漂小,我用的最多的一款。采样率最高4kHz,适合OIS。
- BMI160(Bosch):也是6轴,功耗低,适合电池供电的设备。但噪声比ICM-20602稍大。
- LSM6DSO(ST):ST的新品,性能不错,支持SPI和I2C,还有FIFO功能,能减轻主控负担。
- ADXRS453(ADI):纯陀螺仪,精度高,但价格贵。我一般只在高端设备上用。
选型时我一般看三个指标:噪声密度、零偏稳定性、带宽。噪声密度决定了角度抖动的程度,零偏稳定性决定了长时间积分的误差,带宽决定了能响应的运动频率。
知识体系结构图
下面这张图,是我自己画的,把本章的知识点串起来了:
这张图把本章的核心逻辑串起来了:从MEMS原理出发,理解角速度输出,掌握通信方式,最后落实到OIS应用和选型。你想想看,是不是每一步都离不开前面打下的基础?
避坑指南:我曾经在一个项目里,陀螺仪数据老是跳变,查了半天发现是I2C上拉电阻没焊好。所以啊,硬件基础打牢,算法才能跑得稳。
好了,这一章就到这里。记住:陀螺仪输出的是角速度,不是角度;积分有误差,需要融合;选型看噪声、零偏、带宽。这些基础打牢了,后面讲融合算法时你才能跟得上。
公众号:蓝海资料掘金营,微信deep3321