精品国产Av无码久久久蜜臀-免费看a级淫秽真实动作衫视频-人妻无码一区二区三区免费视频-奶好大 好长 好紧免费视频

logo

基于MPU6050與COF屏的航空姿態(tài)儀表

——來(lái)自迪文開(kāi)發(fā)者論壇用戶    

 

本方案使用COF屏的IO口模擬I2C信號(hào)與MPU6050通訊,實(shí)現(xiàn)航空姿態(tài)儀表可視化顯示。MPU6050采集數(shù)據(jù),T5L0芯片進(jìn)行數(shù)據(jù)讀取和濾波算法處理,計(jì)算出姿態(tài)數(shù)據(jù),驅(qū)動(dòng)COF屏進(jìn)行數(shù)據(jù)實(shí)時(shí)可視化顯示。可視化界面通過(guò)迪文DGUS軟件設(shè)置,有效縮減工程開(kāi)發(fā)時(shí)間。

演示視頻

 

一、方案框圖

_20220525102209

二、資料下載

方案完整資料包下載可前往迪文開(kāi)發(fā)者論壇獲?。?a title="" target="blank">http://inforum.dwin.com.cn:20080/forum.php?mod=viewthread&tid=5767&extra=page%3D2


三、方案簡(jiǎn)介

(1)硬件連接

COF屏轉(zhuǎn)接板HDL662S的P32腳連接MPU6050模塊的SDL腳,P33腳連接MPU6050的SDA腳,VCC和GND分別接電源和地。同時(shí),轉(zhuǎn)接板的UART2連接上位機(jī),其中P21~P26六個(gè)IO接入上位機(jī)6個(gè)LED燈上,方便輸出調(diào)試信息,通過(guò)LED顯示運(yùn)行狀態(tài)向COF屏輸出命令。

 1

1.1  COF屏與MPU6050模塊連接接線圖

 

 2

1.2 COF屏與MPU6050模塊連接實(shí)物圖

(2)數(shù)據(jù)讀取主要程序代碼

1. I2C讀取MPU6050數(shù)據(jù)代碼

COF屏為用戶提供了可使用的IO口,我們可以直接使用IO口模擬I2C信號(hào)與MPU600通訊。C51 V6例程中有一個(gè)I2C RTC硬件的驅(qū)動(dòng)代碼,基于這個(gè)代碼來(lái)修改,可以得到MPU6050使用的通訊函數(shù)。

從I2C RTC硬件的驅(qū)動(dòng)代碼中可移植的主要代碼函數(shù):

1 

編寫(xiě)針對(duì)MPU6050的各個(gè)操作命令:

2 

結(jié)合MPU6050寄存器定義設(shè)置,使T5L0成功讀取完整正確數(shù)據(jù)。MPU主要用到的寄存器如下所示:

 3

對(duì)應(yīng)的硬件IO口連接定義端口代碼:

sbit IIC_SCL=P3^2;

sbit IIC_SDA=P3^3;

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

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


現(xiàn)在,將上述各個(gè)部分的代碼整合編譯調(diào)試上載到COF屏,就能成功讀取MPU6050的各個(gè)寄存器數(shù)值。調(diào)試中需注意:

  • MPU6050的I2C主頻與原RTC設(shè)備的主頻有差別,需適當(dāng)調(diào)整I2C函數(shù)操作中的時(shí)序,使其適配;

  • T5L處理器速度快,在兩次讀取間要做一定的等待,否則會(huì)出現(xiàn)讀取數(shù)據(jù)為零的情況。經(jīng)反復(fù)測(cè)試,設(shè)置20ms間隔來(lái)讀取傳感器數(shù)據(jù),此間隔對(duì)本實(shí)驗(yàn)完全適用;

  • I2C、SDA線接觸一定要良好,否則會(huì)造成通訊中斷,需要重新初始化才能得到正確數(shù)據(jù)。

2.姿態(tài)解算

編寫(xiě)響應(yīng)的函數(shù)對(duì)MPU6050原始數(shù)據(jù)進(jìn)行解算,得到可供幾何顯示和姿態(tài)判斷使用的數(shù)據(jù)。

姿態(tài)解算通過(guò)三軸的重力加速度分量得到以地球切面為參照系的三軸夾角轉(zhuǎn)換為以設(shè)備自身坐標(biāo)下的飛行夾角。定義如下:橫滾角Roll(Ф)表示繞X軸的旋轉(zhuǎn),仰俯角Pitch(θ)表示繞Y軸的旋轉(zhuǎn),航向角Yaw (ψ)表示繞Z軸的旋轉(zhuǎn),如圖所示。

5 

1.3 飛航設(shè)備Roll-pitch-yaw模型姿態(tài)定義圖示

 

計(jì)算代碼算法如下:

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界面設(shè)計(jì)

設(shè)計(jì)參考了航空飛機(jī)中常見(jiàn)的G530導(dǎo)航儀儀表面板。面板總體布局分左側(cè)姿態(tài)數(shù)據(jù)顯示區(qū)、中右區(qū)為姿態(tài)主顯示區(qū),以及下方的操作控制區(qū)。

 _20220525105103

1.4 姿態(tài)儀表顯示分區(qū)設(shè)計(jì)


 9 

1.5  姿態(tài)儀表DGUS 界面

 

(4)可視化C51軟件開(kāi)發(fā)

C51軟件開(kāi)發(fā)主要有幾部分:

  • 通過(guò)I2C接口完成MPU6050的讀寫(xiě)命令操作,從傳感器里獲得完整正確的數(shù)據(jù);

  • 姿態(tài)解算:通過(guò)前面的算法,編寫(xiě)響應(yīng)的函數(shù)對(duì)原始數(shù)據(jù)進(jìn)行解算,獲得姿態(tài)顯示所需要的顯示數(shù)據(jù);

  • 數(shù)據(jù)可視化:將姿態(tài)的各個(gè)角度數(shù)據(jù)轉(zhuǎn)換成UI組件的控制數(shù)據(jù),比如負(fù)數(shù)和小數(shù)的顯示問(wèn)題、量程的問(wèn)題等;

  • 開(kāi)發(fā)必要調(diào)試和跟蹤工具代碼,方便開(kāi)發(fā)調(diào)試。

這里面通過(guò)數(shù)據(jù)顯示窗口主要顯示7個(gè)數(shù)據(jù),分別為三向的姿態(tài)角度,三軸的加速度以及溫度。同時(shí)根據(jù)三項(xiàng)的姿態(tài)角度計(jì)算可視化的控制數(shù)據(jù)寫(xiě)入顯示組件地址里:

 11

1.6 姿態(tài)可視化C51軟件開(kāi)發(fā)

 

COF屏的C51主代碼如下,重要部分已做了注釋。此項(xiàng)目使用T5L的C51操作I2C讀取MPU6050數(shù)據(jù)的代碼已附帶在文件附件中。

源碼下載


四、用戶開(kāi)發(fā)體驗(yàn)

“通過(guò)此實(shí)驗(yàn)已經(jīng)完美的獲取了MPU6050六軸陀螺傳感器的數(shù)據(jù)讀取,姿態(tài)解算的方法,同時(shí)結(jié)合COF屏完美的展示了MPU6050姿態(tài)的可視化。在實(shí)驗(yàn)測(cè)試中,COF屏在完成負(fù)載的儀表界面顯示時(shí),依然完成了I2C數(shù)據(jù)讀取,復(fù)雜的浮點(diǎn)計(jì)算,以及內(nèi)存地址操作。在實(shí)際測(cè)試中讀取I2C速度可達(dá)8KBps,能夠在1ms內(nèi)讀取完整的MPU7項(xiàng)數(shù)據(jù),并且在18ms內(nèi)完成了原始數(shù)據(jù)的三角函數(shù)計(jì)算工作,解算出飛航的各個(gè)姿態(tài)數(shù)據(jù),并且更新到顯示屏上。”