6轴加速度角速度传感器的一般使用流程

本文以下文提到传感器说明常用的陀螺加计通用知识点。

Fig.1 ASM330LHB

 Fig.2 LSM6DSO32 

 

Fig.3 SMI230-博士

1. 陀螺和加计的原始数据是如何和实际数据对应起来的?

陀螺常用的单位为g,加计常用的单位为度/秒(dps),一般两者的数据寄存器都是16位的,比如陀螺X轴分为OUTX_L_G和OUTX_H_G,加计X轴分为OUTX_L_A和OUTX_H_A最高位为符号位,则输出范围应为(-32767~32767)。

情况1:

如上图Fig.1和Fig.2所示的型号对应的数据手册中单位是以mg/LSB和mdps/LSB,假如陀螺和加计的量程分别选择±1000dps和±16 g,从寄存器中读出的原始数据定义为s16 gyro_raw和s16 acc_raw,则:

gyro_raw = (s16)((OUTX_H_G<<8)+OUTX_L_G) *35/1000(g)(dps)//将mdps转换为dps

acc_raw = (s16)((OUTX_H_A<<8)+OUTX_L_A)*0.488/1000//将mg转换为g

情况2:

如上图Fig.3所示型号对应的数据手册中单位为LSB/g和LSB/bps,同理,假如陀螺和加计的量程分别选择±1000dps和±16 g,从寄存器中读出的原始数据定义为s16 gyro_raw和s16 acc_raw,则:

gyro_raw = (s16)((OUTX_H_G<<8)+OUTX_L_G) /32.77(dps)

acc_raw = (s16)((OUTX_H_A<<8)+OUTX_L_A)/2048(g)

注意这里的2048 LSB/g实际是由32767/16计算的,32.77 LSB/bps是由32767/1000计算的。

 2. 读写该类寄存器的通用方式

 一般都会支持SPI和IIC通信协议,以LSM6DSO32为例说明读写寄存器的过程,如下:

①配置硬件接口,SPI/IIC驱动接口(下面的时序图以SPI为例说明)

②配置陀螺和加计的量程和数据速率,如图Fig.4和Fig.5中分别向0x10寄存器和0x11寄存器设置陀螺和加计所需量程。此处是向寄存器写数据,故最高位为0(一般都是R/!W,读高写低)

 

Fig.4 LSM6DSO32-acc控制寄存器

 

Fig.5 LSM6DSO32-gyro控制寄存器

 Fig.6 LSM6DSO32写寄存器时序

③读陀螺加计的原始数据

在数据手册寄存器映射章节,容易看出陀螺和加计的数据寄存器是连续的,故一般选择连续读模式,向SPI总线写要读的寄存器其实地址,此处注意最高位为1(比如从陀螺的X轴开始读数,则直接写0x80|0x22),再直接读出12个字节数据(包含了陀螺加计的原始数据)。

 

 

Fig.7LSM6DSO32读寄存器时序

问题1:静止的时候测试会出现野点 

 

 修改点:如下图示根据状态寄存器中陀螺加计的数据更新标识来获取有效数据。

 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值