常國權,戴國強
(安陽工學院 計算機科學與信息工程學院,安陽455000)
四軸飛行器是一種結構緊湊、飛行方式獨特的垂直起降式飛行器,與普通飛行器相比,具有結構簡單、故障率低和單位體積能夠產(chǎn)生更大升力等優(yōu)點,所以在軍事和民用多個領域都有廣闊的應用前景,非常適合在狹小空間內(nèi)執(zhí)行任務。
本設計利用慣性測量單元(IMU)姿態(tài)獲取技術、PID電機控制算法、2.4G無線遙控通信技術和高速空心杯直流電機驅動技術來實現(xiàn)簡易的四軸飛行器。整個系統(tǒng)的設計包括飛控部分和遙控部分,飛控部分采用機架和控制核心部分一體設計增強系統(tǒng)穩(wěn)定性,遙控部分采用模擬搖桿操作輸入使操作體驗極佳,兩部分之間的通信采用2.4G無線模塊保證數(shù)據(jù)穩(wěn)定傳輸。飛行控制板采用STM32作為處理器,采用含有3軸陀螺儀、3軸加速度計的運動傳感器 MPU6050作為慣性測量單元,通過2.4G無線模塊和遙控板進行通信,最終使用PID控制算法通過PWM方式驅動空心杯電機來實現(xiàn)遙控目標。
系統(tǒng)硬件設計主要分為遙控板和飛控板兩個部分,遙控板采用常見羊角把游戲手柄的外形設計,控制輸入采用四向搖桿,無線數(shù)據(jù)傳輸采用2.4G無線模塊;飛控板采用控制處理核心和機架一體的設計。系統(tǒng)軟件設計同樣包括遙控板和飛控板兩部分的工作,遙控板軟件的設計主要包括ADC的采集和數(shù)據(jù)的無線發(fā)送。飛控板軟件的設計主要包括無線數(shù)據(jù)的接收、自身姿態(tài)的實時結算、電機PID增量的計算和電機的驅動。整個四軸飛行器系統(tǒng)包括人員操作遙控端和飛行器控制端,遙控端主控制器STM32通過ADC外設對搖桿數(shù)據(jù)進行采集,把采集到的數(shù)據(jù)通過2.4G無線通信模塊發(fā)送至飛控端。飛控板的主要工作就是通過無線模塊進行控制信號的接收,并且利用慣性測量單元獲得實時系統(tǒng)加速度和角速度原始數(shù)據(jù),并且解算出當前的系統(tǒng)姿態(tài),然后根據(jù)遙控板發(fā)送的目標姿態(tài)和當時的姿態(tài)差計算出PID電機增量,最后通過PWM驅動電機進行系統(tǒng)調(diào)整來實現(xiàn)飛行器的穩(wěn)定飛行。系統(tǒng)的總體設計框圖如圖1所示。
圖1 系統(tǒng)總體設計框圖
從成本和性能方面綜合考慮,飛控板和遙控板的主控單元都采用意法半導體公司的增強型高速單片機STM32F103作為主控制器,STM32F103基于32位的ARM Cortex-M3內(nèi)核,穩(wěn)定工作頻率可達72 MHz,擁有從64 KB到128 KB的閃存可選程序存儲器,20 KB的SRAM,2個12位模數(shù)轉換器,16個輸入通道,7通道DMA控制器,80個快速I/O端口,串行單線調(diào)試(SWD)和JTAG接口調(diào)試模式,7個定時器,2個I2C接口(支持SMBus/PMBus),3個 USART接口(支持ISO7816接口,LIN,Ir DA接口和調(diào)制解調(diào)控制),2個SPI接口(18 Mb/s),CAN接口(2.0B主動),USB2.0全速接口。主控單元原理圖如圖2所示。
圖2 主控單元原理圖
飛控板的核心設計是MPU6050慣性測量傳感器、nRF2401無線模塊以及飛控板電機驅動等模塊的設計。慣性測量單元采用MPU6050作為測量傳感器,驅動方式采用I2C接口,時鐘引腳SCL連接到STM32F103的PB10,數(shù)據(jù)引腳連接到STM32F103的PB11,數(shù)據(jù)中斷引腳連接到PB5,為了增強驅動能力在每個引腳上都加入了10 kΩ的上拉電阻,飛控板慣性測量單元原理圖如圖3所示。
圖3 飛控板慣性測量單元原理圖
飛控系統(tǒng)采用3.7 V高放電倍率鋰電池進行供電。主控芯片供電部分和IMU傳感器部分采用各自獨立的LDO進行供電,這樣確保了系統(tǒng)的穩(wěn)定性和IMU傳感器數(shù)據(jù)采集的準確性。飛控板電源穩(wěn)壓原理圖如圖4所示。
飛控板與遙控板數(shù)據(jù)的通信采用的是基于2.4 G頻段的nRF2401模塊,確保了數(shù)據(jù)的穩(wěn)定傳輸。STM32F103的SPI1外設對2.4G模塊進行驅動操作,引腳的連接如表1所列。
nRF2401為采用3.3 V供電的無線模塊,采用與單片機相同的電源網(wǎng)絡對其供電,同時加入0.1μF電容進行濾波確保模塊正常工作,無線模塊的具體原理圖連接略——編者注。
飛控板的驅動系統(tǒng)采用4個分布對稱十字交叉的高速空心杯電機,電機的驅動開關部分采用N溝道增強型場效應晶體管進行控制,通過修改STM32F103對應引腳上的PWM信號進行開關MOS管實現(xiàn)電機運行開與關,從而實現(xiàn)電機運轉速度的調(diào)節(jié)。電機1、2、3、4分別采用STM32 F103的定時器2的通道0、通道1、通道2和通道3的PWM進行控制。電機1的控制端連接PA0,電機2的控制端采用PA1,電機2的控制端采用PA2,電機3的控制端采用PA3控制,電機的驅動原理圖略——編者注。
遙控板主控單元通過SPI總線驅動2.4G無線模塊,通過8位并口驅動1602液晶顯示,通過ADC輸入引腳對搖桿和電池電量進行采集,通過引腳驅動三極管開關驅動蜂鳴器提示。遙控板的核心設計是搖桿模擬數(shù)據(jù)采集模塊、nRF2401無線模塊等。
圖4 飛控板電源穩(wěn)壓原理圖
表1 飛控板無線模塊接線表
使用STM32F103單片機ADC1的通道4、通道5、通道6和通道7進行搖桿模擬數(shù)據(jù)采集并轉換為數(shù)字量,分別連接到PA4、PA5、PA6和PA7引腳,并且加入濾波電容減少雜質信號的影響。遙控板搖桿輸入原理圖略——編者注。
遙控板nRF2401模塊的驅動用STM32 F103的自帶外設SPI2進行驅動,各個功能引腳的連接如表2所列。
表2 遙控板無線模塊接線表
nRF2401模塊采用3.3 V供電,在供電端口加0.1μF濾波存儲電容確保無線系統(tǒng)的穩(wěn)定性,具體原理圖略——編者注。
四軸飛行器的軟件設計主要包括飛控板軟件的設計和遙控板軟件的設計。整體軟件在MDK環(huán)境下采用C語言編寫,采用ST-LINK仿真器對程序進行調(diào)試與下載。
飛控程序的主要設計思想是,開機初始化無線模塊、MPU6050和PWM電機,隨后對整個系統(tǒng)IMU進行零偏處理,然后等待解鎖信息的傳入。飛控采用定時器中斷方式,在中斷中進行對時間的處理,每次中斷計次標志就會自增,根據(jù)不同的中斷積累分別處理優(yōu)先級不同的任務。飛控系統(tǒng)程序設計流程圖如圖5所示。
圖5 飛控系統(tǒng)程序設計流程圖
飛控系統(tǒng)每0.5 ms中斷一次,每次中斷都會檢查一次無線模塊數(shù)據(jù)的接收,確保飛控系統(tǒng)控制信息的實時性。每兩次中斷(即1 ms)讀取一次IMU單元的數(shù)據(jù),通過濾波算法獲得較為準確的系統(tǒng)加速度、角速度的原始數(shù)據(jù)。每4次中斷(即2 ms)通過IMU的原始數(shù)據(jù)計算當前飛控板系統(tǒng)的姿態(tài),然后結合遙控端的目標姿態(tài),根據(jù)兩者的差值通過PID控制算法進行對各個電機的調(diào)速控制。每200次中斷(即100 ms),飛控系統(tǒng)會采集一次電池電壓,然后把電池電壓發(fā)送給遙控板,用來告知操作人員當前電壓的大小。
MPU6050是整個系統(tǒng)正常運行的基礎。MPU6050的驅動總線為I2C方式,為了程序的方便本系統(tǒng)選用PB10和PB11模擬I2C總線來驅動。IMU讀取出來的數(shù)據(jù)只是最簡單的加速度、陀螺儀角速度的原始數(shù)據(jù),需要通過進一步的處理才能得到系統(tǒng)想要的姿態(tài)角度。飛控板姿態(tài)結算流程圖略——編者注。
根據(jù)處理過后的MPU數(shù)據(jù)來獲得當前的姿態(tài),具體的姿態(tài)獲取理論上是根據(jù)各個角度的積分得到當前的系統(tǒng)姿態(tài)歐拉角。本系統(tǒng)采用四元數(shù)算法對MPU6050濾波后的數(shù)據(jù)進行計算,得到最終的歐拉角。
整個飛控系統(tǒng)的運行動作是通過調(diào)整飛控姿態(tài)來實現(xiàn)的,本系統(tǒng)在當前姿態(tài)的基礎上,根據(jù)接收到的遙控器的目標姿態(tài)對空心杯電機進行基于PID算法的PWM控制調(diào)速,從而實現(xiàn)飛控系統(tǒng)的各種基本運動。飛控板會對系統(tǒng)慣性測量單元傳感器的原始數(shù)據(jù)進行濾波,然后對濾波后的數(shù)據(jù)進行實時結算,最后根據(jù)遙控板發(fā)送來的目標信息計算出電機的控制增量,并根據(jù)PID控制算法對電機進行控制輸出,飛控姿態(tài)控制流程圖略——編者注。
遙控板的作用就是把操作人員的操作動作轉化成信號傳給飛行控制板,同時將一些控制信息和飛控板傳回來的信息進行實時的顯示和處理。飛控板搖桿數(shù)據(jù)的采集用到了STM32F103的ADC功能,每個ADC共用16個外部通道,實現(xiàn)單次或掃描轉換,而且STM32F103的ADC可以采用DMA通道,這樣可以進一步地節(jié)省硬件資源,加快系統(tǒng)實時性。采用SPI1驅動nRF2401無線模塊,實現(xiàn)與飛控板的數(shù)據(jù)通信,遙控板系統(tǒng)軟件流程如圖6所示。
圖6 遙控板軟件流程圖
本系統(tǒng)采用STM32F103的ADC1的通道4、通道5、通道6和通道7進行搖桿模擬數(shù)據(jù)采集,ADC和DMA的配置代碼略——編者注。ADC和DMA的啟動和功能代碼略——編者注。
本文描述了一個簡易四軸飛行器系統(tǒng)的設計實現(xiàn),整個方案分為遙控控制板和飛行控制板兩部分,通過2.4G無線模塊進行控制通信,飛控系統(tǒng)采用IMU獲取姿態(tài)信息,根據(jù)反饋控制算法進行電機控制從而實現(xiàn)飛行控制。飛控板采用一體設計使得系統(tǒng)簡單、緊湊,遙控板采用搖桿輸入使系統(tǒng)控制體驗良好,最終實現(xiàn)飛行器的基本運動。實踐證明,該四軸飛行器飛行穩(wěn)定、可靠,取得了較好的效果。
編者注:本文為期刊縮略版,全文見本刊網(wǎng)站www.mesnet.com.cn。
[1]李堯.四旋翼飛行器控制系統(tǒng)設計[D].大連:大連理工大學,2013.
[2]譚浩強.C程序設計教程[M].北京:清華大學出版社,2010.
[3]劉火良.STM32庫開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2013.
[4]白志剛.自動調(diào)節(jié)系統(tǒng)解析與PID整定[M].北京:化學工業(yè)出版社,2012.
[5]朱君.四旋翼無人飛行器控制系統(tǒng)設計及控制方法研究[D].內(nèi)蒙古:內(nèi)蒙古科技大學,2012.
[6]曾勇.四旋翼飛行器容錯控制系統(tǒng)設計與實現(xiàn)[D].成都:電子科技大學,2013.
[7]宋佳佳.小型四旋翼飛行器實驗平臺設計[D].武漢:華中科技大學,2013.
[8]劉軍.例說STM32[M].北京:北京航空航天大學出版社,2011.
[9]張瑾.電路設計與制板Protel 99SE入門與提高[M].北京:人民郵電出版社,2007.
[10]蒙博宇.STM3自學筆記[M].北京:北京航空航天大學出版社,2012.
[11]劉金琨.先進PID控制 MATLAB仿真[M].3版.北京:電子工業(yè)出版社,2011.
[12]霍罡.可編程序控制器模擬量及PID算法應用案例[M].北京:高等教育出版社,2013.