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