三自由度直升機(jī)的嵌入式控制系統(tǒng)
三自由度直升機(jī)可以應(yīng)用于飛行器控制系統(tǒng)的半實(shí)物仿真試驗(yàn)和性能測(cè)試等場合,用以模擬橫列式直升機(jī),即傾轉(zhuǎn)旋翼機(jī)的直升機(jī)狀態(tài)[1]。其控制系統(tǒng)屬于典型的多輸入-多輸出系統(tǒng),具有非線性和強(qiáng)交叉耦合性,不易用傳遞函數(shù)和狀態(tài)方程描述,是控制系統(tǒng)中較為復(fù)雜的被控對(duì)象[2,3]。實(shí)驗(yàn)室配備的三自由度直升機(jī)平臺(tái)采用PC機(jī)+運(yùn)動(dòng)控制卡的控制方案,運(yùn)動(dòng)控制卡實(shí)時(shí)測(cè)量并控制三自由度直升機(jī)平臺(tái)的飛行姿態(tài),控制量的計(jì)算則由PC機(jī)完成[4]。該方案偏離了真實(shí)直升機(jī)的飛行控制系統(tǒng)方案。為此,本文采用嵌入式設(shè)計(jì)方法重新設(shè)計(jì)了三自由度直升機(jī)的控制系統(tǒng)。在此基礎(chǔ)上,改變外接的飛行搖桿的俯仰角和橫側(cè)角,并以此為指令信號(hào),實(shí)時(shí)控制三自由度直升機(jī)平臺(tái)的飛行姿態(tài)。通過對(duì)飛行搖桿上快捷鍵的控制,可以實(shí)現(xiàn)系統(tǒng)在“輔助操縱”、“全自動(dòng)駕駛”和“改平”3種工作模式之間的切換。
1 系統(tǒng)工作原理
1.1 系統(tǒng)的整體方案
系統(tǒng)整體方案如圖1所示。其中三自由度直升機(jī)由2個(gè)直流無刷電機(jī)帶動(dòng),模擬橫列式直升機(jī),即傾轉(zhuǎn)旋翼機(jī)[1]的直升機(jī)狀態(tài)。
三自由度直升機(jī)可以繞3個(gè)相互垂直的軸旋轉(zhuǎn),分別對(duì)應(yīng)直升機(jī)模型的俯仰角、橫側(cè)角和航向角。飛行搖桿選用北通公司的幻影318飛行搖桿,利用搖桿的俯仰和橫側(cè)轉(zhuǎn)動(dòng),輸出與搖桿的俯仰角和橫側(cè)角對(duì)應(yīng)的直流電壓,用于控制三自由度直升機(jī)的俯仰角和橫側(cè)角的指令信號(hào);利用搖桿手柄上的按鈕,輸出脈沖信號(hào),用于控制三自由度直升機(jī)在不同工作模式之間切換。
1.2 系統(tǒng)的工作模式
系統(tǒng)具有輔助操縱(有人工操作)、全自動(dòng)駕駛(無人操作)、(強(qiáng)制)改平3種工作模式[5]。由飛行搖桿上的若干快捷按鈕實(shí)現(xiàn)對(duì)各種工作模式的切換。
1.2.1 輔助操縱
由人工操縱飛行搖桿的俯仰和傾斜,以此作為三自由度直升機(jī)俯仰角和橫側(cè)角的指令信號(hào),由嵌入式控制器依據(jù)閉環(huán)反饋的PID控制律實(shí)現(xiàn)整體操縱。
這種工作模式用于模擬飛機(jī)的有人駕駛狀態(tài)。此時(shí)飛行控制系統(tǒng)輔助飛行員通過搖桿對(duì)飛機(jī)操縱,可以減輕操縱者的工作負(fù)擔(dān);同時(shí)對(duì)飛機(jī)進(jìn)行控制增穩(wěn),既確保飛機(jī)的穩(wěn)定,又可抵御陣風(fēng)等外部干擾,減輕擾動(dòng)對(duì)飛行品質(zhì)的影響。
1.2.2 全自動(dòng)駕駛
飛行搖桿對(duì)系統(tǒng)的控制被屏蔽,系統(tǒng)以進(jìn)入該工作模式時(shí)刻三自由度直升機(jī)的俯仰角和橫側(cè)角的當(dāng)前值為指令信號(hào),由嵌入式控制器依據(jù)閉環(huán)反饋的PID控制律實(shí)現(xiàn)整體操縱。
這種工作模式用于模擬飛機(jī)的無人控制全自動(dòng)飛行狀態(tài)。當(dāng)飛行員人工把飛機(jī)操縱到理想的飛行姿態(tài)后,通過切換按鈕進(jìn)入這種模式,由飛行控制系統(tǒng)對(duì)飛行姿態(tài)的當(dāng)前值進(jìn)行穩(wěn)定,保證飛機(jī)按剛進(jìn)入該狀態(tài)時(shí)的各種姿態(tài)角、速度、高度、航向飛行;同時(shí)對(duì)飛機(jī)進(jìn)行控制增穩(wěn),提高飛行品質(zhì)。該工作模式突出體現(xiàn)了飛行控制系統(tǒng)的功能,可以大大降低飛行員的工作量,減輕疲勞。
1.2.3 改平
系統(tǒng)強(qiáng)制俯仰角和橫側(cè)角的指令值都為0,飛行搖桿對(duì)系統(tǒng)的控制被屏蔽,以此強(qiáng)制控制三自由度直升機(jī)俯仰角和橫側(cè)角為0,實(shí)現(xiàn)三自由度直升機(jī)的水平穩(wěn)定運(yùn)行。
?這種工作模式用于模擬飛行控制系統(tǒng)的改平功能。當(dāng)飛行員遇到突發(fā)情況時(shí)(如飛行員受傷等),采用這種功能可以很方便地把飛機(jī)由任何姿態(tài)改變?yōu)閯蛩倨斤w的穩(wěn)定狀態(tài)。當(dāng)然這種功能也可以用于飛行員平時(shí)把飛機(jī)拉平的過程,即采用“改平”模式可以方便飛行員的操作。
1.3 系統(tǒng)功能模塊
在圖1方案的基礎(chǔ)上,可以制定出系統(tǒng)實(shí)現(xiàn)“輔助操縱”功能時(shí)的整體策略,如圖2所示。
?????? 由圖2可知,三自由度直升機(jī)平臺(tái)的嵌入式控制器整體上包含接口與控制兩方面的功能。接口功能對(duì)應(yīng)為圖2中的ADC采樣、旋轉(zhuǎn)編碼器解碼、PWM輸出3個(gè)功能模塊。控制功能是采用基于反饋系統(tǒng)的PID控制方法計(jì)算控制信號(hào),對(duì)應(yīng)為圖中的PID控制功能模塊。
在圖2的基礎(chǔ)上進(jìn)行修改,就可以獲得嵌入式控制器的“全自動(dòng)操縱”和“改平”工作模式的實(shí)現(xiàn)方法。區(qū)別在于閉環(huán)控制系統(tǒng)指令信號(hào)的來源不同。這兩種模式下,圖2中的指令信號(hào)不再由搖桿給定,搖桿的功能被屏蔽。“全自動(dòng)操縱”模式下,指令信號(hào)為剛剛進(jìn)入該工作模式時(shí)刻三自由度直升機(jī)平臺(tái)輸出的測(cè)量值;“改平”模式下,俯仰角和橫側(cè)角值的指令信號(hào)都為0。
2 硬件與軟件設(shè)計(jì)
2.1 硬件設(shè)計(jì)
硬件部分的主體是嵌入式控制盒。控制盒由EasyARM1138開發(fā)板[6]、信號(hào)調(diào)理板和機(jī)箱外殼3部分組成。
2.1.1 EasyARM1138開發(fā)板
EasyARM1138使用32 bit ARM Cortex-M3內(nèi)核,具有豐富的接口資源。具體配置如下:
(1)采用EasyARM1138的2個(gè)ADC端口(ADC0、ADC1)測(cè)量飛行搖桿輸入的模擬電壓信號(hào),采用軟件等比例地?fù)Q算成對(duì)應(yīng)的角度信號(hào),由此實(shí)現(xiàn)對(duì)飛行搖桿的指令角度信號(hào)的測(cè)量。
(2)采用EasyARM1138的3個(gè)GPIO口(PB0、PF6、PF4)測(cè)量三自由度直升機(jī)的俯仰角信號(hào)的輸出脈沖,3個(gè)GPIO口(PB2、PF1、PF2)測(cè)量三自由度直升機(jī)的橫側(cè)角信號(hào)的輸出脈沖。通過軟件編程,采用中斷的方法實(shí)現(xiàn)脈沖計(jì)數(shù),由此實(shí)現(xiàn)對(duì)三自由度直升機(jī)飛行姿態(tài)的測(cè)量。
(3)采用EasyARM1138的Time2模塊產(chǎn)生PWM信號(hào),將Timer2模塊中的TimerA和TimerB配置為16位的遞減計(jì)數(shù)器,其對(duì)應(yīng)的EasyARM1138上的2個(gè)GPIO口(PF7和PC4)的PWM輸出作為三自由度直升機(jī)的2個(gè)直流無刷電機(jī)的控制信號(hào),通過調(diào)整TimerA和TimerB中的匹配值來等效地調(diào)整2個(gè)直流無刷電機(jī)的輸入電壓,從而實(shí)現(xiàn)對(duì)這兩個(gè)直流無刷電機(jī)轉(zhuǎn)速的控制。
2.1.2 信號(hào)調(diào)理板
由于GPIO測(cè)量的8個(gè)信號(hào)(三自由度直升機(jī)的角度信號(hào)對(duì)應(yīng)的6個(gè)脈沖信號(hào)和飛行搖桿對(duì)應(yīng)的2個(gè)角度信號(hào))在實(shí)際測(cè)量時(shí)不可避免地存在噪聲,被噪聲污染的信號(hào)直接送入EasyARM1138會(huì)使測(cè)量出現(xiàn)很大的誤差,從而對(duì)系統(tǒng)產(chǎn)生不利影響。嚴(yán)重時(shí)會(huì)使三自由度直升機(jī)的電機(jī)以最大轉(zhuǎn)速運(yùn)行,此時(shí)系統(tǒng)實(shí)際上已經(jīng)發(fā)散,無法平衡。
EasyARM1138的GPIO需要測(cè)量的8個(gè)信號(hào)量先經(jīng)過信號(hào)調(diào)理電路調(diào)理以后,再送入EasyARM1138。經(jīng)過實(shí)際測(cè)試發(fā)現(xiàn)系統(tǒng)可以穩(wěn)定運(yùn)行,而且動(dòng)態(tài)性能理想。
2.1.3 控制盒
嵌入式控制器的外部采用通用的塑料機(jī)箱外殼,在其側(cè)面開口用于安放各種接口。控制盒整體采用外接的5 V、2 A電源供電,盒上保留了與外部穩(wěn)壓整流電源的插口。盒上安放了一個(gè)電源開關(guān)用于對(duì)控制盒的供電進(jìn)行控制,并用一個(gè)LED二極管指示燈指示電源的開關(guān)狀態(tài)。
控制盒的端面安放了一個(gè)橙色的無鎖開關(guān),用來對(duì)EasyARM1138進(jìn)行復(fù)位操作。在該端面同時(shí)有一個(gè)DB9的插孔,用于和來自飛行搖桿(北通瞬風(fēng)318飛行搖桿改裝)的DB9插頭相連接。在另一端面安放了一個(gè)DB25插孔,用于和來自三自由度直升機(jī)的DB25插頭相連。
2.2 軟件設(shè)計(jì)
全部軟件基于IAR Embedded Workbench for ARM編程平臺(tái)[7],在μC/OSII操作系統(tǒng)中使用C語言進(jìn)行開發(fā)。生成的全部軟件通過外接的USB電纜下載至EasyARM1138。軟件整體上分為接口和控制兩個(gè)功能模塊。
2.2.1 接口功能的實(shí)現(xiàn)
(1)ADC采樣
飛行搖桿上下?lián)u動(dòng)給出俯仰信號(hào),左右搖動(dòng)給出橫側(cè)信號(hào),2路信號(hào)通過濾波電容進(jìn)行整形,送到EasyARM1138開發(fā)板的ADC,ADC同時(shí)將2路連續(xù)的模擬電壓轉(zhuǎn)換成離散的數(shù)字量。通過電壓的比例換算,計(jì)算出飛行搖桿給出的俯仰與橫側(cè)的角度。
EasyARM1138開發(fā)板的ADC采樣模塊提供的最大電壓為3.3 V,設(shè)置搖桿輸入的電壓量程為0 V~3.3 V,ADC采樣率為125 kS/s。ADC模塊的轉(zhuǎn)換分辨率為10 bit,其轉(zhuǎn)換范圍為0~1 024。當(dāng)搖桿模擬信號(hào)輸入到ADC,ADC將其轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字量ulVal0,則搖桿輸入的電壓值ulVal1=(ulVal0/1 024)×3 300。再根據(jù)三自由度直升機(jī)俯仰角的范圍0°~60°將搖桿的電壓值轉(zhuǎn)換成對(duì)應(yīng)的角度值,即搖桿輸入俯仰的角度angle02 =ulVal1/3 300×60。同理可以將搖桿輸入橫側(cè)的角度算出來。
(2)旋轉(zhuǎn)編碼器解碼
三自由度直升機(jī)實(shí)時(shí)姿態(tài)信號(hào)是通過3個(gè)光電旋轉(zhuǎn)編碼器檢測(cè)傳送到控制盒中的,為了檢測(cè)俯仰與橫側(cè)的角度,需要對(duì)編碼器的脈沖計(jì)數(shù),算出當(dāng)前俯仰與橫側(cè)的角度。
編碼器輸出的是相位差為90°的A相和B相兩對(duì)差分脈沖信號(hào)。從A、B 2個(gè)輸出信號(hào)的相位關(guān)系(超前或滯后)可判斷編碼器旋轉(zhuǎn)的方向。當(dāng)編碼器碼盤正轉(zhuǎn)時(shí),A道脈沖波形比B道超前π/2,而反轉(zhuǎn)時(shí),A道脈沖波形比B道滯后π/2[8]。旋轉(zhuǎn)編碼器輸出的波形信號(hào)如圖3。
對(duì)于俯仰時(shí)編碼器輸出的兩對(duì)差分信號(hào)A+與A-和B+與B-,可以只用A+、B+、B-這3個(gè)信號(hào)測(cè)量俯仰角度數(shù)。采用EasyARM1138開發(fā)板GPIO的邊沿觸發(fā)中斷,設(shè)B+與B-的脈沖上升沿觸發(fā)產(chǎn)生中斷。當(dāng)B+脈沖產(chǎn)生中斷時(shí),檢測(cè)A+脈沖輸入的高低電平,同時(shí)對(duì)B+脈沖進(jìn)行計(jì)數(shù)。如圖4所示,若A+為高電平可判斷A超前B,計(jì)數(shù)變量FA1自動(dòng)加1(設(shè)計(jì)數(shù)變量初值FA1=30 000);若為低電平可判斷A滯后B,計(jì)數(shù)變量FA1自動(dòng)減1。為了消除三自由度直升機(jī)平衡桿抖動(dòng)帶來的脈沖計(jì)數(shù)誤差,對(duì)B-脈沖設(shè)置了中斷計(jì)數(shù),這樣相當(dāng)于對(duì)脈沖B進(jìn)行了二倍頻計(jì)數(shù)。當(dāng)B-上升沿脈沖產(chǎn)生中斷時(shí),檢測(cè)A+脈沖輸入的高低電平,同時(shí)對(duì)B-脈沖進(jìn)行計(jì)數(shù)。若A+為高電平可判斷A滯后B,計(jì)數(shù)變量FA1自動(dòng)減1;若為低電平可判斷A超前B,計(jì)數(shù)變量FA1自動(dòng)加1。
編碼器碼盤上的圓周等分條紋數(shù)為600,被測(cè)軸旋轉(zhuǎn)一周,編碼器的A、B兩相分別發(fā)出600個(gè)脈沖,A、B兩相的脈沖當(dāng)量即對(duì)應(yīng)的角度P=360°/600。由于對(duì)B脈沖一個(gè)周期進(jìn)行了2次計(jì)數(shù),則FA1計(jì)數(shù)的每一個(gè)脈沖對(duì)應(yīng)的角度為P/2。編碼器的旋轉(zhuǎn)角度即三自由度直升機(jī)的俯仰角angle00=(FA1-30 000)×P/2。
同理,對(duì)三自由度直升機(jī)橫側(cè)時(shí)編碼器輸出的3個(gè)信號(hào)進(jìn)行測(cè)量,算出橫側(cè)的角度。
(3)PWM輸出
通過PID控制算出的電壓,經(jīng)由EasyARM1138開發(fā)板Timer2產(chǎn)生PWM方波信號(hào),以此來輸出控制2個(gè)直流無刷電機(jī)的電壓輸入。
設(shè)置Timer2模塊中TimerA和TimerB的初值為6 000,其輸出的電壓范圍為0 V~3.3 V。PID控制算出的電壓V00與TimerA和TimerB裝載的匹配值對(duì)應(yīng)成線性變化,比例系數(shù)為K=0.3。匹配值 MP1=V00×K×6 000(0≤V00×K≤1)。匹配值隨著PID控制算出的電壓變化而變化,然后根據(jù)PWM占空比輸出對(duì)應(yīng)的電壓控制三自由度直升機(jī)的2個(gè)電機(jī)。
2.2.2 控制律生成方法
控制律生成方法分為系統(tǒng)建模和PID控制兩部分。系統(tǒng)建模的過程具體可以參見固高公司的產(chǎn)品手冊(cè)[4]。
2個(gè)電機(jī)的輸出電壓采用增量式數(shù)字PID控制算法,用C語言編程實(shí)現(xiàn):
V01是電機(jī)1當(dāng)前的電壓,V00是電機(jī)1上一次采樣時(shí)的電壓,Ee[i]是三次采樣俯仰角的角度誤差值;
V11是電機(jī)2當(dāng)前的電壓,V10是電機(jī)2上一次采樣時(shí)的電壓,Ep[i]是三次采樣橫側(cè)角的角度誤差值。
3 系統(tǒng)測(cè)試及結(jié)果
為了對(duì)系統(tǒng)的運(yùn)行結(jié)果進(jìn)行測(cè)試,特采用數(shù)字示波器(Tektronix TDS220)和萬用表對(duì)飛行搖桿給出的俯仰角和橫側(cè)角的指令信號(hào),以及三自由度直升機(jī)的旋轉(zhuǎn)編碼器的輸出的實(shí)際俯仰角和橫側(cè)角信號(hào)進(jìn)行測(cè)試和分析。測(cè)試工具還需要EasyARM1138調(diào)試開發(fā)軟件IAR Embedded Workbench for ARM 5.11及相應(yīng)的內(nèi)嵌USB接口的下載仿真器。
搖桿信號(hào)與三自由度直升機(jī)信號(hào)分別接到控制盒的兩端,這時(shí)將程序加載到EasyARM1138開發(fā)板中,對(duì)控制系統(tǒng)進(jìn)行整體調(diào)試。
3.1 三自由度直升機(jī)的啟動(dòng)與穩(wěn)定運(yùn)行
打開三自由度直升機(jī)電機(jī)的電源,保持搖桿的平衡狀態(tài)及運(yùn)行程序,三自由度直升機(jī)的俯仰軸會(huì)平穩(wěn)地向上轉(zhuǎn)動(dòng),俯仰角穩(wěn)定地由-30°變化到0°。當(dāng)俯仰角穩(wěn)定下來后,俯仰軸基本上不發(fā)生旋轉(zhuǎn),這時(shí)的俯仰角軸旋轉(zhuǎn)編碼器的測(cè)量信號(hào)理想值應(yīng)該是一條平穩(wěn)的直線,沒有任何脈沖產(chǎn)生。但實(shí)際上可能會(huì)存在小幅振動(dòng),對(duì)應(yīng)信號(hào)圖形為少數(shù)的脈沖信號(hào)。
圖4中每格的時(shí)間長度為1 s。由圖4可知,在10 s的時(shí)間長度內(nèi),俯仰角旋轉(zhuǎn)編碼器輸出了少量脈沖信號(hào),每個(gè)脈沖對(duì)應(yīng)角度變化為0.3°(上下波動(dòng))。
在理解此圖的基礎(chǔ)上,對(duì)圖5所示的圖形也就不難理解了。圖5中給出的是俯仰角由-30°變化到0°時(shí)旋轉(zhuǎn)編碼器的輸出波形。
可以看出,俯仰角為-30°和0°時(shí),旋轉(zhuǎn)編碼器的輸出都近似為直線,或只有很少的脈沖。而在從-30°變化到0°的變化過程中,旋轉(zhuǎn)編碼器的輸出表現(xiàn)為密集的脈沖信號(hào),而且剛開始的時(shí)候脈沖比較密,后面稍微稀疏。對(duì)應(yīng)為俯仰角的變化過程,開始時(shí)角度變化速度比較快,后面稍慢。
對(duì)于該過程,采用EasyARM1138串口通信把旋轉(zhuǎn)編碼器的角度數(shù)據(jù)讀入電腦,然后通過Matlab繪制得到如圖6所示的數(shù)據(jù)變化曲線。
3.2 三自由度直升機(jī)的增穩(wěn)
當(dāng)三自由度直升機(jī)穩(wěn)定運(yùn)行后,若有外部擾動(dòng),例如陣風(fēng)等沖擊信號(hào)作用在三自由度直升機(jī)的旋轉(zhuǎn)軸上,則在控制器的作用下,系統(tǒng)應(yīng)該能自動(dòng)抵御該擾動(dòng),擾動(dòng)消除后,系統(tǒng)恢復(fù)到原來位置。
圖7給出了三自由度直升機(jī)的俯仰軸受到?jīng)_擊擾動(dòng)時(shí)的俯仰角旋轉(zhuǎn)編碼器輸出信號(hào)波形。由圖7可以看出,擾動(dòng)作用剛發(fā)生瞬時(shí),旋轉(zhuǎn)編碼器開始輸出密集的脈沖,表明此時(shí)俯仰軸在做持續(xù)運(yùn)動(dòng)。而擾動(dòng)發(fā)生以前和擾動(dòng)過去一定時(shí)間后,旋轉(zhuǎn)編碼器的輸出為少量的脈沖信號(hào),表明俯仰軸基本上處于平衡狀態(tài)。
在該過程中,采用EasyARM1138串口通信把旋轉(zhuǎn)編碼器的角度數(shù)據(jù)讀入電腦,然后通過Matlab繪制得數(shù)據(jù)變化曲線如圖8。
3.3 討論
(1)系統(tǒng)的連調(diào)過程只給出了系統(tǒng)的輔助操縱過程的輸出通道效果。因?yàn)樗玫腡ektronix TDS220數(shù)字示波器在測(cè)試雙通道信號(hào)時(shí),2個(gè)通道信號(hào)的波形存在時(shí)間偏差,所以無法同時(shí)給出理想的輸入信號(hào)與輸出信號(hào)的對(duì)比波形。
(2)對(duì)于系統(tǒng)的另外兩個(gè)工作模式,“全自動(dòng)駕駛”的效果與圖8類似,而“改平”功能的效果與圖6相似,在此不多敘述。
(3)由于三自由度直升機(jī)的旋轉(zhuǎn)編碼器為增量式的旋轉(zhuǎn)編碼器,只能反映角度的變化量,因此,看到的穩(wěn)態(tài)情況下編碼器輸出脈沖數(shù)都近似為零。而當(dāng)前角度的計(jì)算方法是:初始角度+角度變化量。系統(tǒng)對(duì)俯仰角和橫側(cè)角的穩(wěn)定,實(shí)際上是對(duì)相對(duì)初始角度變化量的穩(wěn)定。
本文討論了三自由度直升機(jī)嵌入式控制系統(tǒng)設(shè)計(jì)的全部開發(fā)過程。控制系統(tǒng)經(jīng)過測(cè)試,各項(xiàng)功能滿足設(shè)計(jì)要求。因此整體控制系統(tǒng)的設(shè)計(jì)思路可行,設(shè)計(jì)結(jié)果合理、可靠。其方法可以推廣應(yīng)用于實(shí)現(xiàn)小型無人直升機(jī)的飛行控制系統(tǒng),可以為研制真實(shí)的數(shù)字式飛行控制系統(tǒng)提供技術(shù)儲(chǔ)備,可以應(yīng)用于其他運(yùn)動(dòng)測(cè)控系統(tǒng)的嵌入式設(shè)計(jì)。
評(píng)論
查看更多