参考资料

参考资料说明:

用户手册时针对电路设计者的,一般时芯片的一些电气特性和经典电路,同时,也会说明该芯片的一些测量精度。

寄存器地图是针对驱动开发者的,主要告诉开发者如何使用(控制和读取)传感器。我们把精力放在寄存器地图这个文档即可。

资料下载:PDF

I2C

MPU9250 是由两个模块(MPU6500+AK8963)组合而成。其中MPU6500可以测量加速度和角加速度(6轴)。AK8963可以测量各个方向磁场数据(3轴)。一共是9轴。

MPU6500的I2C地址为0x68

BMP280的I2C地址为0x76

使用树莓派4B可以用以下指令查询:

sudo i2cdetect -y 1
# 查询数据 最后一个1的含义指的是树莓派的第二个i2c总线,第一个为0
sudo i2cdump -y 1 0x68
# 后面跟一个地址可查询对应的数据,查询Register Map可以知其具体含义。

设备ID

MPU6500的设备ID是** 0x70**。地址为0x75

BMP设备ID是0x58,ID地址为0xD0

可以根据ID判断传感器是否正确连接。

关键数据读取

说明:在读取数据之前,还需要对传感器进行一些参数设定,这个部分可以参考Register Map的提示设定。(比如电源模式,测量精度,FIFO模式等)

MPU6500:读取加速度数据&换算单位

查询手册,找到关键数据的寄存器地址,如下图:

可以知道,测量的数据的起始地址是0x3B,分别是ax, ay, az, gx, gy, gz。每一个数据是16位,也就是2个字节,总测量数据长度是12个字节。在终端中,读取数据如下

利用树莓派的smbus库,可以编写如下代码片段

def readAccel(self): # 这里以读取加速度为例,角加速度同理
data = bus.read_i2c_block_data(self.address, ACCEL_OUT, 6) # 读取六个字节
# 这里读取的数据的格式是补码,可以从手册里查询到。
x = self.dataConv(data[1], data[0]) # 这里需要按照高位数据在高位的规则左位运算,补码
y = self.dataConv(data[3], data[2]) # 同上
z = self.dataConv(data[5], data[4]) # 同上 x = round(x*self.ares, 3) # 单位换算&四舍五入
y = round(y*self.ares, 3) # 同上
z = round(z*self.ares, 3) # 同上

**这里的单位换算需要根据测量精度乘以对应数值。**这个地方可以这样理解,传感器就像一把尺子,有单位长度(即测量的最小长度)和量程。一把尺子的刻度的数量是固定的,这里的传感器的刻度数量同样固定,不同的是传感器的单位长度是可调整的,根据 单位长度x刻度数量 =量程。 当单位长度变大时,量程也随之变大,但是测量精度会随之下降。反之,量程变小,测量精度提升。

具体代码实现如下:(这里的2G,4G,8G,16G是量程,32768是正刻度数量。)

if afs == AFS_2G: self.ares = 2.0/32768.0
elif afs == AFS_4G: self.ares = 4.0/32768.0
elif afs == AFS_8G: self.ares = 8.0/32768.0
else: #afs == AFS_16G:
self.ares = 16.0/32768.0

BMP280: 读取温度和气压信息 & 单位换算

具体同上。这里列举一些关键信息如下:

各个数据段含义:

测量精度控制:

具体换算实例

推荐库

(可直接使用或者少量修改可用)

Arduino: https://github.com/thejmart/GY_91-.git

Python: https://github.com/qi-xmu/FaBo9AXIS-MPU9250-Python.git 说明:这个库是克隆别人的,使用的是python2,同时只有MPU9250的代码。可以等我的后期更新。

C/C++: https://github.com/ricardozago/GY91-MPU9250-BMP280.git

GY91(MPU9250 + BMP280)惯性传感器开发指南的更多相关文章

  1. Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(1)

    本篇内容为,通过 I2C 配置 GY-91 MPU9250+BMP280 里面的 MPU9250 连接 AK8963 磁感应.两个办法,1)MPU9250 设置 Master Mode 通过 AUX ...

  2. Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(2)

    这次用 SPI.BBB 有两套 SPI 接口可用,两套都是默认 disable,需要用 overlay 方式启用,即: echo BB-SPIDEV0 > /sys/devices/bone_c ...

  3. SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器

    摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...

  4. 关于《Swift开发指南》背后的那些事

    时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014 ...

  5. 《Google Glass开发指南》

    <Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...

  6. 玩转X-CTR100 l STM32F4 l BMP280气压计传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 扩展BMP ...

  7. ASP.NET Aries 开源开发框架:开发指南(一)

    前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...

  8. FreeMarker模板开发指南知识点梳理

    freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...

  9. Jetty使用教程(四:21-22)—Jetty开发指南

    二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...

随机推荐

  1. [Android开发学iOS系列] 工具篇: Xcode使用和快捷键

    [Android开发学iOS系列] 工具篇: Xcode使用和快捷键 工欲善其事必先利其器. 编辑 Cmd + N: 新建文件 Option + Cmd + N: 新建文件夹 Cmd + / : 注释 ...

  2. BeanUtils.copyProperties的使用方法

    BeanUtils.copyProperties的使用方法 1.使用的是springframe包下的,BeanUtils.copyProperties(a,b) 把a属性拷贝给b属性 2.注意事项: ...

  3. CF -1679C

    Problem - 1679C - Codeforces 题意:当t=1加入一个点,每个点可以影响一行和一列,t=2删除某个点,t=3判断这个矩形内的每个点是否都可以影响. 思路:开始时直接暴力,T了 ...

  4. Html飞机大战(九): 使徒来袭 (设计敌机)

    好家伙,本篇介绍敌机 好了,按照惯例我们来理一下思路:   我们有一个敌机类,第一步当然是实例一个敌机对象, 然后我们把这个敌机放入我们的敌机群(敌机数组) 然后是熟悉的移动和绘制   那我们回顾一下 ...

  5. 第十篇:vue.js for循环语句(大作业进行时)

    Vue.js 循环语句 <div id="app"> <ol> <li v-for="site in sites"> /*f ...

  6. Linux之firewalld防火墙规则

    一, 什么是防火墙规则? 允许哪些服务端口被放行,怎么放行,及哪些服务端口被阻拦,如何阻拦的一组网络安全规则.支持ipv4和ipv6,且分为直接规则和富规则两种. 二, 如何管理firewalld 1 ...

  7. KingbaseFlySync 版本升级

    关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 拓扑图: 客户现场源端和目标端写在一个flysync.ini中,所以不单独把目标端拿出来 ...

  8. JTS TopologyException 问题

    计算2个几何相交结果时候,报错了: val geometry = polygon.intersection(lineString) 日志如下 org.locationtech.jts.geom.Top ...

  9. Java开发学习(三十一)----Maven属性与版本管理

    一.属性 1.1 问题分析 如下图所示 你会发现,如果现在想更新Spring的版本,你会发现依然需要更新多个jar包的版本,这样的话还是有可能出现漏改导致程序出问题,而且改起来也是比较麻烦. 问题清楚 ...

  10. 采云端&采云链:从订单协同到采购供应链,让采购供应链互联互通

    采购供应链安全从来没有像现在这样显得如此重要和紧迫,也从来没有像现在这样复杂和敏感,对企业的经营产生决定性的影响.尤其在疫情期间,采购供应链更加牵一发而动全身,成为"运筹帷幄,决胜于千里之外 ...