第八章V1.5:MPU6050陀螺仪使用方法及姿态解算(DMP/STM32)

时间:2025-04-26  作者:Diven  阅读:0

功能介绍放开头, 使用便捷无需愁。

第八章V1.5:MPU6050陀螺仪使用方法及姿态解算(DMP/STM32)

这是全网最详细、性价比最高的STM32实战项目入门教程,通过合理的硬件设计和详细的视频笔记介绍,硬件使用STM32F103主控资料多方便学习,通过3万字笔记、12多个小时视频、20多章节代码手把手教会你如何开发和调试。让你更快掌握嵌入式系统开发。

V1.5.0-STM32智能小车

V1.5.0:库函数开发。功能:循迹、避障、跟随、遥控、电池电压显示等。

视频合集链接推荐观看

[https://www.bilibili.com/video/BV1SY411L7rJ/?spm_id_from=333.337.search-card.all.clICk]
**V3.3.0-STM32智能小车 **

V3:HAL库开发、功能:PID速度控制、PID循迹、PID跟随、遥控、避障、PID角度控制、视觉控制、电磁循迹、RTOS等功能。

视频合集链接推荐观看

[https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.clICk]

MPU6050姿态传感器使用(这个没有用视频也没有讲给大家自行扩展
使用)
温湿度传感器、光照传感器、摄像头模块都是大家自己可以扩展使用的其中摄像头教程再规划中

移植正点原子例程文件。

在这里插入图片描述
添加xxx.c 与xxx.h文件

在这里插入图片描述
在这里插入图片描述

**如图 **

**6050_SDA--PB9 **

**6050_SCL--PB8 **

" />

更改驱动代码

更改mpuiic.c中的的MPU_IIC_Init(void) 函数

//初始化IICvoid MPU_IIC_Init(void){ GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//先使能外设IO PORTB时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8; // 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIO GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_8); //PB9,PB9输出高}

更改mpuiic.h 相关宏

//IO方向设置#define MPU_SDA_IN() {GPIOB- >CRH&=0XFFFFFF0F;GPIOB- >CRH|=8< < 4;}//注意这里 容易出错#define MPU_SDA_OUT() {GPIOB- >CRH&=0XFFFFFF0F;GPIOB- >CRH|=3< < 4;}​//IO操作函数 #define MPU_IIC_SCL PBout(8) //SCL#define MPU_IIC_SDA PBout(9) //SDA #define MPU_READ_SDA PBin(9) //输入SDA

注意理解

//IO方向设置#define MPU_SDA_IN() {GPIOB- >CRH&=0XFFFFFF0F;GPIOB- >CRH|=8< < 4;}//注意这里 容易出错#define MPU_SDA_OUT() {GPIOB- >CRH&=0XFFFFFF0F;GPIOB- >CRH|=3< < 4;}

" />

" />

检查6050其程序发现在mpu6050.c中有对PA15的初始化 我们需要将其注释掉,防止影响其程序。

在main.c声明部分变量

extern u8 TIM5CH1_CAPTURE_STA;//输入捕获状态 extern u16TIM5CH1_CAPTURE_VAL;//输入捕获值

在main.c定义变量

float pitch,roll,yaw; //欧拉角short aacx,aacy,aacz;//加速度传感器原始数据short gyrox,gyroy,gyroz;//陀螺仪原始数据short temp;//温度

初始化6050与mpu

MPU_Init();//初始化MPU6050 while(MPU_Init()!=0);while(mpu_dmp_init()!=0);

通过mpu 获得数据

delay_ms(500);mpu_dmp_get_data(&pitch,&roll,&yaw);//返回值:0,DMP成功解出欧拉角 printf("nr 俯仰角=%0.2f 横滚角=%0.2f 偏航角=%0.2f nr", pitch,roll,yaw);

发现读取数据为零,搜索发现

" />

然后尝试

mpu_dmp_get_data 使用方法

delay_ms(500);while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0){}printf("nr 俯仰角=%0.2f 横滚角=%0.2f 偏航角=%0.2f nr", pitch,roll,yaw);​

可以获得数据
在这里插入图片描述

审核编辑 黄宇

猜您喜欢

发光二极管(LED)是应用于照明、显示和信号指示的电子元件。由于其高效能、长寿命和小型化的特性,LED在现代科技中扮演了重要的配件。本文将详细介绍发光二极管的外...
2025-04-02 20:00:34

贴片电阻5mΩ指的是电阻值为5毫欧姆,而不是电容。电阻和电容是完全不同的电子元件,分别用于限制电流和存储电荷。电阻用Ω(欧姆)表示,其作用是阻碍电流流动。5mΩ...
2024-11-29 10:26:14

贴片电阻是现代电子元器件中常见的一种,其应用于各种电子设备中。在电子产品的生产过程中,贴片电阻的焊接质量直接影响到整个电路的性能和可靠性。了解贴片电阻的焊接方法...
2025-03-18 10:30:34

SOIC8_150MIL_EP是一种广泛应用于电子设备中的封装类型,因其出色的性能和便捷的使用而受到了工程师和设计师的青睐。本文将深入探讨SOIC8_150MI...
2025-02-24 10:02:36

在选择电子线材时,规格尺寸是一个非常重要的因素。不同的应用场景对线材的要求各不相同,了解这些规格尺寸可以帮助您做出更明智的选择。电子线材的规格主要包括线径、绝缘...
2009-07-13 00:00:00

电子电路中,二极管是重要的基础元件,应用于整流、信号调制和保护电路等领域。正确判断二极管的正负极,对于电路的正常工作非常重要。本文将详细介绍如何判断普通二极管的...
2025-04-02 23:30:34

功率电感是电力电子领域中不可少的元件,其主要功能是储存能量并平滑电流。不同类型的功率电感在性能和应用上存在显著区别。功率电感可分为铁氧体电感和空心电感。铁氧体电...
2010-03-25 00:00:00

贴片电阻010 (01005) 因其体积微小,在焊接和更换时都比较困难。如果需要替代,要考虑尺寸、阻值、功率、精度等因素。尺寸方面,可以选择稍大一些的封装,例如...
2024-11-29 10:26:04

资料柜作为办公和家庭储物的理想选择,具备多项显著优势。资料柜能够有效地整理和分类文件,帮助用户快速找到所需资料,提升工作效率。资料柜通常设计坚固,能够承受较大的...
2012-04-09 00:00:00

视频电缆是现代电子设备中不可少的连接工具,尤其是DVI(数字视频接口)和HDMI(高清多媒体接口)两种类型。主要作用是传输高质量的视频和音频信号,为用户提供很好...
2008-02-08 00:00:00