一起玩转树莓派(18)——MPU6050螺旋仪加速度传感器模块应用(一)

简介: 一起玩转树莓派(18)——MPU6050螺旋仪加速度传感器模块应用

一. 引言


现在智能手机的功能已经非常强大,除了基础的通信功能外,测位测速,空间角度等数据的测量也非常方便,这在线路导航,地图,体感游戏等应用中十分重要。不知你是否想过,智能设备是如何获取到其所在的空间状态与加速度等数据的呢?MPU6050就是提供这类数据测量的一种传感器模块。


首先,通过树莓派来读取MPU6050传感器模块的数据并不复杂,MPU60X0是一款扩展性极强的数字运动处理器,我们本次实验使用的是封装好的功能模块,如下图所示:


image.png


MPU6050芯片本身有24个引脚,每边有6个引脚,功能较多,引脚功能与定位如下图所示:


image.png


关于MPU6050的高级用法,可以通过查看芯片手册获取,本篇博客我们着重与在树莓派上对其进行应用。我们只需要关注所使用的模块的8个引脚即可。


二. 连线与准备工作


本次实验我们使用的模块有8个引脚,只需要使用其中4个引脚即可实现功能。对于树莓派I2C协议总线的应用,本系列博客之前已经有非常多的实验有过应用。首先连接传感器模块与树莓派如下表:


传感器模块 树莓派

VCC +5V

GND GND

SCL SCL

SDA SDA

开始使用I2C总线前,莫忘了开启树莓派的I2C功能,对I2C总线用法如果不太了解,可以阅读以下博客:


https://my.oschina.net/u/2340880/blog/5142788


连线完成后,在树莓派的终端输入如下指令可以查看已经连接的I2C设备:


sudo i2cdetect -y 1



如果连接无误,终端输出结果将如下图所示:

image.png



可以看到,图中显示的68即为我们所连接的传感器的地址。


下面,是时候了解下MPU6050传感器该如何使用了,我们知道,通过I2C总线,我们可以方便的读取设备中某个寄存器的数据,也可以向设备的某个寄存器写入数据,因此,使用MPU6050传感器的核心是了解其中寄存器的使用方法。我们将以使用到的几个寄存器为例做介绍,完整的寄存器用法可以从芯片手册上得到。


1. 电源管理寄存器


电源管理寄存器的地址为107,对应十六进制数0x6b,它是一个8位的寄存器,其中第4位为保留位不能使用,功能如下:


image.png


DECIVE_RESET: 这一位的作用是重置传感器,将传感器内部所有寄存器复位为初始状态,复位完成后,这一位会清零。


SLEEP: 睡眠控制位,当此位为1时,传感器将处于睡眠模式。需要注意,传感器启动时默认是睡眠模式,我们需要手动将其唤醒。


CYCLE:当设备设置为非睡眠模式时,即SLEEP位不为1,此为如果设置为1,传感器将处于循环模式,会按照寄存器108设置的速度进行数据循环采样。


TEMP_DIS:是否禁用温度传感器,设置为1时,禁用温度传感器。


CLKSEL:3位无符号数值,用来指令时钟源。


对于CLKSEL选项,其设置方式如下:


CLKSEL值 意义

0 使用内部的8MHz的振荡器

1 使用陀螺仪X轴的频率

2 使用陀螺仪Y轴的频率

3 使用陀螺仪X轴的频率

4 使用外部的32.768kHz频率

5 使用外部19.2MHz频率

6 保留值

7 停止时钟并使振荡器保持复位状态

2. 陀螺仪数据寄存器


陀螺仪数据寄存器的地址为67到72,共48个二进制位,如下:


image.png


这些寄存器都是只读的,不能写入。


67和68寄存器存储16位数据,为陀螺仪X轴的测量数据。其中68寄存器存储低8位,67寄存器存储高8位。


69和70寄存器存储16位数据,为陀螺仪Y轴的测量数据。其中70寄存器存储低8位,69寄存器存储高8位。


71和72寄存器存储16位数据,为陀螺仪Z轴的测量数据。其中72寄存器存储低8位,71寄存器存储高8位。


需要注意,从这些寄存器取出的数据都是原始数据,要得到真正的陀螺仪测量的旋转角度,需要进行转换,其转换的单位与总量程有关,量程在寄存器27进行配置。


3. 陀螺仪配置寄存器


陀螺仪配置寄存器的地址为27,是一个可读可写的寄存器,如下:


image.png


XG_ST,YG_ST与ZG_ST这3位用来设置陀螺仪执行自检。FS_SEL用来设置陀螺仪的量程范围,低3位为保留位,无需使用。FS_SEL可设置的量程范围如下:


FS_SEL 量程范围 灵敏度参数

0 ±250 °/s 131

1 ±500 °/s 65.5

2 ±1000 °/s 32.8

3 ±2000 °/s 16.4

对于不同的量程范围,我们获取到原始数据后,需要除以对应的灵敏度参数才能得到最终的陀螺仪数据。



目录
相关文章
|
11月前
|
安全 测试技术 API
电商API接口开发:基础架构搭建全攻略
本文详细解析了电商API接口从零搭建基础架构的全流程。首先通过需求分析明确业务功能与接口规范,选定数据格式(如JSON)及通信方式(如RESTful)。接着在架构设计阶段选择合适的技术栈、数据库方案,并引入API网关实现统一管理。开发实现部分涵盖认证授权、数据访问、日志记录与异常处理等核心功能。安全防护则强调数据加密、传输安全及速率限制策略。测试优化阶段包括单元测试、集成测试、性能与安全测试,确保接口稳定性。最后通过工具生成清晰的API文档并实施版本控制,为开发者提供便利。整体流程系统化、模块化,助力打造高效、安全的电商API接口。
|
canal 编解码 运维
SIGCOMM 2024 | 洛神云网络学术活动与论文分享
SIGCOMM 2024 | 洛神云网络学术活动与论文分享
756 6
|
机器学习/深度学习 人工智能 自然语言处理
【开源项目】自然语言处理领域的明星项目推荐:Hugging Face Transformers
在当今人工智能与大数据飞速发展的时代,自然语言处理(NLP)已成为推动科技进步的重要力量。而在NLP领域,Hugging Face Transformers无疑是一个备受瞩目的开源项目。本文将从项目介绍、代码解释以及技术特点等角度,为您深入剖析这一热门项目。
532 10
什么是 QAM?它是如何工作的?
【4月更文挑战第15天】
4269 5
什么是 QAM?它是如何工作的?
|
测试技术 数据安全/隐私保护 Java
基于SpringBoot+Vue+uniapp的校园兼职管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园兼职管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
475 2
|
存储 负载均衡 Cloud Native
【微服务系列笔记】Nacos
Nacos 是阿里巴巴开源的项目,用于构建云原生应用的动态服务发现、配置管理和服务管理平台。它支持动态服务发现、服务配置、服务元数据和流量管理,旨在更敏捷和方便地构建、交付和管理微服务平台。可作为注册中心与配置中心。
678 5
|
负载均衡 算法 应用服务中间件
【微服务系列笔记】负载均衡
本文介绍了负载均衡的概念和重要性,指出随着流量增长,通过垂直扩展和水平扩展来提升系统性能,其中水平扩展引入了负载均衡的需求。负载均衡的目标是将流量分布到多台服务器以提高响应速度和可用性,常见的硬件和软件负载均衡器包括F5、A10、Nginx、HAProxy和LVS等。 文章接着提到了Ribbon,这是一个客户端实现的负载均衡器,用于Spring Cloud中。Ribbon在发起REST请求时进行拦截,根据预设的负载均衡算法(如随机算法)选择服务器,并重构请求URI。文中还介绍了如何通过代码和配置文件两种方式自定义Ribbon的负载均衡策略。
1000 3
|
网络协议 网络安全 Android开发
公网使用SSH远程连接安卓手机Termux - Android手机服务器
公网使用SSH远程连接安卓手机Termux - Android手机服务器
949 0
公网使用SSH远程连接安卓手机Termux - Android手机服务器
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的葡萄簇目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的葡萄簇目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战