STM32获取MPU6050数据

发布者:nu23最新更新时间:2022-08-18 来源: csdn关键字:STM32  屏幕显示 手机看文章 扫描二维码
随时随地手机看文章

参考视频:https://www.bilibili.com/video/BV1Fy4y1t7me

https://www.bilibili.com/video/BV1kx411k7JT?p=63

效果图:

在这里插入图片描述

接线:

SDA–PB11

SCL–PB10

在这里插入图片描述

MPU6050模块的介绍:


MPU6050内部整合了三轴MEMS陀螺仪、三轴MEMS加速度计以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),而且还可以连接一个第三方数字传感器(如磁力计),这样的话,就可以通过IIC接口输出一个9轴信号(链接第三方数字传感器才可以输出九轴信号,否则只有六轴信号)。更加方便的是,有了DMP,可以结合InvenSense公司提供的运动处理资料库,实现姿态解算。通过自带的DMP,可以通过IIC接口输出9轴融合演算的数据,大大降低了运动处理运算对操作系统的负荷,同时也降低了开发难度。其实,简单一句话说,陀螺仪就是测角速度的,加速度传感器就是测角加速度的,二者数据通过算法就可以得到PITCH、YAW、ROLL角了。


陀螺仪知识点介绍:


陀螺仪是用高速回转体的动量矩敏感壳体相对惯性空间绕正交于自转轴的一个或二个轴的角运动检测装置。利用其他原理制成的角运动检测装置起同样功能的也称陀螺仪。

从力学的观点近似的分析陀螺的运动时,可以把它看成是一个刚体,刚体上有一个万向支点,而陀螺可以绕着这个支点作三个自由度的转动,所以陀螺的运动是属于刚体绕一个定点的转动运动。更确切地说,一个绕对称铀高速旋转的飞轮转子叫陀螺。将陀螺安装在框架装置上,使陀螺的自转轴有角转动的自由度,这种装置的总体叫做陀螺仪。

陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向,制造出来的东西就叫陀螺仪。我们骑自行车其实也是利用了这个原理。轮子转得越快越不容易倒,因为车轴有一股保持水平的力量。陀螺仪在工作时要给它一个力,使它快速旋转起来,一般能达到每分钟几十万转,可以工作很长时间。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。


用正点原子的MPU6050案例库

主函数改为:


#include "led.h"

#include "delay.h"

#include "sys.h"

#include "usart.h"

#include "mpu6050.h"

#include "inv_mpu.h"

#include "inv_mpu_dmp_motion_driver.h" 


//aacx,aacy,aacz:x,y,z三个方向上面的加速度值

//gyrox,gyroy,gyroz:x,y,z三个方向上面的陀螺仪值

//roll:横滚角.单位0.01度。 -18000 -> 18000 对应 -180.00  ->  180.00度

//pitch:俯仰角.单位 0.01度。-9000 - 9000 对应 -90.00 -> 90.00 度

//yaw:航向角.单位为0.1度 0 -> 3600  对应 0 -> 360.0度


 int main(void)

 {  


float pitch,roll,yaw; //欧拉角

short aacx,aacy,aacz; //加速度传感器原始数据

short gyrox,gyroy,gyroz; //陀螺仪原始数据

short temp; //温度

 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

uart_init(115200); //串口初始化为500000

delay_init(); //延时初始化 

LED_Init();   //初始化与LED连接的硬件接口

MPU_Init(); //初始化MPU6050


while(mpu_dmp_init()!=0){}  


  while(1)

{

while(mpu_dmp_get_data(&pitch,&roll,&yaw)!=0){}

temp=MPU_Get_Temperature(); //得到温度值

MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据

MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz); //得到陀螺仪数据

// mpu6050_send_data(aacx,aacy,aacz,gyrox,gyroy,gyroz);//用自定义帧发送加速度和陀螺仪原始数据

// usart1_report_imu(aacx,aacy,aacz,gyrox,gyroy,gyroz,(int)(roll*100),(int)(pitch*100),(int)(yaw*10));

printf("roll:%d pitch:%d yaw:%d rn",(int)(roll*100),(int)(pitch*100),(int)(yaw*10));//打印出来

}

}


工程文件:https://download.csdn.net/download/weixin_51102592/21445006


后续增加oled屏幕显示


关键字:STM32  屏幕显示 引用地址:STM32获取MPU6050数据

上一篇:STM32获取DHT11温湿度(单总线通信实验笔记)
下一篇:基于stm32的自平衡小车

小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved