一、硬件结构

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

(四)【平衡小车制作】陀螺仪MPU6050相关推荐

  1. 【平衡小车制作】(一)硬件原理图讲解(超详解)

      大家好,我是小政.之后的一系列文章我将介绍我玩平衡小车的过程以及遇到的一些问题,将这些内容记录下来分享给大家,也让大家少走一些弯路.接下来我将从硬件框架选择.软件编程.PID算法.PID调参.蓝牙 ...

  2. TT马达平衡小车制作

    TT马达平衡小车制作 假期无聊本来买个淘宝的寻迹小车套件,做了个寻迹小车和遥控功能.后来看到了平衡小车就想搞一个. 去搜了方案基本都是平衡小车之家的编码器电机和车模,一搜好几百,学生党不太买得起. 还 ...

  3. 平衡小车制作系列之八——总结

    文章目录 一. 前言 二. 说在最前面 2.1 模块总结 2.2 时间分配(2 Weeks In All) 2.3 一些问题 三. 收获与总结 四. 碎碎念 一. 前言 本博客原题目叫做"我 ...

  4. 【平衡小车制作】(七)串级PID调参及平衡成果展示(超详解)

      大家好,我是小政.本篇文章我将针对PID调参进行详细的讲解,让每位小伙伴能够对比例.积分.微分三个参数如何调节有更加清晰的理解. 一.调参步骤 确立机械中值 直立环(内环)--Kp极性.Kp大小. ...

  5. (六)【平衡小车制作】位置式PID、直立环与速度环编程

    本篇文章我将针对位置式PID算法.直立环.速度环等的编程进行详细的讲解,让每位小伙伴能够对这三个概念的编程逻辑有更加清晰的理解. 一.直立环(PD控制器) 1.中文公式  直立环输出=Kp1×角度偏差 ...

  6. 简单平衡小车制作过程中遇到的问题

    本人最近做了一个平衡小车,过程中遇到不少问题,在这里总结一下,可能也会帮助到大家 文章目录 前言 一.嫖资料,找教程 二.小车结构 三.电子元件的组装 四.写程序时(改嫖到的程序)遇到的问题 总结 前 ...

  7. 平衡小车制作系列之二——模块原理解析

    文章目录 一. 模块概述 二. 直流电机 2.1 直流电机介绍 2.2 直流电机外围设备介绍 2.2.1 减速器 2.2.2 控制PWM的单片机 2.2.3 编码器 三. 编码器 3.1 编码器介绍 ...

  8. 【平衡小车制作】01-----让电机转起来

    主控Stm32f103C8T6 电机驱动DRV8833 电机:就是普通平衡小车编码电机 一. DRV8833的使用 DRV8833具有双通道,AIN,BIN各作为两个电机的控制输入端. H-逻辑桥驱动 ...

  9. 平衡小车制作系列之三——stm32软件调试

    文章目录 前言 一. STM32F103RCT6最小系统板 1.1 STlink程序烧录 1.1.1 模式选择 1.2 烧录功能测试 1.2 点亮一个LED灯 1.3 测试OLED 1.4 测试PWM ...

最新文章

  1. 彻底搞懂视觉-惯性SLAM:基于VINS-Fusion(正式开课)
  2. C 语言——字符串和格式化输入/输出
  3. 趋势线突破有效的标志
  4. sql表合并,统计计算,生成总计
  5. TX-LCN分布式事务框架开发文档
  6. 符号未定义Java_Java ODBC数据源(未定义符号:SQLAllocEnv)
  7. 实现简单的注解型MVC框架 —— 低配SpringMVC
  8. 表字段identity
  9. 【技术人快报190期】Linux之父脏话连篇大骂Intel漏洞补丁+我国首颗高通量卫星投入使用...
  10. 温泉酒店加颜色透明matlab,通达信颜色透明代码,通达信,有条件的填充背景颜色,求源码...
  11. 基于Python的RNN文本生成写诗系统
  12. C语言 “百鸡问题”最优解
  13. 错误异常too many open files解决方法
  14. linux命令练习题
  15. 服务器(CentOS7)配置安装oracle12c(v12.2.0)
  16. Java 如何判断一个字符串中是否包含某一 子字符串
  17. linux虚拟光驱挂载教程,VMWare 挂载虚拟光驱及制作floppy linux
  18. Python3字典合并的几种方法
  19. java java java java
  20. BloomFilter--理解总结

热门文章

  1. 一、tars简单介绍
  2. Unity下的日式卡通渲染实现-描边篇(三)
  3. FFT结果的物理意义(转载)
  4. C语言课程设计:新冠疫情管理系统
  5. NP0、C0G、X7R、X5R、Y5V、Z5U的区别
  6. windows 版本 redis mongodb emqttd安装
  7. 一个人成长最快的方式:深度思考【去追寻本质寻找自己的办法】
  8. 测试/开发程序员男都秃头?女都满脸痘痘?过好我们“短暂“的一生......
  9. 银行功能实现:转账及余额查询--(含源码,java实现)
  10. jsqlparser解析SQL工具类(转载)