GY91(MPU9250 + BMP280)惯性传感器开发指南
参考资料
参考资料说明:
用户手册时针对电路设计者的,一般时芯片的一些电气特性和经典电路,同时,也会说明该芯片的一些测量精度。
寄存器地图是针对驱动开发者的,主要告诉开发者如何使用(控制和读取)传感器。我们把精力放在寄存器地图这个文档即可。
资料下载: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)惯性传感器开发指南的更多相关文章
- Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(1)
本篇内容为,通过 I2C 配置 GY-91 MPU9250+BMP280 里面的 MPU9250 连接 AK8963 磁感应.两个办法,1)MPU9250 设置 Master Mode 通过 AUX ...
- Beaglebone Black – 连接 GY-91 MPU9250+BMP280 九轴传感器(2)
这次用 SPI.BBB 有两套 SPI 接口可用,两套都是默认 disable,需要用 overlay 方式启用,即: echo BB-SPIDEV0 > /sys/devices/bone_c ...
- SLAM+语音机器人DIY系列:(三)感知与大脑——2.带自校准九轴数据融合IMU惯性传感器
摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由行走,并且可以与人语音对话的机器人.实现的关键是让机器人能通过传感器感知周围环境,并通过 ...
- 关于《Swift开发指南》背后的那些事
时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014 ...
- 《Google Glass开发指南》
<Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...
- 玩转X-CTR100 l STM32F4 l BMP280气压计传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 扩展BMP ...
- ASP.NET Aries 开源开发框架:开发指南(一)
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...
- FreeMarker模板开发指南知识点梳理
freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
随机推荐
- MySQL查询性能优化七种武器之索引下推
前面已经讲了MySQL的其他查询性能优化方式,没看过可以去了解一下: MySQL查询性能优化七种武器之索引潜水 MySQL查询性能优化七种武器之链路追踪 今天要讲的是MySQL的另一种查询性能优化方式 ...
- html js 导出excel表格
这个使用js 导出excel,可以集成其他语言,可以html,php,asp ,java 等,自己喜欢用那种语言就用哪种,使用非常方便.js是使用tableExport.js ,jquery-3.2. ...
- CF1511G Chips on a Board (倍增)
题面 原题题面 转化方便版题意: 有 n n n 堆石子,第 i i i 堆有 c i ∈ [ 1 , m ] c_i\in [1,m] ci∈[1,m] 个石子,有 q q q 次询问,每次询问给 ...
- vsftpd 操作手册 - 完整版
vsftpd # 目录 - ftp 简介 - vsftpd 简介 - vsftpd 安装&卸载 - vsftpd 配置文件 - vsftpd 认证模板 - vsftpd 配置模板 # 目录详解 ...
- Filter中的FilterChain.doFilter(req,resp)的报错解决
服务器内部错误:500 Request processing failed; nested exception is java.lang.IllegalStateException: 提交响应后无法调 ...
- Android平台Camera2数据如何对接RTMP推流到服务器
1. Camera2架构 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用 ...
- KingbaseES rownum 与 limit 的 执行计划区别
数据准备 --创建基础数据表100W行 create table test07 as select * from (select generate_series(1, 1000000) id, (ra ...
- web字体浮在图像中央
在做项目的过程中遇到了需要将图像作为背景,将字体显示在图像中央需求. 尝试了两种做法: 第一种方法为设置一个div设置属性为relative固定这个框的位置,将图片铺在div块里. 在div再设一个d ...
- 如何在Windows中查询证书颁发机构已颁发的证书
有时候需要看一下证书颁发机构已经颁发出去的证书,看看某个用户或者某个计算机获取过的证书有哪些.通常可以在证书颁发机构的MMC中查看.对于测试环境或者刚开始用的CA来说,这样查看挺简单的.但是对于用了一 ...
- Ingress资源规范
k8s v1.19版本中Ingress资源规范从v1beta1版本升级至稳定的v1版本 v1beta1版本 v1beta1版本的Ingress资源位于API群组的extensions之中,该版本的资源 ...