陳世武 李海俠
(桂林理工大學(xué)機(jī)械與控制工程學(xué)院,廣西 桂林 541004)
四旋翼飛行器的設(shè)計(jì)與實(shí)現(xiàn)
陳世武 李海俠
(桂林理工大學(xué)機(jī)械與控制工程學(xué)院,廣西 桂林 541004)
為了研究四旋翼飛行器的基本工作原理,文章設(shè)計(jì)了一個(gè)基于 PID控制算法的四旋翼飛行控制器。飛行器以STM32F103RCT6的最小系統(tǒng)作為主控單元,實(shí)時(shí)姿態(tài)采用慣性單元MPU6050進(jìn)行檢測(cè),使用互補(bǔ)濾波融合算法進(jìn)行姿態(tài)修正計(jì)算,為了方便調(diào)試而設(shè)計(jì)了一個(gè)專(zhuān)用的遙控器,無(wú)線通信采用加AP的2.4G無(wú)線模塊,專(zhuān)用遙控器和飛控通信時(shí)采用分時(shí)復(fù)用的辦法實(shí)現(xiàn)數(shù)據(jù)回傳功能。軟硬件調(diào)試完畢并且整定好PID參數(shù)之后測(cè)試成功,飛行器實(shí)現(xiàn)了垂直升降、小角度控制下的前、后、左、右的遙控飛行。
四旋翼飛行器;STM32;PID控制算法;MPU6050;互補(bǔ)濾波
四旋翼飛行器在一些工業(yè)發(fā)達(dá)的國(guó)家中已經(jīng)作為一個(gè)通用平臺(tái)去進(jìn)行實(shí)驗(yàn)和應(yīng)用,而我國(guó)在這方面的研究起步相對(duì)比較晚,航模愛(ài)好者很多,但是對(duì)其飛行控制的研究的人就顯得太少了。四旋翼飛行器的研究范疇非常廣闊并且在技術(shù)上也具有很大的難度,隨著不斷的深入研究,四旋翼飛行器的研究領(lǐng)域?qū)⒗^續(xù)擴(kuò)大。本設(shè)計(jì)也僅僅是研究四旋翼飛行器基礎(chǔ)的一部分,采用經(jīng)典的PID控制算法以及通俗易懂的姿態(tài)解算方法,設(shè)計(jì)一個(gè)由無(wú)線遙控控制的四旋翼飛行器,實(shí)現(xiàn)基本的垂直升降、偏航和小角度內(nèi)的推進(jìn)飛行功能。通過(guò)對(duì)四旋翼飛行器的控制技術(shù)研究,可以加強(qiáng)自己的控制理論知識(shí),對(duì)以后別的運(yùn)動(dòng)控制系統(tǒng)研究也具有很重要的意義。
2.1 系統(tǒng)整體方案
飛控的硬件框圖和遙控硬件框圖分別如圖1、2所示,整個(gè)飛控的電氣部分硬件比較少但幾乎每一部分都是四旋翼飛行器正常工作的必不可少的部分。飛控和驅(qū)動(dòng)所需要的電源都通過(guò)航模鋰電池供電,STM32最小系統(tǒng)上集成了3.3V穩(wěn)壓電路,4個(gè)電調(diào)中每個(gè)電調(diào)都帶有5V穩(wěn)壓直流電輸出,只需要接一個(gè)電調(diào)的 5V輸出到最小系統(tǒng)上便可滿(mǎn)足飛控上所有模塊的供電需求。工作時(shí),遙控上的主控通過(guò)模數(shù)轉(zhuǎn)換量化四個(gè)通道的搖桿電位器的電壓值并傳輸?shù)斤w控端合理處理后作為姿態(tài)的目標(biāo)值,飛控處理器讀取MPU6050的數(shù)據(jù)計(jì)算出實(shí)時(shí)姿態(tài),通過(guò)目標(biāo)姿態(tài)值計(jì)算得到偏差之后進(jìn)行PID運(yùn)算更新 PWM輸出給電調(diào),使電機(jī)的轉(zhuǎn)速得到相應(yīng)的改變。NRF24L01無(wú)線模塊負(fù)責(zé)遙控端和飛控端的數(shù)據(jù)傳輸。電池的電壓由處理器通過(guò)ADC讀取量化之傳回到遙控端實(shí)現(xiàn)實(shí)時(shí)監(jiān)測(cè)電池電壓。
圖1 飛控硬件框圖
圖2 飛控控制框圖
2.2 電池電壓檢測(cè)電路
為了避免四旋翼飛行器上電池電壓過(guò)低而導(dǎo)致不能正常工作的問(wèn)題,在工作時(shí)需要對(duì)鋰電池的電壓實(shí)時(shí)監(jiān)測(cè)。由于鋰電池充滿(mǎn)電時(shí)電壓高達(dá) 12.6伏,使用的單片機(jī)自帶 ADC模塊測(cè)量范圍在0~3.3伏,所以在ADC采樣之前需要一個(gè)電壓分壓電路。
2.3 姿態(tài)檢測(cè)模塊
對(duì)四旋翼飛行器的控制,其實(shí)就是根據(jù)四旋翼飛行器的姿態(tài)角來(lái)控制電機(jī)的轉(zhuǎn)速達(dá)到系統(tǒng)穩(wěn)定的目的,因此,系統(tǒng)中必須要有姿態(tài)反饋才能做到閉環(huán)控制。此處采用集成了三軸加速度計(jì)以及三軸陀螺儀的六軸運(yùn)動(dòng)傳感器MPU6050,模塊采用3.3V電壓供電,通過(guò)IIC總線和處理器通信輸出姿態(tài)信息數(shù)據(jù)。因?yàn)镮IC總線是開(kāi)漏輸出,所以需要在總線上加上合適的上拉電阻使信號(hào)穩(wěn)定。
2.4 無(wú)線通信模塊
本次設(shè)計(jì)的遙控器是專(zhuān)用遙控器,在和遙控通信時(shí)不需要進(jìn)行通用性編碼成PPM格式或者是PCM格式,直接使用NRF24L01數(shù)傳模塊。使用時(shí)硬件電路簡(jiǎn)單,不需要對(duì)高頻電路部分進(jìn)行設(shè)計(jì),供電電壓為3.3V,若超過(guò)3.6V模塊很可能會(huì)被損壞。
2.5 人機(jī)交互模塊
遙控上的人機(jī)交換模塊包括按鍵、撥碼開(kāi)關(guān)和四路搖桿電位器的輸入,輸出顯示用OLED12864顯示屏。
按鍵和撥碼開(kāi)關(guān)與主控IO連接處都并聯(lián)上一個(gè)100nf的小電容,用來(lái)濾除操作時(shí)產(chǎn)生的高頻雜波。去掉抖動(dòng)的辦法有軟件消抖和硬件消抖,在軟件對(duì)運(yùn)行程序?qū)崟r(shí)性要求不是很高的時(shí)候采用軟件消抖,本設(shè)計(jì)中采用硬件消抖,因?yàn)橄到y(tǒng)在運(yùn)行時(shí)不希望處理器有太多的等待時(shí)間占用 CPU的資源,硬件成本也沒(méi)有體現(xiàn)出優(yōu)勢(shì),因此采用硬件消抖是個(gè)比較好的選擇。
遙控上有兩個(gè)搖桿電位器,每個(gè)電位器都有兩個(gè)方向的滑動(dòng)變阻器,因此一共有四路電壓需要采集,分別連接到 4個(gè)ADC輸入通道。
0.96寸的OLED顯示器具有128*64的分辨率,體積小分辨率高,不顯示數(shù)據(jù)的地方為黑色,并不耗電。與單片機(jī)的連接是串行通信方式,占用較少的IO口,避免了復(fù)雜的硬件電路,因此非常適合做遙控的顯示器。軟件設(shè)計(jì)
2.6 飛控程序主流程圖
圖 3是飛行控制器的軟件主要流程,飛控控制頻率為200Hz。飛控上電之后先對(duì)STM32以及外設(shè)模塊進(jìn)行初始化,初始化完畢之后讀取多次陀螺儀的角速度輸出數(shù)據(jù)進(jìn)行求平均值,把這個(gè)平均值作為本次運(yùn)行的偏移值,在以后每次讀取陀螺儀數(shù)據(jù)時(shí)把讀出來(lái)的數(shù)據(jù)減去偏移值就可以認(rèn)為是當(dāng)前準(zhǔn)確的數(shù)據(jù)。Systick定時(shí)器設(shè)置為5毫秒中斷一次,打開(kāi)中斷。在主函數(shù)中循環(huán)采集電池的電壓并且進(jìn)行無(wú)線通信。
2.7 無(wú)線通信
無(wú)線通信時(shí),為了實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,把 NRF24L01的模式在程序運(yùn)行時(shí)不斷改變,運(yùn)用分時(shí)復(fù)用的思想來(lái)彌補(bǔ)不能全雙工通信的缺陷。通過(guò)無(wú)線模塊傳回遙控的數(shù)據(jù)有四旋翼飛行器自身的三個(gè)姿態(tài)角、在穩(wěn)定時(shí)俯仰角和橫滾角的偏移角度、PID的三個(gè)參數(shù)以及其他的一些數(shù)據(jù),方便調(diào)試。
圖3 飛控主程序流程圖
2.8 姿態(tài)數(shù)據(jù)更新
在加速度計(jì)的角度計(jì)算中,采用了反三角函數(shù)的算法,因此在整合成16位數(shù)字量之后的加速度計(jì)讀出數(shù)據(jù)不需要轉(zhuǎn)換成標(biāo)準(zhǔn)加速度而是直接使用標(biāo)準(zhǔn)庫(kù)函數(shù)做反正切計(jì)算,為處理器節(jié)省時(shí)間。以下是加速度計(jì)求取角度的部分代碼:
ACC_XOut = (((Data[0])<<8) + Data[1]);//X軸加速度讀取值
ACC_YOut = (((Data[2])<<8) + Data[3]);//Y軸加速度讀取值
ACC_ZOut = (((Data[4])<<8) + Data[5]);//Z軸加速度讀取值
消費(fèi)者主權(quán)時(shí)代,消費(fèi)者擁有更多選擇權(quán)和知情權(quán),消費(fèi)心態(tài)更加成熟、自信和理性,對(duì)產(chǎn)品追求更加彰顯個(gè)性、自我,強(qiáng)調(diào)健康、品質(zhì)、體驗(yàn),不再盲目信任廣告和營(yíng)銷(xiāo),喝酒喝品質(zhì)、喝酒喝健康成為了新的利益點(diǎn)。
ACCAngleX = 57.32 * atan2(ACC_XOut , ACC_ZOut);
ACCAngleY = 57.32 * atan2(ACC_YOut , ACC_ZOut);
計(jì)算出加速度計(jì)的角度之后,把陀螺儀積分得到的角度和加速度計(jì)的角度一起做互補(bǔ)濾波,以下是陀螺儀積分計(jì)算及互補(bǔ)濾波的計(jì)算:
gyrox = ((Gyro_XOut - GyroXOffset) / 32.8);//計(jì)算陀螺儀的角速度
gyroy = -((Gyro_YOut - GyroYOffset) / 32.8);//-號(hào)為陀螺儀和加速度計(jì)統(tǒng)一坐標(biāo)方向
gyroz = -((Gyro_ZOut - GyroZOffset) / 32.8);
GyroAngleX = gyrox * dt;//dt為積分周期5毫秒 各軸陀螺的積分角
GyroAngleY = gyroy * dt;
GyroAngleZ += gyroz * dt;
yaw = GyroAngleZ;
/*互補(bǔ)濾波,X軸的加速度對(duì)應(yīng)繞Y軸轉(zhuǎn)的陀螺儀……*/
pitch = 0.99 * (pitch + GyroAngleX) + 0.01 * ACCAngleY;
roll = 0.99 * (roll + GyroAngleY) + 0.01 * ACCAngleX;
其中pitch、roll分別是互補(bǔ)濾波之后的俯仰角和橫滾角,yaw是偏航角,直接使用陀螺儀在Z軸上的積分角。
2.9 遙控程序主流程
遙控上電初始化完成之后,連續(xù)讀取四路搖桿電位器的電壓值,作為控制四旋翼飛行器的輸入期望值原始數(shù)據(jù),按鍵掃描是對(duì)撥碼開(kāi)關(guān)以及按鍵的輸入進(jìn)行檢測(cè),配合撥碼開(kāi)關(guān)的不同輸入,按鍵可以對(duì)不同的參數(shù)進(jìn)行修改,然后刷新OLED的顯示,最后是進(jìn)行無(wú)線通信,無(wú)線通信包含了數(shù)據(jù)的發(fā)射和接收功能,和飛控上的無(wú)線模塊相對(duì)應(yīng)。圖 4是無(wú)線遙控器的主函數(shù)軟件流程圖。
圖4 遙控軟件主流程
2.10 按鍵輸入處理
遙控板上一共有兩個(gè)獨(dú)立按鍵以及一個(gè)八位的撥碼開(kāi)關(guān),兩個(gè)按鍵只能對(duì)一個(gè)參數(shù)進(jìn)行隨意修改,而有了撥碼開(kāi)關(guān)之后,結(jié)合撥碼開(kāi)關(guān)和兩個(gè)按鍵就可以修改多個(gè)不同的參數(shù)了。系統(tǒng)中主要修改的參數(shù)有PID三個(gè)系數(shù)以及pitch和roll的偏移值等。此外撥碼開(kāi)關(guān)的不同狀態(tài)也可以決定OLED的參數(shù)顯示選擇。
2.11 無(wú)線通信
遙控上電初始化時(shí)首先執(zhí)行的是發(fā)送模式,此時(shí)飛控上的無(wú)線模塊執(zhí)行的是接收模式。只有通信成功之后遙控端和飛控端的無(wú)線模塊才會(huì)同時(shí)改變工作方式。
2.12 顯示刷新
遙控端的OLED顯示內(nèi)容有四旋翼飛行器的pitch、roll、yaw、水平姿態(tài)的偏移值、電池電壓以及一些調(diào)試參數(shù)等數(shù)據(jù)信息。在上文提及到的確定參數(shù)固定顯示,調(diào)試參數(shù)根據(jù)撥碼開(kāi)關(guān)的狀態(tài)來(lái)顯示。其中P、I、D三個(gè)參數(shù)的值是從飛控端接收回來(lái)的數(shù)據(jù),表示在調(diào)試時(shí)飛控上的參數(shù)修改成功。
串級(jí)的PID算法中相當(dāng)于有兩個(gè)控制器在控制飛行器,內(nèi)環(huán)控制角速度,外環(huán)控制角度,相對(duì)于只有一個(gè)PID控制器的單閉環(huán)算法來(lái)說(shuō)穩(wěn)定效果會(huì)更好。串級(jí)控制框圖如圖 5所示:
圖5 串級(jí)ID控制框圖
整定PID參數(shù)時(shí),首先整定內(nèi)環(huán)的參數(shù),采用PD控制,讓外環(huán)參數(shù)為0,內(nèi)環(huán)調(diào)整好之后再整定外環(huán)參數(shù)。整定內(nèi)環(huán)時(shí),飛行器起飛之后會(huì)慢慢朝一個(gè)方向傾斜,這是正常的,因?yàn)闆](méi)角度的反饋控制。當(dāng)傾斜速度比較慢的時(shí)候,就可以整定外環(huán)參數(shù)了,與此同時(shí),內(nèi)環(huán)比例適當(dāng)減小。外環(huán)采用比例控制。最終選擇內(nèi)環(huán)P=15,D=100,外環(huán)P=3,I=0,D=0,pitch和roll的控制參數(shù)一樣,偏航控制的比例相對(duì)大一點(diǎn)。在室內(nèi)外飛行時(shí)可以看到飛行器已經(jīng)得到了很好的控制效果。
四旋翼飛行器設(shè)計(jì)是一個(gè)比較綜合的項(xiàng)目,在設(shè)計(jì)與實(shí)施過(guò)程中遇到了很多問(wèn)題,花了大量的時(shí)間去做實(shí)驗(yàn)、反復(fù)驗(yàn)證,通過(guò)這一項(xiàng)目的設(shè)計(jì)與調(diào)試讓自己解決問(wèn)題的能力得到了一定的提升,理論知識(shí)也有了一定程度的增長(zhǎng)。
目前飛行器已經(jīng)實(shí)現(xiàn)了在角度不大的前提下進(jìn)行垂直升降、前、后、左、右的推進(jìn)飛行以及偏航運(yùn)動(dòng),在室內(nèi)有較好的穩(wěn)定性,但是在室外的抗風(fēng)能力不是很好。因?yàn)闀r(shí)間比較倉(cāng)促,本設(shè)計(jì)中沒(méi)有使用定高、定點(diǎn)等傳感器,沒(méi)有了這些硬件傳感器的支持,所以做不到懸停的飛行效果,在控制方向的時(shí)候飛行器的飛行高度會(huì)不穩(wěn)定。另外遙控器也是使用自己設(shè)計(jì)的硬件以及軟件,在使用過(guò)程中有可能可靠性不是很好,在人員密集的地方不能輕易使用以避免不必要的傷害。
[1] 呂強(qiáng),郭善亮,王冬來(lái),等.基于DSP四旋翼飛行器姿態(tài)控制系統(tǒng)硬件設(shè)計(jì)[J].計(jì)算機(jī)與數(shù)字工程,2011,39(7):145-156.
[2] 魏麗文.四旋翼飛行器控制系統(tǒng)設(shè)計(jì)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.
[3] 郭曉鴻,楊忠,楊成順,等.一種基于 STM32的四旋翼飛行器控制器[J].應(yīng)用科技,2011,38(7):35-40.
[4] 劉峰,呂強(qiáng),王國(guó)勝,等.四軸飛行器姿態(tài)控制系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2011,19(3):583-585.
[5] 楊明志,王敏.四旋翼微型飛行器控制系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制,2008(4):1671-4598.
[6] 劉建昌,關(guān)守平,周瑋,等.計(jì)算機(jī)控制系統(tǒng)化[M].北京:北京出版社,2009.
[7] 孟華.自動(dòng)控制原理[M].北京:機(jī)械工業(yè)出版社,2013.
[8] 孫洪程,李大字,翁維勤.過(guò)程控制工程[M].北京:高等教育出版社,2006.
[9] 劉軍.例說(shuō)STM32[M].北京:北京航空航天大學(xué)出版社, 2011.
[10] 譚浩強(qiáng).C程序設(shè)計(jì)教程[M].北京:清華大學(xué)出版社,2010.
The design and implementation of four-rotor aircraft
The main purpose of this design is to study the basic principle of the four-rotor aircraft, a four-rotor flight controller which is based on PID control algorithm. Aircrafts with STM32F103RCT6 minimum system are to be the main control unit. Inertial unit testing is applied to real-time attitude MPU6050, and complementary filtering fusion algorithm to posture correction. Besides, a dedicated remote control is designed for debugging. Added AP 2.4 G wireless module is used in wireless communication. Time-sharing multiplexing method of remote-controlled and flight-controlled communication is adopted to realize the data returning. Under the control of aircraft, hardware and software will debug and tune the PID parameters after successful test flight to achieve vertical remote-controlled flight and small-angled remote-controlled flight from front to back and left to right.
four-rotor aircraft; STM32; PID control algorithm; MPU6050; complementary filter
TP3
A
1008-1151(2016)09-0050-04
2016-08-11
陳世武,男,廣西人,桂林理工大學(xué)機(jī)械與控制工程學(xué)院自動(dòng)化專(zhuān)業(yè)學(xué)生;李海俠,女,黑龍江人,桂林理工大學(xué)機(jī)械與控制工程學(xué)院教師,副教授,研究方向?yàn)橄到y(tǒng)建模與仿真。