[stm32f103晶体振动容量]用STM32F103读取MPU6050陀螺仪、加速度、角度的数据

作者:jcmp      发布时间:2021-04-26      浏览量:0
1介绍从标题来看,MPU6050只输出加

1介绍

从标题来看,MPU6050只输出加速度、陀螺仪没有角度。这也是我今天想和大家说的。最近我做了一个倾角项目。上司希望根据成本计算MPU6050的角度。老实说,自己没有接触到这个,去做的时候才知道很难,在哪里都不知道。然后我去看了正电原子的MPU6050的解算。但是,那个角度的结果和我想要的精度有点不同。不小心在淘宝上找到了维特智能的JY61模块。该模块内置了MPU6050模块。该业者说静态角度的精度为0.05度,动态0.1度。这个精度符合我的需要。让我们看看这个模块。

该模块体积小于15×15×2mm大小。串行通信使用单片机获取数据非常简单。与直接获取MPU6050相比,我不知道它是多少倍。让我们来谈谈如何使用STM32F103读取JY61陀螺仪、加速度和角度的数据。

2开发准备

在谈论程序之前,简要谈谈硬件、软件准备和JY61如何与STM32F103连接。

2.1硬件、软件准备

硬件:JY61模块、USB-TTL、STM32F103开发板、杜邦线。STM32F103的开发板,我也使用维特智能32的开发板进行测试。上图:

软件。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

这是我写的示例代码大家感兴趣的是下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面:下面。下面。下面:下面。下面。下面。下面。

2.2.接线方式

1.使用USB-TTL将STM32F103C8T6与计算机连接通信。

2、JY61和STM32F103C8T6用杜邦线连接。具体接线如下图所示:

具体接线方式如下:

3程序说明

3.1程序构想说明

最关心的地方。在这里呢。我先告诉你。我的整体想法是什么?用整体框架向大家说明。

从上面看,一共分为主要两部分。串口初始化和while主循环。

1、串口初始化又分为串口1初始化、串口2初始化。其中串行2的初始化增加了串行2的中断服务函数,该函数用于接收JY61的传输数据,放置在数据缓存区。

2、while的主循环包括数据分析和数据输出。数据分析负责处理串行2中断服务函数的数据。然后从串行1输出数据到个人电脑。

以下分别介绍中间的重要函数。

3.1main函数

程序的执行在该函数中进行。包括串口初始化和while主循环。其中,这个Initial_UART1函数是串行1的初始化。Initial_UART2是串行2的初始化。

3.1串行1的初始化

串行1的初始化是使串行1的能量。打开UART1_Put_String函数。用这个函数将结果输出到PC方面。

3.2串口2初始化

串口2初始化两个作用,第一开启串口2这个通道。二是打开串行2的中断服务函数。

3.3串口2中断服务函数

该函数的功能是将JY61的数据放入数据缓存区,向该CopeSerial2Data函数发送数据。

3.4数据缓存区

数据缓存区来自串口2中断服务函数。数据最终放在stcAcc、stcGyro、stcAngle等结构体中,等待数据分析处理。

3.5数据分析

来自数据缓存区的数据,根据业者的协议,是16制的数据。因此,有必要进一步处理数据,将16个数据处理成10个数据,以便阅读。我该怎么办?还是根据业者的协议处理的。以角度为例。业者协议如下:

从上图看。角度输出的格式是5,5,53,Roll,Roll,Roll,Roll,Roll,HSUM。这种格式是放在数据缓存区的格式。如何将数据缓存区的16进制转换为10进制?这也取决于业者给予的公式(如下图所示)。

编写程序如下。

3.6数据输出

数据输出比以前简单。其原理是通过函数直接发送上述分析的数据。

发送的函数很简单。UART1_Put_String打印函数。直接从串口1打印分析结果到个人电脑。

4输出结果显示

在计算机上正确连接板块,首先打开串口调试助手,找到相应的端口,然后打开串口,注意这里的波特率设定为9600,然后左窗有数据输出如图所示: