萬德強,李春青,黃乙銘,黃欣華,覃雪婷,黃劼
(廣西民族師范學(xué)院 數(shù)理與電子信息工程學(xué)院,廣西崇左,532200)
隨著信息技術(shù)、通信技術(shù)和無人駕駛技術(shù)的發(fā)展,融合光電技術(shù)、智能控制、材料科學(xué)、飛行動力學(xué)等多項技術(shù)于一身的無人機被廣泛應(yīng)用于應(yīng)急救援、高空航拍、遙感測繪等領(lǐng)域當(dāng)中,無人機發(fā)展也獲得了快速發(fā)展。自2018年以來,我國出臺了一些用于規(guī)范無人機發(fā)展的政策。智研咨詢公布的《2021-2027年中國無人機行業(yè)市場全景調(diào)查及市場分析預(yù)測報告》也表述:中國無人機行業(yè)的成長特別是民用無人機的成長走到世界前面,按照IDC的數(shù)據(jù)統(tǒng)計,深圳市大疆創(chuàng)新科技有限公司占領(lǐng)世界消無人機費級市場70%以上的份額,在世界中民用無人機企業(yè)中排名第一。
本項目順應(yīng)國家信息技術(shù)發(fā)展需求和中小學(xué)“創(chuàng)客教育課程的意義和實施”發(fā)展要求,通過對多旋翼無人機硬件和軟件兩方面的控制系統(tǒng)進行設(shè)計和優(yōu)化,在此成果上,應(yīng)用于中小學(xué)無人機教育中。從而達(dá)到科普科學(xué)知識的同時,培養(yǎng)中小學(xué)生的動手能力,提升中小學(xué)生的信息素養(yǎng)。
設(shè)計分為飛控部分和遙控器部分,飛控部分主要由STM32F103芯片配合MPU6050、升壓穩(wěn)壓電路、空心杯電機、NRF2401無線通信模塊組成,經(jīng)過NRF2401無線通信模塊實現(xiàn)無人機遙控器與無人機飛控的聯(lián)系。
遙控器采用了兩塊芯片作為主要構(gòu)成,一塊是同飛控一樣的STM系列的芯片,另一塊是可以支持圖像化編程的MEGA328P的芯片,設(shè)計思路是通過串口與STM32F103C8T6主控芯片通信,發(fā)送指令給飛控,從而讓飛控判斷遙控器發(fā)過來的指令去控制四軸飛行器,完成圖形化編程的過程。
STM32F103C8T6是ST發(fā)布的一款MCU,是基于ARM Cortex-M內(nèi)核STM32系列的32位的微控制器,它的程序存儲器可存儲的容量為64KB,其供電電壓可以在2~3.6V之間的范圍,運算速度也高達(dá)720MHz,有著封裝體積小,可使用資源豐富等特點。
圖2 陀螺儀引腳圖
姿態(tài)傳感器我們選擇使用的是MPU6050,MPU6050它能夠同一時間去檢測三軸陀螺儀和三軸加速度的運動數(shù)據(jù)以及溫度的數(shù)據(jù)。三軸加速度和三軸陀螺儀劃分三個16位的ADC,也就是說,加速度有三個16位ADC,此中每一個軸利用了一個。它的價格比較劃算,使用資料也廣為豐富。使用MPU 6050芯片內(nèi)部的DMP模塊,可以對傳感器數(shù)據(jù)進行濾波和融合處理,直接通過I2C總線向主控制器輸出所解算過后的數(shù)據(jù),從而去減少相對主控制器的運算量。其頻率最高可以高達(dá)200Hz,所以非常適合應(yīng)用于對一些姿態(tài)控制以及實時要求比較高的領(lǐng)域。
無線通信采取NRF24L01模塊,該模塊采用FSK調(diào)制,集成NORDIC自家的Enhanced Short Burst。能夠一對一或者是一對六之間進行不經(jīng)導(dǎo)體或纜線傳播進行的遠(yuǎn)距離傳輸通訊,傳播距離一般達(dá)幾米到幾十米甚至更遠(yuǎn)。經(jīng)對SPI接口設(shè)置,基本可以與各類單片機產(chǎn)生信息交換,完成無線傳輸。還有極低的電流消耗,體積小,兼容性高,發(fā)射功率小,使用環(huán)境廣等特點,四條線的SPI接口通信的速率能夠達(dá)到8Mbps,對其的操作也相對比較簡單。
圖3 NRF2401引腳圖
圖4 氣壓計引腳圖中氣壓計使用的是FBM320,這是一款分辨率很高的數(shù)字氣壓計(一個數(shù)字壓力傳感器),它是由MEMS壓阻式的壓力傳感器還有信號組成調(diào)節(jié)ASIC,ASIC包括用于校準(zhǔn)數(shù)據(jù)的24bits sigma-delta ADC,OTP存儲器,和串行接口電路,提供I2C和SPI接口與控制器通信以及微控制器,它的作用主要是用來進行壓力效準(zhǔn)以及溫度補償。通過I2C或者SPI接口能夠獲得效準(zhǔn)數(shù)據(jù)存儲在OTP和壓力及溫度的原始數(shù)據(jù)。
圖4
設(shè)計的升壓電路采用ME2188C50M5G DC-DC升壓芯片,升到5V主要是為了給空心杯電機提供夠足夠的電壓,避免突然撥桿啟動電機的時候?qū)е聲碗妷?,進而使無線通信產(chǎn)生信號降低的情況;穩(wěn)壓電路采取ME6206A33M3G DC-DC穩(wěn)壓芯片,目的是給主控芯片提供穩(wěn)定的供電。
圖5 升壓電路圖
圖6 電機驅(qū)動
圖7
四個機臂上采用的RGBLED是串行單總線全彩燈,只需要占用單片機的一個IO端口,就可以控制這四個燈發(fā)出各種各樣的顏色??招谋姍C使用SI2302這款MOS管進行驅(qū)動,這是非常常見的一款MOS管,既便宜又好用。
MEGA328P芯片支持圖形化編程,通過串口與STM32F103C8T6主控芯片通信,發(fā)送指令,控制四軸飛行,完成圖形化編程的過程。
圖9油門、方向搖桿使用滑動變阻器,主控器讀取搖桿位置的阻值來判斷無人機的油門,方向,控制四軸做出上升、下降,前進、后退、左旋、右旋,左移、右移等動作。
圖9
圖8 MEGA328P芯片圖
圖10四個獨立用戶按鍵,K1用來給飛機解鎖和上鎖,當(dāng)正確解鎖后,OLED上的MOD標(biāo)識變?yōu)閁nlock后,便可推動油門,使四軸上升;K2是用戶自定義按鍵,可以自己編程達(dá)到預(yù)想的效果,K3是加速度計和陀螺儀的校準(zhǔn),K4切換有頭和無頭的模式。
圖1 STM32F103C8T6引腳圖
圖10
軟件開發(fā)選用Keil μVison5和Mixly作為主要開發(fā)環(huán)境,Mixly是一款可以進行圖形化編程的軟件,可以在這款軟件設(shè)計無人機的飛行方案,軟件所提供的圖形化編程內(nèi)容,使用積木的方式編程無人機的控制和飛行方案,可以在軟件里面去添加無人機的控制指令,可以在軟件添加無人機的事件類型,結(jié)合積木編程就可以創(chuàng)建新的無人機飛行控制方案。
四軸飛行器的軟件控制過程如圖11所示,其主要步驟如下。
圖11 控制過程
微控制器通訊方式所采取的是I2C總線的通信方法,向MPU6050傳感器取得初始的數(shù)據(jù);四軸濾波利用互補濾波的方法并融合在一起取得無人機的實時的飛行姿勢和狀態(tài);無線通信模塊NRF24L01將獲取到上位機的發(fā)送數(shù)據(jù)進行分析解剖作為預(yù)期的姿勢狀態(tài);將無人機的實時姿勢和狀態(tài)與NRF24L01所分析解剖預(yù)期的姿勢狀態(tài)作差,差值送入串行PID閉環(huán)控制器中,進而控制無人機的飛行姿態(tài)。
無人機飛行控制的算法有捷聯(lián)式慣性導(dǎo)航系統(tǒng)、卡爾曼濾波算法、飛行控制PID算法三大算法,本系統(tǒng)采用的是PID算法,PID算是一種線性操控器,它是依據(jù)給定值和實際輸出值組成操控誤差,然后操縱誤差給出響應(yīng)的控制量。PID中的P是表示比例的意思,I是表示積分的意思,D則表示的是微分。
本設(shè)計中使用PID算法來進行對無人機的姿勢狀態(tài)和定高操控。在沒有操控系統(tǒng)的狀態(tài)下,直接進行驅(qū)動電機帶動螺旋槳的旋轉(zhuǎn)來發(fā)生控制力,可能會呈現(xiàn)出飛行器的動態(tài)回應(yīng)太快和太慢、過沖和不足的問題,導(dǎo)致完成不了起飛和懸停的狀態(tài)的。為消除這一系列問題,則需要在操控系統(tǒng)的回路中去運用PID算法。在飛行狀態(tài)數(shù)據(jù)和螺旋槳轉(zhuǎn)速之間插入比例、積分和微分的關(guān)系,經(jīng)由調(diào)整每個關(guān)鍵的參數(shù),可以使多旋翼無人機系統(tǒng)控制可以實現(xiàn)動態(tài)回應(yīng)及時、既不會過沖、也不會短缺的情況。
無人機采用的PID算法是位置式PID控制,位置式PID公式如下:
設(shè)計通過以姿態(tài)角作為被控制對象,所以:
在這里要說明一下,用到的算法都是最基本的PID控制算法,運用傳統(tǒng)的形式,對無人機的姿態(tài)進行控制??赡軐τ谑炀毑僮鞯娜藖碚f比較有好處,也試過其他的算法,發(fā)現(xiàn)通過陀螺儀直接測出角速度,在實踐過程中用角速度與微分項進行微分,加載在PID算法上面,打桿比較緩和,對PID參數(shù)要求不是很高,可這并不是本設(shè)計想要的效果,所以還是采用了老式的算法。
圖12
PID控制器調(diào)整:
在實物調(diào)試過程中遇到的問題:由于該飛機是一個小型的,并且使用的是空心杯電機,外加了一個防護套,在調(diào)試的時候利用調(diào)試架先調(diào)試Y軸即可,后可調(diào)試X軸,最后調(diào)試Z軸,在調(diào)試過程中,第一要穩(wěn)定性,能否平衡在期望角度;二要應(yīng)答性,當(dāng)操作語句改變時,四軸可否即時的應(yīng)答所想要的變化;第三要操縱性,由操縱員感受四軸的姿態(tài)是否已與操縱,會不會產(chǎn)生響應(yīng)過沖。
本設(shè)計在調(diào)試過程中采取四組典型參考數(shù)據(jù)進行分析。即第一組數(shù)據(jù)設(shè)置P值為1000,I值、D值設(shè)置為0,設(shè)置P值是1000是因為在PID算法中從地面站傳參進去到執(zhí)行算法,算法中最后得出的結(jié)果都除以了1000,方便PID的運算,所以把P值設(shè)置為1000,如圖13所示。
圖13
在這一組參數(shù)中發(fā)現(xiàn),無人機上電解鎖電機后開始往一邊倒,但是并沒有倒下就起不來了。而是在倒到約55度角度左右,電機力量像是突然加大,四軸起來,反向,接著倒向另外一邊。進入失控的大幅度抖動。
由于一開始就往一側(cè)倒,所以認(rèn)為是P值過小。于是在第二組數(shù)據(jù)中加大P值,即把P值設(shè)置為3000,其他參數(shù)不變,如圖14所示。
圖14
但是當(dāng)把P值加到很大時,四軸還是一開始往一邊倒,然后電機力量增大,四軸翻倒向另外一邊,開始散性的震蕩。此時覺得是P值給的不夠,在電機的慣性的作用下會有抖動。到后來是P太大了,直接進入震蕩。始終沒有觀察到一個等幅震蕩或者說接近小幅震蕩的點。無論P值大亦或是P值小,四軸都會進入失控的發(fā)散性震蕩。換而言之這個X四軸光靠P根本進入不了一個比較穩(wěn)定的狀態(tài)或者接近穩(wěn)定的狀態(tài)。連相對穩(wěn)定的等幅震蕩都觀察不到就直接進入發(fā)散的震蕩。沒有明顯觀察到網(wǎng)上流傳最通俗的調(diào)節(jié)PID說法的那種情況,即:逐漸加大P直到開始發(fā)生等幅震蕩,然后P不變,加入D抑制震蕩。
觀察到的是P無論怎么給,四軸都倒向一邊然后開始進入發(fā)散的震蕩,唯一的區(qū)別就是P小,現(xiàn)象是一開始倒下的角度大,P越大,現(xiàn)象就是一開始倒下得角度越小,進入震蕩得越快。
于是在第三組數(shù)據(jù)中把P值減小,即把P值設(shè)置為2000,其他參數(shù)還是不用發(fā)生任何改變,如圖15所示。
圖15
這次觀察到新現(xiàn)象。把四軸稍微傾向一邊幾度,比如說左邊,當(dāng)P小時,啟動電機松手后,四軸向左倒,如果P大了,四軸回向右倒。前面的是補償不夠,后者是補償過頭了。在這兩個P值得區(qū)間就有我們要找的P,合適的P就是能在平衡位置掙扎左右晃幾下的值。此時的P=2000,但是光靠P四軸還是站不住,只能在平衡位置堅持個2~4s。所以得加入D,因為加入D值,能提升四軸回到期望角度的響應(yīng)速度,但D值過大又會影響到響應(yīng)速度過慢。
第四組數(shù)據(jù)中把D值設(shè)置為100,P值為2000,I值為0,即圖16所示。
圖16
這組參數(shù)中四軸無明顯變化,依然只能在平衡位置堅持個2~4s。很明顯D值給得太小了,當(dāng)D=1000時可明顯觀察到平衡的時間跟長了,但還是會倒。在第五組數(shù)據(jù)設(shè)置D=2000,可以明顯觀察到四軸可以基本平衡了,但還是又有小幅震蕩,一旦有干擾還是不能很快恢復(fù)穩(wěn)定了,D=3000時四軸已經(jīng)開始比之前大的等幅震蕩了,此時說明D大了。在這類情況下表明P值仍然是給小了。把D值設(shè)在2500,然后把P值加大。后面的調(diào)節(jié)參數(shù)就是要調(diào)好P后再調(diào)D,定好D再調(diào)節(jié)P,兩個參數(shù)互相扶持的趨近一個最佳點。當(dāng)然機體表現(xiàn)出的等幅震蕩時也不一定是D大了,P不合適同樣也會產(chǎn)生此種情況。還有調(diào)節(jié)參數(shù)時不要一味只加不減。當(dāng)P=4000,D=5000時將P往回減了點才取得了更好的效果。最后離開平衡桿時P=3500,D=5000。這次沒有靜差,也就沒有I項,X軸和Z軸的調(diào)試方式相同。
圖17
小結(jié):
(1)調(diào)節(jié)PID首先要明白最基本PID三項的意義P是回復(fù)力是系統(tǒng)平衡的主力,D是阻尼力,始終是抑制作用,I雖然能使系統(tǒng)回復(fù)但是I大了容易激發(fā)震蕩,所以I只能是輔助P;
(2)一般從P開始調(diào)節(jié)時候首先要找到臨界震蕩點,要學(xué)會便是系統(tǒng)臨界震蕩點的特點,不同系統(tǒng)臨界狀態(tài)可能不同;
(3)P不一定就比D大,切不可經(jīng)驗主義,一切遵循實際,多嘗試可能性。
調(diào)試圖形化編程,利用Mixly軟件拖動圖形進行編程,起飛代碼如圖18所示。
圖18
通過跳線口與控制器的串口發(fā)送命令達(dá)到圖形化編程的效果。
系統(tǒng)是基于STM32與MEGA328P并支持圖形化編程的四軸無人機設(shè)計,以STM32F103單片機作系統(tǒng)的主要控制器,上位機采納MEGA328P芯片為主要控制器,STM32F103為第二控制器,下位機集成了MPU6050姿態(tài)控制傳感器,使用芯片上面預(yù)留的串口通信通道與其他模塊進行通信,如無線通信模塊經(jīng)由串口來連接到開發(fā)板上,完成遙控和無人機之間的通訊,以集成的I2C來取得傳感器得來的姿態(tài)值,實現(xiàn)了對無人機各類飛行姿態(tài)和定高的控制等。