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