無(wú)人機(jī)飛行模擬訓(xùn)練系統(tǒng)是一種對(duì)地面操縱人員進(jìn)行培訓(xùn)的仿真軟件,它通過(guò)在計(jì)算機(jī)中建立飛行場(chǎng)景和飛機(jī)三維模型,由遙控器輸入指令進(jìn)行驅(qū)動(dòng)控制,從而實(shí)現(xiàn)飛機(jī)的飛行仿真。模擬訓(xùn)練具有在無(wú)風(fēng)險(xiǎn)、無(wú)器材消耗的條件下訓(xùn)練飛行操縱人員的特點(diǎn),可以節(jié)約大量的訓(xùn)練經(jīng)費(fèi)和訓(xùn)練時(shí)間。在無(wú)人機(jī)飛行模擬訓(xùn)練系統(tǒng)的設(shè)計(jì)過(guò)程中,首先要解決的問(wèn)題是遙控器和計(jì)算機(jī)之間的通訊,以便把遙控器產(chǎn)生的遙控指令送到計(jì)算機(jī)中。由于遙控器本身不帶USB口,不能和計(jì)算機(jī)直接相連,因此需要設(shè)計(jì)USB接口電路完成通訊功能。
1 硬件設(shè)計(jì)
從理論上來(lái)講,遙控器與PC機(jī)的連接可以設(shè)計(jì)成并口、串口、USB口等多種連接方式,并可以根據(jù)不同的連接方式設(shè)計(jì)相應(yīng)的接口電路。然而實(shí)際的情況是:并口通訊雖然傳輸速度快,但連線多,抗干擾性差,連線不能過(guò)長(zhǎng),操縱使用不便;RS232串口通訊使用方便,傳輸距離也較遠(yuǎn),但目前的PC機(jī)卻很少再設(shè)計(jì)有232串口,因此串口方式的使用也受到了限制。同時(shí),由于USB具有傳輸速率高、支持熱插拔以及即插即用等優(yōu)點(diǎn),當(dāng)前的計(jì)算機(jī)普遍配置有多個(gè)USB口,因此采用USB接口進(jìn)行通信更簡(jiǎn)單高效。
USB接口電路的硬件結(jié)構(gòu)如圖1所示,它主要由信號(hào)調(diào)理電路、控制單片機(jī)、USB接口模塊組成。
1.1 遙控器及指令編碼格式
無(wú)人機(jī)飛行模擬訓(xùn)練系統(tǒng)所使用的遙控器是通用的Futaba 4通道遙控器,其外形如圖2-a所示,它主要包括一個(gè)脈沖編碼電路和一個(gè)高頻發(fā)射電路。脈沖編碼指的是以不同的脈沖數(shù)目、脈沖寬度、脈沖位置或者不同的脈沖組合來(lái)代表不同的控制指令的編碼方式。目前使用的遙控器編碼方式主要有PPM和PCM兩種,大多數(shù)遙控器同時(shí)具備這兩種編碼功能,使用時(shí)可根據(jù)需要選取其中一種。操縱器背面一般都設(shè)有教練口,如圖2-b所示。編碼電路產(chǎn)生的遙控指令編碼信號(hào)一方面送到高頻發(fā)射電路,一方面還送到教練口輸出,因此教練口送出的也是PPM或PCM信號(hào)。
相比較PCM編碼而言,PPM編碼更具有一定的規(guī)律性,因此系統(tǒng)設(shè)計(jì)中選擇的是對(duì)PPM編碼的指令格式進(jìn)行處理。以4通道的遙控器為例,PPM編碼格式的脈沖波形如圖3所示。
圖中為一組4通道的脈沖串,其脈沖串寬度為20ms,共由5個(gè)脈沖組成,它所攜帶的信息是各通道PWM信號(hào)的占空比,其中1通道1.5ms,2通道1.5ms,3通道1ms,4通道2ms。當(dāng)操縱相應(yīng)通道的操縱桿時(shí),對(duì)應(yīng)通道的脈沖低電平寬度會(huì)出現(xiàn)變化,也就是下一個(gè)脈沖出現(xiàn)的位置會(huì)變化,但脈沖串總的周期不變,一直保持20ms。
1.2 信號(hào)調(diào)理電路
PPM格式的指令編碼信號(hào)由遙控器的教練口輸出,由于信號(hào)的電平幅度與單片機(jī)不匹配,所以要經(jīng)過(guò)信號(hào)調(diào)理電路對(duì)電平幅度進(jìn)行變換,然后送給控制單片機(jī)進(jìn)行指令譯碼。
1.3 控制單片機(jī)
控制單片機(jī)的作用是對(duì)脈沖信號(hào)進(jìn)行譯碼,并把譯碼以后的結(jié)果輸出。由于PPM編碼輸出的是一系列脈沖信號(hào),故單片機(jī)的譯碼可以采用外部中斷的方式,測(cè)量脈沖間隔(即每個(gè)通道的脈寬信號(hào)),然后以串行信號(hào)的格式送給USB接口模塊。
1.4 USB接口模塊
USB接口模塊采用的是芯片CH340 ,它是一個(gè)USB 總線的轉(zhuǎn)接芯片,可以實(shí)現(xiàn)USB 轉(zhuǎn)串口、USB 轉(zhuǎn)IrDA 紅外或者USB 轉(zhuǎn)打印口。
采用CH340設(shè)計(jì)USB接口電路,不需要了解任何USB協(xié)議和編寫(xiě)任何固件程序,可以實(shí)現(xiàn)USB 與串口的轉(zhuǎn)換(原理圖如圖4所示),并且可以使用現(xiàn)有的驅(qū)動(dòng)程序,易于迅速開(kāi)發(fā)使用。本系統(tǒng)設(shè)計(jì)中所采用的是將USB轉(zhuǎn)3線制RS232 串口,應(yīng)用于單片機(jī)與PC機(jī)之間的數(shù)據(jù)通信,這樣一來(lái),就會(huì)在計(jì)算機(jī)上產(chǎn)生一個(gè)虛擬的COM口,用戶只需按照通用串行口一樣使用USB口即可。這樣不僅能使單片機(jī)具備USB通信的諸多優(yōu)點(diǎn),簡(jiǎn)化了USB編程,同時(shí)還可以利用USB對(duì)控制單片機(jī)提供5V的工作電源(500mA以下)。
2 軟件設(shè)計(jì)
軟件設(shè)計(jì)的重點(diǎn)是遙控指令信號(hào)的讀取以及單片機(jī)與PC機(jī)之間的通訊。
2.1 遙控指令信號(hào)的讀取
遙控指令信號(hào)的讀取是由控制單片機(jī)利用外部中斷的方式來(lái)實(shí)現(xiàn)的,每個(gè)脈沖到來(lái)時(shí)進(jìn)入中斷一次,然后讀取脈沖寬度并判斷是否是同步脈沖。正常的脈寬信號(hào)標(biāo)準(zhǔn)在1ms到2ms之間,同步脈沖信號(hào)的脈寬大于2ms。如果讀到的脈寬大于2ms,就表示下一個(gè)脈沖串開(kāi)始了,需要更新每個(gè)通道的脈寬值;如果讀到的脈寬不大于2ms,表示這仍然是某個(gè)通道的脈寬,把它送到相應(yīng)的數(shù)組中儲(chǔ)存起來(lái),接著讀取下一個(gè)通道的脈寬,直至同步脈沖的到來(lái)。
2.2 單片機(jī)與PC機(jī)之間的串行通訊
串行通訊主要實(shí)現(xiàn)單片機(jī)譯碼結(jié)果(即通道脈寬值)的發(fā)送,把讀取的指令脈寬信號(hào)利用串行中斷,經(jīng)串口發(fā)出,再經(jīng)過(guò)USB接口電路發(fā)送到上位機(jī),由計(jì)算機(jī)完成對(duì)操縱指令的讀取和識(shí)別,從而獲取遙控器操縱舵量的方向和大小。
正常情況下,每一串信號(hào)都有固定的脈沖個(gè)數(shù),如果計(jì)算機(jī)讀到的信號(hào)個(gè)數(shù)發(fā)生了變化,說(shuō)明在信號(hào)傳輸過(guò)程中遇到了干擾。為了預(yù)防干擾造成的飛機(jī)在飛行中出現(xiàn)誤動(dòng)作,軟件在脈沖數(shù)判斷方面采取了一些抗干擾措施。當(dāng)發(fā)現(xiàn)信號(hào)個(gè)數(shù)發(fā)生變化時(shí)有幾種處理方法:一是保持上次正確的數(shù)值不變;二是取各個(gè)通道的中間值;三是取某一預(yù)先設(shè)定的固定值。本系統(tǒng)設(shè)計(jì)中采用的是第一種方法,即把當(dāng)前讀到的一串脈寬數(shù)丟掉,保持上次脈寬數(shù)值不變。
3 系統(tǒng)調(diào)試和檢查方法
在PC機(jī)上利用串口調(diào)試助手,通過(guò)讀取遙控器的指令,可以對(duì)USB接口電路進(jìn)行調(diào)試和檢查,步驟如下:
(1)通過(guò)教練口把遙控器輸出的PPM指令信號(hào)與USB接口電路信號(hào)輸入端相連;
(2)安裝USB驅(qū)動(dòng)并獲取虛擬的串口號(hào)。當(dāng)?shù)谝淮伟裊SB接口電路的USB插頭插入計(jì)算機(jī)時(shí),計(jì)算機(jī)系統(tǒng)會(huì)彈出發(fā)現(xiàn)新硬件的提示,并要求安裝相應(yīng)的USB驅(qū)動(dòng)程序;接下來(lái)把CH340芯片驅(qū)動(dòng)(驅(qū)動(dòng)程序可在網(wǎng)上下載)按照提示步驟逐步安裝。驅(qū)動(dòng)程序安裝完成后,系統(tǒng)會(huì)自動(dòng)增加一個(gè)COM口,并可以在計(jì)算機(jī)屬性的硬件管理中的串口項(xiàng)查到計(jì)算機(jī)為該虛擬串口分配的串口號(hào),用戶就可以按照傳統(tǒng)的串行口控制方式來(lái)使用這個(gè)虛擬COM口,這樣一來(lái)就把USB設(shè)備虛擬為一個(gè)串行設(shè)備;如果不是第一次使用,就不需要重新安裝驅(qū)動(dòng),只需記住虛擬的串口號(hào)。
(3)運(yùn)行串口調(diào)試助手,選擇串行端口號(hào)與計(jì)算機(jī)為USB分配的虛擬串口號(hào)一致,設(shè)置與接口電路相同的通訊參數(shù)(波特率、奇偶校驗(yàn)位、數(shù)據(jù)位、停止位等),然后打開(kāi)串口。
(4)打開(kāi)遙控器電源開(kāi)關(guān),并選擇工作于PPM編碼方式。此時(shí),在串口調(diào)試助手界面的數(shù)據(jù)接收區(qū)就會(huì)顯示出遙控器各個(gè)通道對(duì)應(yīng)的脈寬數(shù)據(jù)。操縱遙控器不同的操縱桿,就會(huì)發(fā)現(xiàn)對(duì)應(yīng)的脈寬數(shù)據(jù)發(fā)生改變。
4 結(jié)論
利用單片機(jī)外部中斷方式對(duì)遙控器教練口輸出的PPM指令信號(hào)進(jìn)行譯碼,通過(guò)USB接口電路實(shí)現(xiàn)與計(jì)算機(jī)的通信,不僅實(shí)現(xiàn)了對(duì)指令信號(hào)讀取,而且簡(jiǎn)化了外設(shè)接口和編程,省去外接電源;在計(jì)算機(jī)上用USB口虛擬出串行口,既可以克服由于USB接口協(xié)議的復(fù)雜性給用戶帶來(lái)的不便,又可以簡(jiǎn)化計(jì)算機(jī)與單片機(jī)之間的接口,它的使用與普通的USB外設(shè)相同,只是第一次插入PC機(jī)USB接口時(shí),系統(tǒng)會(huì)提示安裝相應(yīng)的驅(qū)動(dòng)程序。該接口電路已經(jīng)過(guò)驗(yàn)證,并應(yīng)用到飛行模擬器中。