(四)【平衡小车制作】陀螺仪MPU6050

news/2023/12/8 18:22:26

一、硬件结构

1.什么是陀螺仪?

        陀螺仪是用于测量或维护方位和角速度的设备。它是一个旋转的轮子或圆盘,其中旋转轴可以不受影响的设定在任何方向。当旋转发生时,根据角动量守恒定律,该轴的方向不受支架倾斜或旋转的影响。

2.MPU6050三位角度加速度陀螺仪

  MPU6050是一个6轴运动处理传感器。它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C接口输出一个6轴信号。
   MPU6050对陀螺仪和加速度计分别用了三个16位ADC,将其测量的模拟量转化为可输出的数字量。为了精确跟踪快速和慢速的运动,传感器的测量范围都是用户可控的。
  陀螺仪的可测范围为±250,±500,±1000,±2000°/秒(dps),加速度计可测范围为±2,±4,±8,±16g。

在这里插入图片描述

 3.原理图

作用:检测倾斜角
MPU6050中断引脚——PB5
MPU6050所用I2C——PB3/PB4

在这里插入图片描述

 

二、软件编程

1.I2C函数——mpuiic.c

GPIO初始化:PB3、PB4,模拟I2C;
通过时序函数模拟I2C通信


2.MPU6050函数——mpu6050.c

MPU6050初始化


3.MPU6050中断函数——exti.c

这里主要是通过MPU6050模块上的中断引脚ANT读取角加速度和角速度的原始数据。
 

exti.c:

#include "exti.h"void MPU6050_EXTI_Init(void)
{EXTI_InitTypeDef EXTI_InitStruct;GPIO_InitTypeDef GPIO_InitStruct;// 开启时钟// 外部中断,需要使能AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;          // PB5配置为上拉输入GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct);	GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource5);  // 外部中断和GPIO映射起来EXTI_InitStruct.EXTI_Line=EXTI_Line5;EXTI_InitStruct.EXTI_LineCmd=ENABLE;EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;    // 中断触发EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;// MPU6050发生中断时会有一个下降沿EXTI_Init(&EXTI_InitStruct);
}

exti.h:

#ifndef  _EXTI_H
#define  _EXTI_H#include "sys.h" void MPU6050_EXTI_Init(void);
#endif


http://www.ppmy.cn/news/63277.html

相关文章

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录:红黑…

算法之路--冒泡排序算法

写在前面 很早就想系统梳理所接触的所有算法,但是只是存在于一个想法阶段,懒惰使人遗忘不是么。作为一个软件开发人员,绕不开算法与数据结构,既然绕不开,何不逐一分析学习透彻,与君共勉之。 冒泡排序算法&a…

力扣---LeetCode141/142. 环形链表 (I)和(II) (代码详解+流程图+数学逻辑拓展)

文章目录 前言141. 环形链表 I1.1 链接:1.2 思路:1.3 代码:快慢指针1.4 流程图: 142. 环形链表 II2.1 链接:2.2 思路:2.3 代码:2.4 流程图: 拓展问题及证明(面试常问):3.…

vmware 详细安装教程

一.VM是什么? VMware Workstation是一个“虚拟 PC”软件。它使你可以在一台机器上同时运行二个或更多 Windows、DOS、LINUX 系统。与“多启动”系统相比,VMWare 采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需…

springcloud:新一代分布式定时任务框架——PowerJob

0. 引言 之前我们讲解过主流的分布式定时任务框架xxl-job,随着技术的迭代更新,更多的定时任务框架也开始出现,今天我们来看一看新一代的定时任务框架PowerJob 1. PowerJob简介 PowerJob是基于java开发的企业级的分布式任务调度平台&#x…

单开网页应用利器 - BroadcastChannel

前言 前段时间在做一个基于 psd 模板生成图片的应用,其中重要的功能就是打开编辑器页面来设计出图。但是有个问题,每当我点击一个模板,就会新开一个浏览器页签。现代浏览器是以空间换时间的运行思路来提高效率,这就导致了内存开销…

搭建web服务器

目录标题 搭建web服务器,并显示Redhat测试界面linux主机作为服务器部署web服务程序 Apache http server(httpd)当前主机启动该服务程序关闭防火墙和selinux 客户端 搭建网站创建自拟定网页文件linux主机作为服务器部署web服务器程序当前主机启…

Linux驱动开发:I2C子系统

目录 1、I2C简介 1.1 两根线 1.2 信号 1.3 写时序 1.4 读时序 1.5 I2C速率 1.6 I2C驱动框架简介 2、I2C设备驱动 2.1 I2C相关API 2.1.1 i2c_driver 2.1.2 注册:i2c_add_driver 2.1.3 注销:i2c_del_driver 2.1.4 module_i2c_driver&#xff…

HTML5 <s> 标签、HTML5 <sub> 和 <sup> 标签

HTML5 <s> 标签 定义和用法 <s> 标签定义加删除线的文本。HTML 5 中不再支持这个标签。请使用 CSS 代替。 HTML 4.01 与 HTML 5 之间的差异 在 HTML 4.01 中不赞成使用 <s> 标签。 在 HTML 5 中不支持 <s> 标签。 提示和注释 提示&#xff1a;请…

Linux系统日志介绍

Linux系统日志都是放在“/var/log”目录下面&#xff0c;各个日志文件的功能&#xff1a; /var/log/messages — 包括整体系统信息&#xff0c;其中也包含系统启动期间的日志。此外&#xff0c;mail&#xff0c;cron&#xff0c;daemon&#xff0c;kern和auth等内容也记录在va…

【前端面经】CSS-CSS的工程化

CSS 工程化的目的是解决以下问题&#xff1a; 宏观设计&#xff1a;如何组织 CSS 代码、如何拆分、如何设计模块结构&#xff1f;编码优化&#xff1a;如何编写更好的 CSS 代码&#xff1f;构建&#xff1a;如何处理 CSS 代码&#xff0c;以让打包结果最佳&#xff1f;可维护性…

糟了,生产环境数据不一致,人麻了

大家好&#xff0c;我是冰河~~ 今天发现Mysql的主从数据库没有同步 先上Master库&#xff1a; mysql>show processlist;查看下进程是否Sleep太多。发现很正常。 show master status;也正常。 mysql> show master status; -----------------------------------------…

Python 密码破解指南:15~19

协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 本文来自【OpenDocCN 饱和式翻译计划】&#xff0c;采用译后编辑&#xff08;MTPE&#xff09;流程来尽可能提升效率。 收割 SB 的人会被 SB 们封神&#xff0c;试图唤醒 SB 的人是 SB 眼中的 SB。——SB 第三定律 十五、…

CSDN | 好久不见,甚是想念

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言A…

SCL语言中如何进行网络编程?

在SCL&#xff08;Structured Control Language&#xff09;程序中进行网络编程&#xff0c;需要使用相应的网络通信模块来实现。SCL可用的网络通信模块包括&#xff1a; 1. CP443-1&#xff1a;这是西门子公司推出的以太网通信模块&#xff0c;可用于通过以太网进行通信和数据…

Python基础(二)基础语法

一、print函数 输出到控制台&#xff0c;输出的数据类型可以是字符串、数字、表达式等等。 print(hello world) print(10) print(3 1) # 输出不换号 print("h", end"") # 输出多份内容到同一行 print("h", 1, "d")二、字面量 被写…

AUTOSAR - ComM - 学习一 :基础知识+配置

目录 1、概述 1.1、总览 1.2、功能描述 1.3、依赖关系 2、功能SPEC 2.1、PNC

使用GitHub分享项目

一、注册账户 访问GitHub网站&#xff0c;点击“Sign up”按钮开始注册账号。然后按照提示输入你的用户名、电子邮箱地址和密码&#xff0c;提交成功后通过邮箱或你注册的手机号码进行验证身份。 二、上传项目 想分享自己的项目&#xff0c;首先需要在GitHub上创建一个新的仓库…

JavaWeb_Web后端_请求响应

JavaWeb_Web后端_请求响应 概述请求简单参数原始方式SpringBoot方式RequestParam注解 实体参数数组集合参数日期参数JSON参数路径参数 响应ResponseBody注解统一响应结果Result.javaResponseController 案例 来源 概述 前端控制器DispatcherServlet: HttpServletRequest: 获取…

国民技术N32G430开发笔记(18)- I2C1 从机收发数据

I2C1 从机收发数据 1、将PB6 PB7设置为i2c从机&#xff0c;跟android板卡通讯。 2、Android发送 写命令&#xff1a; 0x05 0x02 0x00 0x00 checksum n32将收到的命令打印出来 读版本命令&#xff1a; 0x01 0x02 0x00 0x00 checksum n32将app_version返回电视端 3、i2c从机配置…
最新文章