1、引言

四軸飛行器是一種結構緊湊、飛行方式獨特的垂直起降式飛行器,與普通的飛行器相比具有結構簡單,故障率低和單位體積能夠產生更大升力等優點,在軍事和民用多個領域都有廣闊的應用前景,非常適合在狹小空間內執行任務。因此四旋翼飛行器具有廣闊的應用前景,吸引了眾多科研人員,成為國內外新的研究熱點。

本設計主要透過利用慣性測量單元(IMU)姿態獲取技術、PID電機控制演算法、2。4G無線遙控通訊技術和高速空心杯直流電機驅動技術來實現簡易的四軸方案。整個系統的設計包括飛控部分和遙控部分,飛控部分採用機架和控制核心部分一體設計增加系統穩定性,遙控部分採用模擬搖桿操作輸入使操作體驗極佳,兩部分之間的通訊採用2。4G無線模組保證資料穩定傳輸。飛行控制板採用高速微控制器STM32作為處理器,採用含有三軸陀螺儀、三軸加速度計的運動感測器MPU6050作為慣性測量單元,透過2。4G無線模組和遙控板進行通訊,最終根據PID控制演算法透過PWM方式驅動空心杯電機來達到遙控目標。

2、系統總體設計

系統硬體的設計主要分要遙控板和飛控板兩個部分,遙控板採用常見羊角把遊戲手柄的外形設計,控制輸入採用四向搖桿,無線資料傳輸採用2。4G無線模組。飛控板採用控制處理核心和機架一體的設計即處理器和電機都整合在同一個電路板上,採用常規尺寸能夠採用普通玩具的配件。系統軟體的設計同樣包括遙控板和飛控板兩部分的工作,遙控板軟體的設計主要包括ADC的採集和資料的無線傳送。飛控板的軟體的設計主要包括無線資料的接收,自身姿態的實時結算,電機PID增量的計算和電機的驅動。整個四軸飛行器系統包括人員操作遙控端和飛行器控制端,遙控端主控制器STM32透過ADC外設對搖桿資料進行採集,把採集到的資料透過2。4G無線通訊模組傳送至飛控端。飛控板的主要工作就是透過無線模組進行控制訊號的接收,並且利用慣性測量單元獲得實時系統加速度和角速度原始資料,並且最終解算出當前的系統姿態,然後根據遙控板傳送的目標姿態和當姿態差計算出PID電機增量,然後透過PWM驅動電機進行系統調整來實現飛行器的穩定飛行。系統的總體設計框圖如圖1所示。

採用STM32設計的四軸飛行器飛控系統

圖1 系統總體設計框圖

四軸飛行器的硬體設計

2。1主控單元選擇

從成本和效能綜合考慮,飛控板和遙控板的主控單元都採用意法半導體公司的增強型高速微控制器STM32F103作為主控的,STM32F103是基於的ARM 32位的Cortex-M3核心架構,穩定工作頻率可達72MHz,是一個具有豐富資源、高速時鐘的精簡指令的微處理器。STM32F103擁有從64K或128K位元組的快閃記憶體程式可選儲存器,高達20K位元組的SRAM,2個12位模數轉換器多達16個輸入通道,7通道DMA控制器,多達80個快速I/O埠,序列單線除錯(SWD)和JTAG介面除錯模式,多達7個定時器,多達2個I2C介面(支援SMBus/PMBus),多達3個USART介面(支援ISO7816介面,LIN,IrDA介面和調製解調控制),多達2個SPI介面(18M位/秒),CAN介面(2。0B主動),USB2。0全速介面。主控單元原理圖如圖2所示。

採用STM32設計的四軸飛行器飛控系統

圖2 主控單元原理圖

2。2 飛控板電路設計

飛控板的核心設計是MPU6050測量感測器、NRF2401無線模組以及飛控板電機驅動等模組的設計。飛控系統的慣性測量單元採用MPU6050作為測量感測器,MPU6050的驅動方式採用IIC介面,時鐘引腳SCL連線到STM32的PB10,資料引腳連線到STM32的PB11引腳,資料中斷引腳連線到PB5,為了增強驅動能力在每個引腳上都加入了10K的上拉電阻,原理圖的設計如圖3所示。

採用STM32設計的四軸飛行器飛控系統

圖3 飛控板慣性測量單元原理圖

相對於其他模組電系統也是比較重要的部分,飛控系統採用3。7V高放電倍率鋰電池進行供電。主控晶片供電部分和IMU感測器部分採用各自獨立的LDO進行供電,這樣確保了系統的穩定性和IMU感測器資料採集的準確性,穩壓直流電源模組的原理圖設計如圖4所示。

採用STM32設計的四軸飛行器飛控系統

圖4 飛控板電源穩壓原理圖

飛控板與遙控板資料的通訊同樣採用的是基於2。4G頻段的NRF2401模組,確保了資料的穩定傳輸。STM32的SPI1外設對2。4G模組進行操作驅動,引腳的連線如下表1所示。

採用STM32設計的四軸飛行器飛控系統

NRF2。4G為採用3。3V供電無線模組,系統採用與微控制器相同的電源網路對其供電,同時加入0。1UF電容進行濾波確保模組正常工作,無線模組的具體原理圖連線如圖5所示。

採用STM32設計的四軸飛行器飛控系統

圖5 飛控板無線模組原理圖

飛控板的驅動系統採用的是四個分佈對稱十字交叉的高速空心杯電機,電機的驅動開關部分採用N溝道增強型場效應電晶體進行控制,透過修改STM32對應引腳上的PWM訊號來進行開關MOS管實現電機執行開與關,從而實現電機運轉速度的調節。電機1、2、3、4分別採用STM32的定時器2的通道0、通道1、通道2和通道3的PWM進行控制。電機1的控制端連線PA0,電機2的控制端採用PA1,電機2的控制端採用PA2,電機3的控制端採用PA3控制,電機的驅動原理圖如圖6所示。

採用STM32設計的四軸飛行器飛控系統

圖6 飛控板電機驅動原理圖

2。3遙控板電路設計

遙控板主控單元透過SPI匯流排驅動2。4G無線模組,透過8位並口驅動1602液晶顯示,透過ADC輸入引腳對搖桿和電池電量進行採集,透過引腳驅動三極體開關驅動蜂鳴器提示。遙控板的核心設計是搖桿模擬資料進行採集模組、NRF2401無線模組等設計。

採用STM32微控制器ADC1的通道4、通道5、通道6和通道7進行搖桿模擬資料進行採集並轉換為數字量,分別連線到PA4、PA5、PA6和PA7引腳,並且加入濾波電容減少雜質訊號的影響。遙控板搖桿輸入原理圖設計如圖7所示。

採用STM32設計的四軸飛行器飛控系統

圖7 遙控板搖桿輸入原理圖設計

遙控板採用NRF2。4G模組的驅動採用STM32的自帶外設SPI2進行驅動,各個功能引腳的連線如表2所示。

採用STM32設計的四軸飛行器飛控系統

NRF2。4G模組採用3。3V供電,在供電埠外加0。1UF濾波儲存電容確保無線系統的穩定性,的具體原理圖連線8所示。

採用STM32設計的四軸飛行器飛控系統

圖8 遙控板無線模組原理圖

3、四軸飛行器的軟體設計

四軸飛行器的軟體設計主要包括飛控板軟體的設計和遙控板軟體的設計。整體軟體在MDK環境下采用C語言編寫,採用ST-LINK模擬器對程式進行除錯與下載。

3。1飛控板系統軟體設計

飛控程式的主要設計思想是開機對無線模組的初始化、MPU6050的初始化、PWM電機初始化。隨後對整個系統IMU繼續零偏處理,隨後等待進入解鎖資訊的傳入。飛控採用定時器中斷的方式,在中斷中進行對時間的處理,每次中斷計次標誌就會自增,根據不同的中斷積累即不同時間的間隔分別處理優先順序不同的任務。飛控系統程式設計流程圖如圖9所示。

採用STM32設計的四軸飛行器飛控系統

圖9 飛控系統程式設計流程圖

飛控系統每0。5毫秒中斷一次,每次中斷就會檢查一次無線模組資料的接收,確保飛控系統的控制資訊的實時性。每兩次中斷即1毫秒讀取一次IMU單元的資料,透過濾波演算法獲得較為準確的系統加速度、角速度的原始資料。每四次中斷即2毫秒透過IMU的原始資料計算下當前飛控板系統的姿態,然後結合遙控端的目標姿態,根據兩者的差值透過PID控制演算法進行對各個電機的調速控制。每200次中斷即100毫秒,飛控系統會採集一次電池電壓,然後把電池電壓傳送給遙控板,用來高速操作人員當前電壓的大小。

MPU6050作為系統的慣性測量單元,是整個系統正常執行基礎。MPU6050的驅動匯流排為IIC方式,為了程式的方便性本系統選用PB10和PB11模擬IIC來驅動。IMU讀取出來的資料只是最簡單的加速度、陀螺儀角速度的原始資料,需要透過進一步的處理才能得到本系統想要的姿態角度。飛控板姿態結算流程圖如圖10所示。

根據處理過後的MPU資料來獲得當前的姿態,具體的姿態獲取理論上是根據各個角度的積分得到當前的系統姿態尤拉角。本系統的設計實現是採用四元數演算法對MPU6050最濾波後的資料進行計算得到最終的尤拉角。

整個飛控系統的執行動作是透過調整飛控姿態來實現的,本系統設計在當前姿態的基礎上,根據接收到的遙控器的目標姿態對空心杯電機進行基於PID演算法的PWM控制調速,從而實現飛控系統的各種基本運動。飛控板會對系統慣性測量單元感測器的原始資料進行濾波,然後對濾波後的資料進行實時結算,最後根據遙控板傳送來的目標資訊進行計算出電機的控制增量,最後根據PID控制演算法對電機進行控制輸出,飛控姿態控制流程圖如圖11所示。

採用STM32設計的四軸飛行器飛控系統

圖10 飛控板姿態結算流程圖

採用STM32設計的四軸飛行器飛控系統

圖11 飛控板姿態控制流程圖

3。2遙控板系統軟體設計

遙控板的作用就是把操作人員的操作動作轉化成訊號傳給飛行控制板,同時將一些控制資訊和飛控板傳回來的資訊進行實時的顯示和處理。飛控板搖桿資料的採集用到了STM32的ADC功能STM32F103xx增強型產品內嵌2個12位的模擬/數字轉換器(ADC),每個ADC共用多達16個外部通道,可以實現單次或掃描轉換。而且STM32的ADC可以採用DMA通道,這樣可以進一步的節省硬體資源,加快系統實時性。採用SPI1驅動NRF無線模組,進行與飛控板的資料通訊,遙控板系統軟體流程如圖12所示。

採用STM32設計的四軸飛行器飛控系統

圖12 遙控板軟體流程圖

本系統採用STM32的ADC1的通道4、通道5、通道6和通道7進行搖桿模擬資料進行採集,ADC和DMA的配置程式碼如下:

ADC_Configuration(); //ADC 功能配置

DMA_Configuration(); //DMA 功能配置

下面是ADC和DMA的啟動和時能程式碼如下:

ADC_SoftwareStartConvCmd(ADC1, ENABLE); //啟動 ADC1 轉換

DMA_Cmd(DMA1_Channel1, ENABLE); //啟動 DMA 通道

採用STM32外設SPI1驅動NRF2。4G模組,SPI初始化程式碼如下:

Spi1_Init();

採用無線模組的通道40進行通訊,2401初始化函式如下:

Nrf24l01_Init(MODEL_RX2,40); //通道40

2。4G無線模組NRF2401的接收函式如下:

Nrf_Check_Event(); //讀取NRF2401資料

透過2401將控制訊號傳送,傳送函式如下:

NRF_TxPacket_AP(NRF24L01_TXDATA_RC,32); //將控制訊號發給四軸

4、結論

本文描述了一個簡易四軸飛行器系統的設計實現,整個方案分為遙控控制板各飛行控制板兩部分,透過2。4G無線模組進行控制通訊,飛控系統採用IMU系統獲取姿態資訊根據反饋控制演算法進行電機控制從而實現飛行控制。本系統飛控板採用一體設計使得系統簡單、緊湊,遙控板採用搖桿輸入使系統控制體驗良好,最終實現飛行器的基本運動。實踐證明該四軸飛行器飛行穩定、可靠,取得了較好效果。

採用STM32設計的四軸飛行器飛控系統

參考文獻

[1] 李堯。 四旋翼飛行器控制系統設計[D]。 大連:大連理工大學, 2013。

[2] 譚浩強。 C程式設計教程[M]。 北京:清華大學出版社, 2010。

[3] 劉火良。 STM32庫開發實戰指南[M]。 北京:機械工業出版社, 2013。

[4] 白志剛。 自動調節系統解析與PID整定[M]。 北京:化學工業出版社, 2012。

[5] 朱君。 四旋翼無人飛行器控制系統設計及控制方法研究[D]。 內蒙古:內蒙古科技大學, 2012。

[6] 曾勇。 四旋翼飛行器容錯控制系統設計與實現[D]。 成都:電子科技大學, 2013。

[7] 宋佳佳。 小型四旋翼飛行器實驗平臺設計[D]。 武漢:華中科技大學, 2013。

[8] 劉軍。 例說STM32[M]。 北京:北京航空航天大學出版社, 2011。

[9] 張瑾等。 電路設計與制板Protel 99SE入門與提高[M]。 北京:人民郵電出版社, 2007。

[10] 蒙博宇。 STM3自學筆記[M]。 北京:北京航空航天大學出版社, 2012。

[11] 劉金琨。 先進PID控制MATLAB模擬[M]。 第3版。 北京:電子工業出版社, 2011。

[12] 霍罡等。 可編程式控制器模擬量及PID演算法應用案例[M]。 北京:高等教育出版社, 2013。