引言 由于小型無(wú)人直升飛機(jī)具有的使用價(jià)值,目前世界主要發(fā)達(dá)國(guó)家都在積極進(jìn)行研制。國(guó)外具有代表性的機(jī)型是日本雅馬哈公司生產(chǎn)的RMAX。國(guó)內(nèi)也有幾家研究所和企業(yè)在研制無(wú)人直升飛機(jī),國(guó)內(nèi)一些院校也對(duì)無(wú)人直升機(jī)的遙控飛行和自主飛行進(jìn)行了研究,都處于實(shí)驗(yàn)階段[1-3]。昆明南天精密機(jī)電設(shè)備制作所經(jīng)過(guò)多年研究,開發(fā)出了FG-10 B無(wú)人直升機(jī),該機(jī)具有完全的自主知識(shí)產(chǎn)權(quán),在昆明1 900 m海拔高度基礎(chǔ)上,具有500 mn以上的使用上限,10 kg以上的載荷能力,這就為搭載多種機(jī)載航電設(shè)備和其他應(yīng)用設(shè)備提供了實(shí)用平臺(tái)[4]。然而,由于小型遙控直升機(jī)操作困難、遙控距離短,極大地限制了其應(yīng)用。為解決這一問(wèn)題,關(guān)鍵在于研制實(shí)用、可靠的增穩(wěn)系統(tǒng),實(shí)現(xiàn)水平姿態(tài)的自動(dòng)平衡,將遙控直升機(jī)升級(jí)為無(wú)人直升機(jī)。 本文采用帶8路10位A/D轉(zhuǎn)換的STC12C5410單片機(jī)編程來(lái)實(shí)現(xiàn)機(jī)載系統(tǒng)俯仰傾斜姿態(tài)及方向信號(hào)采集,給出了直升機(jī)A/D轉(zhuǎn)換C程序關(guān)鍵代碼。同時(shí)本文還指出并糾正了宏晶科技“STC12C5410AD系列單片機(jī)器件手冊(cè)”中的錯(cuò)誤。 1小型無(wú)人直升機(jī)研制的難點(diǎn)與增穩(wěn)試驗(yàn)系統(tǒng)構(gòu)建 1.1小型無(wú)人直升機(jī)研制的難點(diǎn) 小型無(wú)人直升機(jī)研制的最大難點(diǎn)在于飛行姿態(tài)的自動(dòng)穩(wěn)定控制[5]。 直升機(jī)在飛行中,有六個(gè)空間自由度,其平衡都是由旋翼旋轉(zhuǎn)產(chǎn)生的升力面的矢量分量和尾翼產(chǎn)生的力矩來(lái)進(jìn)行控制,其控制難度遠(yuǎn)遠(yuǎn)大于固定翼飛行器[6]。在世界坐標(biāo)系中,設(shè)X軸的正方向?yàn)轱w行器向前的飛行方向, Z軸的正方向?yàn)橄蛏系姆较颉?臻g飛行器在空間飛行時(shí),有六個(gè)自由度,即沿X、Y、Z軸的平移運(yùn)動(dòng)和繞X、Y、Z軸的轉(zhuǎn)動(dòng)。 X軸的平移為向前向后飛行,Y軸平移為左右移動(dòng),而Z軸為上下移動(dòng)。繞X軸的轉(zhuǎn)動(dòng)為橫滾變化,繞Y軸的轉(zhuǎn)動(dòng)為俯仰變化,而繞Z軸的轉(zhuǎn)動(dòng)為方向變化。繞機(jī)體Z軸的轉(zhuǎn)動(dòng)已經(jīng)采用鎖定陀螺儀對(duì)尾槳產(chǎn)生的力矩進(jìn)行控制,保證了穩(wěn)定,而Z軸的平移平衡,由旋翼的升力和機(jī)體重力平衡,X、Y軸的軸向平行移動(dòng)遙控起來(lái)難度不大。因此只要XY軸繞軸轉(zhuǎn)動(dòng)能夠自動(dòng)平衡,就能在很大程度上穩(wěn)定直升機(jī)的整體平衡,從而大大減少操縱難度,所以應(yīng)重點(diǎn)解決遙控直升機(jī)水平(XZ軸)姿態(tài)自動(dòng)平衡控制問(wèn)題。 為解決這一問(wèn)題,可采用對(duì)優(yōu)秀操縱手控制操縱進(jìn)行模擬的方式,通過(guò)試驗(yàn)來(lái)確定控制模型的模糊算法,來(lái)實(shí)現(xiàn)對(duì)小型直升機(jī)的俯仰、傾斜自動(dòng)增穩(wěn)控制。要實(shí)現(xiàn)這一目的,需要對(duì)小型直升機(jī)的俯仰傾斜姿態(tài)進(jìn)行遙測(cè),對(duì)操縱手在發(fā)生傾斜誤差(X軸向轉(zhuǎn)動(dòng))、俯仰誤差(Y軸向轉(zhuǎn)動(dòng))時(shí)的操作進(jìn)行遙測(cè),以獲取必要的數(shù)據(jù)進(jìn)行分析[7]。 1.2小型無(wú)人直升機(jī)增穩(wěn)試驗(yàn)系統(tǒng)構(gòu)建 為實(shí)現(xiàn)上述要求,研制了一套小型無(wú)人直升機(jī)增穩(wěn)試驗(yàn)系統(tǒng)。 小型無(wú)人直升機(jī)增穩(wěn)控制系統(tǒng)的框架如圖1所示。本系統(tǒng)由PC機(jī)應(yīng)用系統(tǒng)與機(jī)載系統(tǒng)共同組成,由PC機(jī)上的虛擬場(chǎng)景中虛擬直升機(jī)來(lái)模擬實(shí)際飛行的無(wú)人直升機(jī)。機(jī)載系統(tǒng)采用STC12C5410AD單片機(jī),完成傾角傳感器、磁阻傳感器、GPS模塊數(shù)據(jù)的采集、編碼及與PC機(jī)的通信。 2機(jī)載系統(tǒng)STC單片機(jī)編程 2.1STC系列單片機(jī) STC系列單片機(jī)是美國(guó)STC公司在8051單片機(jī)標(biāo)準(zhǔn)內(nèi)核結(jié)構(gòu)基礎(chǔ)上對(duì)芯片內(nèi)核進(jìn)行較大改進(jìn)后推出的一種增強(qiáng)型功能的8051單片機(jī),是具有全新流水線和精簡(jiǎn)指令集結(jié)構(gòu)的高速率、低功耗的新一代單片機(jī)。在8051系列單片機(jī)中,STC系列單片機(jī)在指令系統(tǒng)、硬件結(jié)構(gòu)和片內(nèi)資源上與標(biāo)準(zhǔn)8051單片機(jī)完全兼容,同時(shí)還帶有4路PWM/PCA (可編程計(jì)數(shù)器陣列)以及SPI同步通信口,內(nèi)部還集成有MAX810專用復(fù)位電路和看門狗電路。這些特點(diǎn)不但增加了開發(fā)者的使用靈活性,同時(shí)還可以幫助用戶減小PCB尺寸和系統(tǒng)成本。此外,STC系列單片機(jī)還可以通過(guò)串口(P3.0/P3.1)直接下載用戶程序,從而使其適合于在系統(tǒng)(ISP)可編程和在應(yīng)用(IAP)可編程,無(wú)需專用編程器,無(wú)需專用仿真器。其中STC12C5410AD單片機(jī)還可以實(shí)現(xiàn)八路10位精度的AD轉(zhuǎn)換,使用極為方便靈活,具有極高的性價(jià)比[8]。 2.2機(jī)載系統(tǒng)單片機(jī)主程序框圖 機(jī)載系統(tǒng)中單片機(jī)主要是對(duì)俯仰傾斜姿態(tài)、方向等模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換,對(duì)GPS的串行信號(hào)和遙控?cái)?shù)字信號(hào)進(jìn)行接收和發(fā)送。 主程序首先要完成系統(tǒng)的初始化,對(duì)單片機(jī)的A/D口、串口、定時(shí)器等資源進(jìn)行設(shè)置,系統(tǒng)自檢,初始化成功以后,主程序會(huì)通過(guò)數(shù)碼管顯示,提示初始化是否完成。其機(jī)載系統(tǒng)單片機(jī)主程序流程圖如圖2所示。 2.3俯仰傾斜及方位檢測(cè)A/D轉(zhuǎn)換框圖 STC12C5410AD單片機(jī)自帶八路10位高速A/D轉(zhuǎn)換器,其A/D轉(zhuǎn)換口在P1口( P1. 7-P1. 0 )。 STC12C5410AD單片機(jī)的P1口可通過(guò)軟件將其編程為準(zhǔn)雙向輸出、推挽輸出、高阻輸入、開漏等四種模式。其中在作A/D轉(zhuǎn)換時(shí)應(yīng)使用高阻輸入和開漏模式,轉(zhuǎn)換速度可達(dá)100kHz。 A/D轉(zhuǎn)換結(jié)果計(jì)算公式如下: 結(jié)果(ADC_DATA[7∶0],ADC_LOW2[1∶0])=1 024*Vin/Vcc 上式中:Vin為模擬通道輸入電壓;Vcc為單片機(jī)實(shí)際工作電壓,即用單片機(jī)工作電壓作為模擬參考電壓。取ADC_DATA的8位作為ADC轉(zhuǎn)換的高8位,取ADC_LOW2的低2位作為ADC轉(zhuǎn)換的低2位,則A/D轉(zhuǎn)換結(jié)果為10位精度。 本系統(tǒng)中選擇P1.3作為俯仰角A/D轉(zhuǎn)換通道,選擇P1.7作為傾斜角A/D轉(zhuǎn)換通道,選擇P1.2作為X方向角A/D轉(zhuǎn)換通道,選擇P1.4作為Y方向角A/D轉(zhuǎn)換通道,其A/D轉(zhuǎn)換程序流程圖如圖3所示。 2.4直升機(jī)A/D轉(zhuǎn)換C程序關(guān)鍵代碼 宏晶科技在其“STC12C5410AD系列單片機(jī)器件手冊(cè)”[8]中說(shuō)明了Timer0、1可通過(guò)AUXR寄存器設(shè)置成工作在12T或1T模式。但該手冊(cè)上關(guān)于單片機(jī)系統(tǒng)管理特殊功能寄存器AUXR中T1、T0的位置說(shuō)明是錯(cuò)誤的: 該說(shuō)明誤導(dǎo)了很多編程人員,位T1x12為0則定時(shí)器1是12T模式,傳統(tǒng)8051的速度,所用到的C語(yǔ)言程序語(yǔ)句為AUXR=AUXR&0xbf,這個(gè)錯(cuò)誤的語(yǔ)句顯然得不到正確的結(jié)果。正確的AUXR寄存器的第7位即最高位 MSB應(yīng)該是T1x12,而第6位應(yīng)該是T0x12,從而正確的C語(yǔ)言程序語(yǔ)句為AUXR=AUXR&0x7f。 本系統(tǒng)中直升機(jī)俯仰角、傾斜角以及方向角的模擬信號(hào)檢測(cè)中就要用到A/D轉(zhuǎn)換C程序,下面以俯仰角檢測(cè)的A/D轉(zhuǎn)換為例給出其中C程序關(guān)鍵代碼。 //*******俯仰角A/D轉(zhuǎn)換******* ****/ void fyzh() { ADC_CONTR=0xe3;//選擇P1.3為轉(zhuǎn)換通道 delay(10);//延時(shí) ADC_DATA=0;//清A/D轉(zhuǎn)換結(jié)果寄存器 ADC_LOW2=0; ADC_CONTR=ADC_CONTR|0x08; //啟動(dòng)A/D轉(zhuǎn)換 do { ; } while((ADC_CONTR & 0x10)==0); //等待轉(zhuǎn)換 ADC_CONTR=0xe3; //轉(zhuǎn)換結(jié)束,清位,停止 p=ADC_DATA*4 + ADC_LOW2; //存放10位AD轉(zhuǎn)換結(jié)果 } //*******主函數(shù)********** **/ void main() {unsigned char i; ADC_CONTR = ADC_CONTR|0x80; //1000,0000 打開A/D轉(zhuǎn)換電源 delay(100); //開A/D轉(zhuǎn)換電源后要加延時(shí) P1M0=0x88; //設(shè)置A/D通道所在的P1.3,P1.7為開漏模式 P1M1=0x88; AUXR=AUXR&0x7f; PCON=0x80;//PCON=0x80設(shè)置波特率加倍 SCON=0x50;//設(shè)置串行方式1 TMOD=0x20;//設(shè)置定時(shí)器方式2 TH1=0xfa;//外部時(shí)鐘頻率fosc= 11.0592 MHz,選擇波特率為9 600 b/s TL1=0xfa; TR1=1;//啟動(dòng)定時(shí)器 while(1) { //其它程序 fyzh(); //調(diào)用俯仰角A/D轉(zhuǎn)換子程序 delay(300); //延時(shí) } } 3增穩(wěn)試驗(yàn)系統(tǒng)數(shù)據(jù)顯示 小型無(wú)人直升機(jī)地面系統(tǒng)的試驗(yàn)數(shù)據(jù)顯示使用Delphi開發(fā)的程序來(lái)進(jìn)行,其顯示界面如圖4所示。當(dāng)程序開始接收數(shù)據(jù)時(shí),數(shù)值顯示框?qū)⒎謩e顯示俯仰和傾斜兩組數(shù)據(jù),分別為偏移角、操舵量和校正量。偏移角為沒(méi)有處理過(guò)十進(jìn)制顯示的原始數(shù)據(jù);操舵量為舵機(jī)控制信號(hào)脈沖寬度,單位是μS;校正量為添加在舵機(jī)控制信號(hào)上的脈沖寬度,單位也是μS。在傾斜、俯仰顯示圖下方的是數(shù)據(jù)顯示區(qū),顯示的是經(jīng)過(guò)計(jì)算轉(zhuǎn)換的俯仰、傾斜的偏移角度。 4結(jié)論 該增穩(wěn)試驗(yàn)系統(tǒng)已經(jīng)通過(guò)地面聯(lián)機(jī)測(cè)試,能夠快速準(zhǔn)確地采集俯仰角、傾斜角、方向角等模擬信號(hào),以及遙控接收機(jī)的控制信號(hào)和傳輸試驗(yàn)所需數(shù)據(jù),圖形和數(shù)據(jù)顯示均正常,待完成與小型直升機(jī)的整合以后,即可開始飛行試驗(yàn),為獲得真實(shí)準(zhǔn)確的姿態(tài)參數(shù),分析研究控制方法,確定控制算法奠定了基礎(chǔ)。 摘自:中國(guó)計(jì)量測(cè)控網(wǎng)
|