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

描述

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

 

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


 

 

方案框图
 

 

MPU6050

资料下载
 

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

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屏输出命令。

 

MPU6050

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

 

MPU6050

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

 

数据读取主要程序代码

(1)I2C读取MPU6050数据代码

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

MPU6050

 

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

MPU6050

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

MPU6050

对应的硬件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导航仪仪表面板。面板总体布局分左侧姿态数据显示区、中右区为姿态主显示区,以及下方的操作控制区。

 

MPU6050

1.4 姿态仪表显示分区设计

  

MPU6050

1.5  姿态仪表DGUS 界面

 

(4) 可视化C51软件开发

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

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

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

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

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

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

 

MPU6050

1.6 姿态可视化C51软件开发

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

 

 

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分