超小型遙控直升機(jī)飛行姿態(tài)穩(wěn)定器的設(shè)計
本項目設(shè)計的是無線遙控直升機(jī)接收控制電路。本設(shè)計采用飛思卡爾公司生產(chǎn)的MMA7260QT低量程三軸向加速度傳感器和低功耗的MC9S08QG8 微控制器,并配合極少量的外圍器件。該電路能接收無線遙控發(fā)射機(jī)的控制指令,使直升機(jī)以不同的速度前進(jìn)、后退、轉(zhuǎn)彎,在沒有收到動作指令時能使直升機(jī)自動保持穩(wěn)定。由于該電路的體積?。?2×12mm),重量輕,因此可以用于超小型遙控直升機(jī)。
設(shè)計概述
該系統(tǒng)能通過紅外遙控指揮直升機(jī)以不同的速度前進(jìn)、后退、轉(zhuǎn)向。該系統(tǒng)主要有兩大部分:第一部分輸入轉(zhuǎn)換、指令編碼、紅外發(fā)射部分;第二部分紅外接收、解碼、飛行狀態(tài)檢測、伺服電機(jī)控制部分。這兩部分的紅外接收部分不是本次設(shè)計的重點,不做詳述。
直升機(jī)是由三個小型電機(jī)控制的:一個主旋翼電機(jī),控制飛機(jī)的上升或下降;一個尾翼電機(jī),控制飛機(jī)的方向;一個前進(jìn)/后退電機(jī),控制飛機(jī)前進(jìn)或后退。本系統(tǒng)利用螺旋槳產(chǎn)生的推力使直升機(jī)的重心發(fā)生改變,使直升機(jī)向前或向后傾斜,來實現(xiàn)直升機(jī)的前進(jìn)或后退。對直升機(jī)的準(zhǔn)確控制,就是通過對這三個電機(jī)速度的準(zhǔn)確控制來實現(xiàn)的。
利用MMA7260QT三軸向加速度傳感器將直升機(jī)的飛行狀態(tài)信息轉(zhuǎn)換為相應(yīng)的電壓信號,再利用MC9S08QG8微控制器的10位ADC轉(zhuǎn)換器將信號轉(zhuǎn)換為數(shù)字信號。MC9S08QG8的程序?qū)⑦@些信號綜合,自動控制直升機(jī)上的三個電機(jī),使直升機(jī)狀態(tài)穩(wěn)定。
系統(tǒng)設(shè)計
設(shè)計思想和技術(shù)關(guān)鍵
遙控直升機(jī)的飛行受飛行環(huán)境和設(shè)備狀態(tài)的影響很大。隨著飛行環(huán)境和設(shè)備狀態(tài)的變化,想要保證穩(wěn)定的飛行姿態(tài)是很難的。有了能自動調(diào)節(jié)飛行姿態(tài)的穩(wěn)定器之后,操縱遙控直升機(jī)就變得非常簡單。該系統(tǒng)是采用飛思卡爾公司的MMA7260QT作為飛行狀態(tài)傳感器來實現(xiàn)的,具體實現(xiàn)方法如下:
Z軸是直升機(jī)的升降軸,在直升機(jī)靜止時讀取MMA7260QT的Z軸數(shù)據(jù),作為參考點。飛機(jī)上升或下降時讀取的數(shù)值相對于參考點的變化量,就是Z軸的加速度az,那么飛機(jī)上升或下降的速度Vz就是az對時間的積分。上升為正、下降為負(fù)。程序按照適當(dāng)?shù)谋壤龘Q算后控制主旋翼電機(jī)的轉(zhuǎn)速,使直升機(jī)保持為懸停狀態(tài)。當(dāng)然,這只是對Z軸理想化后的理論計算。
由于當(dāng)直升機(jī)發(fā)生傾斜時,Z軸的數(shù)據(jù)參考點會發(fā)生變化。這樣,還以原數(shù)據(jù)作為參考點得到的gz就不是正確的。為什么直升機(jī)傾斜會使靜止參考點發(fā)生變化呢?那是由MMA7260QT傳感器的特性決定的:當(dāng)Z軸垂直于地面,也就是與重力方向平行時,在Z軸上已經(jīng)加有一個重力加速度。當(dāng)直升機(jī)發(fā)生傾斜時,Z軸上的加速度就只是重力的一部分,這樣實際的零加速度參考點已經(jīng)發(fā)生了變化。所以,在求Z軸的加速度時,必須解決這個問題。
在直升機(jī)飛行過程中,由于直升機(jī)的重心很低,所以認(rèn)為在X-Z面上是不會有傾斜的。Y-Z面的傾斜是操縱直升機(jī)前進(jìn)或后退造成的,當(dāng)Y-Z面發(fā)生傾斜時,Y軸的靜態(tài)參考點也一定發(fā)生了變化。當(dāng)然,在Z軸和Y軸有合成加速度時,也會出現(xiàn)這種結(jié)果。無論是哪一種原因造成的,我們都要先去調(diào)整Y軸,使Y軸的數(shù)據(jù)值在靜態(tài)參考點上。在傾斜度為零、加速度也為零的狀態(tài)時,Z軸靜止沒有變化,這時的條件和理想化的條件是一樣的。所以,這時得到的gz是正確的。我們就在這時讀取gz的值,作為控制Z軸狀態(tài)的依據(jù)。
在實際飛行狀態(tài)中,傾斜產(chǎn)生的重力加速度與Y軸加速度的代數(shù)和為零是一個特殊狀態(tài)。這時直升機(jī)傾斜在Y軸產(chǎn)生的分力所產(chǎn)生的加速度正好與Y軸的實際加速度數(shù)值相等,而方向相反,安裝調(diào)整時要注意回避這一特殊狀態(tài)。
Y軸是直升機(jī)的前進(jìn)/后退軸。因為直升機(jī)是在室內(nèi)飛行,認(rèn)為環(huán)境沒有風(fēng)的影響。所以只要直升機(jī)有加速度存在,直升機(jī)就有傾斜。直升機(jī)前進(jìn)或后退的力Fy是直升機(jī)的升力F0的方向與重力的反方向的夾角β的正弦函數(shù)。有Fy=F0sinβ,而Y軸的加速度ay正比于Fy。由于直升機(jī)的速度很低,忽略空氣阻力的作用,則:ay=Fy/M,式中M是直升機(jī)的質(zhì)量。
同時,傾斜角會產(chǎn)生一個重力加速度gY,夾角也是β。它與重力加速度g0有:
gY=-g0sinβ。ay和gY的方向是相反的。測到的加速度a是ay和gY的代數(shù)和。這個代數(shù)和的方向及大小可以實測得到。
為了減少實測數(shù)據(jù)的工作量,只測出a的方向和大概數(shù)值即可??刂茣r使a逐步向零靠近,最終基本等于零。
由于在直升機(jī)轉(zhuǎn)向時,X軸有加速度,同時Y軸也會有加速度。為了簡化計算,Y軸的加速度也要在X軸的加速度為零時檢測。
當(dāng)Y軸有操縱指令時,Y軸的自動控制暫時被停止。
X軸是直升機(jī)的左右轉(zhuǎn)向軸,在Z-X面上,直升機(jī)不會有傾斜,所以Z軸的加速度不會影響X軸的加速度。在直升機(jī)靜止時,若直升機(jī)發(fā)生方向改變,程序就控制尾翼電機(jī),使方向改變停止,使X軸方向速度為零。當(dāng)Y軸或X軸有操縱指令時,X軸的自動控制暫時被停止。
另外,直升機(jī)在飛行過程中,電機(jī)和螺旋槳轉(zhuǎn)動引起的振動也使傳感器產(chǎn)生失真數(shù)據(jù)。所以,需要排除自動干擾后的數(shù)據(jù)才能使用。那么,怎樣排除這些振動的干擾呢?該方案采用了兩種措施:一是將信號限制范圍,超過范圍的信號被排除。二是用累加平均法:用遠(yuǎn)高于振動頻率的采樣率讀取數(shù)據(jù),再以遠(yuǎn)大于振動周期的時間段將數(shù)據(jù)平均。這樣得到的數(shù)據(jù),可以排除大部分的振動干擾。
系統(tǒng)的功能和工作過程
直升機(jī)接通電源后,處于接收遙控信號狀態(tài)。
發(fā)射機(jī)必需先按下啟動按鈕,直升機(jī)方可啟動。在啟動之前,所有其它操作都是無效的。
收到并確認(rèn)遙控信號的啟動信號時,同時啟動三個電機(jī)。電機(jī)的啟動速度很慢,保證直升機(jī)不會動。當(dāng)電機(jī)的速度增加到使直升機(jī)有微小上升時,控制電路記憶保持直升機(jī)不動時電機(jī)的最大速度。這時啟動過程結(jié)束,直升機(jī)的移動可隨意遙控。
遙控器左手的縱向控制直升機(jī)的升降,右手的縱向控制進(jìn)退,右手的橫向控制方向。長時間無正確的遙控信號時,程序會自動使直升機(jī)停下來。
電池電壓不足時,LED會亮1秒,暗1秒來指示。在電池低到一定程度時,會自動進(jìn)入停止操作,并同時輸出電池電壓不足LED指示。
系統(tǒng)框圖
系統(tǒng)框圖如圖1所示。
硬件描述
編碼、紅外發(fā)射和紅外接收電路不是本次討論的重點,不做描述。重點描述飛行姿態(tài)傳感器電路、ADC電路、解碼電路、XYZ軸輸出電路。圖2所示為其原理圖。
飛行姿態(tài)傳感器電路
該部分電路由MMA7260QT、R1、R2、R3、C1、C2、C3、C5組成。
MMA7260QT是一個三軸小量程加速度傳感器模塊。它的靈敏度可通過g-Select1和g-Select2來選擇。最高靈敏度可達(dá)800mV/g。工作電壓低、可工作電壓范圍寬(2.2~3.6V),功耗?。?.5mA,在睡眠狀態(tài)只有3μA)。非常適合電池供電的應(yīng)用。另外,小尺寸封裝,使其重量也很輕。g-Select1和g-Select2分別接到PTA2和PTA3上??梢愿鶕?jù)需要選擇靈敏度。
XYZ軸的輸出經(jīng)過電阻R1、R2、R3和電容C1、C2、C3濾波后分別接到了MCU的ADC輸入。 因為在這項應(yīng)用中MMA7260QT 保持在工作狀態(tài),所以Sleep Mode腳接到了VDD。C5是為了減小電源波動對傳感器的影響加的去耦電容。
XYZ軸輸出電路
XYZ軸輸出電路由電機(jī)Mz、Mx、My、MOSFET管T1、T2、T3、二極管D1、D2、D3和電阻R6、R7、8組成。XYZ軸電機(jī)控制信號分別通過普通的B口輸出腳PTB5、PTB4、PTB6輸出。這里PTB5、PTB4、TB6已經(jīng)通過軟件將其做成PWM輸出口。它們輸出的是電壓PWM信號,通過PWM信號控制電機(jī)的轉(zhuǎn)速。
這個PWM信號通過電阻R6(R7、R8)送到MOSFET管的控制極,控制MOSFET管的通/斷,帶動電機(jī)工作。因為MOSFET是電壓控制器件,是不需要限流電阻的。這里的R6、R7、R8是為減小電機(jī)的脈沖干擾信號通過T1、T2、T3耦合對MCU的影響而設(shè)。
D1、D2、D3是在T1、T2、T3關(guān)斷時為電機(jī)提供電流通路。
Mz是主旋翼電機(jī),帶動直升機(jī)的主旋翼,控制著直升機(jī)的升/降。
Mx是尾翼電機(jī),帶動直升機(jī)的尾翼螺旋槳,控制著直升機(jī)的方向。
My是進(jìn)/退電機(jī),控制著直升機(jī)的前進(jìn)/后退。
系統(tǒng)軟件
軟件流程
軟件流程如圖3所示。
軟件描述
飛行姿態(tài)信號和電池電壓AD轉(zhuǎn)換程序
實現(xiàn)飛行姿態(tài)信號測量的方法是:首先用準(zhǔn)確的時間間隔來測飛行姿態(tài)信號;將測得的數(shù)據(jù)進(jìn)行比較,大于最大限制值時放棄;對于在規(guī)定范圍內(nèi)的數(shù)據(jù)求代數(shù)和,同時記錄求和的次數(shù);經(jīng)過一段規(guī)定的時間后,將求得的代數(shù)和除以求和的次數(shù),就得到了在這段規(guī)定時間的平均值。用計時器設(shè)一個定期的時間中斷就可實現(xiàn)測量時間的準(zhǔn)確間隔。
實現(xiàn)飛行姿態(tài)信號測量的程序簡略如下:
在初始化程序中:設(shè)置ADC在CH4上,ADC關(guān)中斷連續(xù)轉(zhuǎn)換。在CH4上是X軸數(shù)據(jù)設(shè)置,MTIM計時模塊T_n時間中斷一次。
電池電壓監(jiān)控程序
當(dāng)檢測到電壓低到某一值時,程序會通過LED顯示,向操縱人員報警。如沒有及時控制直升機(jī)停止飛行,電壓會繼續(xù)降低。當(dāng)電壓低到不能允許再低的時候,程序?qū)娭浦鄙龣C(jī)停止飛行。這個"強制停止"不是立刻將電機(jī)停止,那樣會使直升機(jī)墜落,而是平衡地減小PWM輸出,使直升機(jī)緩慢的降落