李少童,何明興,李大彬,王耀政
(廣州城市理工學(xué)院,廣東廣州,510800)
四軸無人機(jī)的發(fā)展日益迅速,各行各業(yè)對無人機(jī)的需求也越來越大,目前國內(nèi)外無人機(jī)技術(shù)壟斷相對嚴(yán)重,大疆占全球市場份額近八成左右,占國內(nèi)市場也近七成,但大疆的價格相對較高,普通用戶難以消費(fèi),因此低成本多功能的小型無人機(jī)相對空缺,因此基于STM32 單片機(jī)開發(fā)一款低成本的小型無人機(jī)意義重大。
在本項(xiàng)目中我們團(tuán)隊(duì)選擇兩種不同的電機(jī),直流有刷電機(jī)即圖1 的空心杯電機(jī)720 和主流無刷電機(jī)A2212 電機(jī)??招谋姍C(jī)優(yōu)勢在于體型小巧,運(yùn)行穩(wěn)定性高,其速度波動可控制在2%,在相應(yīng)速度-電壓參數(shù)能呈現(xiàn)出標(biāo)準(zhǔn)的線性關(guān)系,有利于無人機(jī)的控制,缺點(diǎn)則在于空心杯電機(jī)發(fā)熱嚴(yán)重,使用壽命較短,且一般無法承受大電流運(yùn)行,因此所制作的無人機(jī)無法負(fù)重飛行,一般適用于超小型無人機(jī)設(shè)計。A2212 無刷電機(jī)在能量轉(zhuǎn)換效率高,一般可高達(dá)96%的能量轉(zhuǎn)換,啟動轉(zhuǎn)矩地,峰值轉(zhuǎn)矩高,機(jī)械時間常數(shù)小,轉(zhuǎn)子與定子間無徑向作用力,轉(zhuǎn)子穩(wěn)定性高,散熱效果良好等優(yōu)點(diǎn),一般適用于大型無人機(jī)的設(shè)計,其主要缺點(diǎn)在于不可缺相運(yùn)行,不僅因?yàn)槭S嗟睦@組的發(fā)生的磁場點(diǎn)2 個大小相等,方向相反旋轉(zhuǎn)磁場,它們和轉(zhuǎn)子作用發(fā)生的扭矩大小相等,方向相反相互抵消,零起動轉(zhuǎn)矩電機(jī)不能啟動,還可能直接燒毀電機(jī),損壞電路。本次無人機(jī)項(xiàng)目選擇使用直流有刷電機(jī),型號為720,額定電壓3.4V,額定電流800mA,額定轉(zhuǎn)速34000。電機(jī)如圖1 所示。
圖1 電機(jī)
我們選用的是1000mAh,1S/3.7V 的航模鋰電池,電池如圖2 所示。
圖2 電池
航模鋰電池的體積不大,且質(zhì)量輕,容量比也極高,放電率高,爆發(fā)性強(qiáng)適用于短時間啟動需大能量的電機(jī)。而我們選擇的這款航模鋰電池?fù)碛羞@1000mAh 的容量,理論上可以支撐上述選用的四個空心杯電機(jī)全功率使用0.3h。
為保證四軸無人機(jī)有較強(qiáng)的升力及更輕的重量,我們選用的是直徑為46mm 的槳葉,如圖3 所示。
圖3 螺旋槳
機(jī)架一般占據(jù)了整個無人機(jī)的重量70%,常選擇質(zhì)量較輕,硬度高的材料設(shè)計。因?yàn)槲覀兯谱鞯男⌒蜔o人機(jī),其PCB 板已占據(jù)了大部分重量,為此我們選擇直接通過對PCB 的繪制,制作出無人機(jī)機(jī)架外觀再增加保護(hù)膠圈,提高無人機(jī)使用安全性,如圖4 所示。
圖4 機(jī)架
主控MCU 選用STM32F401CCU6,這是一款高性能Arm Cortex-M4 32 位 RISC 核心,工作頻率高達(dá)84 MHz,Cortex-M4 核心具有浮點(diǎn)單元(FPU)單精度[1],支持所有的單精度數(shù)據(jù)處理指令和數(shù)據(jù)類型,有助于無人機(jī)的四元數(shù)姿態(tài)結(jié)算,STM32F401CCU6 采用了高達(dá)256KB 的FLASH和64KB 的SRAM,設(shè)備還提供一個12 位 ADC、一個低功耗 RTC、六個通用16 位定時器,包括一個用于電機(jī)控制的PWM 定時器、兩個通用32 位定時器,可以滿足無人機(jī)的系統(tǒng)控制需求,同時設(shè)備具有標(biāo)準(zhǔn)的通信接口SPI 和IIC 接口,能滿足無人機(jī)的基本通信要求。STM32F401CCU6 原理圖,如圖5 所示。
圖5 MCU 原理圖
無人機(jī)板載一顆九軸陀螺儀傳感器MPU6050 和一顆高精度氣壓傳感器BMP280,MPU6050 內(nèi)部整合了三軸MEMS 陀螺儀和三軸MEMS 加速度計,還有可以結(jié)合InvenSense 公司提供的運(yùn)動處理資料庫,實(shí)現(xiàn)姿態(tài)解算,并通過I2C 接口輸出,大大降低了運(yùn)動處理運(yùn)算對操作系統(tǒng)的負(fù)荷,可實(shí)現(xiàn)無人機(jī)的穩(wěn)飛控制與角度PID 控制。BMP280 是BOSCH 公司旗下的高精度低功耗數(shù)字氣壓傳感器,氣壓相對精度高達(dá)±0.12 hPa,用于無人機(jī)的高度檢測和定高PID 控制,圖6 是BMP280 氣壓傳感器和MPU6050 陀螺儀傳感器原理圖。
圖6 傳感器原理圖
四軸采用微型高速720空心杯有刷電機(jī),全功率運(yùn)行下能達(dá)到45000RPM,為能提供足夠電流驅(qū)動電機(jī),選用NMOS 管SI2302設(shè)計電機(jī)驅(qū)動電路,通過STM32F 401CCU6 定時器產(chǎn)生PWM 脈沖控制NMOS的開斷,從而實(shí)現(xiàn)對有刷電機(jī)的控制[2]。因?yàn)樵跓o人機(jī)的PID 控制需不斷的使電機(jī)處于啟動與衰減模式而在電機(jī)處于衰減模式時,即電機(jī)從運(yùn)動到停止?fàn)顟B(tài),因?yàn)殡姍C(jī)屬于感性負(fù)載,電流是不能發(fā)生突變的在斷開電機(jī)兩端所加的電壓時,電機(jī)產(chǎn)生的反向電動勢很有可能損壞NMOS 管,因此在電機(jī)需要停止時,除了斷開外,還需增加一個續(xù)流電路,即在NMOS 管旁增加一個續(xù)流二極管。電機(jī)控制原理圖,如圖7 所示。
圖7 電機(jī)控制原理圖
RF24L01 是由NORDIC 生產(chǎn)的工作在2.4GHz~2.5GHz的ISM 頻段的單片無線收發(fā)器芯片,nRF24L01 的數(shù)據(jù)傳輸速率可達(dá)1Mbps、2Mbps,4 線SPI 通訊端口,通訊速率最高可達(dá)8Mbps,且nRF24L01+接口有IRQ 引腳,用于指示nRF24L01+中斷的狀態(tài),在IRQ 引腳拉低后,程序觸發(fā)nRF24L01+中斷,在中斷處理函數(shù)中,程序僅置位相應(yīng)標(biāo)志,中斷的處理則放置在主函數(shù)中[3]。在于與STM32F401CCU6 建立通訊時,不會過多占用CPU,并且可通過軟件設(shè)置工作頻率、通訊地址、傳輸速率和數(shù)據(jù)包長度,方便編輯無人機(jī)控制指令集。nRF24L01+接口有IRQ引腳,用于指示nRF24L01+中斷的狀態(tài),在IRQ 引腳拉低后,程序觸發(fā)nRF24L01+中斷,在中斷處理函數(shù)中,程序僅置位相應(yīng)標(biāo)志,中斷的處理則放置在主函數(shù)中。無線通信原理圖,如圖8 所示。
圖8 無線通信原理圖
無人機(jī)的整體布局圍繞輕、小展開,目的是為提升無人機(jī)的操控性、可玩性,同時在一定程度上降低整機(jī)成本,因此無人機(jī)設(shè)計過程中將硬件電路板布置為四軸模式[4],PCB電路板,如圖9 所示。
圖9 PCB 電路板
系統(tǒng)上電啟動時,將初始化MPU6050 陀螺儀、BMP280 氣壓傳感器、NRF24L01 通訊模塊,以及MCU內(nèi)部定時器、ADC,DMP 等。將無人機(jī)放平,通過觀察無人機(jī)指示燈,檢測NRF24L01 的通訊是否正常,等待MPU6050 與BMP280 的自檢完成,等待無人機(jī)遙控發(fā)出起飛指令,飛控MCU 接受到指令后,通過MPU6050 發(fā)送的角度數(shù)據(jù),進(jìn)行互補(bǔ)濾波后,將數(shù)據(jù)傳入STM32F401CCU6的FPU 單精度運(yùn)算單元進(jìn)行PID 運(yùn)算,輸出姿態(tài)控制量,由MCU 定時器生成PWM 脈沖輸出,控制電機(jī)的旋轉(zhuǎn),與此同時不斷接受來自遙控器的指令和MPU6050 和BMP280的更新數(shù)據(jù),每5ms 進(jìn)行一次姿態(tài)調(diào)整,以保證無人機(jī)的穩(wěn)定飛行[4]控制系統(tǒng)框圖,如圖10 所示。
圖10 控制系統(tǒng)框圖
姿態(tài)解算指MCU 讀取自身傳感器數(shù)據(jù),實(shí)時計算四軸飛行器的姿態(tài)角,比如橫滾角(roll),俯仰角(pitch),偏航角(yaw)的信息,一般姿態(tài)解算分為硬件解算與軟件解算,硬件解算即使用MPU6050 自帶的數(shù)字運(yùn)動處理器DMP 它可以融合來自陀螺儀、加速度計的數(shù)據(jù),并基于硬件電路的處理計算出準(zhǔn)確的四元數(shù),處理結(jié)果可以從 DMP寄存器讀出,使用DMP 讀取數(shù)據(jù)雖然簡單,但是無法跟蹤飛行器劇烈的姿態(tài)變化,而且有些時候還會出現(xiàn)突變甚至卡死現(xiàn)象[5]。因此我們將選擇使用軟件解算,通過互補(bǔ)濾波算法,分別利用加速度計和陀螺儀的頻率響應(yīng)優(yōu)勢,對傳感器測量的原始數(shù)據(jù)進(jìn)行互相彌補(bǔ), 來提高解算的姿態(tài)精確度,因?yàn)榧铀俣扔嫷撵o態(tài)特性好,而動態(tài)特性差的原因,需對測量得到的數(shù)據(jù)進(jìn)行低通濾波,陀螺儀則因存在溫漂和零漂的關(guān)系,其在低頻段動態(tài)響應(yīng)特性差,高頻動態(tài)響應(yīng)特性好,需對測量的數(shù)進(jìn)行高通濾波,圖11 是Mahony 互補(bǔ)濾波算法的程序流程圖。
圖11 互補(bǔ)濾波流程圖
四元數(shù)是利用一種超復(fù)數(shù)的乘法來等效放映姿態(tài)變換的方法[6],相比于歐拉角描述姿態(tài)矩陣,后者需要大量的三角函數(shù)計算,以及存在奇異點(diǎn),因此采用四元數(shù)表示可較低姿態(tài)解算的復(fù)雜度,達(dá)到實(shí)時解算飛行姿態(tài)。以下是四元數(shù)轉(zhuǎn)旋轉(zhuǎn)矩陣:
四旋翼無人機(jī)是多輸入多輸出的非線性系統(tǒng),且實(shí)際飛行時周圍環(huán)境多變,為了達(dá)到較好的控制效果,使其能迅速調(diào)整,保持一定的穩(wěn)定性,一般會選擇使用PID 控制算法進(jìn)行自動控制,PID 算法是一個在工業(yè)控制應(yīng)用中常見的反饋回路部件,由比例單元 P、積分單元 I 和微分單元 D 組成[7]。常見的PID 算法分為單環(huán)PID 和串級PID,在無人機(jī)實(shí)際使用單環(huán)PID 控制進(jìn)行實(shí)測時能明顯感覺到動態(tài)性能比較差,振蕩較大,阻尼較小,增加D 性能提升有限甚至?xí)?dǎo)致系統(tǒng)發(fā)散,因此我們選用串級PID 作為項(xiàng)目的控制算法,串級PID 相比單環(huán)PID 只增加了一個內(nèi)環(huán),內(nèi)環(huán)的加入相當(dāng)于增加了系統(tǒng)的阻尼,對于系統(tǒng)的抗干擾性得到了進(jìn)一步提升。遙控發(fā)送期望角度數(shù)據(jù),反饋角度來自MPU6050 陀螺儀傳感器,二者的偏差作為外環(huán)角度環(huán)的輸入,角度環(huán) PID輸出角速度的期望值;角速度期望值減去傳感器反饋的角速度得到角速度偏差值,這個值作為內(nèi)環(huán)角速度環(huán)的輸入,角速度環(huán) PID 輸出姿態(tài)控制量,控制量轉(zhuǎn)換為 PWM 去控制電機(jī),從而控制四軸,串級PID 流程圖如圖12 所示。圖13 為部分串級PID 控制程序。
圖12 串級PID 流程圖
圖13 串級PID 控制程序
本文采用STM32F4 單片機(jī)自主開發(fā)四軸無人機(jī),采用自適應(yīng)的智能控制方法串級PID 控制算法實(shí)現(xiàn)飛行器姿態(tài)控制?;赟TM32F4 開發(fā)的四軸無人機(jī),其體積更小,功耗更低且續(xù)航時間更長,抗干擾性強(qiáng),響應(yīng)快速。未來可通過擴(kuò)展適用于其他行業(yè),以提升該機(jī)型的擴(kuò)展性。