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