STM32—MPU6050

1.MPU6050简介

  • MPU6050是一个6轴姿态传感器可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景
  • 3轴加速度计(Accelerometer:测量X、Y、Z轴的加速度
  • 3轴陀螺仪传感器(Gyroscope):测量X、Y、Z轴的角速度

在XZ轴,这个芯片内部都分别布置了一个加速度计,中间图为加速度计的结构图,其中水平的这个虚线是感应轴线,中间是一个具有一定质量、可以左右滑动的小滑块,然后左右各有一个弹簧顶着它,中间这个小滑块就会左右移动,去压缩或拉伸两边的弹簧,当滑块移动时,就会带动上面的电位器滑动,当滑块移动时,就会带动上面的电位器滑动,这个电位器其实就是一个分压电阻,然后我们测量电位器输出的电压,就能得到小滑块所受的加速度值了

这个加速度计,实际上就是一个弹簧测力计,根据牛顿第二定律,F=ma,我们想测量这个加速度a,就可以找一个单位质量的物体,测量它所受的力F,就行了

加速度计具有静态稳定性,不具有动态稳定性

这就是陀螺仪的机械模型,中间是一个有一定质量的旋转轮,外面是3个轴的平环,当中间这个旋转轮高速旋转时,根据角动量守恒的原理,这个旋转轮具有保持它原有角动量的趋势,这个趋势可以保持旋转轴方向不变,当你外部物体的方向转动时,内部的旋转轴方向并不会转动,这就会在平衡环连接处产生角度偏差,如果我们在连接处放一个旋转的电位器,测量电位器的电压,就能得到旋转的角度了,陀螺仪具有动态稳定性,不具有静态稳定性

2.MPU6050参数

  • 16位ADC采集传感器的模拟信号,量化范围:-32768~32767
  • 加速度计满量程选择:+2、±4、±8、±16(g)
  • 陀螺仪满量程选择:±250、+500、±1000、+2000(°/sec)
  • 可配置的数字低通滤波器
  • 可配置的时钟源
  • 可配置的采样分频

  • 12C从机地址:1101000   (AD0=0)      0x68<<1 或 0xD0  写
    •                  1101001    (AD0=1)

所以你之后看到有地方说0xD0是MPU6050的从机地址,那它就是融入了读写位的从机地址

如果你看到有地方说0x68是MPU6050的从机地址,这种方式就是直接把7位地址转换十六进制得到的,在实际发送第一个字节时,不要忘了先左移1位,再或上读写位

3.硬件电路

右边这个MPU6050的芯片,芯片本身引脚非常多,包括时钟、12C通信引脚、供电、帧同步等等,不过这里有很多引脚我们都用不到,还有一些引脚,是这个芯片最小系统里的固定连接

然后看左下角,引出来的引脚,有VCC和GND,这两个引脚是电源供电,然后SCL和SDA,这两个引脚是12C通信的引脚,右图可以看到SCL和SDA,模块已经内置了两个4.7K的上拉电阻了,所以我们在接线的时候,直接把SCL和SDA接在GPIO口就行了,不需要再在外面另外接上拉电阻了,接着下面,还有XCL和XDA,这两个是芯片里面的主机12C通信引脚,设计这两个引脚是为了扩展芯片功能,

之前我们说过,MPU6050是一个6轴姿态传感器,但是只有加速度计和陀螺仪的6个轴,融合出来的姿态角是有缺陷的,这个缺陷就是绕Z轴的角度,也就是偏航角,它的漂移无法通过加速度计进行纠正,这就像是让你坐在车里,不看任何窗户,然后让你辨别当前车子的行驶方向,短时间内,你可以通过陀螺仪得知方向的变化,从而确定变化后的行驶方向,但是时间一长,车子到处转弯,你没有稳定的参考了,就肯定会迷失方向,所以这时候,你就要带个指南针在身边,提供长时间的稳定偏航角进行参考,来对陀螺仪感知的方向进行纠正,这就是9轴姿态传感器多出的磁力计的作用,

XCL和XDA,通常就是用于外接磁力计或者气压计,当接上磁力计或气压计之后,MPU6050的主机接口可以直接访问这些扩展芯片的数据,把这些扩展芯片的数据读取到MPU6050里面,在MPU6050里面会有DMP单元,进行数据融合和姿态解算,当然,如果你不需要MPU6050的解算功能的话,也可以把这个磁力计或者气压计直接挂载在SCL和SDA这条总线上,因为12C本来就可以挂载多设备,这就是XCL和XDA的用途

AD0引脚,它是从机地址的最低位,接低电平的话,7位从机地址就是1101000,接高电平的话,7位从机地址就是1101001,这里电路中,有一个电阻,默认弱下拉到候电平了所以引脚悬空的话,就是低电平,如果想接高电平,可以把AD0直接引到VCC,强上拉至高电平

INT中断信号输出,可以配置芯片内部的一些事件,来触发中断引脚的输出,比如数据准备好了、12C主机错误等,另外芯片内部还内置了一些实用的小功能,比如自由落体检测、运动检测、零运动检测等,这些信号都可以触发INT引脚产生电平跳变,需要的话可以进行中断信号的配置

然后看一下左上角的这个LDO,这部分是供电的逻辑,这个MPU6050芯片的VDD供电是2.375-3.46V,属于是3.3V供电的设备,不能直接接5V,所以为了扩大供电范围,这个模块的设计者就加了个3.3V的稳压器,输入端电压VCC 5V可以在3.3V型5V之间,然后经过3.3V的稳压器,输出稳定的3.3V电压,给芯片端供电,后面是电源指示灯,只要3.3V端有电,电源指示灯就会亮,所以这一块需不需要,可以根据你的项目要求来

4.MPU6050框图

左上角的是时钟系统,有时钟输入脚和输出脚,不过我们般使用内部时钟,

然后,下面这些灰色的部分,就是芯片内部的传感器,其中包括XZ轴的加速度计,X轴的陀螺仪,另外这个芯片还内置了一个温度传感器,你要是想用它来测量温度,也是没问题的,那这么多传感器,本质上也都相当于可变电阻,通过分压后,输出模拟电压,然后通过ADC,进行模数转换,转换完成之后,这些传感器的数据统 都放到数据寄存器中,我们读取数据寄存器就能得到传感器测量的值了

这个芯片内部的转换,都是全自动进行的,就类似我们之前学的AD连续转换+DMA转运,每个ADC输出,对应16位的数据寄存器,不存在数据覆盖的问题,我们配置好转换频率之后,每个数据就自动以我们设置的频率刷新到数据寄存器,我们需要数据的时候,直接来读就行了,其他的都不用管

接着,这每个传感器都有个自测单元(左侧部分),这部分是用来验证芯片好坏的,当启动自测后,芯片内部会模拟一个外力施加在传感器上,这个外力导致传感器数据会比平时大一些,那如何进行自测呢,我们可以先使能自测,读取数据,再失能自测,读取数据,两个数据一相滅,得到的数据叫自测响应,这个自测响应,芯片手册里给出了一个范围,如果自测响应在这个范围内,就说明芯片没问题,如果不在,就说明芯片可能坏了,使用的话就要小心点,这个是自测的功能

然后下面这个东西,是电荷泵,或者叫充电泵,CPOUT引脚需要外接一个电容,什么样的电容,这个在手册里有说明,电荷泵是一种升压电路,在其他电路也有出现过,比如我们用的这个OLED屏幕里面就有电荷泵进行升压

升压原理:比如我有个电池,电压是5V,然后我再来个电容,首先电池和电容并联,电池给电容充电,充满之后,电容是不是也相当于一个5V的电池了 ,然后我再修改电路的接法,把电池和电容串联起来,电池5V,电容也是5V,这样输出就是10V的电压了,是不是凭空就把电池电压升高至两倍了啊,不过由于这个电容电荷比较少,用一下就不行了,所以这个并联、串联的切换速度要快,趁电容还没放电完,就要及时并联充电,这样 直持续,并联充电,串联放电,并联充电,联放电,然后后续再加个电源滤波,就能进行平稳的升压了,这就是电荷泵的升压原理

由于陀螺仪内部是需要一个高电压支持的,所以这里设计了一个电荷泵进行升压,当然这个升压过程是自动的,不需要我们管

右边一大块,就是寄存器和通信接口部分了,

  • 中断状态寄存器,可以控制内部的哪些事件到中断引脚的输出,
  • FIFO,是先入先出寄存器,可以对数据流进行缓存,
  • 配置寄存器,可以对内部的各个电路进行配置,
  • 传感器寄存器,也就是数据寄存器,存储了各个传感器的数据,
  • 工厂校准,这个意思就是内部的传感器都进行了校准

然后右边这个数字运动处理器,简称DMP,是芯片内部自带的一个姿态解算的硬件算法,配合官方的DMP库,可以进行姿态解算,因为姿态解算还是比较难的,而且算法也很复杂,所以如果使用了内部的DMP进行姿态解算,姿态解算就会方便一些

这个FSYNC,是帧同步,我们用不到

最后上面这块,就是通信接口部分了,上面一部分就是从机的12C和SPI通信接口,用于和STM32通信,下面这一部分是主机的12C通信接口,用于和MPU6050扩展的设备进行通信,这里有个接口旁路选择器,就是一个开关,如果拨到上面,辅助的12C引脚就和I常的12C引脚接到一起,这样两路总线就合在一起了,STM32可以控制所有设备,如果拨到下面,辅助的I2C引脚就由MPU6050控制,两条12C总线独立分开,这时STM32是MPU6050的大哥,MPU6050又是扩展设备的大哥

然后最后,下面这里是供电的部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/144096.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

智源推出下一代检索增强大模型框架MemoRAG

北京智源人工智能研究院与中国人民大学高瓴人工智能学院联合发布了一款创新的人工智能模型框架——MemoRAG。该框架基于长期记忆&#xff0c;旨在推动检索增强生成&#xff08;RAG&#xff09;技术的发展&#xff0c;使其能够处理更复杂的任务&#xff0c;而不仅限于简单的问答…

Vue3 : Pinia的性质与作用

目录 一.性质 二.作用 三.Pinia 的核心概念 四.使用 1.count.ts 2.count.vue Vue 3 中 Pinia 是一个专为 Vue 3 设计的状态管理库&#xff0c;它旨在提供一种简单、直观的方式来管理应用的状态。 一.性质 1.集成性&#xff1a;Pinia 是 Vue 3 官方推荐的状态管理库&…

全志T507-H国产平台Ubuntu系统正式发布,让您的应用开发更便捷!

为了满足广大工业用户的需求&#xff0c;创龙科技针对全志T507-H工业平台进行了Ubuntu系统适配&#xff0c;开发环境如下&#xff1a; Ubuntu&#xff1a;Ubuntu18.04.4 U-Boot&#xff1a;U-Boot-2018.05 Kernel&#xff1a;Linux-4.9.170、Linux-RT-4.9.170 LinuxSDK&…

【AprilTag】视觉定位实战 | 使用 ROS 驱动的 USB 摄像头进行相机标定与 AprilTag 识别

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

Mapsui:一个 .NET 开源的地图组件库

前言 今天大姚给大家分享一个.NET开源&#xff08;MIT License&#xff09;、免费、同时支持多平台框架&#xff08;MAUI、WPF、Avalonia、Uno、Blazor、WinUI、Eto、.NET Android 和 .NET iOS&#xff09;地图组件库&#xff1a;Mapsui。 项目源代码 支持的UI框架的NuGet包 创…

文章排名优化@大众点评代发灰色词是什么软件

文章排名优化大众点评代发灰色词是什么软件 如何优化灰色词百度排名推广&#xff08;灰色词推广代发/代做&#xff09;#百度推广#关键词排名#灰色词排名 欢迎来到百收网SEO搜索群&#xff0c;我是狂潮老师&#xff0c;这一节我们来讲一下 on page SEO是什么&#xff1f;大众点…

【JAVA入门】Day46 - Commons-io

【JAVA入门】Day46 - Commons-io 文章目录 【JAVA入门】Day46 - Commons-io一、Commons-io 的常见方法 Commons-io 其实是一个工具包&#xff0c;它里面包含一系列有关IO操作的方法。它的作用就是来提高IO流的开发效率。 Commons 工具包中包含了很多很多有用的工具类&a…

【专题】2024中国生物医药出海现状与趋势蓝皮书报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37719 出海已成为中国医药产业实现提速扩容的重要途径。目前&#xff0c;中国医药产业发展态势良好&#xff0c;创新能力不断增强&#xff0c;然而也面临着医保政策改革和带量集采带来的压力。政府积极出台多项政策支持医药企业出海…

【新手上路】衡石分析平台使用手册-租户管理

租户管理​ 衡石系统支持服务一个平台方和多个企业客户的租户模式&#xff0c;平台方管理租户&#xff0c;为租户提供数据&#xff0c;租户在系统内进行数据分析。 衡石系统增加工作空间的设计&#xff0c;在平台方和租户之间提供单向的传递通道&#xff0c;平台厂商可以轻松…

nature communications |多层次蛋白质组分析揭示弥漫型和肠型胃癌之间的分子多样性

文章信息 发表期刊&#xff1a;nature communications 发表日期&#xff1a;2023年2月14日 影响因子&#xff1a;14.7 研究背景 胃癌是世界上主要的癌症类型之一。弥漫型胃癌(DGC)和肠型胃癌(IGC)是胃癌(GC)的主要组织学类型&#xff0c;DGC呈分散的细胞组织&#xff0c;黏…

Vue3使用shapefile读取矢量数据,以数组形式返回坐标点

npm安装: npm install shapefile --save-dev 源码: <script setup> import { ElMessage } from element-plus; import { ref } from vue; // 引入 ref import * as shapefile from "shapefile";// 使用 ref 创建一个引用 const uploadRef ref(null);// 解析…

怎么能让电脑屏幕显示多个监控画面?电脑监控如何多画面显示?

想象一下&#xff0c;你的电脑屏幕变成了一个“指挥中心”&#xff0c;上面同时显示多个监控画面&#xff0c;每个角落都有重要的信息。无论是监控员工的工作情况、实时查看服务器状态&#xff0c;还是观看监控视频&#xff0c;一切尽在掌握中。这不是科幻电影里的场景&#xf…

使用IDA Pro动态调试Android APP

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 关于 android_server android_server 是 IDA Pro 在 Android 设备上运行的一个调试服务器。 通过在 Android 设备上运行android_server&#xff0c;IDA Pro …

最新简洁大方的自动发卡网站源码/鲸发卡v11.61系统源码/修复版

源码简介&#xff1a; 最新简洁大方的自动发卡网站源码&#xff0c;它就是鲸发卡v11.61系统源码&#xff0c;它是修复版。 说到鲸发卡系统&#xff0c;鲸发卡系统在发卡圈很多人都知道的&#xff0c;它是市面最好发卡系统之一&#xff0c;操作起来简单得很&#xff0c;界面也…

Django 5 学习笔记 2024版

1. 官方中文文档 Django 文档 | Django 文档 | Django (djangoproject.com) 2. 第一个应用 博客 总目录 <1>依赖安装: pip install django <2> 创建 工程 myapp django-admin startproject myapp cd myapp <3>创建 应用 app > python manage.py s…

【protobuf】ProtoBuf的学习与使用⸺C++

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 前言&#xff1a;之前我们学习了Linux与windows的protobuf安装&#xff0c;知道protobuf是做序列化操作的应用&#xff0c;今天我们来学习一下protobuf。 目录 ⼀、初识ProtoBuf 步骤1&#xff1a;创建.proto文件 步…

使用 HFD 加快 Hugging Face 模型和数据集的下载

Hugging Face 提供了丰富的预训练模型和数据集&#xff0c;而且使用 Hugging Face 提供的 from_pretrained() 方法可以轻松加载它们&#xff0c;但是&#xff0c;模型和数据集文件通常体积庞大&#xff0c;用默认方法下载起来非常花时间。 本文将指导你如何使用 HFD&#xff08…

安卓手机改ip地址改到其他市

在数字化时代&#xff0c;IP地址作为设备在网络上的唯一标识&#xff0c;其重要性不言而喻。有时&#xff0c;出于测试、学习或特定服务访问的需求&#xff0c;用户可能希望将安卓手机的IP地址修改为其他城市的地址。本文旨在探讨如何在安卓手机上修改IP地址至其他城市&#xf…

分布式事务学习笔记(五)微服务实现Seata TCC模式、TC服务器高可用异地容灾

文章目录 前言6 Seata TCC 模式6.1 实现原理6.2 优缺点6.3 空回滚和业务悬挂6.3.1 空回滚6.3.2 业务悬挂 6.4 微服务实现TCC模式6.4.1 思路分析6.4.2 声明TCC接口6.4.3 编写实现类6.4.4 Controller类调用TCC接口6.4.5 修改配置文件application.yml6.4.6 重启微服务并测试 7 TC服…

​​使用ENVI之大气校正(下)

再根据遥感影像的拍摄时间将Flight ate与Flight Time GMT (H:M:SS)填写&#xff0c;如要查询按如下方法 这里按照表中的内容修改 根据影像范围的经纬度与拍摄时间更改Atmospheric Model&#xff0c;更改完成后点击Multispectral Settings...在跳出的界面中选择GUI再点击Default…