stm32cubemx配置mpu6050——10分钟0基础到灵活使用

这篇具有很好参考价值的文章主要介绍了stm32cubemx配置mpu6050——10分钟0基础到灵活使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

stm32cubemx配置mpu6050——10分钟0基础到灵活使用

10分钟速通!你没看错,就是10min,从0基础到灵活运用mpu6050。

不信?往下看看就会:嗷~原来如此

第一步

下载github开源代码。

https://github.com/leech001/MPU6050

首先声明,此代码不是本人所写,为某俄罗斯大佬提供。

如果你访问不了github不用担心,我在文章最后附上下载下来的文件

第二步

软件

根据github开源项目的Readme内容,进行工程配置:

  1. 开启i2c

    stm32cubemx配置mpu6050——10分钟0基础到灵活使用

  2. 将下载下来的.c和.h文件加入到工程内。(有运用mpu6050需求的同学,应该这部都会知道怎么做吧?

  3. 在需要调用mpu6050接口的地方,包含mpu6050.h就可以。此处和项目作者一样,在“第三步”中以在main.c调用为例举例说明。

硬件

接下来我将手摸手带大家连接电路

单片机引脚 6050引脚
3.3V VCC 3.3V供电
GND GND
B10 SCL I2C时钟
B11 SDA I2C数据
GND AD0 AD0为6050地址控制引脚,接地就可以

stm32cubemx配置mpu6050——10分钟0基础到灵活使用

第三步

代码配置

包含mpu6050.h头文件

/ * USER CODE BEGIN Includes * /
#include "mpu6050.h"
/ * USER CODE END Includes * /

定义mpu6050结构体

/ * USER CODE BEGIN PV * /
MPU6050_t MPU6050;
/ * USER CODE END PV * /

在main函数开头,初始化mpu6050

/ * USER CODE BEGIN 2 * /

while (MPU6050_Init(&hi2c1) == 1);

/ * USER CODE END 2 * /

调用MPU6050_Read_All函数,读取所有参数

/ * USER CODE BEGIN WHILE * /
while (1)
{
/ * USER CODE END WHILE * /

/ * USER CODE BEGIN 3 * /
  MPU6050_Read_All(&hi2c1, &MPU6050);
  HAL_Delay (100);
}
/ * USER CODE END 3 * /

那么问题来了,我如何访问这些参数呢?比如读取z轴加速度。

这就要看mpu6050.h里面的MPU6050_t结构体了。

typedef struct
{

    int16_t Accel_X_RAW;	// 原始数值,忽略
    int16_t Accel_Y_RAW;
    int16_t Accel_Z_RAW;
    double Ax;				// x方向加速度,单位为重力加速度g (也就是9.8)
    double Ay;				// y方向加速度
    double Az;				// z方向加速度

    int16_t Gyro_X_RAW;
    int16_t Gyro_Y_RAW;
    int16_t Gyro_Z_RAW;
    double Gx;				// x方向陀螺仪加速度		
    double Gy;				// y方向陀螺仪加速度
    double Gz;				// z方向陀螺仪加速度

    float Temperature;		// 温度

    double KalmanAngleX; 	// 卡尔曼滤波过后的角度
    double KalmanAngleY; 	// 卡尔曼滤波过后的角度
} MPU6050_t;

那么如何访问z轴加速度呢?

a = MPU6050.Az;

除了一口气读取所有参数的MPU6050_Read_All函数,作者还提供了其他的函数,总有一款适合你。详细请参见mpu6050.h

函数名 作用
MPU6050_Read_All 读取所有参数
MPU6050_Read_Accel 读取加速度参数
MPU6050_Read_Gyro 读取陀螺仪数据
MPU6050_Read_Temp 读取温度

示例代码

main函数前

#include "mpu6050.h"

MPU6050_t MPU6050;

main函数内

while (MPU6050_Init(&hi2c2) == 1)
    ;
// 读取所有参数
MPU6050_Read_All(&hi2c2, &MPU6050);
printf("加速度 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Ax,MPU6050.Ay,MPU6050.Az);
printf("陀螺仪 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Gx,MPU6050.Gy,MPU6050.Gz);
printf("温度 %.2f\n",MPU6050.Temperature);

// 读取加速度
MPU6050_Read_Accel(&hi2c2, &MPU6050);
printf("只更新加速度 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Ax,MPU6050.Ay,MPU6050.Az);

// 读取陀螺仪
MPU6050_Read_Gyro(&hi2c2, &MPU6050);
printf("只更新陀螺仪 x:%.2f \t y:%.2f \t z:%.2f\n",MPU6050.Gx,MPU6050.Gy,MPU6050.Gz);

// 读取温度
MPU6050_Read_Temp(&hi2c2, &MPU6050);
printf("只更新温度 %.2f\n",MPU6050.Temperature);

stm32cubemx配置mpu6050——10分钟0基础到灵活使用

下面解读加速度参数含义

加速度:加速度计可以测量物体在三维空间中的加速度,单位通常是m/s²。MPU6050能够在三个轴上分别测量出物体的加速度。当物体处于静止状态时,加速度计会受到重力作用而显示一个9.8m/s²的常数值。当物体发生运动时,加速度计会显示物体在各轴上的加速度变化。

此处桌上平放着mpu6050,因此测出来xy方向加速度几乎为0,z方有一个g的重力加速度,也就是9.8m/s²。(显示1.12而不是1,是因为我没有真正放水平)

什么还是不懂?好吧,真拿你没办法,我建立了一个简单工程,以供参考使用。就在文末的文件里面。

未若头发因风起

此文旨在最快的使用出来mpu6050,极具功利性,说真的我并不喜欢这样的速通,他剥夺了一步步征服mpu6050模块所带来的畅快和成就,以及通过阅读数据手册来掌握模块的能力。

如果根据本博客顺利调试出来mpu6050,笔者希望你能明白自己并没有真正掌握mpu6050,它的通信时许、寄存器配置等对你来说,都是不明所以的,这些都要读者根据数据手册和他人的教程逐个攻破。戒骄戒躁!

配套资源,0积分免费下载文章来源地址https://www.toymoban.com/news/detail-436282.html

到了这里,关于stm32cubemx配置mpu6050——10分钟0基础到灵活使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32MPU6050角度的读取(STM32驱动MPU6050)

    注:文末附STM32驱动MPU6050代码工程链接,需要的读者请自取。 MPU6050是一款集成了三轴陀螺仪和三轴加速度计的传感器芯片,由英国飞利浦半导体(现为恩智浦半导体)公司生产。它通过电子接口(如I2C或SPI)与微控制器进行通信,可用于测量物体的加速度和角速度,广泛应

    2024年02月20日
    浏览(44)
  • STM32----MPU6050

    前言:最近几个月没有写文章了,因为这学期的事情真的有点多,但是想了想,文章还是要更新,总结自己学习的知识,真的很重要!!! MPU6050 是 InvenSense 公司推出的全球首款整合性 6 轴运动处理组件 ,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减

    2024年02月15日
    浏览(33)
  • 【STM32】STM32学习笔记-MPU6050简介(32)

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

    2024年01月19日
    浏览(46)
  • STM32之MPU6050获取欧拉角

    mpu6050 集成了三轴 MEMS 陀螺仪,三轴 MEMS 加速度计,以及一个可扩展的数字运动处理器 DMP(Digital Motion Processor)。辅助I2C接口可以连接一个第三方的数字传感器,比如磁力计。扩展了磁力计之后就可以通过其主要I2C接口输出一个 9 轴的信号(否则只能输出一个6轴的信号)。

    2023年04月20日
    浏览(71)
  • STM32外设系列—MPU6050角度传感器

    🎀 文章作者:二土电子 🌸 关注公众号获取更多资料! 🐸 期待大家一起学习交流!   MPU6050是由InvenSense公司生产的全球首款整合性六轴运动处理模块,它可以实时获取运动物体的在三维坐标系内的偏转角度,如图所示。   其中roll为绕X轴偏转的角度,pitch为绕Y轴偏转

    2024年02月03日
    浏览(47)
  • STM32单片机入门学习笔记——MPU6050

    笔记整理自B站UP主江科大自化协教程《[10-2] MPU6050简介_哔哩哔哩_bilibili》,所用单片机也为教程推荐单片机。 如果芯片里再集成一个3轴的磁场传感器,测量XYZ轴的磁场强度,那就叫做9轴姿态传感器,如果再集成一个气压传感器,测量气压大小,那就叫做10轴姿态传感器,一

    2024年02月08日
    浏览(43)
  • STM32--MPU6050与I2C外设

    在51单片机专栏中,用过I2C通信来进行实现AT24C02的数据存储; 里面介绍的是 利用程序的编程来实现I2C的时序 ,进而实现AT24C02与单片机之间的关系连接; 本章将介绍使用I2C的硬件外设来实现I2C通信,和介绍MPU6050,利用I2C通信实现STM32对MPU6050的控制. I2C通信软件实现程序链接

    2024年02月11日
    浏览(46)
  • STM32软件I2C驱动MPU6050

    这里没有什么复杂的地方,采用MPU6050的现成模块.模块的SCL接B10,SDA接B11,这里连接了一个OLED显示屏,用于显示获取到的数据. 注意:这里使用的模块自带上拉电阻 首先在工程目录里创建: \\\"MyI2C.h\\\"和\\\"MyI2C.c\\\"文件,用于软件驱动I2C. \\\"MPU6050.h\\\",\\\"MPU6050.c\\\"和\\\"MPU6050Reg.h\\\"文件,用于MPU6050的驱动. 在

    2024年02月15日
    浏览(44)
  • 【stm32】软件I2C读写MPU6050

    概况 首先建立通信层的.c和.h模块 在通信层里写好I2C底层的GPIO初始化 以及6个时序基本单元 起始、终值、发送一个字节、接收一个字节、发送应答、接收应答 写好I2C通信层之后,再建立MPU6050的.c和.h模块 基于I2C通信的模块,来实现指定地址读、指定地址写 再实现写寄存器对

    2024年04月26日
    浏览(43)
  • 【STM32】STM32学习笔记-软件I2C读写MPU6050(33)

    I2C(Inter-Integrated Circuit)总线 是一种由NXP(原PHILIPS)公司开发的两线式串行总线,用于连接微控制器及其外围设备。多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。 串行的 8 位双向数据传输位速率在标准模式下可

    2024年01月21日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包