一、简介

依据MPU6050六轴运动传感器的原始数据,计算设备当前状态的加速度、角速度和倾斜角度。本项目的主控芯片是nRF52832(SDK:Nordic SDK 17.0.2.),但算法通用,读取原始数据的完整工程来自艾克姆,已上传个人主页。

二、MPU6050初始化和寄存器配置

一般在唤醒MPU6050之前都会用MCU读一下设备地址以检测设备以及通信是否正常:

// !< WHO_AM_I register identifies the device. Expected value is 0x68.
#define ADDRESS_WHO_AM_I          (0x75U) bool mpu6050_verify_product_id(void)
{uint8_t who_am_i;if (mpu6050_register_read(ADDRESS_WHO_AM_I, &who_am_i, 1)){if (who_am_i != MPU6050_WHO_AM_I){return false;}else{return true;}}else{return false;}
}

上述函数返回true后,才可以开始配置寄存器:

#define MPU_PWR_MGMT1_REG          0x6B  //电源管理寄存器1
#define MPU_SAMPLE_RATE_REG       0x19  //采样频率分频器
#define MPU_CFG_REG               0x1A  //配置寄存器
#define MPU_INT_EN_REG            0x38  //中断使能寄存器
#define MPU_GYRO_CFG_REG          0x1B  //陀螺仪配置寄存器
#define MPU_ACCEL_CFG_REG         0x1C  //加速度计配置寄存器//唤醒MPU6050
(void)mpu6050_register_write(MPU_PWR_MGMT1_REG , 0x00); //设置采样率(Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)):1KHz
(void)mpu6050_register_write(MPU_SAMPLE_RATE_REG , 0x07);
//设置低通滤波器,截止频率是1K,带宽是5K
(void)mpu6050_register_write(MPU_CFG_REG , 0x06);
//关闭中断
(void)mpu6050_register_write(MPU_INT_EN_REG, 0x00);
//陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
(void)mpu6050_register_write(MPU_GYRO_CFG_REG , 0x18);
//配置加速度传感器量程 +-2G s,不自检
(void)mpu6050_register_write(MPU_ACCEL_CFG_REG,0x00); 

三、加速度、角速度计算公式

1.加速度

某个轴的加速度 a = Range * G * ACC / 32768 . 其中G是当地重力加速度,ACC是该轴的加速度原始数据,Range是由配置加速度量程时写入的参数决定的,关系如下:

 

根据初始化时写入的数据,不自检,AFS_SEL = 0x00,这里Range = 2:

//配置加速度传感器量程 +-2G s,不自检
(void)mpu6050_register_write(MPU_ACCEL_CFG_REG,0x00); 

2.角速度

某个轴的角速度 g = Range * Gyro / 32768 . Gyro是这个轴的角速度原始数据,Range是由配置角速度量程时写入的参数决定的,关系如下:

 

根据初始化时写入的数据,不自检,FS_SEL = 0x11,这里Range = 2000:

//陀螺仪自检及测量范围,典型值:0x18(不自检,2000deg/s)
(void)mpu6050_register_write(MPU_GYRO_CFG_REG , 0x18);

四、倾斜角度公式

倾斜角度依据加速度原始数据计算,公式如下:

#define x                         0
#define z                         1Angle[x] = atan2(AccValue.X, AccValue.Y)*180/3.14f;
Angle[z] = atan2(AccValue.Z, AccValue.Y)*180/3.14f;

该公式适用的初始姿态是竖直的,也就是MPU6050的Y轴竖直向上时是初始状态,此时的角度为0。Angle[x] 是x轴与竖直平面的夹角度数,Angle[z] 是z轴与水平平面的夹角度数。

参考:(16条消息) 关于MPU6050的数据获取、分析与处理_acktomas的博客-CSDN博客_mpu6050读取

MPU6050原始数据计算加速度、角速度、倾斜角度相关推荐

  1. 如何把MPU6050输出的加速度和角速度换算成角度

    文章目录 1 介绍 2 MPU6050的工作过程 3 Arduino和MPU6050的连接方法 4 MPU6050的Arduino代码 1 介绍 自己在研究一个题目,就是如何把MPU6050输出的加速 ...

  2. mpu6050三轴加速度数据,三轴角速度数据显示

    一.实验效果 显示mpu6050三轴加速度原始数据,三轴角速度原始数据. 硬件:stm32f427vit6单片机 .mpu6050模块 软件:STM32CubeIDE 1.8.0 C语言 二.硬件连接 ...

  3. 【Ardiuno】Ardiuno+MPU6050读取原始加速度并显示

    最近手头有一个任务,使用MPU6050来测量加速度,就是物理上学的那个α,有一些小坑需要踩,在这里发出来,希望对大家有用. 硬件:Ardiuno Nano(Old)/MPU6050(IIC) 连线:参 ...

  4. STM32测量倾斜角度

    介绍 在本文中,我们将学习如何使用6轴陀螺仪/加速度传感器和STM32F103C8微控制器测量倾斜角度. 这可以通过简单地将6轴陀螺仪/加速度传感器与STM32接口来实现. 加速度计发送X,Y和Z加速 ...

  5. opencv判断 线夹角_python opencv实现直线检测并测出倾斜角度(附源码+注释)

    由于学习需要,我想要检测出图片中的直线,并且得到这些直线的角度.于是我在网上搜了好多直线检测的代码,但是没有搜到附有计算直线倾斜角度的代码,所以我花了一点时间,自己写了一份直线检测并测出倾斜角度的代码 ...

  6. 利用MPU6050三轴加速度获取欧拉姿态角

    最近用到了MPU6050进行姿态估计,现将其中MPU6050三轴加速度读数求解欧拉姿态角的推导过程记录如下: 首先将MPU6050固联的载体坐标系b系与导航坐标系n系重合.即将图1的姿态旋转至图2中的 ...

  7. Emgucv4.4.0.4099版本PCB开发板纠偏(直线倾斜角度计算方法、确定参考点坐标)MinEnclosingCircle(拟合圆函数)

    原图 PCB原图文件百度云链接: https://pan.baidu.com/s/1Q4JYpmY6epPoO6dP45GcRw 提取码:zzxd 代码 //计算直线倾斜角度 public doubl ...

  8. 黑客观察手机倾斜角度就能猜出你的密码,首次命中率高达74%!

    本文讲的是黑客观察手机倾斜角度就能猜出你的密码,首次命中率高达74%!, 近日,安全研究人员发现了一种黑客入侵智能手机的新方式,即使用户手机有PIN码和密码保护,黑客也只需要通过窥探其输入手机密码时倾 ...

  9. cesium 球体半倾斜角度

    cesium 球体半倾斜角度 // 定位到某个位置var camera = viewer.scene.camera;camera.flyTo({//镜头的经纬度.高度.镜头默认情况下,在指定经纬高度俯 ...

最新文章

  1. 第K极值(Tyvj)
  2. PHP实现归治算法,PHP排序算法系列之归并排序详解
  3. Mybatis 算术逻辑运算
  4. 下图为双总线结构机器的数据通路_海康机器人为物流加码:进击吧,双11新“打工人”...
  5. 京东购物车的 Java 架构实现及原理
  6. Cocoa依赖包管理工具
  7. 【Rényi差分隐私和零集中差分隐私(差分隐私变体)代码实现】差分隐私代码实现系列(九)
  8. 操作 mysql 不生成日志_利用Python操作MySQL数据库,以后不懂这些是要被鄙视的!...
  9. 大数据_Flink_Java版_数据处理_流处理API_Transform(3)_Reduce聚合算子---Flink工作笔记0031
  10. 百度系无人车创业公司领骏科技完成新一轮融资
  11. 【软件测试】边界测试中所选择的输入测试数据一定是有效数据(错)
  12. 深入探究Retinex
  13. 值得终身背诵的道家名言50句,拔高人生境界
  14. 28335和C语言数据存储检索
  15. Win12系统或新增“灵动岛”设计 截图曝光
  16. Java获取四分位数
  17. java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码
  18. IPV6地址数据库导出
  19. Anbox之构建android.img(三)
  20. 阿里云SLB之:基于TCP协议的SLB应用场景(十)

热门文章

  1. JAVA结合AE(Adobe After Effects)实现类似于传影(视频DIY)的核心功能,程序也可以是艺术。
  2. 在fragment中简单应用百度地图定位
  3. MACD+波动率过滤+追踪止损 期货择时汇总
  4. Fully Unsupervised Person Re-identification via Selective Contrastive Learning
  5. 香港大学工程学院计算机教授,香港大学工程学院院长周永祖教授访问我院
  6. 图片头顶距离顶部百分比怎么修改_ps图片处理修改文字:学习如何用PS制作金色华丽的立体文字...
  7. 线性布局html,线性布局中的layout_weight属性
  8. 客户端到服务器的通信过程
  9. Android高中低端机整理,高中低端都有 各品牌新上市安卓机汇总
  10. 【ASP.NET Identity系列教程(三)】Identity高级技术