周亮亮,汪列隆,張 倩
(1.池州學(xué)院 機(jī)電工程學(xué)院,安徽 池州 247000;2.銅陵學(xué)院 圖書館,安徽 銅陵 244000)
基于STM32的四軸飛行器設(shè)計(jì)
周亮亮1,汪列隆1,張倩2
(1.池州學(xué)院機(jī)電工程學(xué)院,安徽池州247000;2.銅陵學(xué)院圖書館,安徽銅陵244000)
四軸飛行器是一種物理結(jié)構(gòu)較簡(jiǎn)單,體積較小,飛行容易控制的集現(xiàn)代微機(jī)電控制技術(shù)、微動(dòng)力技術(shù)、高效電源技術(shù)于一體的飛行控制技術(shù).本課題是以STM32單片機(jī)為控制核心,用集成加速度、陀螺儀的MPU6050姿態(tài)傳感器采集四軸飛信器的飛行姿態(tài)信息、并融合以NRF24L01藍(lán)牙無線傳輸方式接受來至遙控器的信號(hào),通過串級(jí)PID控制方式控制四軸上的無刷直流電機(jī)以驅(qū)動(dòng)螺旋槳獲得相應(yīng)飛行姿態(tài).完成了飛信器所需的硬件選型及電路設(shè)計(jì),編寫了系統(tǒng)控制程序,并進(jìn)行了大量調(diào)試,選擇合適的PID控制參數(shù),使飛信器飛行穩(wěn)定.
四軸飛行器;STM32;PID;飛行姿態(tài)
四軸飛行器相對(duì)傳統(tǒng)載人飛機(jī),其結(jié)構(gòu)簡(jiǎn)單,體積小巧,成本低廉,飛行環(huán)境要求低,使用起來簡(jiǎn)單安全可靠,這些優(yōu)勢(shì)使四軸飛行器備受青睞.如今,四軸飛行器已經(jīng)應(yīng)用到了各個(gè)領(lǐng)域,如生態(tài)環(huán)境監(jiān)測(cè)、低空偵查、軍事打擊、民用航拍、災(zāi)害搜救等,并有向快遞行業(yè)發(fā)展的趨勢(shì).
四軸飛行器也存在著一些難點(diǎn):首先,四軸飛行器體積較小,飛行速度較低,因此其空氣動(dòng)力學(xué)原理比較復(fù)雜,影響飛行器的穩(wěn)定飛行的因素有很多,具有多變量、非線性、強(qiáng)耦合的系統(tǒng)特性,很多技術(shù)問題無法用空氣動(dòng)力學(xué)原理來解決.其次四軸飛行器重量輕,在無風(fēng)情況下能夠正常飛行,但在天氣惡劣情況下,抗干擾能力差,目前的PID控制算法還不能完全解決該問題.再次四軸飛行器整體功耗較大,若增加電池容量,無形中增加了飛行器重量,給飛行器的續(xù)航問題帶來了很多困擾.這些問題能否成功解決,對(duì)四軸飛行器的應(yīng)用推廣尤為關(guān)鍵.
1.1硬件構(gòu)成
四軸飛行器的硬件由機(jī)架、電路、電機(jī)和螺旋槳等構(gòu)成.四軸飛行器的機(jī)架為十字狀,是其他硬件固定的一個(gè)平臺(tái),機(jī)架采用的是輕質(zhì)塑料,是整個(gè)飛行器的支持部件,并起著硬件電路和電機(jī)的保護(hù)作用,電機(jī)采用無刷直流空心杯電機(jī),將其固定在機(jī)架的四個(gè)端點(diǎn)處.螺旋槳分為一對(duì)正漿和一對(duì)反漿,正反漿可以抵消扭矩,使飛行穩(wěn)定.
1.2電氣構(gòu)成
電氣構(gòu)成相比機(jī)械構(gòu)成要復(fù)雜點(diǎn).其電氣構(gòu)成可分為:電源部分、傳感器部分、控制部分和通信部分等四大部分.電源部分又可分為供電部分和穩(wěn)壓部分.傳感器部分包括陀螺儀、加速度計(jì)、電子羅盤和氣壓計(jì)等芯片.控制部分主要是主控芯片STM32F103T8U6構(gòu)成.通信部分包括藍(lán)牙模塊和2.4G無線通信模塊.
1.3飛行原理
四軸飛行器的機(jī)架是采用十字狀的,在四軸飛行器設(shè)計(jì)時(shí)需要選定飛行器的方向,其方向的選定一般有兩種.一種是以一個(gè)電機(jī)作為前方,和其相對(duì)的電機(jī)作為后方,這種方式在方向選擇和后續(xù)的算法比較簡(jiǎn)單,但控制難度大.另外一種兩個(gè)電機(jī)作為前方,其他兩個(gè)電機(jī)作為后方,這種方式方向控制相對(duì)第一種來說有些復(fù)雜,但控制飛行比較穩(wěn)定.本課題采用第二種方法.四軸飛行器有六種運(yùn)動(dòng)方式,分別為垂直運(yùn)動(dòng)、俯仰運(yùn)動(dòng)、滾轉(zhuǎn)運(yùn)動(dòng)、偏航運(yùn)動(dòng)、前后運(yùn)動(dòng)、傾向運(yùn)動(dòng),這里只介紹垂直運(yùn)動(dòng)原理.如圖1(a)所示,當(dāng)1和3螺旋槳作逆時(shí)針方向運(yùn)動(dòng),2和4作順時(shí)針方向運(yùn)動(dòng),4個(gè)螺旋槳同時(shí)提供升力,正方槳抵消產(chǎn)生的扭矩,當(dāng)升力超過自身的重量時(shí),飛行器作上升運(yùn)動(dòng).當(dāng)升力等于自身重量時(shí),飛行器便保持懸停狀態(tài).其它飛行運(yùn)動(dòng)這里不做介紹.
圖1 飛行器的運(yùn)動(dòng)原理圖
1.4飛行器的控制原理
為了獲取飛行器的姿態(tài),在四軸飛行器上裝有3個(gè)方向的加速度傳感器和陀螺儀.控制原理如圖2所示,主控板上的MCU采集地磁傳感器、加速度傳感器和陀螺儀的信息,經(jīng)數(shù)據(jù)濾波、融合和慣性導(dǎo)航計(jì)算獲取飛行器的姿態(tài)和位置信息,這些信息與遙控器發(fā)射過來的控制信號(hào)進(jìn)行PID控制運(yùn)算,控制輸出PWM信號(hào)傳送到飛信器四個(gè)角上電子調(diào)速器,從而控制電機(jī)的轉(zhuǎn)速,獲取特定的姿態(tài)飛行.
圖2 控制原理示意圖
1.5PID控制
PID控制是目前在控制領(lǐng)域應(yīng)用最為廣泛的閉環(huán)自動(dòng)反饋系統(tǒng),其結(jié)構(gòu)簡(jiǎn)單、控制參數(shù)容易設(shè)置,比其他控制器更為成熟.本文采用的是角度、角速度串級(jí)PID控制,如圖3所示.這里對(duì)參數(shù)進(jìn)行說明,期望角度為遙控器控制飛行器的角度值,當(dāng)前角度是傳感器測(cè)量的飛行角度,飛行角度是指俯仰角,翻滾角,偏航角.在PID控制過程中,這三個(gè)角是獨(dú)立的.
圖3 角度/角速度串級(jí)PID原理框圖
2.1MCU的最小系統(tǒng)原理圖
本課題設(shè)計(jì)主控芯片采用STM32F103C8T6芯片,讓STM32F103C8T6芯片正常工作還需要一些外圍電路,主要是供電部分和外部震蕩電路. STM32F103C8T6芯片的電壓范圍為2-3.6V,本課題設(shè)計(jì)采用3.3V供電;外部震蕩電路采用8MHz晶振,然后通過軟件設(shè)置倍頻到72MHz.MCU的電路原理如圖4所示.
圖4 最小系統(tǒng)電路圖
2.2電源模塊
四軸飛行器正常工作需要提供電能,無論是主控芯片還是傳感器都有自己的電壓寬度,因此應(yīng)該使用滿足硬件要求的電壓,本課題設(shè)計(jì)電路采用3.3V,電機(jī)驅(qū)動(dòng)采用3.7V,使用5V電壓充電,而實(shí)際使用的鋰電池是3.7V的,所以需要進(jìn)行電壓的轉(zhuǎn)換.本課題選取的是MIC5205穩(wěn)壓芯片.另外四軸飛行器的電池采用3.7V鋰電池,在使用過程中需要給電池充電,使用USB進(jìn)行充電.為了進(jìn)行充電管理來保證充電可以正常進(jìn)行和安全因此需要一款充電IC,本課題設(shè)計(jì)采用LTC4054充電芯片. LTC4054芯片有5個(gè)引腳,第一引腳是充電轉(zhuǎn)態(tài)指示引腳,充電進(jìn)行時(shí)此引腳被拉低,LED燈被點(diǎn)亮,當(dāng)充電完成是,此引腳呈現(xiàn)高阻狀態(tài),LED燈熄滅;第二引腳為電源地;第三引腳為充電電流輸出引腳,接鋰電池;第四引腳為電源輸入引腳;第五引腳為充電電流編程引腳,可通過電阻的大小來控制充電電流的大小.
2.3驅(qū)動(dòng)電路
四軸飛行器通過電機(jī)帶動(dòng)螺旋槳來產(chǎn)生升力,從而飛行.通過電機(jī)轉(zhuǎn)速的調(diào)節(jié)來實(shí)現(xiàn)各種飛行功能,主控芯片通過PWM來控制電機(jī)的轉(zhuǎn)速,但主控芯片的驅(qū)動(dòng)能力差,不足以驅(qū)動(dòng)電機(jī),需要通過專門的驅(qū)動(dòng)電路來驅(qū)動(dòng)電機(jī).本課題設(shè)計(jì)采用MOS管來驅(qū)動(dòng)電機(jī).
2.4MPU6050姿態(tài)傳感器
MPU6050是一款9軸運(yùn)動(dòng)組件,3軸加速度和3軸角速度(陀螺儀),以及一個(gè)可擴(kuò)展數(shù)字運(yùn)動(dòng)處理器,通過I2C連接第三方數(shù)字傳感器.MPU6050通過I2C通信協(xié)議與主控進(jìn)行通信.主控芯片對(duì)MPU6050的操作有兩種方式,一種是軟件操作,通過I2C直接讀取6軸的數(shù)據(jù).讀取的數(shù)據(jù)是原始數(shù)據(jù),需要在程序里進(jìn)行處理,這種方法加大了運(yùn)算量;另一種是硬件操作,MPU6050的DMP(數(shù)字運(yùn)動(dòng)處理器)將數(shù)據(jù)處理成歐拉角好放到FIFO中,主控芯片在從FIFO中讀取數(shù)據(jù),后期處理比較方便,而且節(jié)省時(shí)間.
2.5通信設(shè)計(jì)
四軸飛行器的飛行受遙控端的控制,根據(jù)遙控端的控制作出相應(yīng)的反應(yīng).四軸飛行器和遙控端是進(jìn)行無線通信的,所以要設(shè)計(jì)無線通信電路.本課題設(shè)計(jì)采用的是NRF24L01的2.4G無線通信.
軟件是四軸的核心部分.程序的好壞將直接決定四軸飛行器的可操作性.所以在進(jìn)行程序編寫之前要進(jìn)行架構(gòu),從整體入手,漸漸深入細(xì)節(jié),這樣才能使程序穩(wěn)定,可靠.
四軸飛行器在工作過程中主要進(jìn)行以下幾個(gè)核心任務(wù):數(shù)據(jù)采集、數(shù)據(jù)處理、電機(jī)控制以及通信.為了保證程序中各個(gè)任務(wù)可以有序的進(jìn)行,通過定時(shí)器來處理任務(wù),在主循環(huán)中完成相應(yīng)的判斷和處理.程序控制流程如圖5所示.
由圖可知,系統(tǒng)有三個(gè)時(shí)間片段,第一個(gè)時(shí)間片段為loop200Hz>5,即10ms,系統(tǒng)每10ms執(zhí)行一次;第二個(gè)時(shí)間片段為loop50HzFlag=1,即20ms,系統(tǒng)每 20ms執(zhí)行一次;第三個(gè)時(shí)間片段為loopHzFlag=1,即100ms,系統(tǒng)每100ms執(zhí)行一次.
圖5 控制程序圖
本文對(duì)四軸飛行器設(shè)計(jì)進(jìn)行了簡(jiǎn)易的描述,首先對(duì)飛行器進(jìn)行了結(jié)構(gòu)設(shè)計(jì),采用了十字狀的物理結(jié)構(gòu),對(duì)飛行器飛行原理作了闡釋,控制方式選擇經(jīng)典的串級(jí)PID控制,通過無線模塊與飛行器進(jìn)行通訊,以STM32單片機(jī)為控制核心,通過一系列的傳感器采集飛行器的姿態(tài)信息、經(jīng)PID控制輸出PWM信號(hào)控制四軸上的無刷直流電機(jī)以驅(qū)動(dòng)螺旋槳獲得相應(yīng)飛行姿態(tài).最終經(jīng)過四軸飛行器的硬件和軟件調(diào)試后,實(shí)現(xiàn)了飛行器上升、俯仰、偏航等運(yùn)動(dòng),實(shí)踐證明,該飛行器飛行穩(wěn)定可靠.
〔1〕周建陽,陳家樂,薛斌,等.基于STM32四軸飛行器的設(shè)計(jì)[J].欽州學(xué)院學(xué)報(bào),2015,30(2):30-33.
〔2〕劉乾,孫志鋒.基于ARM的四旋翼無人飛行器控制系統(tǒng)[J].機(jī)電工程,2011,28(10):1237-1240.
〔3〕陳李文,馬國(guó)軍,張家棟.四軸飛行器無刷直流電機(jī)驅(qū)動(dòng)技術(shù)研究 [J].現(xiàn)代電子技術(shù),2013(16):152-154.
〔4〕宮琛.四軸飛行器的研究與設(shè)計(jì)[D].安徽理工大學(xué),2015.
〔5〕李俊.四旋翼飛行器的動(dòng)力學(xué)建模及PID控制[J].遼寧工程技術(shù)大學(xué)學(xué)報(bào),2012,31(1):114-117.
V249
A
1673-260X(2016)07-0032-03
2016-03-12
赤峰學(xué)院學(xué)報(bào)·自然科學(xué)版2016年13期