余愿
摘 ? 要:在ARM平臺設(shè)計了一種基于μC/OS- III的四旋翼飛行器的控制系統(tǒng),該系統(tǒng)選用STM32F103系列微控制器,采用MP1584EN降壓轉(zhuǎn)換器保證主控的供電穩(wěn)定,PWM(Pulse Width Modulation)信號的占空比控制四個電機(jī)的轉(zhuǎn)速,以陀螺儀傳感器MPU6050為慣性測量單元,并通過互補(bǔ)濾波算法對獲取到的數(shù)據(jù)進(jìn)行濾波處理,提高數(shù)據(jù)精度,實現(xiàn)了四旋翼飛行器在空中的平穩(wěn)飛行和姿態(tài)控制。
關(guān)鍵詞:四旋翼飛行器 ?PWM ?互補(bǔ)濾波算法
中圖分類號:V249 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A ? ? ? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2020)02(b)-0006-03
四旋翼飛行器與傳統(tǒng)飛行器相比,具有結(jié)構(gòu)簡單、載重能力強(qiáng)、成本低等優(yōu)點,通過對四翼上的四個電機(jī)的控制就能實現(xiàn)垂直升降、空中翻滾、懸空停止的功能。四旋翼飛行器的結(jié)構(gòu)比較靈活,可以小型化使其用于航拍、軍事偵察,同時又因能避免復(fù)雜的空氣動力學(xué)問題,可以大型化應(yīng)用于遠(yuǎn)程物資運輸、農(nóng)業(yè)播種,地質(zhì)勘測等。四旋翼飛行器既能完成在室外高空的任務(wù),又能實現(xiàn)室內(nèi)狹小空間的飛行,擺脫了傳統(tǒng)飛行器對任務(wù)環(huán)境的苛刻要求,具有非常廣泛的應(yīng)用前景。
1 ?飛行原理
四旋翼飛行器機(jī)械結(jié)構(gòu)簡單,通過控制四個電機(jī)帶動旋翼的旋轉(zhuǎn)變化產(chǎn)生升力,系統(tǒng)輸入量包括四個電機(jī)的轉(zhuǎn)速,輸出量是在X、Y、Z三個方向上平移和旋轉(zhuǎn)的六個自由度,飛行姿態(tài)由電機(jī)速度控制實現(xiàn)[1]。
根據(jù)四旋翼飛行器飛行方式不同,按結(jié)構(gòu)分為X型和十字型兩種。在這兩種飛行模式下,其動力配置方式都是一樣的;飛行器對向的電機(jī)轉(zhuǎn)向相同,另一對向的電機(jī)轉(zhuǎn)向相反,即相鄰的電機(jī)轉(zhuǎn)向總是相反的,目的是為了抵消電機(jī)運行時產(chǎn)生的陀螺效應(yīng)。本次設(shè)計采用X型結(jié)構(gòu),示意圖如圖1所示。
(1)垂直運動:垂直運動即飛行器高度控制,控制四個電機(jī)的輸出功率來改變螺旋槳產(chǎn)生的拉力,當(dāng)拉力大于飛行器重力時,飛行器可垂直上升,反之,飛行器垂直下降,當(dāng)拉力與重力相等時,飛行器懸空停止[2]。
(2)俯仰運動:如圖2所示,電機(jī)M1、M2降低轉(zhuǎn)速,M3、M4增加轉(zhuǎn)速,飛行器前后旋翼產(chǎn)生的升力不同,飛行器由于不平衡力矩存在就會沿著中心軸線翻轉(zhuǎn),飛行器表現(xiàn)為做俯仰運動。同時,飛行器旋翼傾斜后其拉力產(chǎn)生了水平的一個分量,飛行器表現(xiàn)為朝前方飛行。同理,電機(jī)M1、M2轉(zhuǎn)速上升,飛行器即向后運動。
(3)橫滾運動:與俯仰運動原理相同,電機(jī)M1、M3增加轉(zhuǎn)速,M2、M4降低轉(zhuǎn)速,飛行器呈橫滾狀態(tài)向左飛行,反之亦然。
(4)偏航運動:在旋翼過程中的空氣阻力所產(chǎn)生的扭矩與旋轉(zhuǎn)方向是相反的,所以在動力布局上是一組電機(jī)正轉(zhuǎn),一組電機(jī)反轉(zhuǎn),從而抵消四個電機(jī)扭矩。若要實現(xiàn)偏航運動,需調(diào)整四個電機(jī)的轉(zhuǎn)速,使其扭矩不平衡。如圖3所示,電機(jī)M1、M3逆時針旋轉(zhuǎn),增加其轉(zhuǎn)速,降低M2、M4電機(jī)的轉(zhuǎn)速,飛行器就會沿著軸心順時針旋轉(zhuǎn)以克服扭矩不平衡,此時飛行器表現(xiàn)出航向發(fā)生了變化。其運動示意圖如圖3所示。
2 ?四旋翼飛行器硬件電路設(shè)計
2.1 飛行器主控系統(tǒng)設(shè)計
本設(shè)計將搭載實時操作系統(tǒng),同時涉及到一些姿態(tài)轉(zhuǎn)換算法,濾波算法以及其他浮點運算處理,對芯片存儲和運算要求較高。因此,四旋翼飛行器的飛控核心單元選擇了STM32F103ZET6作為微控制器,它是一款高性能、低成本的嵌入式產(chǎn)品,芯片基于ARM Cortex-M3內(nèi)核,采用2.0V-3.6V的直流電壓供電。
飛控系統(tǒng)硬件結(jié)構(gòu)如圖4所示。
2.2 電源模塊
四旋翼飛行器系統(tǒng)主控芯片供電電壓為3.3V,傳感器供電電壓為5V,而系統(tǒng)電源采用一塊11.1V的3S動力鋰電池,因此需要設(shè)計兩種供電電路。系統(tǒng)采用MP1584EN降壓轉(zhuǎn)換器將11.1V的電池電壓降到5V電壓,采用AMS1117-3.3V電源穩(wěn)壓芯片,AMS1117是一個正向低壓降穩(wěn)壓器,內(nèi)部集成過熱保護(hù)和限流電路,保證了主控的供電穩(wěn)定。MP1584EN電路原理圖如圖5所示。
2.3 姿態(tài)測量模塊
姿態(tài)測量模塊采用了帶有三軸加速度計、陀螺儀以及電子羅盤的IMU慣性測量模塊;分別為三軸加速度計、陀螺儀傳感器MPU6050,以及電子羅盤HMC5883L;MPU6050模塊之間可直接通過I2C接口獲取姿態(tài)數(shù)據(jù),將兩者的傳感器數(shù)據(jù)進(jìn)行融合解算就可以得到姿態(tài)數(shù)據(jù)。姿態(tài)傳感器的電路原理圖如圖6所示。
2.4 遙控模塊
出于安全考慮,本設(shè)計采用成品2.4G七通道遙控器WFT07,遙控器是基于PPM(Pulse Position Modulation)編碼原理實現(xiàn)的;發(fā)射機(jī)發(fā)送一幀周期為20ms,包含多個周期為2ms,高電平時間為1~2ms的PWM波,7個通道就共有7路PWM波,所以一幀數(shù)據(jù)就有7個通道的數(shù)據(jù)信息,接收機(jī)接收到PPM編碼信號,通過移位寄存器解碼出7個通道的PWM信號,飛控再通過定時器的輸入捕獲功能通過I/O管腳來捕獲每個通道的PWM信號,解析出遙控器的打舵量,實現(xiàn)對飛行器的操控。
3 ?飛行器的軟件設(shè)計
3.1 系統(tǒng)任務(wù)調(diào)度
本系統(tǒng)在μC/OS-III下設(shè)計了五個任務(wù):LED控制任務(wù),姿態(tài)傳感器數(shù)據(jù)采集與姿態(tài)解算任務(wù),遙控信號捕獲任務(wù),電機(jī)輸出控制任務(wù),與上位機(jī)數(shù)據(jù)通信任務(wù),采用了優(yōu)先級搶占式任務(wù)方式進(jìn)行調(diào)度[3]。
系統(tǒng)上電后先初始化μC/OS-III,運行系統(tǒng)初始任務(wù)將飛行器上鎖,進(jìn)入等待遙控解鎖信號。飛行器數(shù)據(jù)采集任務(wù)將讀取各傳感器數(shù)據(jù),并對數(shù)據(jù)進(jìn)行數(shù)字濾波處理,然后進(jìn)行姿態(tài)解算,得到當(dāng)前姿態(tài)數(shù)據(jù)并通過互斥信號量將解算完成數(shù)據(jù)的消息傳遞給電機(jī)輸出控制任務(wù),電機(jī)輸出控制任務(wù)中包含了PWM信號輸出與PID算法控制;LED控制任務(wù)用來監(jiān)測系統(tǒng)運行狀態(tài),通過不同的閃爍方式表示不同的狀態(tài);與上位機(jī)數(shù)據(jù)通信任務(wù)負(fù)責(zé)將飛行器的姿態(tài)數(shù)據(jù),解析出的遙控數(shù)據(jù),計算出的各個電機(jī)的輸出值以及飛行器狀態(tài)信息通過串口發(fā)送到上位機(jī)供調(diào)試分析。
3.2 飛控姿態(tài)數(shù)據(jù)處理
姿態(tài)傳感器測量得到的數(shù)據(jù)主要是由三軸加速度計和三軸陀螺儀組成的一組多傳感器數(shù)據(jù),為了得到能夠反映飛行器相對于地理坐標(biāo)系的姿態(tài)數(shù)據(jù),還需要將采集到的數(shù)據(jù)進(jìn)行融合處理得到歐拉角。從傳感器直接獲取的數(shù)據(jù)由于溫漂會產(chǎn)生偏差,數(shù)據(jù)經(jīng)過濾波處理后再進(jìn)行姿態(tài)解算,可以減少累積誤差。
互補(bǔ)濾波算法是針對陀螺儀的高頻特性和加速度計的低頻特性進(jìn)行較好融合的一種解決方法。互補(bǔ)濾波對具有高頻噪聲的加速度計進(jìn)行數(shù)字低通濾波,對具有低速積分漂移效應(yīng)的陀螺儀數(shù)據(jù)進(jìn)行數(shù)字高通濾波,兩種濾波器的濾波系數(shù)之和為1,最后可以得到一個比較準(zhǔn)確的估計值,相對于單傳感器的數(shù)據(jù),通過互補(bǔ)濾波結(jié)合兩種傳感器得到的姿態(tài)數(shù)據(jù)更為準(zhǔn)確。互補(bǔ)濾波的算法結(jié)構(gòu)如圖7所示。
當(dāng)把陀螺儀和加速度計的數(shù)據(jù)輸入即可得到四旋翼飛行器的姿態(tài)信息,經(jīng)過互補(bǔ)濾波后的姿態(tài)數(shù)據(jù)融合了加速度計的低頻數(shù)據(jù)和陀螺儀的動態(tài)數(shù)據(jù),由此可見,互補(bǔ)濾波器具有結(jié)構(gòu)簡單、計算量小的特點,十分適合當(dāng)前的嵌入式系統(tǒng)。將互補(bǔ)濾波用計算機(jī)能夠處理的方式描述如下:
其中Angle為數(shù)據(jù)融合后的姿態(tài)角,α為陀螺儀置信系數(shù),Angle_gyro為陀螺儀積分后的輸出角度,β為加速度計置信系數(shù),Angle_acc為加速度計結(jié)算后輸出的角度[3]。
3.3 接收機(jī)信號捕獲
接收機(jī)接收來自遙控的2.4G信號,并解碼為PWM信號,通過使用定時器的輸入捕獲功能將捕獲到PWM信號。
飛控主控通過定時器捕獲到接收機(jī)的PWM信號,由于采用的是成品遙控,各個廠家對于無線接收機(jī)的輸出PWM信號有統(tǒng)一的行業(yè)標(biāo)準(zhǔn),即輸出的PWM波為周期20ms,高電平有效范圍為0.9~2.1ms的波形;通過測量捕獲到的PWM波的高低電平的時間,來判斷當(dāng)前通道的遙控器打舵量。
本設(shè)計采用的STM32的定時器可以配置為輸入捕獲模式,這種定時器模式將通過I/O管腳自動捕獲PWM波的上升沿與下降沿。
先將定時器配置為輸入捕獲模式,在t1時刻,捕獲到PWM的上升沿,定時器觸發(fā)中斷,定時器TIMx_CCR1和TIMx_CCR2復(fù)位后開始計數(shù),在t2時刻,捕獲到PWM的下降沿,定時器觸發(fā)中斷,獲取此時定時器的TIMx_CCR1寄存器數(shù)值CNT1,在t3時刻,定時器再次捕獲到了PWM的上升沿,定時器觸發(fā)中斷,此時獲取到另一個TIMx_CCR2寄存器的值CNT2,至此定時器完成了一次PWM波的捕獲。
PWM波高電平時間=CNT1*計數(shù)周期T ? ? ? ? ? ? ? ? ? ?(2)
PWM波的周期=CNT2*計數(shù)周期T ? ? ? ? ? ? ? ? ? ? ? ? ? (3)
PWM波的占空比=PWM高電平時間/PWM波的周期 (4)
3.4 PWM電機(jī)控制信號輸出
本設(shè)計采用電子調(diào)速器驅(qū)動無刷電機(jī),由定時器輸出可供電子調(diào)速器識別的PWM波的占空比來控制電機(jī)轉(zhuǎn)速。本設(shè)計用到的電子調(diào)速器為OPTO 18A電子調(diào)速器,兼容信號頻率為30~450Hz;通過配置STM32的一個定時器為PWM輸出模式,能夠產(chǎn)生四路獨立的PWM波形。
為了實現(xiàn)PWM方波信號的輸出,需要對定時器TIMx的寄存器進(jìn)行配置,設(shè)置重裝載寄存器TIMx_ARR的值,計算方式為:
TIMx的頻率=時鐘/(TIMx_ARR-1) ? ? ? ? ? ? ? ? ? ? ? ? ?(5)
通過配置捕獲/比較寄存器TIMx_CCRx的值來確定PWM波形的占空比,其計算方式為:
占空比=(TIMx_CCRx/TIMx_ARR) ? ? ? ? ? ? ? ? ? ? ? ? ?(6)
定時器啟動后,CNT開始計數(shù),并與CCRx寄存器的值相比較,當(dāng)CCRx值 4 ?系統(tǒng)調(diào)試 調(diào)試四旋翼飛行器首先需要調(diào)試姿態(tài)傳感器的輸出數(shù)據(jù)是否正常,根據(jù)模塊手冊進(jìn)行具體的配置,再MCU讀取數(shù)據(jù)分析數(shù)據(jù)。同時需要編寫上位機(jī)通信部分的代碼,測試與上位機(jī)的通信是否正常,能否正確解析出四旋翼下位機(jī)發(fā)出的各種數(shù)據(jù)。 在姿態(tài)傳感器獲取正常的姿態(tài)數(shù)據(jù)后,還需利用上位機(jī)的波形進(jìn)行顯示分析。經(jīng)過一系列的參數(shù)調(diào)試,最終飛行器能夠穩(wěn)定的起飛,在空中平穩(wěn)飛行,同時可以通過遙控器控制飛行器在三個維度上的姿態(tài)。 參考文獻(xiàn) [1] 余單奕,嵇佳輝,郝立果.四旋翼飛行平臺控制系統(tǒng)設(shè)計[J]. 電子技術(shù)應(yīng)用,2016(5):29-32. [2] 程煦,郭珊珊,陳華賓.基于STM32單片機(jī)的四旋翼飛行器設(shè)計[J]. 電子世界, 2017(3):121-124. [3] 符秀輝,趙茂鑫,周文俊.基于互補(bǔ)濾波算法的移動機(jī)器人姿態(tài)檢測[J]. 測控技術(shù),2015(6): 31-33.