1. LIS3DH管脚定义

PS:LIS3DH和mpu6050的X和Y方向是相反的, mpu6050如下图所示:

2.LIS3DH加速度计介绍

由于LIS3DH只可以得到XYZ加速度,无法获取角速度,所以LIS3DH是无法测出偏航角(yaw).

3. LIS3DH之转换欧拉角介绍

3.1偏航角(yaw)

如下图所示,偏航角是指机头在水平面上的投影与地轴之间的夹角,以机头右偏为正.范围为[-180,180]

PS:由于LIS3DH无法测出,跳过.

3.2俯仰角(pitch)

如下图所示, 俯仰角是指机头与水平面的夹角,当飞机平行时则为0,抬头时则为正,范围为[-180,180]

以45°为例,来解析LIS3DH

如下图所示:

转换为角度图为:

所以转换为角度为:

pitch = (short)(atan2((float)(-y),z) *  / 3.14159);     //转换为度数

3.3 横滚角(roll)

如下图所示, 横滚角指飞机两翼所在的平面与平行线之间的夹角,机体向右滚为正,范围为[-180,180].

横滚角和俯仰角类似,不过变成了X与Z轴之间比例了.

所以转换为角度为:

pitch = (short)(atan2((float)(-y),z) *  / 3.14159);     //转换为度数

4.初始化代码

unsigned char Lis3dh_init(void)
{
u8 val; unsigned char data; i2cInit(); data = 0x47;
if(i2cwrite(0x18, 0x20, , &data))return ; //50HZ reg1 data = ;
if(i2cwrite(0x18, 0x21, , &data))return ; // reg2 data = 0x00;
if(i2cwrite(0x18, 0x22, , &data))return ; // reg3 data = 0X00;
if(i2cwrite(0x18, 0x23, , &data))return ; // +-2g reg4 data = 0x00;
if(i2cwrite(0x18, 0x24, , &data))return ; // reg5 return ;
}

设置为+2g量程,并且传感器刷新率为50hz,也就是说我们延时20ms左右去读一次传感器即可.

5.运行代码

void CalcXYZ(short x,short y,short z)
{
short pitch ,roll;
u16 maxG=; pitch = (short)(atan2((float)(-y),z) * / 3.14159); //转换为度数
roll = (short)(atan2((float)(x),z) * / 3.14159); //转换为度数 printf("x%03dmg y%03dmg z%03dmg pitch:%3d roll:%3d \r\n",x,y,z,pitch,roll);
} int main()
{
u8 i;
u8 buf[];
short X,Y,Z; printf("Gsensor_init%d\r\n",Lis3dh_init()); while()
{
i2cread(0x18,0x27, ,&i); //读取0x27,判断是否有数据
if((i&0x08))
{
for(i=;i<;i++)
i2cread(0x18,0X28+i, ,&buf[i]); X = buf[]*+ buf[]; Y = buf[]* + buf[]; Z = buf[]* + buf[]; X=(short)((float)(X)*/*); Y=(short)((float)(Y)*/*); Z=(short)((float)(Z)*/*); CalcXYZ(X,Y,Z);
}
} }

6.打印截图

6.1当俯仰角pitch接近90°时

如上图可以看到,y是负的1000mg,这是因为它的y方向向下,所以计算俯仰角时,我们用的(0-y).

6.1当俯仰角pitch为0,翻滚角为45°时

如上图可以看到X值为707左右,由于物体自重力为1000,所以707/1000,刚好对应sin45°(0.707)

LIS3DH三轴加速度计-实现欧拉角(俯仰角,横滚角)的更多相关文章

  1. Arduino I2C + 三轴加速度计LIS3DH

    LIS3DH是ST公司生产的MEMS三轴加速度计芯片,实现运动传感的功能.主要特性有: 宽工作电压范围:1.71 ~ 3.6V 功耗:低功耗模式2μA:正常工作模式.ODR = 50Hz时功耗11μA ...

  2. Arduino I2C + 三轴加速度计ADXL345

    ADXL345是ADI公司生产的三轴数字加速度计芯片,与ST的LIS3DH功能接近.主要特性有: 工作电压:2.0 ~ 3.6V 功耗:待机功耗0.1μA:工作时与数据输出频率(ODR)有关,如ODR ...

  3. [每日电路图] 8、三轴加速度计LIS3DH电路图及功耗等指标

    看TI的官网资料:http://www.st.com/web/en/catalog/sense_power/FM89/SC444/PF250725 一.初次接触关注的信息: 1.1.概述中的关键信息 ...

  4. [算法][三轴、六轴、九轴传感器算法分析] 1、分享一个三轴加速计matlab动态可视化脚本

    一.有啥用 这里用的是LIS3DH三轴加速计,输出为X.Y.Z轴的加速度,通过串口连接电脑,电脑里运行matlab脚本通过串口实时获取数据并做可视化显示. 这里虽然是针对LIS3DH的,其实稍作修改即 ...

  5. 【雕爷学编程】Arduino动手做(48)---三轴ADXL345模块

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  6. STC8H开发(七): I2C驱动MPU6050三轴加速度+三轴角速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  7. 三轴陀螺仪与加速度计如何辅助 iPhone 定位的

    在所有之前解释一下陀螺仪 根据Wiki的定义:「陀螺仪是用于测量角度或维持方向的设备,基于角动量守恒原理.」 这句话的要点是测量角度或维持方向,这是 iPhone 4 为何搭载此类设备的原因.机械陀螺 ...

  8. STM32—驱动六轴MPU6050输出欧拉角

    文章目录 一.MPU6050介绍 1.MPU6050与陀螺仪.加速度计的关系: 2.整体概括 3.引脚说明 4.基本配置及相关寄存器 电源管理寄存器1 陀螺仪配置寄存器 加速度计配置寄存器 FIFO使 ...

  9. STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

随机推荐

  1. vue2.0 axios封装、vuex介绍

    一.前言 博主也是vue道路上的行者,道行不深,希望自己的东西能对大家有所帮助.这篇博客针对 了解过vue基础,但是没有做过vue项目的童鞋.如果想看基础指令,可以看我之前的一篇博客,请点击  跳转, ...

  2. Xshell访问和连接Linux

    Xshell是一款强大的安全终端模拟软件,Xshell 模拟了远程主机的操作,其实质就是通过访问和连接到远程主机,在本地实现对远程主机的操作.  一.下载 官网:https://www.netsara ...

  3. Mybatis:缓存,动态SQL,注解SQL以及动态标签使用

    1 转义字符 字符 转义 描述 < < 小于 <= <= 小于等于 > > 大于 >= >= 大于等于 <> <> 不等于 &a ...

  4. javascript深入浅出图解作用域链和闭包

    一.概要 对于闭包的定义(红宝书P178):闭包就是指有权访问另外一个函数的作用域中的变量的函数. 关键点: 1.闭包是一个函数 2.能够访问另外一个函数作用域中的变量 文章首发地址于sau交流学习社 ...

  5. mysql实现主从备份

    mysql 主从备份的原理: 主服务器在做数据库操作的时候将所有的操作通过日志记录在binlog里面,有专门的文件存放.如localhost-bin.000003,这种,从服务器 和主服务配置好关系后 ...

  6. CenOS_用户管理

    1.用户的创建 1.1基本创建 useradd <用户名> 如:useradd xm 默认在home目录下 为用户增加/修改密码: passwd <用户名> 如:passwd ...

  7. SQL Server关于predicate、density、selectivity、cardinality名词浅析

      在SQL Server中,我们要看懂执行计划和统计信息,我们可能需要深刻理解一些关键词,例如密度(Density).选择性(Selectivity).谓词(predicate).基数(Cardin ...

  8. Storm入门(八)Storm实战常见问题总结(持续更新)

    一.本地环境log级别设置问题 storm-core-1.1.0.jar下面有个log4j2.xml文件,默认log级别是info. <configuration monitorInterval ...

  9. 微信小程序picker组件关于objectArray数据类型绑定

    一.前言: 我发现很多的同学都在抱怨说微信小程序的picker的mode = selector/mode = multiSelector 无法实现Object Array数据类型的绑定,其实很多人就想 ...

  10. 学python走过的坑一 类的实例化

    运行结果:line 21, in <module>  s=speaker('ken',10,'aaa')TypeError: __init__() missing 1 required p ...