文章目录

  • 一、开发笔记
  • 二、MPU6050初始化步骤
  • 三、MPU6050几个重要寄存器
    • 寄存器典型值
    • 寄存器117-设备地址-WHO_AM_I
    • 寄存器107-电源管理1-PWR_MGMT_1
    • 寄存器26-配置数字低通滤波器 -CONFIG
    • 寄存器27 - 陀螺仪量程配置-GYRO_CONFIG
    • 寄存器28 - 加速度计量程配置-ACCEL_CONFIG
    • 寄存器25 - 采样速率分频器-SMPRT_DIV
    • 寄存器59到64-加速度计测量值
    • 寄存器65和66 - 温度测量
    • 寄存器67至72 - 陀螺仪测量值
  • 四、 MPU6050传感器DMP功能
  • 五、I2C相关知识
  • 六、调试记录
  • 七、参考链接
文章更新版本 时间 备注
V0.1 发布于2019-08-29 11:14:22 初始版本
V0.2 更新于2019-12-23 18:12:16 增加mpu6050方向定义

一、开发笔记

1. 数字陀螺仪传感器工作原理

  • 陀螺仪:当陀螺仪围绕任何感应轴旋转时,科里奥利效应就会产生电容式传感器检测到的振动。 所得到的信号被放大,解调和滤波产生与角速度成比例的电压。
  • 电子加速度计:加速沿着一条特定轴在相应的检测质量上引起位移,引起电容式传感器检测电容的变化。

2. 数字运动处理器(DMP)

  • MPU6050自带一个数字运动处理单元,可以计算四元数等,减轻主控制器压力。
  • DMP可以通过引脚触发中断。

3. 辅助I2C串行接口

  • MPU-60X0 具有一个辅助 I2C 总线,用于与片外3轴数字输出磁力计进行通信或其他传感器。
  • 辅助I2C串行接口有两种工作模式:I2C Master Mode和Pass-Through Mode。

4. MPU-60X0 FIFO

  • MPU-60X0包含一个可通过串行接口访问的1024字节FIFO寄存器。 FIFO配置寄存器决定哪个数据写入FIFO。 可能的选择包括陀螺仪数据,加速计数据,温度读数,辅助传感器读数和 FSYNC 输入。

5. 数字低通滤波器(DLPF)

  • MPU6050自带低通滤波器,可以通过配置寄存器26控制低通滤波频段,减少高频干扰。但是会降低传感器输入速率(开启DLPF加速度计输出1kHZ,关闭DLPF可以输出8Khz)

6. FSYNC帧同步采样引脚

  • 寄存器26-EXT_SYNC_SET,用于配置外部帧同步引脚的采样

7. MPU6050方向定义

二、MPU6050初始化步骤

  1. 恢复寄存器默认值
    设置PWR_MGMT_1 bit7为1,恢复后bit7为0,bit6自动设置为1,进入sleep模式。
  2. 设置PWR_MGMT_1 bit6为0,唤醒传感器
  3. 设置时钟源
  4. 设置量程
    分别设置陀螺仪和加速度计量程。
  5. 设置采样率
  6. 设置数字低通滤波器(选配)

三、MPU6050几个重要寄存器

寄存器典型值

寄存器 典型值 功能
PWR_MGMT_1 0x00 正常启用
SMPLRT_DIV 0x07 陀螺仪采用率 125Hz
CONFIG 0x06 低通滤波器频率为 5Hz
GYRO_CONFIG 0x18 陀螺仪不自检,输出满量程范围为 ± 2000 °/s
ACCEL_CONFIG 0x01 加速度计不自检,输出的满量程范围为± 2g

寄存器117-设备地址-WHO_AM_I

[6:1] 保存设备地址,默认为 0x68,不反应AD0引脚值。

寄存器107-电源管理1-PWR_MGMT_1

DEVICE_RESET:设置为1时,寄存器值设置为默认。
SLEEP 当该位置1时,该位将MPU-60X0置于睡眠模式。
CYCLE 当该位设置为1且SLEEP被禁止时,MPU-60X0将循环在睡眠模式和唤醒之间以LP_WAKE_CTRL(寄存器108)确定的速率从活动传感器获取单个样本数据。

寄存器26-配置数字低通滤波器 -CONFIG

数字低通滤波器(DLPF)取值与滤波频段关系:

寄存器27 - 陀螺仪量程配置-GYRO_CONFIG

XG_ST-X轴陀螺仪自检,FS_SEL用于配置陀螺仪量程:

寄存器28 - 加速度计量程配置-ACCEL_CONFIG

寄存器25 - 采样速率分频器-SMPRT_DIV

该寄存器指定用于产生MPU-60X0采样率的陀螺仪输出速率的分频器。传感器寄存器输出,FIFO输出和DMP采样都基于采样率。采样率是通过将陀螺仪输出速率除以 SMPLRT_DIV 产生的。

Sample Rate = Gyroscope Output Rate / (1 + SMPLRT_DIV)
where Gyroscope Output Rate = 8kHz when the DLPF is disabled (DLPF_CFG = 0 or 7), and 1kHz when the DLPF is enabled (see Register 26)

在不开启DLPF的情况下,设置SMPLRT_DIV 为7可以时芯片产生1khz的中断信号。

寄存器59到64-加速度计测量值

大数端存放:地址地位存放数据高位,地址高位存放数据地位。
补码存放:因为测量值为有符号整数,因此采用补码方式存放

寄存器65和66 - 温度测量

寄存器67至72 - 陀螺仪测量值

四、 MPU6050传感器DMP功能

惯性传感器芯片内部一般会集成一个DMP(Digital Motion Processor)处理器,可以直接硬件解算四元数,解放主控资源。
注意关注一下硬件姿态解算,并不是之前印象中的那么难用,在crazypony开源项目中,开发者测试直接从MPU6050的DMP输出四元数,可以做的更加稳定,如果再外加一个磁力计,可以直接输出带有东西南北绝对位置。

五、I2C相关知识

  • 数据传输:SCL为高电平时,SDA线若保持稳定,那么SDA上是在传输数据bit;若SDA发生跳变,则用来表示一个会话的开始或结束。
  • 数据改变:SCL为低电平时,SDA线才能改变传输的bit。
  • 处理繁忙:如果从机处于繁忙状态,并且现在不方便接受下一个字节,可以保持SCL为低电平,从而强制主机进入等待状态,等准备号后释放时钟线。
  • 处理应答:应答时钟由主机控制,应答信号-在第9个时钟周期,SCL为高,SDA为低。拒绝应答-在第9个时钟周期,SDA一直为高。

六、调试记录

  • 初始化异常报错
    检查连接和代码都没有问题,更换传感器模块后正常。此错误为传感器模块质量问题,导致通信不正常。
E (262) I2Cbus: [port:0, slave:0x68] Failed to read 1 bytes from register 0x75, error: 0xFFFFFFFF
E (272) MPU6050: func:uint8_t mpud::MPU::whoAmI() @ line:162, expr:"readByte(regs::WHO_AM_I, buffer)", error:0xFFFFFFFF
E (282) MPU6050: func:esp_err_t mpud::MPU::testConnection() @ line:143, expr:"lastError()", error:0xFFFFFFFF
E (292) example: Failed to connect to the MPU, error=0XFFFFFFFF

更换模块后输出正常(未减去基准值)

七、参考链接

  1. MPU6050开发 – 基本概念简介
  2. MPU6050开发 – 进阶之I2C/SPI通信协议
  3. MPU6050开发 – 测试程序分析
  4. esp32-MPU-driver

[09]ESP32+陀螺仪加速度计MPU6050移植与调试相关推荐

  1. 陀螺仪加速度计MPU6050程序与校准方法

    文章目录 前言 一.陀螺仪与加速度计简介 二.程序使用 1.初始化 2.读取数据 三.误差校准 1.陀螺仪校准 2.加速度计校准 3.校准后的输出 四.源码获取 前言 本文将介绍陀螺仪和加速度计的使用 ...

  2. [13]ESP32+光流传感器PMW3901移植与调试

    文章目录 一.PMW3901传感器介绍 1. 主要特性 2. 主要参数 3. 封装和引脚图 4. Power States & Sequence 二.ATK-PMW3901模块说明 1. 主要 ...

  3. 陀螺仪加速度计 JY61(MPU6050) 原理简述及缺陷分析

    -- 该模块工作原理较为复杂,且涉及到数字信号处理,本文只是简单的描述其工作原理,并捎带上一些基础理论. JY61(MPU6050)简介 MPU6050由四部分组成:加速度计.陀螺仪.DMP.温度传感 ...

  4. ESP32设备驱动-MPU-9250 3轴陀螺仪/加速度计/磁力计驱动

    MPU-9250 3轴陀螺仪/加速度计/磁力计驱动 1.MPU9250介绍 MPU-9250 是面向智能手机.平板电脑.可穿戴传感器和其他消费市场的第二代 9 轴运动处理单元™(Motion Proc ...

  5. Linux---wifi驱动移植及调试(SSV6x5x)

    一.背景说明及驱动移植 本文主要简述南方硅谷ssv6x5x wifi驱动的移植及调试,官方实际是有一份南方硅谷ssv6x5x 驱动移植用户指南,需要的话可以下载,官方指南对于移植过程描述的很清楚. 移 ...

  6. 安信可ESP32 LVGL_V8 最快移植攻略

    安信可ESP32 LVGL_V8 最快移植攻略 文章目录: 安信可ESP32 LVGL_V8 最快移植攻略 软件环境 硬件环境 ESP-S3-12K开发板介绍 开发板的参数 ESP32S3的SPI L ...

  7. Android系统移植与调试之-------如何修改Android设备添加重启、飞行模式、静音模式等功能(一)...

    1.首先先来看一下修改前后的效果对比图 修改之后的图片 确认重启界面 具体的修改内容在下一篇中具体介绍. Android系统移植与调试之------->如何修改Android设备添加重启.飞行模 ...

  8. 小程序—这款工具把加速计、陀螺仪、设备方向的调试痛点解决了

    之前在一篇博文中捎带介绍过这款工具,反响很好,还收到了两位用户的打赏,但受那篇博文的影响,并没有被广大小程序开发者所熟知,故写一篇专门的,希望能有更多用户不再被加速计.陀螺仪.设备方向的调试难题再刺痛 ...

  9. wifi(rtl8188eu)移植及调试笔记

    /* * Dave/nova_wangwenbo@126.com */ wifi移植及调试笔记 一.rtl8188eu 1.修改设备树: 添加wifi ap电源控制引脚 WIFI,power_ap_g ...

最新文章

  1. EOS与以太坊有哪些区别?
  2. Ajax在火狐下提示跨域问题的解决方案
  3. java function获取参数_「Java容器」ArrayList源码,大厂面试必问
  4. boost::graph模块使用write_graphviz 输出 BGL adjacency_list 的简单示例
  5. PHP的php://
  6. [转载]js复制内容加版权声明代码
  7. mysql select null 0,查询值中为NULL,在MySQL中产生0.00
  8. linux脚本取前一天时间戳,linux – 为脚本日志条目添加时间戳
  9. 4G网络建设近尾声 SDN/NFV是5G网络创新关键
  10. PIPI-OJ BUG log
  11. 软考数据库系统工程师教程知识点总结
  12. iphone java模拟器_电脑java模拟器 模拟器游戏
  13. 超全 泛微 E9 Ecology 9开发资料大全 开源资源下载 泛微E9二次开发 泛微开发资料
  14. 四川大学计算机网络实验,四川大学计算机网络实验报告
  15. phpspider PHP 爬虫
  16. Mac OS X 清除DNS缓存
  17. SQL调优(SQL TUNING)并行查询提示(Hints)之pq_distribute的使用
  18. 网易云音乐小程序登录接口显示400,拥挤问题解决
  19. Python编程-让繁琐的工作自动化(十一)从Web爬取信息
  20. Unable to find the VMX binary ‘D:\新建文件夹1\vmware-vmx.exe‘.

热门文章

  1. 微信h5页面,WeixinJSBridge对象
  2. attributes() 函数
  3. cad详图怎么画_菜鸟入门必备:结构图如何根据建筑图绘制?【CAD】
  4. kubernetes认证-CKA、CKS考试
  5. Java面向对象-final类和final方法、final变量(常量)
  6. beego环境无脑搭建
  7. 科软 | Linux课程总结报告
  8. html中字体行间距怎么写,css行间距(html文字行间距怎么设置)
  9. 西工大机考《高级审计学》大作业网考
  10. 2020世界互联网大会上的那些领军企业