3、陀螺仪选型与接口:角速度检测原理、I2C/SPI接口时序、关键参数
陀螺仪,说白了就是OIS系统的“眼睛”。它负责感知手机的抖动,然后把信号传给驱动芯片。选错陀螺仪,后面的机械设计再精妙也是白搭。我见过不少项目,光学工程师把镜头设计得完美无瑕,结果陀螺仪噪声太大,拍出来的照片还是糊的。
3.1 角速度检测原理
陀螺仪检测角速度,靠的是科里奥利效应。嗯,这个名字听起来挺唬人,其实原理不复杂。
想象一下:一个质量块在芯片内部高速振动。当手机转动时,这个质量块会受到一个侧向力——科里奥利力。这个力的大小,正比于角速度。电容检测结构把这个力转换成电信号,就得到了角速度数据。
我习惯把陀螺仪分成两类:
- 压电式:早期方案,功耗大,精度一般。现在基本淘汰了。
- 电容式:目前主流。MEMS结构,体积小,功耗低,精度高。
电容式陀螺仪内部有个驱动模态和检测模态。驱动模态让质量块稳定振动,检测模态负责感知科里奥利力。两个模态的频率需要匹配,否则灵敏度会下降。我在项目中遇到过一批陀螺仪,频率失配导致灵敏度只有规格书的60%。排查了三天,最后发现是晶圆工艺偏差。
核心要点:陀螺仪输出的是角速度(°/s),不是角度。OIS系统需要对角速度积分才能得到角度位移。积分会引入漂移,所以零偏稳定性至关重要。
3.2 I2C/SPI接口时序
陀螺仪和主控芯片通信,通常用I2C或SPI。选哪个?我个人习惯:
- I2C:引脚少(SCL、SDA),适合走线紧张的设计。但速度慢,标准模式100kHz,快速模式400kHz。OIS系统需要高数据率(通常1kHz以上),I2C容易成为瓶颈。
- SPI:速度快(10MHz以上),全双工。OIS系统首选。缺点是多一根CS片选线。
你想想看,OIS控制环路通常需要1kHz的采样率。如果用I2C,每次读取6轴数据(3轴陀螺仪+3轴加速度计),每个轴16位,加上地址和寄存器,一次通信至少需要30个时钟周期。400kHz下,一次读取就要75μs。再加上处理时间,留给控制算法的余量就很少了。
SPI就从容得多。10MHz时钟下,一次读取不到10μs。我建议OIS系统强制使用SPI,除非你的MCU没有SPI外设。
I2C时序要点
I2C的时序要求其实挺严格的。我踩过坑,分享几个关键点:
- 起始条件:SCL高电平时,SDA从高变低。
- 停止条件:SCL高电平时,SDA从低变高。
- 数据有效性:SCL低电平时改变SDA,SCL高电平时采样SDA。
- 应答位:每8位数据后,接收方拉低SDA表示ACK。
我曾经遇到一个诡异的问题:陀螺仪偶尔读不到数据。用示波器抓波形,发现起始条件不满足时序要求——SDA下降沿到SCL下降沿的时间太短。调整了MCU的I2C时序参数后,问题解决。
SPI时序要点
SPI有四种模式,由CPOL(时钟极性)和CPHA(时钟相位)决定。陀螺仪通常使用模式3(CPOL=1,CPHA=1):
- 空闲时SCK为高电平
- 数据在SCK的上升沿采样
- 数据在SCK的下降沿输出
SPI的时序参数中,我最关注的是:
| 参数 | 说明 | 典型值 |
|---|---|---|
| f_SCK | SCK时钟频率 | 10MHz |
| t_CS | 片选建立时间 | ≥10ns |
| t_SU | 数据建立时间 | ≥5ns |
| t_H | 数据保持时间 | ≥5ns |
避坑指南:我曾经在SPI总线上挂了两个陀螺仪,共用SCK、MOSI、MISO,用不同的CS片选。结果发现一个陀螺仪读取时,另一个的MISO引脚没有高阻,导致数据冲突。解决方案:要么用带三态输出的陀螺仪,要么在CS无效时把MISO引脚配置为输入。
3.3 关键参数
选陀螺仪,看三个参数就够了:灵敏度、噪声密度、零偏稳定性。其他的比如量程、带宽,一般都能满足OIS需求。
灵敏度
灵敏度决定了陀螺仪输出数字量对应的角速度大小。单位通常是LSB/°/s或mdps/LSB。
举个例子:某陀螺仪灵敏度为131 LSB/°/s,量程为±250°/s。那么满量程输出就是131×250=32750 LSB。16位ADC的满量程是32767,刚好匹配。
我建议选择灵敏度在100~200 LSB/°/s之间的陀螺仪。太低,分辨率不够;太高,量程受限。
噪声密度
噪声密度是陀螺仪的本底噪声,单位是°/s/√Hz。它决定了OIS系统能检测到的最小抖动。
OIS系统需要检测的抖动幅度通常在0.1°~1°之间。假设带宽为100Hz,那么噪声密度需要小于:
0.1° / √100Hz = 0.01°/s/√Hz
市面上主流陀螺仪的噪声密度在0.005~0.02°/s/√Hz之间。我习惯选0.01以下的,留点余量。
个人经验:噪声密度这个参数,数据手册上写的往往是典型值。实际量产时会有波动。我建议在选型阶段,让供应商提供3σ上限值。如果3σ上限超过0.02°/s/√Hz,就要考虑加滤波了。
零偏稳定性
零偏稳定性,也叫零偏漂移。它描述了陀螺仪在静止状态下,输出值随时间的变化。单位是°/h或°/s。
零偏稳定性是OIS系统最大的敌人。因为陀螺仪输出要积分才能得到角度,零偏漂移会随着积分时间累积,最终导致图像漂移。
举个例子:一个零偏稳定性为10°/h的陀螺仪,相当于每秒漂移0.0028°。如果OIS系统工作10秒,漂移就达到0.028°。对于40mm焦距的镜头,这相当于在传感器上产生约20μm的位移——已经超过像素尺寸了。
我建议OIS系统选用零偏稳定性在5°/h以下的陀螺仪。高端方案会用1°/h以下的。
| 参数 | 低端 | 中端 | 高端 |
|---|---|---|---|
| 灵敏度 | 50 LSB/°/s | 131 LSB/°/s | 200 LSB/°/s |
| 噪声密度 | 0.02 °/s/√Hz | 0.01 °/s/√Hz | 0.005 °/s/√Hz |
| 零偏稳定性 | 20 °/h | 5 °/h | 1 °/h |
总结一下:陀螺仪选型,接口用SPI,灵敏度看量程匹配,噪声密度看检测精度,零偏稳定性看漂移容忍度。这三个参数缺一不可。我见过有人只盯着灵敏度选型,结果噪声太大,OIS系统根本没法用。嗯,选型这事,还是得全面考虑。