這個(gè)是兩年前自己制作的,
選用STM32F407單片機(jī)最小系統(tǒng),外圍模塊均可某個(gè)寶弄,非開(kāi)源飛控板,
具體程序、模塊信息及接線在附件word文檔中。
程序代碼質(zhì)量不好,望大家多多指點(diǎn)。
在這里感謝正點(diǎn)原子,裸機(jī)程序使用正點(diǎn)原子的程序模塊搭建。
制作出來(lái)的實(shí)物圖如下:
IMG_0466.JPG (1.57 MB, 下載次數(shù): 123)
下載附件
2021-3-5 10:05 上傳
四軸飛行器動(dòng)力學(xué)建模
2.1 四軸飛行器的飛行原理四軸飛行器的結(jié)構(gòu)是由兩個(gè)支架交叉形成機(jī)架,然后在兩個(gè)支架的兩端配備螺旋槳如圖2-1。根據(jù)牛頓第三定律中作用力與反作用力的關(guān)系,螺旋槳產(chǎn)生向下的力,而對(duì)飛行器自身會(huì)得到一個(gè)向上的升力,從而去克服重力作用。當(dāng)四個(gè)螺旋槳產(chǎn)生的升力大于重力時(shí),飛行器將會(huì)脫離地面,根據(jù)牛頓第二定律中物體加速度跟質(zhì)量與受力的關(guān)系,四軸飛行器將會(huì)得到一個(gè)向上的加速度使得飛行器在垂直方向上運(yùn)動(dòng)得越來(lái)越快,但是當(dāng)飛行器脫離地面后,當(dāng)升力與重力相等時(shí),飛行器將會(huì)保持之前的上升速度做勻速上升。因此四旋翼飛行器通過(guò)改變四個(gè)電機(jī)的轉(zhuǎn)速來(lái)實(shí)現(xiàn)飛行器的姿態(tài)和位置控制,然而飛行器由于機(jī)械結(jié)構(gòu)的差異和環(huán)境影響,若只通過(guò)電機(jī)得到升力來(lái)達(dá)到穩(wěn)定飛行是遠(yuǎn)遠(yuǎn)不夠的,所以需要加入微型計(jì)算機(jī)來(lái)實(shí)時(shí)控制各個(gè)電機(jī)的轉(zhuǎn)速。 
圖2-1 四旋翼飛行器模型 2.2 四軸飛行器的數(shù)學(xué)模型在不計(jì)飛行器的彈性形變和震動(dòng)的情況下,四旋翼飛行器當(dāng)作一個(gè)具有六自由度剛體,并輸出四個(gè)電機(jī)的轉(zhuǎn)速。令飛行器相對(duì)于地面坐標(biāo)系的三個(gè)歐拉角分別為滾動(dòng)角 、俯仰角 、偏航角 ,因此地面坐標(biāo)系與剛體坐標(biāo)系的旋轉(zhuǎn)矩陣R(推導(dǎo)見(jiàn)4.3章節(jié))和平移矩陣為T(推導(dǎo)見(jiàn)4.3章節(jié)) (2.1)
(2.2)
假設(shè)飛行器三個(gè)軸所受的擾動(dòng) ,并且飛行器為“X”型,根據(jù)牛頓第二定律有公式(2.3) (2.3)
式中 表示飛行器在地面坐標(biāo)系三個(gè)軸上的合力;F表示飛行器四個(gè)旋翼的整體升力大小;R表示從飛行器坐標(biāo)系(剛體坐標(biāo)系)映射到地面坐標(biāo)系的旋轉(zhuǎn)矩陣; 表示F在飛行器坐標(biāo)系的方向。再根據(jù)角動(dòng)量定理得到最終的系統(tǒng)動(dòng)力學(xué)模型為: (2.4)
(2.5)
(2.6)
(2.7)
(2.8)
(2.9)
其中, 是四個(gè)旋翼的轉(zhuǎn)速,b為阻力因素;m為飛行器質(zhì)量;g為重力加速度;l為電機(jī)到四旋翼飛行器幾何中心的距離; 為螺旋槳繞軸的轉(zhuǎn)動(dòng)慣量; 為各方向上的轉(zhuǎn)動(dòng)慣量; 為槳葉整體的速度;d為風(fēng)阻系數(shù)。 而在實(shí)際控制中是寫成系統(tǒng)狀態(tài)方程 的形式,其中狀態(tài)慣量 與控制量輸入 可表示為 (2.10)
(2.11) 2.3 四軸飛行器的姿態(tài)解析四旋翼作為一個(gè)四輸入六輸出的欠驅(qū)動(dòng)系統(tǒng),只需要控制四個(gè)電機(jī)的轉(zhuǎn)速,便可以有效的控制飛行器的姿態(tài),需特別注意的是為了抵消電機(jī)旋轉(zhuǎn)產(chǎn)生的力矩,遵循相鄰電機(jī)的旋轉(zhuǎn)方向相反,對(duì)角電機(jī)旋轉(zhuǎn)方向相同的原則。  
 圖2-2垂直運(yùn)動(dòng)模型圖 圖2-3前后運(yùn)動(dòng)模型圖
圖2-4左右運(yùn)動(dòng)模型圖 圖2-5偏航運(yùn)動(dòng)模型圖 在上圖里,電機(jī)1、3做順時(shí)針旋轉(zhuǎn),電機(jī)2、4做逆時(shí)針旋轉(zhuǎn),令正方向?yàn)轱w行器前方。 2.3.1 垂直運(yùn)動(dòng) 在圖2-2中,同時(shí)增加四個(gè)電機(jī)的轉(zhuǎn)速,使得飛行器的總體升力增大,當(dāng)總的升力大于飛行器重力時(shí),就能使四旋翼垂直上升;相反,若四個(gè)電機(jī)的速度同時(shí)減小,四旋翼飛行器就能夠垂直向下運(yùn)動(dòng);因此只有當(dāng)飛行器的升力剛好抵消重力時(shí)才滿足懸停條件。 2.3.2 前后運(yùn)動(dòng) 在圖2-3中,電機(jī)1、2的轉(zhuǎn)速下降,電機(jī)3、4的轉(zhuǎn)速增加,使得飛行器產(chǎn)生向前的傾斜,對(duì)此姿態(tài)進(jìn)行受力分析如圖2-6,F(xiàn)為四旋翼槳葉產(chǎn)生的合力, 為四旋翼的俯仰角,忽略空氣阻力,將F沿著水平方向和豎直方向進(jìn)行分解后,豎直方向的力為F*cos ,為避免垂直運(yùn)動(dòng)F*cos =mg;在水平方向的分力為F*sin ,因此會(huì)飛行器會(huì)向水平方向運(yùn)動(dòng)。 
圖2-6 受力分析圖 2.3.3 左右運(yùn)動(dòng)在圖2-4中,電機(jī)2、3的轉(zhuǎn)速下降,電機(jī)1、4的轉(zhuǎn)速增加,使得飛行器的橫滾角發(fā)生改變,與圖2-6類似,飛行器的升力在側(cè)向會(huì)產(chǎn)生一個(gè)水平分力,因此飛行器對(duì)發(fā)生左右運(yùn)動(dòng)。 2.3.4 偏航運(yùn)動(dòng)在圖2-5中,電機(jī)1、3轉(zhuǎn)速增加,電機(jī)2、4轉(zhuǎn)速減小,使得兩個(gè)方向力矩不平衡,讓飛行器自旋,從而引起四旋翼飛行器的頭部方位發(fā)生改變,為了使飛行器升力與重力平衡,電機(jī)1、3轉(zhuǎn)速增加的同時(shí)需減少另外兩個(gè)電機(jī)的轉(zhuǎn)速。 2.4 四軸飛行器的位置控制解析在圖2-3、2-4中表明,可以通過(guò)姿態(tài)控制來(lái)控制飛行器的水平位置變化,然而位置變化量取決于四旋翼飛行器的俯仰角,橫滾角的大小和持續(xù)時(shí)間。以前進(jìn)運(yùn)動(dòng)發(fā)生位置改變?yōu)槔M(jìn)行說(shuō)明,在發(fā)生前進(jìn)運(yùn)動(dòng)是飛行器的高度保持不變,初始狀態(tài)為懸停(水平方向速度為0),在圖2-6中進(jìn)行受力分析后便可以的到飛行器的加速度值 , 值可以通過(guò)陀螺儀測(cè)得,再根據(jù)已經(jīng)設(shè)定的位移值s求解到水平飛行時(shí)間 ,在加速飛行過(guò)后由于飛行器慣性存在減速過(guò)程產(chǎn)生的位移量,在此忽略不計(jì),飛行器過(guò)程中受到空氣阻力也忽略不計(jì)。因此可以通過(guò)設(shè)定的位置量來(lái)使飛行器到達(dá)目標(biāo)點(diǎn)。 2.5 本章小結(jié)本章節(jié)完成了四旋翼飛行器的動(dòng)力學(xué)建模,分別對(duì)飛行器的上升運(yùn)動(dòng)、左右運(yùn)動(dòng)、前后運(yùn)動(dòng)、偏航運(yùn)動(dòng)姿態(tài)進(jìn)行模型分析,得到針對(duì)不同姿態(tài)各個(gè)電機(jī)的轉(zhuǎn)速變化趨勢(shì),并對(duì)位置控制進(jìn)行受力分析及理論闡述。
第3章 四軸飛行器硬件設(shè)計(jì)
3.1 總體方案論證方案一:做微型飛行器,其優(yōu)點(diǎn)是重量輕,耗電少,一般手機(jī)電池都能夠驅(qū)動(dòng),易于調(diào)試,危險(xiǎn)性低,可以用飛控板搭建,很大程度的減少了開(kāi)發(fā)周期,但是有致命的缺點(diǎn)抗由于重量輕抗干擾能力弱,載重能力低,一般只用于單純的飛行,用途較少。 方案二:做小型飛行器,其優(yōu)點(diǎn)在于防干擾能力強(qiáng),具有一定的載重能力,因此用途比較廣泛,但是有重量大、耗電高、電機(jī)轉(zhuǎn)速快、不易調(diào)試、危險(xiǎn)性高的缺點(diǎn)。 方案確定:飛行器之所以能夠迅速發(fā)展,就是因?yàn)橛猛緩V泛,涉及的領(lǐng)域多,單純的飛行并沒(méi)有多大使用價(jià)值,因此決定采用方案二進(jìn)行設(shè)計(jì)。 3.2 總體方案設(shè)計(jì) 
圖3-1 總體結(jié)構(gòu)圖 
圖3-2 總體電路圖 電池:為整個(gè)飛行器提供電能。 電源轉(zhuǎn)化模塊:內(nèi)含無(wú)線繼電器開(kāi)關(guān),控制整個(gè)飛行器是否供電,同時(shí)有DC-DC模塊,為控制器和各個(gè)單元模塊供電。 按鍵輸入模塊:方便在線調(diào)試,以及設(shè)置位置坐標(biāo)。 姿態(tài)檢測(cè)模塊:采用六軸傳感器,實(shí)時(shí)檢測(cè)飛行器的加速度數(shù)據(jù)、陀螺儀數(shù)據(jù),通過(guò)濾波算法得到穩(wěn)定準(zhǔn)確的姿態(tài)角。 高度檢測(cè)模塊:獲得飛行器的距離地面高度數(shù)據(jù)。 無(wú)線接收模塊:配合遙控器使用接收遙控器傳輸過(guò)來(lái)的油門、俯仰、橫滾、偏航等數(shù)據(jù)。 數(shù)據(jù)顯示模塊:配合鍵盤設(shè)置目的坐標(biāo),同時(shí)能夠在調(diào)試時(shí)顯示重要數(shù)據(jù)值。 電子調(diào)速器:將主控輸出的PWM(脈沖寬度調(diào)制)波形轉(zhuǎn)化成電機(jī)實(shí)際的輸入電壓,相當(dāng)于電機(jī)驅(qū)動(dòng)器。 3.3 模塊電路
3.3.1 電源部分1.電池 雖然電池容量大,但是電池重量較重。鋰電池是同樣電池容量中最輕的、起飛效率最高的,綜合考慮到整體飛行器的重量和續(xù)航,采用鋰電池型號(hào)為2200mah、35C、3S如圖3-3。 2200mah表示電池容量,如果該容量電池以2200ma放電,可以持續(xù)放電1小時(shí),若以1000ma放電可持續(xù)放電2.2小時(shí); 3S表示電池節(jié)數(shù),鋰電池一節(jié)標(biāo)準(zhǔn)電壓3.7V,3S就有11.1V; 35C代表電池的放電能力,這是普通鋰電池和動(dòng)力鋰電池的重要區(qū)別,動(dòng)力鋰電池需要很大的電流放電,這個(gè)放電能力就用 C來(lái)表示,如果電池是1000mah、10C,那么得出電池的放電電流可以為1000*10mh,若低C電池大電流放電會(huì)損壞電池甚至自燃。 
圖3-3 電池實(shí)物 2.降壓電路 
圖3-4 降壓電路圖 降壓電路由兩部分組成,第一部分為無(wú)線繼電器開(kāi)關(guān),控制整個(gè)飛行器的供電。第二部分為降壓,將電池電壓降到適合各個(gè)模塊正常工作的電壓值(5V)。 (1)為了控制四旋翼飛行器在飛行過(guò)程中的安全,防止意外事故發(fā)生加入了直流單路遙控開(kāi)關(guān)繼電器如圖3-5。 
圖3-5 12V直流單路遙控開(kāi)關(guān)繼電器實(shí)物 (2)由于電池輸出的電壓在11-12.6V之間,無(wú)法直接給主控芯片和各個(gè)模塊電路供電,因此需用DC-DC降壓模塊將電池電壓降到5V,降壓模塊如圖3-6,該模塊輸入電壓3-40V,調(diào)節(jié)電位器改變輸出電壓,輸出功率高達(dá)10W。 
圖3-6 LM2596直流降壓模塊實(shí)物 3.3.2 按鍵輸入及顯示模塊
圖3-7 按鍵顯示電路圖 1. 由于在整個(gè)系統(tǒng)設(shè)計(jì)中,需要調(diào)試PID參數(shù)和設(shè)置位置信息,因此加入了五個(gè)按鍵進(jìn)行更改值,方便調(diào)試。如圖3-8最右方按鍵是增加數(shù)值,最左方按鍵時(shí)減小數(shù)值,上方和下方按鍵用來(lái)切換更改的變量,中間是確認(rèn)鍵。 
圖3-8 按鍵模塊實(shí)物 2. 顯示部分采用oled12864顯示,其優(yōu)點(diǎn)重量輕,體積小,分辨率高,較TFT屏幕比較廉價(jià),通信方式為SPI。顯示屏如圖3-9。 
圖3-9 oled顯示屏實(shí)物 3.3.3 微型計(jì)算機(jī)選用的MCU為ST公司的stm32f407zgt6如圖3-10。 
圖3-10 stm32f407zgt6最小系統(tǒng) 3.3.4 姿態(tài)檢測(cè)模塊
圖3-11 姿態(tài)檢測(cè)電路圖 姿態(tài)檢測(cè)采用常用的mpu-6050傳感器,它整合了陀螺儀、加速度傳感器處理組件,相對(duì)于其它多組件方案,消除組合陀螺儀于與加速度時(shí)之軸間差的問(wèn)題,縮小包裝空間,它還含有第二個(gè)IIC端口連接其他加速度、磁力傳感器或其他數(shù)位運(yùn)動(dòng)處理硬件加速引擎,由主要IIC端口以單一數(shù)據(jù)流的形式,向主控輸出完整的九軸融合演算數(shù)據(jù)?奢敵鲋袛啵С肿藨B(tài)識(shí)別、搖攝、畫面放大縮小、滾動(dòng)、快速下降中斷、high-G中斷、零動(dòng)作感應(yīng)、觸擊感應(yīng)等功能。自帶1024字節(jié)FIFO,有助于降低系統(tǒng)功耗。InvenSence的運(yùn)動(dòng)處理資料庫(kù),可處理運(yùn)動(dòng)感測(cè)的復(fù)雜數(shù)據(jù),降低了運(yùn)動(dòng)處理運(yùn)算對(duì)操作系統(tǒng)的負(fù)荷,并為應(yīng)用開(kāi)發(fā)提供架構(gòu)的API。Mpu-6050的角速度全格感測(cè)范圍為 , , , /sec(dps),可準(zhǔn)確追蹤快速和慢速動(dòng)作,并且可以用程序控制加速度全格感測(cè)范圍為 , , 和 ,并且它可在不同電壓下工作。模塊實(shí)物如圖3-12。 
圖3-12 MPU-6050實(shí)物 3.3.5 高度檢測(cè)模塊
圖3-13 高度檢測(cè)電路圖 高度檢測(cè)方案主要有以下三種:通過(guò)氣壓計(jì)檢測(cè),它的檢測(cè)高度范圍大,但是精度不高,并且螺旋槳產(chǎn)生的氣流影響氣壓計(jì);通過(guò)紅外線檢測(cè),精度高,檢測(cè)的高度有限,價(jià)格昂貴,并且會(huì)對(duì)人體造成傷害;最后就是通過(guò)超聲波檢測(cè),其方案精度高,檢測(cè)距離有限,不易受外界干擾,對(duì)人體無(wú)害。綜合各個(gè)因素采用超聲波測(cè)距,超聲波模塊如圖3-14。 
圖3-14 超聲波模塊實(shí)物 VCC電源,Trig 輸入控制信號(hào)端,Echo 接收端,Gnd 共地。 采用IO觸發(fā)測(cè)距、給trig至少10us的高電平信號(hào),然后模塊會(huì)自動(dòng)發(fā)送8個(gè)40KHZ的方波、自動(dòng)檢測(cè)是否有信號(hào)返回,有信號(hào)返回、就通過(guò)echo端口輸出一段時(shí)間的高電平信號(hào),高電平的持續(xù)時(shí)間就是超聲波從發(fā)射到返回的時(shí)間,因此距離=(高電平時(shí)間*聲速*0.5)。 3.3.6 無(wú)線傳輸模塊無(wú)線傳輸方案主要有:通過(guò)接收機(jī)數(shù)傳,傳輸距離比較遠(yuǎn),但需要配套輸出及遙控器,買成套成品價(jià)格比較昂貴;通過(guò)2.4G的nrf24l01+模塊進(jìn)行搭建傳輸系統(tǒng),造價(jià)低,但是傳輸距離短;通過(guò)WiFi傳輸信號(hào),可用手機(jī)應(yīng)用作為遙控器,只需要在購(gòu)買WiFi接收模塊,傳輸距離足夠,信號(hào)質(zhì)量好,不易被干擾。綜合各個(gè)因素選擇WiFi無(wú)線傳輸方案。 1. 采用ATK-WIFI-MODULE是ALIENTEK推出的一款百萬(wàn)高清wifi航拍攝像頭模塊,此模塊支持在平板/手機(jī)端 1280*720 分辨率錄像和拍照,以及圖像實(shí)時(shí)回傳。模塊使用也較為簡(jiǎn)單,只需要在主控端配置一個(gè)串口(數(shù)據(jù)格式:波特率19200,一個(gè)起始位,一個(gè)終止位,間隔40MS發(fā)送一次,一次發(fā)送8個(gè)字節(jié))就能實(shí)現(xiàn)手機(jī)與該模塊的數(shù)據(jù)傳輸。該模塊如圖3-15,該模塊電路圖如圖3-16 
圖3-15 ATK-WIFI-MOUDLE 實(shí)物 
圖3-16 WiFi傳輸電路圖 2.采用nrf24l01+模塊進(jìn)行搭建遙控器,nrf24l01+是一款工作在2.4-2.5G通用ISM頻段的單片手法芯片,此模塊包括:頻率發(fā)射器、模式控制器、功率放大器、晶體放大器、調(diào)制器、解調(diào)器、輸出功率頻段選取、協(xié)議的設(shè)置可以通過(guò)SPI接口進(jìn)行設(shè)置低的電流功耗,當(dāng)工作在發(fā)射模式下發(fā)射功率為6dBm時(shí)電流為9mA,接收模式為12.3mA,掉電模式和待機(jī)模式下電流消耗更低。支持六通道的數(shù)據(jù)接收。 
圖3-17 nrf24l01+模塊實(shí)物 
圖3-18 nrf24l01+傳輸電路圖 3.3.7 電機(jī)、槳葉、機(jī)架及電子調(diào)速器首先是機(jī)架,機(jī)架是一架飛行器的核心硬件,要求硬度高、質(zhì)量輕、在劇烈震蕩的情況下不易發(fā)生形變,因此采用F330四軸機(jī)架如圖3-19。 
圖3-19 機(jī)架實(shí)物 其次是槳葉,要求軸心穩(wěn)定,質(zhì)量輕不易發(fā)生形變,漿的尺寸需與電機(jī)的kv值匹配,一般kv值的無(wú)刷電機(jī)配低尺寸漿葉,但是考慮到機(jī)身的總體重量選擇配大尺寸的槳葉8045。需注意的是高kv值配大尺寸電機(jī),不宜讓電機(jī)長(zhǎng)時(shí)間工作在高轉(zhuǎn)速,容易造成電機(jī)負(fù)載過(guò)大損壞電機(jī)。電機(jī)如圖3-20,槳葉如圖3-21。 
圖3-20 電機(jī)實(shí)物

圖3-21 槳葉實(shí)物 最后電子調(diào)速器作為無(wú)刷電機(jī)的驅(qū)動(dòng)器,只需要輸入PWM波形就可輸出相應(yīng)的電壓驅(qū)動(dòng)電機(jī),PWM波形的頻率為50HZ,最大油門為一個(gè)周期里面2MS高電平時(shí)間,最小油門設(shè)置為一個(gè)周期里面1MS的高電平時(shí)間。電子調(diào)速器實(shí)物如圖3-22。 
圖3-22 電子調(diào)速器實(shí)物 
圖3-23 電機(jī)驅(qū)動(dòng)電路圖 3.3.8 遙控器1.對(duì)于使用WiFi模塊傳輸數(shù)據(jù)時(shí),采用配套的APP使用。首先在手機(jī)端下載相應(yīng)APP然后打開(kāi)飛行器電源啟動(dòng)WiFi模塊(大約在10s左右),接著用手機(jī)連接名字為“minifly”的網(wǎng)絡(luò),連接成功后打開(kāi)APP可以看到攝像頭畫面,打開(kāi)操作界面時(shí),數(shù)據(jù)就發(fā)送到WiFi模塊,在設(shè)置中可以切換不同的操作界面。在調(diào)試過(guò)程中主要用APP控制飛行器。 2.對(duì)于用nrf24l01+模塊需要自己搭建遙控器,因此需要用到單片機(jī)來(lái)控制無(wú)線傳輸模塊,發(fā)送數(shù)據(jù)。同時(shí)控制飛行器的數(shù)據(jù)用兩個(gè)雙軸搖桿,搖桿處于不同位置具有不同的電壓值,因此需要將電壓值用單片機(jī)進(jìn)行AD轉(zhuǎn)化成數(shù)字量,再通過(guò)無(wú)線傳輸模塊將數(shù)據(jù)發(fā)送個(gè)飛行器上的接收模塊。雙軸搖桿如圖3-24,遙控器框架如圖3-25,遙控器電路如圖3-26。   圖3-24 雙軸搖桿實(shí)物 圖3-25 遙控器硬件框圖 
圖3-26 遙控器電路圖 3.4 本章小結(jié)本章節(jié)闡述了多種方案優(yōu)缺點(diǎn),搭建硬件系統(tǒng)框圖和電路原理圖,以及各個(gè)單元電路的選取,分析各個(gè)單元電路的電氣特征。最后完成整體電路的實(shí)物搭建,對(duì)電路進(jìn)行測(cè)試,再上電檢測(cè),觀察供電情況,各個(gè)模塊都能正常工作。 第4章 四軸飛行器軟件設(shè)計(jì)
4.1開(kāi)發(fā)環(huán)境MDK5是由keil公司發(fā)行的一個(gè)包括C編譯器、鏈接器、宏匯編、庫(kù)管理的強(qiáng)大集成IC開(kāi)發(fā)環(huán)境,支持多種語(yǔ)言編程,編譯后能夠快速生成執(zhí)行效率較高的匯編代碼,開(kāi)發(fā)環(huán)境支持在線調(diào)試、仿真,支持?jǐn)帱c(diǎn)調(diào)試,能夠?qū)崟r(shí)觀測(cè)到程序執(zhí)行過(guò)程中每個(gè)量和內(nèi)存里面數(shù)據(jù)的變化情況,keil公司雖然沒(méi)有發(fā)布中文的開(kāi)發(fā)環(huán)境,但keil系列的產(chǎn)品一直是電子類行業(yè)工作人員的常用軟件[7]。 4.2調(diào)試軟件主要使用的程序調(diào)試軟件是“ANO_Tech匿名四軸上位機(jī)_V2.6”,此軟件需在程序中搭配串口程序才能夠?qū)w行控制器中的數(shù)據(jù)通過(guò)串口發(fā)送到電腦端的軟件上,再在軟件中連接該端口就能使用。通過(guò)調(diào)試軟件可以觀察飛行器的姿態(tài)數(shù)據(jù),實(shí)時(shí)呈現(xiàn)飛行器的歐拉角,同時(shí)有數(shù)據(jù)變化曲線顯示的功能。也可以觀察遙控器的傳輸數(shù)據(jù)是否正常。也能夠在上位機(jī)中設(shè)置相應(yīng)的PID參數(shù),對(duì)飛行器進(jìn)行測(cè)試,可以看到電機(jī)的實(shí)時(shí)PWM數(shù)據(jù)變化情況。 4.3 模塊程序設(shè)計(jì)如圖4-1,程序開(kāi)始先對(duì)所有程序中要用到的中斷優(yōu)先級(jí)、串口配置、定時(shí)器進(jìn)行初始化,然后在對(duì)飛行器重要硬件進(jìn)行檢測(cè),若硬件有引腳松動(dòng)、脫落等問(wèn)題程序不會(huì)向后執(zhí)行,硬件檢查通過(guò)后就是電機(jī)自檢設(shè)置最大油門和最小油門,在通過(guò)按鍵顯示程序來(lái)設(shè)置目標(biāo)位置的坐標(biāo),顯示的初始坐標(biāo)為當(dāng)前飛行器的坐標(biāo)。在通過(guò)姿態(tài)檢測(cè)程序獲得飛行器的歐拉角,高度檢測(cè)程序獲得飛行器距離地面的高度,再接收遙控器的控制信號(hào),通過(guò)控制信號(hào)的不同使飛行器工作在不同的三種狀態(tài):僅姿態(tài)控制狀態(tài),定高狀態(tài),位置控制狀態(tài)。最后執(zhí)行完一次又返回到姿態(tài)檢測(cè)程序中循環(huán)執(zhí)行。

圖4-1 總體程序流程圖 4.3.1 姿態(tài)檢測(cè)程序設(shè)計(jì)四元數(shù)姿態(tài)解算過(guò)程: 先從一次平面的旋轉(zhuǎn)(繞Z軸)如圖4-2,假如坐標(biāo)系旋轉(zhuǎn) 角度后得到的坐標(biāo)系,在空間中有一矢量,分別在兩個(gè)坐標(biāo)系的坐標(biāo)分別為 、 ,因此兩坐標(biāo)關(guān)系如下: 
圖4-2 坐標(biāo)系變換關(guān)系圖 (4.1)
(4.2) (4.3)
轉(zhuǎn)換成矩陣表達(dá)形式后為: (4.4)
同理再依次繞Y軸、X軸旋轉(zhuǎn)得到歐拉角方向余弦矩陣: 
(4.5)
(4.6)
采用與推導(dǎo)歐拉角方向余弦矩陣相同的思路可以得到坐標(biāo)系平移的平移矩陣T: (4.7) 由于四元數(shù)可表示一個(gè)三維坐標(biāo)系的旋轉(zhuǎn)坐標(biāo)對(duì)應(yīng)關(guān)系為公式(4.8)[16] (4.8)
其中 , 表示兩個(gè)四元數(shù)相乘又稱四元數(shù)的格拉斯曼積滿足分配律、結(jié)合律;V1= 、V= ; 因?yàn)樗脑獢?shù) 可逆,需要 =1所以| |=1; = = = ;根據(jù)四元數(shù)的性質(zhì)有 2 2 2 -1; = 、 = - 、 = 、 = - 、 = 、 = - 。 解公式(4.8)得到公式(4.9)
(4.9)
轉(zhuǎn)換為矩陣表達(dá)形式后為公式(4.10) (4.10)
從公式(4.10)中得到四元數(shù)方向余弦矩陣為公式(4.11) (4.11)
最后有公式(4.6)和公式(4.11)RT=R1得到四元數(shù)轉(zhuǎn)化成歐拉角公式(4.12) (4.12)
設(shè)計(jì)思路:利用模塊自帶的數(shù)字運(yùn)動(dòng)處理器(DMP: Digital motion processor)硬件加速引擎,通過(guò)IIC接口輸出六軸姿態(tài)融合人演算數(shù)據(jù),利用DMP可以使用InvenSence公司的運(yùn)動(dòng)處理資料庫(kù),能夠?qū)⒃紨?shù)據(jù)直接轉(zhuǎn)化成四元數(shù)[4]。得到四元數(shù)后根據(jù)公式(4.12)計(jì)算出歐拉角。降低了程序開(kāi)發(fā)難度,提高系統(tǒng)的實(shí)時(shí)性。程序流程圖如圖4-3. 
圖4-3 姿態(tài)檢測(cè)流程圖 初始化IIC接口:在使用MPU-6050時(shí)需要把傳感器的數(shù)據(jù)傳送給控制器,因此需要配置一個(gè)通信接口,這里配置的IIC接口用于數(shù)據(jù)通信。 復(fù)位MPU-6050:由電源管理寄存器1(0x6b)控制。 設(shè)置滿量程范圍:即是設(shè)置角速度傳感器和加速度傳感器的量程范圍,由陀螺儀配置寄存器(0x1b)和加速度傳感器配置寄存器(0x1c)設(shè)置。同時(shí)設(shè)置陀螺儀采樣率,由采樣率分頻寄存器(0x19)控制;設(shè)置數(shù)字低通濾波器,由寄存器(0x1c)控制。 設(shè)置系統(tǒng)時(shí)鐘:由電源管理寄存器(0x6b)控制,一般選擇X軸陀螺PLL作為時(shí)鐘源,以獲得更高精度的時(shí)鐘。 使能傳感器:使能角速度傳感器和加速度傳感器,由電源管理寄存器2(0x6c)控制。 程序調(diào)試:把模塊程序編寫完成后,首先是要對(duì)程序進(jìn)行測(cè)試,在測(cè)試是采用匿名四軸上位機(jī)軟件,將mpu-6050采集到的角速度、加速度和歐拉角通過(guò)控制器配置的串口發(fā)送到軟件,用三角板實(shí)際測(cè)量傳感器的角度數(shù)據(jù)去對(duì)比傳感器的測(cè)量數(shù)據(jù),觀測(cè)兩者是否吻合,同時(shí)在上位機(jī)中觀察數(shù)據(jù)是否出現(xiàn)較大的波動(dòng)。若出現(xiàn)誤差需在程序中進(jìn)行角度補(bǔ)償,來(lái)提高測(cè)量的準(zhǔn)確性。 4.3.2 高度檢測(cè)程序設(shè)計(jì)程序流程如圖4-4,使用的超聲波模塊,測(cè)量高電平時(shí)間利用TIM5定時(shí)器的捕獲功能,利用公式 (s:高度,單位m;t:時(shí)間,單位s)得到距離[2]?刂菩盘(hào)由TIM3定時(shí)器每200ms中斷一次,在中斷中發(fā)出15us的高電平給trig引腳,觸發(fā)TIM5捕獲中斷計(jì)算出高電平的持續(xù)時(shí)間。 測(cè)序測(cè)試:將程序于硬件相結(jié)合,用oled12864顯示測(cè)出的高度值,并將測(cè)量值于實(shí)際值作對(duì)比,觀測(cè)數(shù)據(jù)是否準(zhǔn)確,同時(shí)觀測(cè)數(shù)據(jù)是否發(fā)生較大范圍的波動(dòng)。若出現(xiàn)問(wèn)題需更改程序進(jìn)行校正。 
圖4-4 高度檢測(cè)流程圖 4.3.3 電機(jī)驅(qū)動(dòng)程序設(shè)計(jì)電機(jī)作為四旋翼飛行器的動(dòng)力來(lái)源,無(wú)刷電機(jī)需要與電子調(diào)速器配合才能夠用單片機(jī)的定時(shí)器輸出不同占空比的PWM來(lái)控制電機(jī)的轉(zhuǎn)速,在上電是需要對(duì)電子調(diào)速器進(jìn)行初始化的程序如圖4-5。 
圖4-5 電子調(diào)速器控制流程圖 4.3.4 無(wú)線傳輸設(shè)計(jì)1.WiFi模塊 程序流程如圖4-6,采用無(wú)線wifi傳輸方案需要配置一個(gè)串口中斷程序,APP中的數(shù)據(jù)每間隔40ms發(fā)送一次,每次發(fā)送八個(gè)字節(jié)。因此通過(guò)串口來(lái)接收WiFi模塊發(fā)送過(guò)來(lái)的字節(jié)數(shù)據(jù),再利用中斷進(jìn)行數(shù)據(jù)處理,篩選出每次發(fā)送的8個(gè)字節(jié)數(shù)據(jù)。 Byte[0]:數(shù)據(jù)頭,固定為0x66; Byte[1]:副翼:中間值0x80,左邊最大為 0x00,右邊最大為0xff,即在0x00-0x80-0xff線性變化。 Byte[2]:升降舵:中間值0x80,后邊最大為 0x00,前邊最大為0xff,即在0x00-0x80-0xff線性變化。 
圖4-6 串口中斷數(shù)據(jù)處理流程圖 Byte[3]:油門:0x00為最小,0xff為最大。 Byte[4]:方向舵:中間值0x80,左轉(zhuǎn)最大為 0x00,右轉(zhuǎn)最大為0xff,即在0x00-0x80-0xff線性變化。 Byte[5]:標(biāo)志位:含定高使能位,含追蹤目的坐標(biāo)使能位。 Byte[6]:校驗(yàn)字節(jié)。 Byte[7]:數(shù)據(jù)尾,固定為0x99。 程序測(cè)試:連接好相應(yīng)的硬件,連接好WiFi,打開(kāi)APP內(nèi)的控制界面,用上位機(jī)觀測(cè)手機(jī)發(fā)送的初始數(shù)據(jù)是否準(zhǔn)確的發(fā)送到主控芯片,再滑動(dòng)油門、姿態(tài)搖桿、觀測(cè)對(duì)應(yīng)的數(shù)據(jù)是否正確,若數(shù)據(jù)未發(fā)送到上位機(jī),檢查硬件來(lái)連接;若數(shù)據(jù)出錯(cuò),檢查串口中斷內(nèi)數(shù)據(jù)篩選程序。最終調(diào)試出正確的程序。 2. nrf24l01+模塊 (1)接收機(jī) 
圖4-7 nrf24l01+接收程序流程圖 (2)遙控器 程序流程如圖4-8,使用nrf24l01+模塊,不僅需要搭建接收部分,還要自制遙控器,兩者要匹配才能夠使用,nrf24l01+模塊主要是配置spi通信接口來(lái)與主控芯片通信。AD轉(zhuǎn)化主要使用主控芯片內(nèi)部集成的AD 轉(zhuǎn)化器進(jìn)行識(shí)別模擬量,并轉(zhuǎn)化成數(shù)字量,在AD采樣時(shí)還利用均值濾波來(lái)減小數(shù)據(jù)的誤差。 程序測(cè)試:搭建好接收電路和遙控器電路,接上供電電源,將飛行器上串口與電腦端的上位機(jī)連接。首先觀測(cè)上位機(jī)中出現(xiàn)遙控器的初始數(shù)據(jù),再撥動(dòng)雙軸搖桿到最大、最小角度,觀察上位機(jī)中的數(shù)據(jù)是與程序中的目標(biāo)數(shù)值吻合,然后緩慢滑動(dòng)搖桿,觀察搖桿數(shù)據(jù)是為線性變化,證明遙控器的數(shù)據(jù)能夠成功的發(fā)送到飛行器的控制器中。 
圖4-8 遙控器程序流程圖 4.3.5 PID控制器設(shè)計(jì)PID控制器流程圖如圖4-9,控制器的輸入是期望的俯仰角、橫滾角、航向角、高度這四個(gè)數(shù)據(jù),姿態(tài)控制器的設(shè)計(jì)是用串級(jí)PID搭建,外環(huán)是控制飛行器的角度,傳感器反饋量是角度數(shù)據(jù),外環(huán)的輸出作為內(nèi)環(huán)的輸入,內(nèi)環(huán)的反饋是姿態(tài)傳感器的角速度,內(nèi)環(huán)是控制飛行器角度變化快慢的環(huán)節(jié),增加飛行器的穩(wěn)定性。 對(duì)于姿態(tài)控制使用串級(jí)PID控制相對(duì)于單級(jí)的姿態(tài)PID控制器,有方便調(diào)試、響應(yīng)迅速、輸出穩(wěn)定的優(yōu)點(diǎn)。在通過(guò)高度PID控制閉合回路,實(shí)現(xiàn)在姿態(tài)控制的同時(shí)穩(wěn)定飛行器的高度,若不穩(wěn)定飛行器的飛行高度,飛行器在調(diào)節(jié)姿態(tài)時(shí)可能使得電機(jī)的PWM值低于飛行器正常懸停的油門值,使得飛行器會(huì)出現(xiàn)掉高的現(xiàn)象。PID控制器參數(shù)介紹:P參數(shù)是使系統(tǒng)對(duì)變化量做出快速響應(yīng),在三個(gè)參數(shù)中對(duì)系統(tǒng)的調(diào)節(jié)能力是最強(qiáng)的;I參數(shù)是使系統(tǒng)能夠準(zhǔn)確調(diào)到目標(biāo)值;D參數(shù)是控制系統(tǒng)的波動(dòng),控制系統(tǒng)在目標(biāo)值附近出現(xiàn)波動(dòng),增加系統(tǒng)的穩(wěn)定性。 程序測(cè)試:對(duì)于此部分模塊程序的測(cè)試,需要用到姿態(tài)檢測(cè)傳感器的數(shù)據(jù)、高度檢測(cè)數(shù)據(jù)和無(wú)線傳輸?shù)臄?shù)據(jù)。在前面的模塊程序都測(cè)試通過(guò)的情況下才能夠進(jìn)行測(cè)試。由于此部分程序直接影響飛行器的飛行質(zhì)量,將在調(diào)試章節(jié)詳細(xì)講解測(cè)試過(guò)程。 
圖4-9 PID控制程序流程圖 4.4 本章小結(jié) 簡(jiǎn)要介紹了開(kāi)發(fā)環(huán)境和調(diào)試軟件的使用,搭建軟件系統(tǒng)的流程圖,以及介紹重要模塊程序的流程,結(jié)合硬件測(cè)試各個(gè)模塊程序的功能,證明各個(gè)硬件模塊結(jié)合軟件能夠?qū)崿F(xiàn)相應(yīng)模塊的功能。最后聯(lián)合模塊程序進(jìn)行系統(tǒng)綜合測(cè)試,觀察各個(gè)關(guān)鍵量的變化情況,完成程序系統(tǒng)設(shè)計(jì)。
第5章 系統(tǒng)調(diào)試
5.1 調(diào)試步驟
5.1.1 姿態(tài)PID調(diào)試由于姿態(tài)PID是采用串級(jí)的思路,在調(diào)節(jié)參數(shù)時(shí)需要先調(diào)節(jié)內(nèi)環(huán)參數(shù)再調(diào)整外環(huán)參數(shù)。對(duì)于質(zhì)量分布對(duì)稱的四旋翼飛行器,理論上它的俯仰角和橫滾角的PID控制參數(shù)是相同的,所以在搭建實(shí)物時(shí)盡量讓四旋翼的重心在模型的幾何中心,這樣有利于調(diào)試,若重心與幾何中心偏離很遠(yuǎn),不僅需要多調(diào)節(jié)一個(gè)軸的PID參數(shù),還會(huì)導(dǎo)致重心偏向側(cè)的電機(jī)長(zhǎng)時(shí)間處于較高速旋轉(zhuǎn),容易引起電機(jī)損壞。 在調(diào)節(jié)姿態(tài)PID前,需要飛行器脫離地面,才能進(jìn)行姿態(tài)觀測(cè),因此需要估計(jì)飛行器的大致起飛油門。 首先將外環(huán)所有參數(shù)置零,將打舵量作為內(nèi)環(huán)的期望,加上內(nèi)環(huán)P參數(shù),如果P太小,表現(xiàn)為不能修正角速度誤差,不能夠調(diào)節(jié)傾斜的情況,如果P值過(guò)大,便會(huì)引起飛行器的震蕩,該震蕩強(qiáng)烈時(shí)會(huì)引起飛行器無(wú)法正常起飛。因此在調(diào)節(jié)P參數(shù)時(shí)一般從小到達(dá)改變,依次觀察飛行器的擺動(dòng)情況,合適的P值就是能夠根據(jù)打舵量快速做出反應(yīng),同時(shí)又不會(huì)太震蕩。 P參數(shù)調(diào)到合適后,系統(tǒng)可能不會(huì)在目標(biāo)位置震蕩,此時(shí)加上I參數(shù),I參數(shù)的作用就是使系統(tǒng)能夠到達(dá)目標(biāo)值附近,大的I值會(huì)使得系統(tǒng)在高于目標(biāo)值的區(qū)域發(fā)生輕微震蕩,過(guò)小的I值,會(huì)使得系統(tǒng)響應(yīng)慢穩(wěn)定時(shí)間長(zhǎng),因此合適的I值使讓系統(tǒng)在我們預(yù)想的目標(biāo)值附近。 對(duì)于飛行器姿態(tài)在期望角度發(fā)生震蕩的情況,就需要系統(tǒng)能夠預(yù)測(cè)下一時(shí)刻的姿態(tài)趨勢(shì),來(lái)減小震蕩,因此加入D參數(shù),D參數(shù)的使用會(huì)使得飛行器姿態(tài)不會(huì)出現(xiàn)擺動(dòng),看上去飛行器十分的穩(wěn)定。 然后就是在已有的內(nèi)環(huán)參數(shù)上調(diào)節(jié)外環(huán)參數(shù),外環(huán)就是給系統(tǒng)輸入一個(gè)期望的姿態(tài)角度,在通過(guò)外環(huán)PID控制,將飛行器穩(wěn)定在期望的姿態(tài)角度。對(duì)于外環(huán)PID參數(shù)的調(diào)節(jié),由于飛行器的姿態(tài)角并非水平,飛行器會(huì)隨著搖桿的方向發(fā)生水平移動(dòng),因此采用“烤四軸”的方案如圖5-1,對(duì)每個(gè)軸進(jìn)行調(diào)節(jié),調(diào)節(jié)過(guò)程與內(nèi)環(huán)相同,觀測(cè)飛行器在期望角度的飛行情況。在分別調(diào)整好三個(gè)軸的PID參數(shù)后,由于每個(gè)軸之間存在魯棒性,每個(gè)軸的參數(shù)之間會(huì)相互影響,因此需要三個(gè)軸一起調(diào)節(jié)如圖5-2。最終調(diào)試出適合飛行的所有PID參數(shù)。 
圖5-1 “烤四軸”調(diào)試方案圖 
圖5-2 整體調(diào)試圖 5.1.2 高度PID調(diào)試調(diào)節(jié)高度PID時(shí)需要將油門加大到飛行器能夠脫離地面,打開(kāi)遙控器的定高按鈕,再來(lái)觀察飛行器的高度變化。 首先調(diào)節(jié)P參數(shù),將I、D參數(shù)置零,在程序調(diào)試時(shí),在程序內(nèi)部設(shè)置目標(biāo)高度為50cm。P參數(shù)從小到大調(diào)整,在調(diào)節(jié)過(guò)程中,若出現(xiàn)飛行器偏離目標(biāo)高度較遠(yuǎn),飛行器也沒(méi)有明顯的上升下降趨勢(shì)的情況,此時(shí)說(shuō)明P參數(shù)過(guò)小調(diào)節(jié)力度不夠。若出現(xiàn)飛行器高度震蕩范圍越來(lái)越大,說(shuō)明P值過(guò)大,引起系統(tǒng)發(fā)散,合適大小的P值是當(dāng)飛行器偏離目標(biāo)高度較遠(yuǎn)時(shí),飛行器能夠迅速反應(yīng)上升或者下降,同時(shí)在一定高度范圍內(nèi)震蕩。 然后確定I參數(shù),使飛行器能夠調(diào)節(jié)的目標(biāo)高度,若飛行器很久才穩(wěn)定在目標(biāo)高度,說(shuō)明I參數(shù)值過(guò)小,若飛行器出現(xiàn)較小幅度震蕩,說(shuō)明I參數(shù)過(guò)大,因此合適的I參數(shù)就是使得飛行器能夠調(diào)整到目的高度。 最后確定D參數(shù)增加高度控制的穩(wěn)定性,該值從小到大依次調(diào)試,合適大小的D值使得飛行器在目標(biāo)高度十分穩(wěn)定。 5.1.3 位置控制調(diào)試用油門控制飛行器脫離地面,開(kāi)啟定高模式,再按下位置鍵進(jìn)行位置控制。由于位置控制是結(jié)合姿態(tài)控制的持續(xù)時(shí)間來(lái)控制飛行器水平移動(dòng)的距離,因此在固定的俯仰角、橫滾角下進(jìn)行位置移動(dòng),在調(diào)節(jié)的過(guò)程中需要根據(jù)實(shí)際距離修改控制程序中的循環(huán)次數(shù)。 先調(diào)整水平方向的位置控制程序,固定飛行器的目標(biāo)飛行距離,根據(jù)實(shí)際飛行距離調(diào)整相應(yīng)的循環(huán)次數(shù)。然后改變目標(biāo)具體,觀測(cè)實(shí)際飛行距離是否準(zhǔn)確,若有誤差,微調(diào)循環(huán)次數(shù)即可 后調(diào)節(jié)高度控制,調(diào)節(jié)步驟與水平位置調(diào)節(jié)類似。 最后將兩個(gè)環(huán)節(jié)相結(jié)合,在程序中飛行器先是水平位置控制,再是高度控制。 5.1.4 調(diào)試結(jié)果經(jīng)過(guò)對(duì)串級(jí)姿態(tài)PID參數(shù)的整定,得到表5-1和表5-2數(shù)據(jù)對(duì)飛行器的姿態(tài)控制起到很明顯的作用,能夠有效的控制飛行器的飛行姿態(tài)如圖5-3、5-4、5-5、5-6、5-7、5-8、5-9、5-10、5-11、5-12,而對(duì)于單級(jí)PID控制的高度環(huán)節(jié),能夠調(diào)節(jié)到期望高度,但是在期望高度附近有明顯的波動(dòng)。位置控制環(huán)節(jié)受高度環(huán)的影響,位置控制上還存在一定誤差,若高度控制環(huán)調(diào)好,位置控制誤差將能夠有效降低。 表5-1 姿態(tài)外環(huán)PI參數(shù)表
表5-1 姿態(tài)內(nèi)環(huán)PD參數(shù)表 
圖5-3 三軸加速度和三軸陀螺儀數(shù)據(jù)曲線圖 在圖5-3中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是加速度和陀螺儀數(shù)據(jù),單位分別是 、 。 
圖5-4 X軸加速度數(shù)據(jù)曲線圖 在圖5-4中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是X加速度數(shù)據(jù)被擴(kuò)大了16384倍,單位是 。 
圖5-5 Y軸加速度數(shù)據(jù)曲線圖 在圖5-5中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是Y加速度數(shù)據(jù)被擴(kuò)大了16384倍,單位是 。 
圖5-6 Z軸加速度數(shù)據(jù)曲線圖 在圖5-6中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是Z加速度數(shù)據(jù)被擴(kuò)大了16384倍,單位是 。 
圖5-7 X軸陀螺儀數(shù)據(jù)曲線圖 在圖5-7中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是X陀螺儀數(shù)據(jù)被擴(kuò)大了16.4倍,單位是 。 
圖5-8 Y軸陀螺儀數(shù)據(jù)曲線圖 在圖5-8中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是Y陀螺儀數(shù)據(jù)被擴(kuò)大了16.4倍,單位是 。 
圖5-9 Z軸陀螺儀數(shù)據(jù)曲線圖 在圖5-9中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是Z陀螺儀數(shù)據(jù)被擴(kuò)大了16.4倍,單位是 。 
圖5-10 橫滾數(shù)據(jù)曲線圖 在圖5-10中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是橫滾角度數(shù)據(jù)被擴(kuò)大了100倍,單位是度。 
圖5-11 俯仰數(shù)據(jù)曲線圖 在圖5-11中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是俯仰角度數(shù)據(jù)被擴(kuò)大了100倍,單位是度。 
圖5-12 偏航數(shù)據(jù)曲線圖 在圖5-12中,橫坐標(biāo)是時(shí)間軸,單位是 ,時(shí)間數(shù)據(jù)被擴(kuò)大了100倍;縱坐標(biāo)是偏航角度數(shù)據(jù)被擴(kuò)大了100倍,單位是度。 從圖5-10、5-11、5-12中可以看出飛行器在自穩(wěn)狀態(tài)下,俯仰角和橫滾角都控制很好,曲線都在零度上。然而偏航角度控制曲線離零度漸漸變遠(yuǎn),可見(jiàn)飛行器存在緩慢的自旋,方向都是逆時(shí)針。因此在飛行器的姿態(tài)控制器中偏航角控制還存在一定的誤差。 5.2 疑難問(wèn)題及解決方案
5.2.1 兩個(gè)無(wú)線模塊相互干擾在實(shí)際測(cè)試程序的過(guò)程中,出現(xiàn)WiFi模塊的初始數(shù)據(jù)小概率被干擾,以至于在初始化飛行器后,準(zhǔn)備起飛前,飛行器會(huì)出現(xiàn)失控。 解決方案:飛行器失控是出現(xiàn)在加入無(wú)線繼電器開(kāi)關(guān)后出現(xiàn),但無(wú)線繼電器的品那段處于315M,WiFi傳輸頻段在2.4G,從理論上來(lái)講兩個(gè)頻段的信號(hào)是不會(huì)發(fā)生干擾,因此便在程序中進(jìn)行優(yōu)化,在進(jìn)入起飛前加入WiFi初始數(shù)據(jù)判定函數(shù),對(duì)干擾信號(hào)進(jìn)行攔截,只有當(dāng)遙控器的初始數(shù)據(jù)發(fā)送到飛行器上才進(jìn)入起飛就緒階段。這樣就能夠兼并使用無(wú)線繼電器模塊,又能確保不會(huì)出現(xiàn)數(shù)據(jù)錯(cuò)誤。 5.2.2 主控板震動(dòng)劇烈將主控板安裝在機(jī)架上,由于電機(jī)的劇烈轉(zhuǎn)動(dòng)和機(jī)架的機(jī)械結(jié)構(gòu)使得電路板上的震動(dòng)十分劇烈,對(duì)MPU-6050姿態(tài)傳感器的影響較大。 解決方案:用泡沫膠連接電路板與機(jī)架,能夠避免電路板與機(jī)架的直接接觸,通過(guò)泡沫膠將機(jī)架的震動(dòng)抵消掉一部分,有效的減小MPU-6050上的震動(dòng)。 5.2.3 部分電機(jī)自檢失敗在加入按鍵顯示程序后,某些電機(jī)無(wú)法自檢,影響正常的轉(zhuǎn)動(dòng)。 解決方案:自檢失敗的電機(jī)是隨機(jī)的、不固定,最初認(rèn)為是電子調(diào)速器的控制線未連接好,但是很少出現(xiàn)四個(gè)電機(jī)完全自檢通過(guò)的情況。因此考慮到程序結(jié)構(gòu)問(wèn)題,去掉按鍵顯示程序后,四個(gè)電機(jī)都能夠成功自檢,將按鍵顯示程序放在電機(jī)自檢程序后也能避免這個(gè)問(wèn)題,因此更改程序初始化順序就能解決。 5.2.4 飛行器脫離地面發(fā)生飄移飛行器在油門的驅(qū)動(dòng)下能夠平穩(wěn)的脫離地面,但是在穩(wěn)定油門后飛行器總是朝某一方向移動(dòng),無(wú)法比較好的穩(wěn)定在初始位置。 解決方案:檢查飛行器的初始角度俯仰角0度、橫滾角0度、航向角0度,都屬于正常值;檢查遙控器的姿態(tài)數(shù)據(jù)也都是中值數(shù)據(jù),所以在程序中的數(shù)據(jù)并未發(fā)現(xiàn)異常。在測(cè)試中發(fā)現(xiàn)出現(xiàn)飄逸的飛行器可以通過(guò)遙控器輸入姿態(tài)來(lái)矯正,因此對(duì)姿態(tài)數(shù)據(jù)進(jìn)行補(bǔ)償,可以有效的避免飛行器的明顯飄移。 5.2.5 油門控制在飛行器最初測(cè)試中,油門滑桿太過(guò)靈敏,不利于控制飛行器的起飛油門。 解決方案:這個(gè)問(wèn)題源于自己使用的電機(jī)轉(zhuǎn)速較高,槳葉較大造成,電機(jī)在低轉(zhuǎn)速是飛行器也能夠獲得較大的升力,在實(shí)際測(cè)試中,滑桿在油門的四分之一處就能飛離地面,因此為降低油門的靈敏度,把[1000-2000]的油門范圍只利用[1000-1500]。便能夠很好的控制起飛、降落。 5.3 實(shí)物如圖5-13是自制的遙控器,需要外接USB供電,左邊搖桿是方向控制,右邊搖桿是油門、航向角控制。四旋翼飛行器如圖5-14,將所有的電路布局在一塊洞洞板,只需要接上電池和給電子調(diào)速器供電就能使飛行器正常工作,洞洞板上的立桿是用來(lái)輔助調(diào)試。 
圖5-13 遙控器實(shí)物圖 
圖5-14 飛行器實(shí)物圖 5.4 本章小結(jié)本章介紹了四旋翼飛行器的實(shí)物調(diào)試過(guò)程及最終調(diào)試結(jié)果,調(diào)試中遇到的問(wèn)題及解決方案,證明通過(guò)本文的設(shè)計(jì)思路結(jié)合調(diào)試過(guò)程是能夠完成四旋翼飛行器的姿態(tài)控制。
由于飛行器是一個(gè)比較大的系統(tǒng),在硬件選取時(shí)需要仔細(xì)考慮硬件配套的問(wèn)題,特別是電池、電子調(diào)速器、電機(jī)、槳葉的型號(hào)組合,這部分與控制部分無(wú)關(guān),若型號(hào)選取不好很容易導(dǎo)致硬件燒毀。然后就是飛行器上控制部分硬件電路,這部分設(shè)計(jì)需要結(jié)合軟件設(shè)計(jì)來(lái)搭建各個(gè)模塊的硬件電路,通過(guò)軟硬件聯(lián)合測(cè)試各個(gè)模塊的功能。完成整體軟硬件的設(shè)計(jì)。
在此次飛行器的設(shè)計(jì)中最重要的是控制器的設(shè)計(jì),對(duì)于姿態(tài)控制的設(shè)計(jì)采用串級(jí)PID的架構(gòu),通過(guò)實(shí)際實(shí)物的制作、調(diào)試,證明通過(guò)這種架構(gòu)不僅調(diào)試方便,而且控制器的輸出比較穩(wěn)定的姿態(tài),因此采用串級(jí)PID的姿態(tài)控制策略是可行的。對(duì)于高度控制器采用單極PID設(shè)計(jì)思路,在實(shí)際調(diào)試過(guò)程中單級(jí)PID確實(shí)不好調(diào)試,較串級(jí)的PID需要花更多的時(shí)間去整定PID參數(shù),而對(duì)于輸出也能達(dá)到較好的穩(wěn)定效果。對(duì)于位置控制,由于未使用光流元件進(jìn)行定位,飛行器不能建立自己的位置坐標(biāo)系,亦無(wú)法將位置控制做成閉環(huán),而對(duì)于自己設(shè)計(jì)的方案,只是開(kāi)環(huán)控制飛行器的大概位置,調(diào)試過(guò)程也相對(duì)閉環(huán)簡(jiǎn)單,但是開(kāi)環(huán)下若只是單純的位置改變,也還是能獲得不錯(cuò)的控制效果。
在本設(shè)計(jì)中還有很多地方值得完善,高度PID還不能夠穩(wěn)定準(zhǔn)確的將飛行器高度控制在期望高度,若將高度PID調(diào)試好,便能有效的控制飛行器的高度,并且飛行器不會(huì)掉高,就能夠?qū)崿F(xiàn)懸停的功能。在位置控制上也存在很大的誤差,飛行器不能夠感知外界的障礙物,若將位置控制器作成閉環(huán)系統(tǒng),就能夠有效準(zhǔn)確的控制飛行器的位置,再結(jié)合蔽障等功能就能實(shí)現(xiàn)脫離遙控器完全意義上的自主飛行。還有采用的WiFi無(wú)線傳輸方案距離小,飛行器的可操作范圍不高,飛行器中也未做自動(dòng)返航的功能,因此容易發(fā)生墜機(jī)。用手機(jī)APP控制飛行器較用手炳控制飛行器的難度更高,用手機(jī)控制時(shí)感覺(jué)不到搖桿的具體偏離程度,在實(shí)際操作中還需要一邊觀測(cè)手機(jī)一邊觀察飛行器,還不能夠做到很好的操作飛行器。
相信未來(lái)的飛行器,無(wú)論從材料、做工、結(jié)構(gòu)上都會(huì)更加成熟,更加有利于飛行器的飛行控制,抗干擾能力、負(fù)重能力越來(lái)越強(qiáng),更能適應(yīng)在復(fù)雜環(huán)境下工作。隨著傳感器的精度越高,飛行器在姿態(tài)控制和位置控制上的穩(wěn)定性能越好、誤差也越小。同時(shí)隨著電池行業(yè)的進(jìn)步,四旋翼飛行器的續(xù)航能力也會(huì)更強(qiáng),實(shí)現(xiàn)更久的作業(yè)時(shí)間。
全部資料51hei下載地址:
keil5_code.7z
(434.19 KB, 下載次數(shù): 167)
2021-3-5 22:12 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
小型四旋翼飛行姿態(tài)及位置控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn).doc
(11.93 MB, 下載次數(shù): 135)
2021-3-5 09:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|