LIS3DH(3轴加速度计)使用

LIS3DH

LIS3DH 是属于 “nano” 系列的超低功耗高性能 3 轴线性加速度计,具有数字 I2C、 SPI 串行接口标准输出。器件具有超低功耗工作模式,可实现高级节能、智能睡眠唤醒以及恢复睡眠功能。LIS3DH 具有 ±2g/±4g/±8g/±16g 的动态用户可选满量程,并能通过 1 Hz 到 5 kHz 的输出数据速率测量加速度。

LIS3DH初始化

我使用的是模拟SPI接口,由于需要低功耗,不使用中断模式。

void Lis3dh_Init(void)
{
  whoami = read_dis3dh(LIS3DH_WHO_AM_I);
  write_dis3dh(LIS3DH_CTRL_REG0,0x90);//SDO禁止上拉  低功耗调试此处有漏电流
  write_dis3dh(LIS3DH_CTRL_REG1,0x27);//10hz  正常模式
  write_dis3dh(LIS3DH_CTRL_REG2,0);//绕过高通滤波器
//  write_dis3dh(LIS3DH_CTRL_REG3,0x00);//中断不被驱动到INT1
  write_dis3dh(LIS3DH_CTRL_REG4,0x80);//FS = 2g
//  write_dis3dh(LIS3DH_CTRL_REG5,0x00);//不锁存中断
  write_dis3dh(LIS3DH_INT1_DURATION, 0x00);//设置最小持续中断时间,ODR;
}

利用X\Y\Z轴的加速度计算倾角

LIS3DH传感器是平置初始位置,我需要计算传感器与水平面的夹角:

//获取角度值 横滚角和俯仰角
uint8 get_Angle_value(void)
{
     short x,y,z;
     float value=0;
     uint8 analevalue = 0;
     if((read_dis3dh(LIS3DH_STATUS_REG)&0x08)==0x08)
     {
     regvalue[0] = read_dis3dh(LIS3DH_OUT_X_L);
     regvalue[1] = read_dis3dh(LIS3DH_OUT_X_H);
     regvalue[2] = read_dis3dh(LIS3DH_OUT_Y_L);
     regvalue[3] = read_dis3dh(LIS3DH_OUT_Y_H);
     regvalue[4] = read_dis3dh(LIS3DH_OUT_Z_L);
     regvalue[5] = read_dis3dh(LIS3DH_OUT_Z_H);     
     x = regvalue[1]*256 +regvalue[0];
     y = regvalue[3]*256 +regvalue[2];
     z = regvalue[5]*256 +regvalue[4];
     x=(short)((float)(x)/16);//换算为mg
     y=(short)((float)(y)/16);
     z=(short)((float)(z)/16);       
     value = atan((sqrt((float)x*(float)x+(float)y*(float)y))/(float)(-z))*57.29578;
     if(value==0 &&z>0)
     {
      value=180;
     }
     else if(value<0)
     {
       value = 180+value;
     }   
   }
   analevalue=(uint8)(abs(value));
   return analevalue;
}

最开始采用单轴加速度计算角度,所采用的计算公式为:
在这里插入图片描述
但是这种单轴计算法的灵敏度不是线性的,如下图所示,这样计算角度在某个角度会误差较大,而且抗干扰能力也不强。
在这里插入图片描述
所以我采用了三轴倾斜计算的方法。
在这里插入图片描述

在这里插入图片描述

实际应用也证明了三轴倾斜计算的结果优于单轴计算法。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值