0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于MPU6050与COF屏的航空姿态仪表

迪文智能屏 2022-05-31 11:30 次阅读

——来自迪文开发者论坛用户

本方案使用COF屏的IO口模拟I2C信号与MPU6050通讯,实现航空姿态仪表可视化显示。MPU6050采集数据,T5L0芯片进行数据读取和滤波算法处理,计算出姿态数据,驱动COF屏进行数据实时可视化显示。可视化界面通过迪文DGUS软件设置,有效缩减工程开发时间。


方案框图

7de87d04-dde2-11ec-b80f-dac502259ad0.png

资料下载

方案完整资料下载可前往迪文开发者论坛获取:

http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=5767&extra=page%3D2

方案简介

硬件连接

COF屏转接板HDL662S的P32脚连接MPU6050模块的SDL脚,P33脚连接MPU6050的SDA脚,VCC和GND分别接电源和地。同时,转接板的UART2连接上位机,其中P21~P26六个IO接入上位机6个LED灯上,方便输出调试信息,通过LED显示运行状态向COF屏输出命令。

7e3532b6-dde2-11ec-b80f-dac502259ad0.png

1.1 COF屏与MPU6050模块连接接线图

7e69fc8a-dde2-11ec-b80f-dac502259ad0.png

1.2 COF屏与MPU6050模块连接实物图

数据读取主要程序代码

(1)I2C读取MPU6050数据代码

COF屏为用户提供了可使用的IO口,我们可以直接使用IO口模拟I2C信号与MPU600通讯。C51 V6例程中有一个I2C RTC硬件的驱动代码,基于这个代码来修改,可以得到MPU6050使用的通讯函数。从I2C RTC硬件的驱动代码中可移植的主要代码函数:

7ec6d9be-dde2-11ec-b80f-dac502259ad0.png

编写针对MPU6050的各个操作命令:

7ef071fc-dde2-11ec-b80f-dac502259ad0.png

结合MPU6050寄存器定义设置,使T5L0成功读取完整正确数据。MPU主要用到的寄存器如下所示:

7f0d6988-dde2-11ec-b80f-dac502259ad0.png

对应的硬件IO口连接定义端口代码:

sbit IIC_SCL=P3^2;

sbit IIC_SDA=P3^3;

#define SDA_IN() P3MDOUT=P3MDOUT&0xF7;

#define SDA_OUT() P3MDOUT=P3MDOUT|0x08;

现在,将上述各个部分的代码整合编译调试上载到COF屏,就能成功读取MPU6050的各个寄存器数值。调试中需注意:

  • MPU6050的I2C主频与原RTC设备的主频有差别,需适当调整I2C函数操作中的时序,使其适配;
  • T5L处理器速度快,在两次读取间要做一定的等待,否则会出现读取数据为零的情况。经反复测试,设置20ms间隔来读取传感器数据,此间隔对本实验完全适用;
  • I2C、SDA线接触一定要良好,否则会造成通讯中断,需要重新初始化才能得到正确数据。

(2)姿态解算编写响应的函数对MPU6050原始数据进行解算,得到可供几何显示和姿态判断使用的数据。姿态解算通过三轴的重力加速度分量得到以地球切面为参照系的三轴夹角转换为以设备自身坐标下的飞行夹角。定义如下:横滚角Roll(Ф)表示绕X轴的旋转,仰俯角Pitch(θ)表示绕Y轴的旋转,航向角Yaw (ψ)表示绕Z轴的旋转,如图所示。


计算代码算法如下:

roll = atan2(2* Gy*Gz + 2*G*Gx, -2*Gx*Gx -2*Gy*Gy+ 1)

pitch = asin(-2*Gx*Gz + 2*G* Gy)

yaw = atan2(2*( Gx*Gy +G*Gz),G*G+Gx*Gx-Gy*Gy-Gz*Gz)

(3) DGUS界面设计

设计参考了航空飞机中常见的G530导航仪仪表面板。面板总体布局分左侧姿态数据显示区、中右区为姿态主显示区,以及下方的操作控制区。

7f6af1c0-dde2-11ec-b80f-dac502259ad0.png

1.4 姿态仪表显示分区设计

7fa30af6-dde2-11ec-b80f-dac502259ad0.png

1.5 姿态仪表DGUS 界面

(4) 可视化C51软件开发

C51软件开发主要有几部分:

1. 通过I2C接口完成MPU6050的读写命令操作,从传感器里获得完整正确的数据;

2. 姿态解算:通过前面的算法,编写响应的函数对原始数据进行解算,获得姿态显示所需要的显示数据;

3.数据可视化:将姿态的各个角度数据转换成UI组件的控制数据,比如负数和小数的显示问题、量程的问题等;

4.开发必要调试和跟踪工具代码,方便开发调试。

这里面通过数据显示窗口主要显示7个数据,分别为三向的姿态角度,三轴的加速度以及温度。同时根据三项的姿态角度计算可视化的控制数据写入显示组件地址里:

7fc9911c-dde2-11ec-b80f-dac502259ad0.png

1.6 姿态可视化C51软件开发

COF屏的C51主代码如下,重要部分已做了注释。此项目使用T5L的C51操作I2C读取MPU6050数据的代码已附带在文件附件中。 mpu6050_i2c.zip用户开发体验
“通过此实验已经完美的获取了MPU6050六轴陀螺传感器的数据读取,姿态解算的方法,同时结合COF屏完美的展示了MPU6050姿态的可视化。在实验测试中,COF屏在完成负载的仪表界面显示时,依然完成了I2C数据读取,复杂的浮点计算,以及内存地址操作。在实际测试中读取I2C速度可达8KBps,能够在1ms内读取完整的MPU7项数据,并且在18ms内完成了原始数据的三角函数计算工作,解算出飞航的各个姿态数据,并且更新到显示屏上。”

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cof
    cof
    +关注

    关注

    5

    文章

    47

    浏览量

    23148
  • MPU6050
    +关注

    关注

    38

    文章

    304

    浏览量

    69718
收藏 人收藏

    评论

    相关推荐

    什么是姿态传感器MPU6050

     MPU6050是6轴运动处理传感器,它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP。使用它就是为了得到待测物体(如四轴飞行器、平衡小车)x、y、z轴的倾角(俯仰角Pitch、翻滚角Roll、偏航角Yaw)。
    发表于 02-15 10:53 523次阅读
    什么是<b class='flag-5'>姿态</b>传感器<b class='flag-5'>MPU6050</b>

    mpu6050mpu6500哪个性能好

    MPU6050MPU6500都是InvenSense公司生产的高性能六轴陀螺仪和加速度计传感器。它们被广泛应用于各种领域,如移动设备、虚拟现实、机器人、汽车等。虽然它们之间有一些区别,但是无法简单
    的头像 发表于 12-21 16:54 1945次阅读

    MPU-6000和MPU-6050产品说明书

    mpu6050模块介绍 
    发表于 11-30 09:17 0次下载

    MPU6050能用来测试速度吗?

    MPU6050能用来测试速度么?
    发表于 10-25 08:15

    MCU\mpu6050 通信及电路原理图

    SPI\IIC\RS485通信动态图展示,MCU\mpu6050 通信及电路原理图
    发表于 10-17 16:36 2次下载

    基于CW32的MPU6050姿态传感器的应用

    一、简介 1.MPU6050是一种常用的六轴姿态传感器模块,结合了三轴陀螺仪和三轴加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口
    的头像 发表于 10-10 16:42 647次阅读
    基于CW32的<b class='flag-5'>MPU6050</b><b class='flag-5'>姿态</b>传感器的应用

    MPU6050姿态参数如何通过HC05蓝牙模块出来?

    我现在用手机通过HC05蓝牙模块实现了对遥控车的控制,现在要在这个基础上增加一个MPU6050模块,我想把这个MPU6050模块的姿态数据通过HC05蓝牙模块在手机上显示出来,我用的野火
    发表于 10-07 08:02

    基于CW32系列MCU的MPU6050姿态传感器设计

    1. MPU6050是一种常用的六轴姿态传感器模块,结合了三轴陀螺仪和三轴加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接
    的头像 发表于 09-27 13:49 643次阅读
    基于CW32系列MCU的<b class='flag-5'>MPU6050</b><b class='flag-5'>姿态</b>传感器设计

    MPU6050使用互补滤波与卡尔曼滤波算法进行姿态解算

    MPU6050使用互补滤波与卡尔曼滤波算法进行姿态解算
    发表于 08-07 15:46 2次下载

    用Arduino和MPU6050控制伺服电机

    电子发烧友网站提供《用Arduino和MPU6050控制伺服电机.zip》资料免费下载
    发表于 07-03 10:59 0次下载
    用Arduino和<b class='flag-5'>MPU6050</b>控制伺服电机

    MPU6050运动跟踪设备开源分享

    电子发烧友网站提供《MPU6050运动跟踪设备开源分享.zip》资料免费下载
    发表于 06-29 14:57 3次下载
    <b class='flag-5'>MPU6050</b>运动跟踪设备开源分享

    MPU6050教程开源分享

    电子发烧友网站提供《MPU6050教程开源分享.zip》资料免费下载
    发表于 06-25 15:18 6次下载
    <b class='flag-5'>MPU6050</b>教程开源分享

    使用MPU6050的驱动库来获取姿态数据

    对于大多数MPU6050的应用来说,获取到的原始数据并没有多大用处,我们需要对原始数据进行姿态融合解算,最终得到姿态数据,也就是三个欧拉角:航向角(yaw)、横滚角(roll)和俯仰角(pitch)。
    发表于 06-15 15:03 1163次阅读
    使用<b class='flag-5'>MPU6050</b>的驱动库来获取<b class='flag-5'>姿态</b>数据

    FPGA实现MPU6050姿态解算

    一. 简介 在之前的文章中(很久之前了,已经通过FPGA获取到了MPU6050的六轴数据: 三轴加速 和 三轴角速度,但是没有对它进行然后处理。那么在本篇文章中,将利用Cordic算法来进行姿态解算
    发表于 06-08 13:49

    基于Labview的mpu6050姿态检测上位机设计

    :①Windows 10系统电脑;②STM32单片机一块;③mpu6050陀螺仪一个;④Labview 2018软件文章目录Labview陀螺仪姿态测试系统设计 设计要求 一、Labview 软件是什么? 二、
    发表于 05-09 11:16 2次下载
    基于Labview的<b class='flag-5'>mpu6050</b><b class='flag-5'>姿态</b>检测上位机设计