zoukankan      html  css  js  c++  java
  • LSM6DSL惯性模块开发记录

    一、术语介绍

    1、IMU

    IMU是惯性测量装置(Inertial Measurement Unit)的缩写。
    IMU装置通常包含陀螺仪和加速度计。

    2、加速度计

    加速度计测量的是物体的加速度。
    我们知道,重力加速度是一个物体受重力作用的情况下所具有的加速度。当物体处于静止状态时,加速度计测量出来的值就等于重力加速度1g, 约等于9.8米每平方秒。
    重力加速度g的方向总是竖直向下的,通过获得重力加速度在其X轴,Y轴上的分量,我们可以计算出物体相对于水平面的倾斜角度。

    加速度计来测量倾角:
    一个简单的例子如下: 一个单轴的加速计位于重力水平面上的时候,它在垂直方向上受到的加速度为1g,在水平方向上受到的加速度为0。当我们把它旋转一个角度的时候,就会在水平轴上产生一个加速度分量。通过它们的关系,就可以计算出该单轴加速计的倾角。

    3、陀螺仪

    陀螺仪测量的是角速度,即物体转动的速度.
    把速度和时间相乘,即可以得到某一时间段内物体转过的角度。(但是积分运算得来的角度本身就存在误差,随着时间的累加,误差会加剧,此时就需要加速度计辅助计算出姿态角度)

    陀螺仪的角速度测量:
    假如他的速度是1度/秒,那么通过速度乘以时间,我们就可以知道他距离起点走了多少度。

    4、dps

    dps是Degree Per Second的缩写,是角速度单位。

    二、LSM6DSL资料获取

    1、文档

    LSM6DSL的文档获取很方便,去ST官网即可:https://www.st.com/en/mems-and-sensors/lsm6dsl.html

    主要关注其Datasheet和应用说明文档:

    2、代码

    LSM6DSL的源码获取也很方便:

    Linux平台:https://github.com/STMicroelectronics/STMems_Linux_Input_drivers/tree/linux-3.10.y-gh/drivers/input/misc/st/imu/lsm6dsl

    单片机平台:https://github.com/stm32duino/LSM6DSL.git

    三、LSM6DSL开发及调试

    1、通信接口

     LSM6DSL支持I2C或SPI两种通信接口,以SPI为例:

    (1)LSM6DSL做从机

    (2)SPI配置:时钟线SCK空闲高电平+数据线SDI/SDO第一个下降沿采样,即CPOL=1,CPHA=0,故SPI模式为MODE2

    (3)数据传输:MSB first

    (4)地址传输:读写标志位+地址为7位,传输顺序为:RW-AD6-AD5-AD4-AD3-AD2-AD1-AD0。

    (5)读写标志位:0-写,1-读,以地址0x55为例:

    写数据:Addr = 0x55;读数据:Addr = 0x55 | 0x80

    2、数据转换

    LSM6DSL芯片输出的Accelerometer和Gyroscope各方向的数据是16位有符号数

    以正数为例,最大可到32767,如果是Accelerometer数据,量程为2g的情况下,32768个刻度,一个刻度代表:2g/32768 = 2000mg/32767 = 0.061035mg

    例如:

    如果读出数据为16384,则加速度:16384x0.061035mg = 1000mg = 1g

    不同量程下,每一个刻度代表数值都在Datasheet有标明,可见:4.1 Mechanical characteristics章节。

    3、API使用

    以读取Accelerometer数据为例:

    LSM6DSL_ACC_GYRO_XLDA_t aval = LSM6DSL_ACC_GYRO_XLDA_NO_DATA_AVAIL;
    LSM6DSL_ACC_GYRO_R_XLDA(NULL, &aval);           // 1. 读取芯片状态寄存器
    if (LSM6DSL_ACC_GYRO_XLDA_DATA_AVAIL == aval) { // 2. 判断加速度数据是否有效
    	Get_X_Axes(data);                           // 3. 读取加速度数据,单位mg
    	printf("Acc: %d, %d, %d
    ", data[0], data[1], data[2]);
    }
    

    四、参考资料

    (1)姿态角解算(MPU6050 加速度计加陀螺仪)

    (2)LSM6DS3(六轴传感器)STM32驱动及6D功能实现

    (3)pitch、yaw、roll三个角

  • 相关阅读:
    Poj1163 The Triangle(动态规划求最大权值的路径)
    Poj1258_Agri-Net(最小生成树)
    Poj1258_Agri-Net(最小生成树)
    Poj1218_THE DRUNK JAILER(水题)
    Poj1218_THE DRUNK JAILER(水题)
    Poj1298_The Hardest Problem Ever(水题)
    Poj1298_The Hardest Problem Ever(水题)
    Poj1012_Joseph
    Poj1012_Joseph
    Poj_1008--Maya Calendar
  • 原文地址:https://www.cnblogs.com/rockyching2009/p/15071669.html
Copyright © 2011-2022 走看看