基于ucos-ii系統(tǒng)的四旋翼飛行器的設(shè)計(jì)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  畢業(yè)設(shè)計(jì)(論文)</b></p><p>  學(xué) 生: </p><p>  指導(dǎo)老師: 陳 興 武 老 師 </p><p>  院 系: 信息科學(xué)與工程學(xué)院 </p><

2、p>  專 業(yè): 電氣工程及其自動(dòng)化 </p><p>  班 級(jí): </p><p>  學(xué) 號(hào): </p><p><b>  2014年6月</b></p><p&

3、gt;<b>  1緒論1</b></p><p>  1.1研究的背景和意義1</p><p>  1.2研究現(xiàn)狀與發(fā)展2</p><p>  1.3研究?jī)?nèi)容3</p><p>  2姿態(tài)控制系統(tǒng)的總體方案設(shè)計(jì)3</p><p>  2.1姿態(tài)控制系統(tǒng)的架構(gòu)與方案比較3&

4、lt;/p><p>  2.1.1MCU的功能分析3</p><p>  2.1.2姿態(tài)信息采集傳感器的選型4</p><p>  2.1.3姿態(tài)控制方案的選擇4</p><p>  2.2姿態(tài)控制系統(tǒng)的總體設(shè)計(jì)7</p><p>  3硬件系統(tǒng)的設(shè)計(jì)8</p><p>  3.

5、1硬件的構(gòu)建8</p><p>  3.2基于STM32的飛控主板的電路設(shè)計(jì)9</p><p>  3.2.1電源模塊的設(shè)計(jì)9</p><p>  3.2.2FLASH模塊的設(shè)計(jì)10</p><p>  3.2.3接收機(jī)輸入PWM的設(shè)計(jì)10</p><p>  3.2.4控制電機(jī)PWM輸出信號(hào)的設(shè)

6、計(jì)10</p><p>  3.2.5JTAG編程接口的設(shè)計(jì)11</p><p>  3.2.6USB接口的設(shè)計(jì)11</p><p>  3.2.7MPU6000電路的設(shè)計(jì)12</p><p>  3.2.8電池電量檢測(cè)電路的設(shè)計(jì)12</p><p>  3.2.9指示燈的設(shè)計(jì)13</p&g

7、t;<p>  3.3主控電路PCB板的設(shè)計(jì)13</p><p>  4基于STM32的uC/OS-II系統(tǒng)設(shè)計(jì)13</p><p>  4.1系統(tǒng)軟件編譯環(huán)境的介紹與配置13</p><p>  4.2uC/OS-II系統(tǒng)的移植15</p><p>  4.3STM32整體配置15</p>&

8、lt;p>  4.3.1輸入/輸出管腳的配置16</p><p>  4.3.2串口的配置16</p><p>  4.3.3定時(shí)器輸出PWM的配置17</p><p>  4.3.4SPI接口驅(qū)動(dòng)程序設(shè)計(jì)18</p><p>  4.4uC/OS-II系統(tǒng)的任務(wù)劃分19</p><p>  

9、5四旋翼機(jī)的姿態(tài)控制程序設(shè)計(jì)19</p><p>  5.1姿態(tài)采集和解算的程序設(shè)計(jì)19</p><p>  5.1.1姿態(tài)信息的采集程序設(shè)計(jì)19</p><p>  5.1.2姿態(tài)信息的解算程序設(shè)計(jì)23</p><p>  5.2姿態(tài)控制的程序設(shè)計(jì)23</p><p>  5.2.1姿態(tài)控制的流

10、程23</p><p>  5.3姿態(tài)的PID控制程序設(shè)計(jì)24</p><p>  5.3.1姿態(tài)比例控制程序設(shè)計(jì)25</p><p>  5.3.2姿態(tài)積分控制程序設(shè)計(jì)25</p><p>  5.3.3姿態(tài)微分控制程序設(shè)計(jì)25</p><p>  5.3.4姿態(tài)的控制機(jī)制26</p>

11、;<p><b>  6系統(tǒng)調(diào)試26</b></p><p>  6.1系統(tǒng)的硬件調(diào)試26</p><p>  6.2軟件調(diào)試28</p><p>  6.3總體測(cè)試結(jié)果30</p><p><b>  7設(shè)計(jì)總結(jié)35</b></p><p>

12、;<b>  致謝36</b></p><p><b>  參考文獻(xiàn)37</b></p><p>  附錄1 bsp.c和bsp.h添加的程序清單38</p><p>  附錄2 SPI的寫指令程序清單38</p><p>  附錄3 SPI的讀指令程序清單39</p>&

13、lt;p>  附錄4 姿態(tài)控制的PID程序清單39</p><p>  附錄5 飛控板的原理圖41</p><p>  附錄6 飛控板的PCB42</p><p>  附錄7 飛控板的實(shí)物圖42</p><p>  附錄8 組裝好的四翼飛行器實(shí)物圖43</p><p>  基于ARM CORTEX 處理

14、器的四旋翼機(jī)的姿態(tài)控制系統(tǒng)設(shè)計(jì)</p><p><b>  摘 要</b></p><p>  本文采用一種基于ARM CORTEX處理器的uC/OS-II實(shí)時(shí)操作的四旋翼機(jī)姿態(tài)控制系統(tǒng),分析了飛控系統(tǒng)的要求和性能指標(biāo),設(shè)計(jì)了四旋翼機(jī)姿態(tài)控制系統(tǒng)的硬件結(jié)構(gòu)的整體框架,包括電源模塊、flash模塊、輸入和輸出PWM、JTAG和USB模塊、姿態(tài)采集模塊、電池電量的檢測(cè)設(shè)計(jì)

15、等;軟件的總體設(shè)計(jì),包括系統(tǒng)的移植,姿態(tài)信息的采集,四元數(shù)的轉(zhuǎn)換,軟件的流程等;對(duì)uC/OS-II進(jìn)行任務(wù)劃分與優(yōu)先級(jí)的規(guī)劃,將系統(tǒng)分成了以下任務(wù):姿態(tài)解算和控制任務(wù)、數(shù)據(jù)采集(A/D)任務(wù)、遙控任務(wù)、LED指示任務(wù)、電壓檢測(cè)和警報(bào)任務(wù)等。對(duì)ARM CORTEX處理器的四旋翼機(jī)的姿態(tài)控制系統(tǒng)做出了詳細(xì)的論證。</p><p>  最后對(duì)硬件和軟件的在上位機(jī)上進(jìn)行仿真與調(diào)試的結(jié)果進(jìn)行分析,并進(jìn)行了飛行器的實(shí)際飛行控

16、制,印證了本設(shè)計(jì)的姿態(tài)控制系統(tǒng)的可行性。</p><p>  關(guān)鍵詞: 四旋翼機(jī)、uC/OS-II、姿態(tài)控制、ARM</p><p><b>  ABSTRACT</b></p><p>  This paper presents uC/OS-II real-time operating system based on ARM CORTEX p

17、rocessor for four rotorcraft attitude control system, analyzed the requirements and performance indicators of the flight control system, designed four rotorcraft attitude control system hardware configuration overall fra

18、mework, including power modules, flash modules, input and output PWM, JTAG and USB modules, attitude acquisition module, the design of battery level detection; software overall design, including the syst</p><p

19、>  Finally , through the results of simulation and debugging of hardware and software for analysis, and doing the actual aircraft flight control , confirms the feasibility of the design of the attitude control system

20、.</p><p>  Keywords: Four rotorcraft, uC / OS-II, attitude control, ARM</p><p><b>  緒論</b></p><p><b>  研究的背景和意義</b></p><p>  從20世紀(jì)30年代以來(lái),隨著航空技術(shù)的

21、不斷發(fā)展,小型無(wú)人機(jī)憑借其質(zhì)量輕,體積小,操作方便靈活,噪聲小,隱蔽性能好等優(yōu)越性能在軍用和民用領(lǐng)域中占據(jù)著舉足輕重的地位,在民用領(lǐng)域中,無(wú)人機(jī)可以實(shí)現(xiàn)森林防火,監(jiān)控監(jiān)測(cè)、地震救災(zāi)、實(shí)地考察、攝像測(cè)繪;在軍用領(lǐng)域中無(wú)人機(jī)主要運(yùn)用于軍事偵察、目標(biāo)追蹤、武器實(shí)驗(yàn)等。無(wú)人機(jī)的運(yùn)用和影響范圍正在不斷擴(kuò)大,使得無(wú)人機(jī)的發(fā)展受到各個(gè)國(guó)家的廣泛關(guān)注。目前,不少世界先進(jìn)國(guó)家已經(jīng)大力支持和投入無(wú)人機(jī)的研究和開發(fā)之中[1]。</p><

22、p>  四旋翼飛行器是通過(guò)四個(gè)螺旋槳的高速旋轉(zhuǎn),產(chǎn)生向上的推力,推動(dòng)機(jī)身直升飛行的典型的無(wú)人機(jī)。四旋翼飛行器可以通過(guò)改變每個(gè)轉(zhuǎn)子的相對(duì)速度進(jìn)而改變推力,從而對(duì)整個(gè)機(jī)身的位置和方向進(jìn)行控制。從四旋翼無(wú)人機(jī)的結(jié)構(gòu)來(lái)看,它具有外形新穎、結(jié)構(gòu)簡(jiǎn)單、靈活飛行、體積微小輕便等特點(diǎn),和傳統(tǒng)的固定翼相比,它以其獨(dú)特的飛行控制方式,可以靈活的垂直起降,具有較強(qiáng)的機(jī)動(dòng)性能、噪聲小、盤旋能力好、安全性能強(qiáng)、可潛伏性好等優(yōu)點(diǎn)。所以說(shuō)無(wú)論在目前的軍事還是民

23、用領(lǐng)域中四旋翼機(jī)都有廣闊的應(yīng)用前景[2]。</p><p>  四旋翼飛行器控制系統(tǒng)的核心部分是飛控處理器的內(nèi)核和飛控系統(tǒng)的軟件,目前,四旋翼飛控系統(tǒng)正不斷向小型化和高精度的方向發(fā)展。ARM CORTEX-M3是一種基于ARM7架構(gòu)的新型的ARM內(nèi)核。STM32系列微控制器是ST公司最新開發(fā)的以性能強(qiáng)大的ARM Cortex-M3為內(nèi)核的高性能和低能耗的32位RISC處理器。它已經(jīng)大幅提升了中斷響應(yīng)速度,并具有集

24、成度高和開發(fā)性強(qiáng)等特點(diǎn)??梢?jiàn)ARM CORTEX-M3內(nèi)核是一種體積小、可嵌入的計(jì)算機(jī)內(nèi)核,它控制精度高、處理速度快、能夠適應(yīng)復(fù)雜的外界環(huán)境,符合四旋翼飛控系統(tǒng)的發(fā)展趨勢(shì)[3]。</p><p>  μC/OS-Ⅱ是一種基于搶占式優(yōu)先級(jí)的硬件內(nèi)核。它屬于一個(gè)完整的、可裁剪、可固化、可移植的搶占式多任務(wù)內(nèi)核,它包含任務(wù)調(diào)度,任務(wù)管理、內(nèi)存管理、時(shí)間管理和任務(wù)間的同步與通信等基本功能。本設(shè)計(jì)提出基于μC/OS-Ⅱ系統(tǒng)

25、的ARM CORTEX處理器的四軸旋翼機(jī)姿態(tài)控制系統(tǒng),旨在設(shè)計(jì)一款靈活性好、可擴(kuò)展的嵌入式飛控系統(tǒng)。靈活性好要求系統(tǒng)開發(fā)軟件在不同的硬件平臺(tái)上方便移植;可擴(kuò)展性良好則要求系統(tǒng)具有較多的通信接口和良好的模塊性,為今后的升級(jí)和開發(fā)做好相應(yīng)的基礎(chǔ)。該系統(tǒng)硬件結(jié)構(gòu)簡(jiǎn)單,并且具有模塊化的軟件平臺(tái)、清晰調(diào)理的任務(wù)管理、性能穩(wěn)定等優(yōu)點(diǎn),因此具有較強(qiáng)的理論和實(shí)踐價(jià)值[4]。</p><p><b>  研究現(xiàn)狀與發(fā)展&

26、lt;/b></p><p>  近年來(lái),四軸飛行器受到國(guó)內(nèi)外許多科研機(jī)構(gòu)的濃厚興趣,四軸飛行器是一個(gè)智能控制學(xué)、空氣動(dòng)力學(xué)等融合了多領(lǐng)域研究課題,在短短的幾年內(nèi)已經(jīng)取得了相對(duì)較大的進(jìn)步。但是,在國(guó)內(nèi),四旋翼飛行器的發(fā)展還正處于初級(jí)階段,四旋翼飛行器的開發(fā)缺乏經(jīng)驗(yàn)和核心技術(shù),并且在專業(yè)領(lǐng)域當(dāng)中尚未能得到大批量的生產(chǎn)。因此我們有必要投入更多的精力和人力到四旋翼飛行器的開發(fā)當(dāng)中。</p><

27、p>  美國(guó)麻省理工大學(xué)的 Jonathan P. How 教授帶領(lǐng) ACL (aeronautical computer laboratory)團(tuán)隊(duì)研制的DraganFlyer II 型四旋翼飛行器,他們運(yùn)用的是自主設(shè)計(jì)的可以實(shí)時(shí)室內(nèi)自動(dòng)駕駛無(wú)人機(jī)測(cè)試的RAVEN 系統(tǒng)。其主要目的是通過(guò)地面站對(duì)多臺(tái)無(wú)人機(jī)實(shí)現(xiàn)陣列操控。他們利用 IMU 慣性測(cè)量原件對(duì)飛行器進(jìn)行各個(gè)姿態(tài)的測(cè)量,利用激光掃描陣列來(lái)感知周圍的環(huán)境,規(guī)劃和重建飛行的航線

28、。目前,此項(xiàng)目已經(jīng)完成了室內(nèi)多臺(tái)無(wú)人機(jī)陣列的目標(biāo)連續(xù)搜索、追蹤、多機(jī)編隊(duì)飛行等實(shí)驗(yàn),該技術(shù)已經(jīng)處在世界的領(lǐng)先水平[5]。</p><p>  美國(guó)斯坦福大學(xué)的 Tomlin 教授領(lǐng)導(dǎo)的混合動(dòng)力系統(tǒng)實(shí)驗(yàn)室研制了Draganflyer III 飛行器,他們采用的是基于兩片 PIC186520 單片機(jī)的STARMAC系統(tǒng),第一代飛行器由于處理器控制速度和精度一般,所以無(wú)法實(shí)現(xiàn)高級(jí)的控制算法,第二代的基于 STARMAC

29、 系統(tǒng)的四旋翼飛行器,配備6軸IMU測(cè)量單元和 GPS導(dǎo)航實(shí)現(xiàn)對(duì)飛行器姿態(tài)和位置等信息的采集。目前,該團(tuán)隊(duì)已致力于飛行器的高級(jí)應(yīng)用控制[6]。</p><p>  北京中國(guó)航空航天大學(xué)自動(dòng)化科學(xué)與電氣工程學(xué)院的胡金輝與袁少?gòu)?qiáng)研制了基于ATMEGA128單片機(jī)的四旋翼飛行控制系統(tǒng),ATMEGA128是ATMEL公司研發(fā)的8位AVR 微處理器,它通過(guò)擴(kuò)展一些必要的外圍電路,具有較高的性價(jià)比和集成度,但是由于ATMEG

30、A128是8位AVR單片機(jī),其處理速度和處理精度都有待提高[7]。</p><p>  哈爾濱工業(yè)大學(xué)設(shè)計(jì)的基于嵌入式處理器 S3C44BOX 的μC/OS-Ⅱ無(wú)人機(jī)控制系統(tǒng), μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)將各個(gè)任務(wù)模塊通過(guò)進(jìn)行調(diào)度管理的形式組合成一個(gè)緊密結(jié)合的整體。整個(gè)飛控系統(tǒng)性能可靠,具有一定的擴(kuò)展性,可移植性好,適應(yīng)不同的應(yīng)用需求,滿足了對(duì)無(wú)人機(jī)飛行控制系統(tǒng)小型化、低功耗、實(shí)時(shí)性的要求[8]。</p&g

31、t;<p><b>  研究?jī)?nèi)容</b></p><p>  為了適應(yīng)四旋翼飛行器系統(tǒng)的穩(wěn)定性和精確度,要求飛控系統(tǒng)的設(shè)計(jì)必須要思路新穎,算法清晰簡(jiǎn)潔,必須追求在軟件和硬件上進(jìn)行突破、創(chuàng)新。本課題采用實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ,主要是考慮到了μC/OS-Ⅱ具有固定優(yōu)先級(jí)和搶占式的調(diào)度方法,其價(jià)格便宜,是一個(gè)免費(fèi)的、開源的實(shí)時(shí)嵌入式內(nèi)核,提供了實(shí)時(shí)系統(tǒng)所需的基本功能。其核心代碼占

32、用的內(nèi)存少、且可裁剪,可移植性好,可謂短小精悍。用uCOS-II系統(tǒng)開發(fā)四軸飛行器的姿態(tài)控制,其開發(fā)簡(jiǎn)便,算法精簡(jiǎn),實(shí)時(shí)性能好,多任務(wù)處理,可以對(duì)四軸飛行器的姿態(tài)控制更加及時(shí),精準(zhǔn),而且uCOS-II隨著近些年的發(fā)展,已經(jīng)相對(duì)比較穩(wěn)定了,2000年7月,uCOS-II在一個(gè)航空項(xiàng)目中得到了美國(guó)聯(lián)邦航空管理局對(duì)商用飛機(jī)的符合RTCA DO-178B標(biāo)準(zhǔn)的認(rèn)證[9],可以說(shuō),uCOS-II的每一種功能,每一個(gè)函數(shù)及每一行代碼都已經(jīng)經(jīng)過(guò)各種考

33、驗(yàn)和測(cè)試了,用在四旋翼飛行器上,其安全性和可靠性將更加高。在已有的S3C44BOX 的無(wú)人機(jī)控制系統(tǒng)上,本課題采用ARM CORTEX-M3處理器,ARM CORTEX-M3具有72MHz最高主頻,具有高達(dá)1MB的片內(nèi)閃存,兼具馬達(dá)控制、US</p><p>  飛行器的俯仰及橫滾角度信息是小型無(wú)人機(jī)姿態(tài)控制的重要參數(shù),這些參數(shù)的采集與處理是無(wú)人機(jī)平穩(wěn)飛行控制的關(guān)鍵。本課題主要掌握6軸運(yùn)動(dòng)檢測(cè)單元MPU6000及

34、ARM處理器的應(yīng)用技術(shù),結(jié)合uCOS-II系統(tǒng)的使用,實(shí)現(xiàn)無(wú)人機(jī)的角速率、加速度等信息的采集,結(jié)合相關(guān)的信息處理技術(shù)解算出無(wú)人機(jī)的俯仰、滾轉(zhuǎn)等角度;根據(jù)該飛行參數(shù),反饋控制四軸旋翼舵量,實(shí)現(xiàn)無(wú)人機(jī)的平穩(wěn)飛行。</p><p>  姿態(tài)控制系統(tǒng)的總體方案設(shè)計(jì)</p><p>  姿態(tài)控制系統(tǒng)的架構(gòu)與方案比較</p><p>  四旋翼飛行器姿態(tài)控制系統(tǒng)的總體架構(gòu)必須要

35、有傳感器以及MCU等器件組成。傳感器負(fù)責(zé)四旋翼飛行器飛行姿態(tài)信息的采集并轉(zhuǎn)換成電信號(hào)以便和MCU進(jìn)行通信;MCU負(fù)責(zé)采集傳感器的輸出信號(hào),并將采集進(jìn)來(lái)的電信號(hào)轉(zhuǎn)換成可用的變量,并通過(guò)讀取的變量對(duì)四旋翼飛行器進(jìn)行智能化控制。</p><p><b>  MCU的功能分析</b></p><p>  (1) 采用ATMEGA2560單片機(jī)作為四旋翼飛行器姿態(tài)控制系統(tǒng)的MC

36、U,該單片機(jī)擁有系統(tǒng)編程的片上引導(dǎo)程序、JTAG接口、廣泛的片上調(diào)試支持、兩個(gè)具有獨(dú)立預(yù)分頻器和比較模式的8位定時(shí)器、4個(gè)8位PWM輸出通道、主/從SPI串行接口。從ATMEGA2560的特點(diǎn)來(lái)看,它適合外接多種傳感器、處理速度較高,在國(guó)外,運(yùn)用ATMEGA2560單片機(jī)為核心的APM飛控系統(tǒng)已經(jīng)做得相對(duì)成熟。但是,ATMEGA2560需要用5V電壓供電,功耗相對(duì)較大,并且它是8位單片機(jī),處理精度還不夠高。</p><

37、;p>  (2) 采用ST公司基于ARM CORTEX-M3內(nèi)核為嵌入式開發(fā)領(lǐng)域?qū)iT推出的STM32微處理器作為四旋翼飛行器的姿態(tài)控制系統(tǒng)的MCU。本設(shè)計(jì)采用的是STM32f103VCT6,該單片機(jī)包含JTAG、 2個(gè)16位的輸入捕捉,輸出比較以及PWM輸出通道的定時(shí)器、2個(gè)16位看門狗定時(shí)器、3 SPI/I2S、2個(gè)I2C、5個(gè)USART、USB 2.0全速接口、2個(gè)12位D/ A轉(zhuǎn)換器、快速I/ O端口,并且該單片機(jī)是32位C

38、ortex-M3的微控制器,控制精度較高,只需用3.3V供電,功耗較低,STM32還包含一個(gè)SysTick的計(jì)時(shí)器,方便作為uCOS-II的時(shí)鐘源,且基于ARM CORTEX-M3處理器的姿態(tài)控制系統(tǒng)還處在發(fā)展階段,所以選擇STM32微處理器作為四旋翼飛行器姿態(tài)控制系統(tǒng)的MCU具有一定的優(yōu)越性能和發(fā)展前景。</p><p>  姿態(tài)信息采集傳感器的選型</p><p>  (1)采用MPU

39、6050三軸陀螺儀、三軸加速度的六軸慣性測(cè)量元件。MPU6050集成了3個(gè)16位ADC用于陀螺儀的數(shù)字化輸出和另外3個(gè)16位ADC用于加速度計(jì)的數(shù)字化輸出,該慣性測(cè)量元件還集成了一個(gè)低通濾波器和DMP數(shù)字運(yùn)動(dòng)處理器,可將測(cè)量出來(lái)的角速度和角加速度直接轉(zhuǎn)化成四元數(shù)輸出。MPU6050運(yùn)用的是I2C總線進(jìn)行數(shù)據(jù)通信,通信的速度可達(dá)500kHz以內(nèi)。</p><p>  (2)采用MPU6000六軸慣性測(cè)量元件。相比之

40、下,MPU6000集成了MPU6050所有功能,除此之外,它還可以通過(guò)SPI和主機(jī)進(jìn)行通信,通信的速率最大可達(dá)1MHz,更方便四旋翼飛行器的姿態(tài)信息的及時(shí)傳輸。</p><p>  綜上所述:本設(shè)計(jì)采用STM32f103VCT6為核心通過(guò)SPI的通信方式和MPU6000慣性測(cè)量元件進(jìn)行通信,來(lái)采集四旋翼飛行器的姿態(tài)信息進(jìn)而對(duì)飛行器的姿態(tài)進(jìn)行控制。</p><p><b>  姿態(tài)

41、控制方案的選擇</b></p><p>  四旋翼飛行器是通過(guò)主控板輸出的四路PWM來(lái)驅(qū)動(dòng)電調(diào),進(jìn)而去驅(qū)動(dòng)四路電機(jī)的帶動(dòng)兩對(duì)正反螺旋槳高速旋轉(zhuǎn),來(lái)實(shí)現(xiàn)機(jī)體的垂直運(yùn)動(dòng)、俯仰運(yùn)動(dòng)、滾轉(zhuǎn)運(yùn)動(dòng)、偏航運(yùn)動(dòng)、前后運(yùn)動(dòng)、側(cè)向運(yùn)動(dòng)等基本的6個(gè)自由度的飛行動(dòng)作。目前,四旋翼飛行器的類型有“十”型飛行器和“X”型飛行器。</p><p>  (1) “十”型飛行器</p><p

42、>  1) “十”型飛行器的飛行原理</p><p>  如下圖所示,是“十”型四旋翼飛行器控制四路電機(jī),確保姿態(tài)的平穩(wěn)的原理:</p><p><b>  圖2-1 垂直運(yùn)動(dòng)</b></p><p><b>  圖2-2 俯仰運(yùn)動(dòng)</b></p><p><b>  圖2-3滾轉(zhuǎn)運(yùn)

43、動(dòng)</b></p><p><b>  圖2-4偏航運(yùn)動(dòng)</b></p><p>  “十”型飛行器垂直起飛時(shí),兩個(gè)對(duì)角的電機(jī)同向旋轉(zhuǎn),相鄰的電機(jī)反向旋轉(zhuǎn),剛好平衡電機(jī)對(duì)機(jī)身的反扭矩,當(dāng)四旋翼飛行器四個(gè)電機(jī)轉(zhuǎn)速增加時(shí),相應(yīng)的總的向上的拉力也增加,當(dāng)向上的拉力大于自身的重力時(shí),四旋翼飛行器就垂直起飛了;當(dāng)飛行器要執(zhí)行俯仰運(yùn)動(dòng),只要將電機(jī)1的轉(zhuǎn)速增加,將電機(jī)3

44、的轉(zhuǎn)速下降,整個(gè)機(jī)身就會(huì)往Y軸旋轉(zhuǎn)角方向運(yùn)動(dòng);同樣,增加電機(jī)4的轉(zhuǎn)速減少電機(jī)2的轉(zhuǎn)速可以實(shí)現(xiàn)滾轉(zhuǎn)運(yùn)動(dòng);同時(shí)增加電機(jī)1和電機(jī)3的轉(zhuǎn)速,減少電機(jī)2和電機(jī)4的轉(zhuǎn)速可以實(shí)現(xiàn)機(jī)身的偏航運(yùn)動(dòng);當(dāng)圖2-2和圖2-3,當(dāng)飛行器實(shí)現(xiàn)俯仰運(yùn)動(dòng)或者滾轉(zhuǎn)運(yùn)動(dòng)的時(shí)候,垂直飛行器的向上的拉力產(chǎn)生一個(gè)水平的分量,可以實(shí)現(xiàn)前后運(yùn)動(dòng)和側(cè)向運(yùn)動(dòng)。</p><p>  2) “十”型飛行器的特點(diǎn)</p><p>  從上面的分

45、析不難看出,“十”型飛行器的飛行靈活,可以運(yùn)動(dòng)的方向角度范圍較大,可以實(shí)現(xiàn)較為復(fù)雜的運(yùn)動(dòng),但是,在控制機(jī)身平穩(wěn)飛行時(shí),只有一對(duì)電機(jī)控制運(yùn)動(dòng)方向,另外一對(duì)電機(jī)起平衡飛行的作用,所以“十”型飛行器的姿態(tài)控制比較不穩(wěn)定。</p><p>  (2) “X” 型飛行器</p><p>  1) “X” 型飛行器的控制原理</p><p>  如下圖所示,是“十”型四旋翼飛行

46、器控制四路電機(jī),確保姿態(tài)的平穩(wěn)的原理:</p><p><b>  圖2-5 垂直運(yùn)動(dòng)</b></p><p><b>  圖2-6 俯仰運(yùn)動(dòng)</b></p><p><b>  圖2-7 滾轉(zhuǎn)運(yùn)動(dòng)</b></p><p><b>  圖2-8 偏航運(yùn)動(dòng)</b&

47、gt;</p><p>  “X”型飛行器垂直運(yùn)動(dòng)和“十”型飛行器的原理一樣,當(dāng)飛行器要執(zhí)行俯仰運(yùn)動(dòng),將電機(jī)1和電機(jī)2的轉(zhuǎn)速同時(shí)增加,將電機(jī)3和電機(jī)4的轉(zhuǎn)速下降,整個(gè)機(jī)身就會(huì)往Y軸旋轉(zhuǎn)角方向運(yùn)動(dòng);同樣,增加電機(jī)2和電機(jī)4的轉(zhuǎn)速減少電機(jī)1和電機(jī)3的轉(zhuǎn)速可以實(shí)現(xiàn)滾轉(zhuǎn)運(yùn)動(dòng);同時(shí)增加電機(jī)1和電機(jī)4的轉(zhuǎn)速,減少電機(jī)2和電機(jī)3的轉(zhuǎn)速可以實(shí)現(xiàn)機(jī)身的偏航運(yùn)動(dòng);當(dāng)圖2-6和圖2-7,當(dāng)飛行器實(shí)現(xiàn)俯仰運(yùn)動(dòng)或者滾轉(zhuǎn)運(yùn)動(dòng)的時(shí)候,垂直飛行

48、器的向上的拉力產(chǎn)生一個(gè)水平的分量,可以實(shí)現(xiàn)前后運(yùn)動(dòng)和側(cè)向運(yùn)動(dòng)。</p><p>  2) “X” 型飛行器的特點(diǎn)</p><p>  “X” 型飛行器相對(duì)于“十”型飛行器而言,可以運(yùn)動(dòng)的方向角度相對(duì)較小,但是在控制姿態(tài)上,飛行器的四個(gè)電機(jī)不僅其平衡機(jī)身的作用,在控制方向角上,四個(gè)電機(jī)也同時(shí)起作用,所以“X”型飛行器的姿態(tài)控制會(huì)更加穩(wěn)定。</p><p>  綜上所述

49、,本設(shè)計(jì)選擇“X”型飛行器的姿態(tài)控制方案。</p><p>  姿態(tài)控制系統(tǒng)的總體設(shè)計(jì)</p><p>  四旋翼飛行器姿態(tài)控制系統(tǒng)的控制過(guò)程復(fù)雜,信息量大,邏輯復(fù)雜,時(shí)序繁多,有較高的試試性要求。實(shí)現(xiàn)四旋翼飛行器飛行的高度平穩(wěn)和控制及時(shí)是本設(shè)計(jì)的主要目的。四旋翼飛行器姿態(tài)控制系統(tǒng)的所有功能可以看作是MCU對(duì)運(yùn)動(dòng)檢測(cè)單元輸入信息采樣,經(jīng)處理后,將控制信息偏移反饋到電機(jī),實(shí)現(xiàn)機(jī)身的智能化調(diào)節(jié)

50、的過(guò)程。所以四旋翼飛行器姿態(tài)控制系統(tǒng)的總體設(shè)計(jì)應(yīng)該包括以下幾個(gè)方面:</p><p>  (1) 硬件的驅(qū)動(dòng) 硬件的驅(qū)動(dòng)目的是為了完成四旋翼飛行器硬件動(dòng)作所涵蓋的所有功能。本設(shè)計(jì)采用了STM32定時(shí)器輸出四個(gè)PWM信號(hào)來(lái)驅(qū)動(dòng)電機(jī),通過(guò)外部中斷的采集來(lái)采集遙控模塊的輸入PWM,通過(guò)系統(tǒng)自帶的SPI來(lái)驅(qū)動(dòng)慣性測(cè)量單元MPU6000,通過(guò)AD采集功能來(lái)實(shí)現(xiàn)對(duì)電池電量的管理等。</p><p>

51、  (2) 姿態(tài)信息處理 </p><p>  通過(guò)硬件驅(qū)動(dòng)IMU慣性測(cè)量單元,采集慣性測(cè)量單元輸出的姿態(tài)數(shù)據(jù)并進(jìn)行處理,轉(zhuǎn)換成姿態(tài)控制系統(tǒng)所能識(shí)別的橫滾角、俯仰角和偏航角。本設(shè)計(jì)采用四元數(shù)法,通過(guò)慣性測(cè)量元件采集的當(dāng)前飛行器的三軸加速度和角速度,轉(zhuǎn)化為四維向量,再做相應(yīng)的線性變換后輸出,利用四元數(shù)與歐拉角的關(guān)系,將四元數(shù)轉(zhuǎn)換為相應(yīng)的歐拉角就得到飛行器的的姿態(tài)。</p><p><

52、b>  (3)擴(kuò)展模塊 </b></p><p>  為了以后的發(fā)展,還必須考慮到相應(yīng)的外接接口和集成度的問(wèn)題,本設(shè)計(jì)增加了集成在飛控板上的GPS模塊、data falsh、氣壓傳感器接口、電子羅盤接口等。</p><p>  (4)姿態(tài)調(diào)節(jié)的方法 </p><p>  對(duì)于四旋翼姿態(tài)的控制,本設(shè)計(jì)采用的是典型的控制理論中的PID控制,利用期望

53、姿態(tài)和當(dāng)前姿態(tài)的偏差,通過(guò)PID控制作用輸出不同的四路PWM信號(hào)來(lái)驅(qū)動(dòng)電機(jī),讓飛行器自我調(diào)節(jié)姿態(tài)直到滿足當(dāng)前的姿態(tài)與期望姿態(tài)的偏差為0為止。</p><p><b>  (5)任務(wù)管理 </b></p><p>  μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)姿態(tài)控制系統(tǒng)的關(guān)鍵就是任務(wù)的劃分,本設(shè)計(jì)可以將控制系統(tǒng)分為調(diào)度管理任務(wù)、數(shù)據(jù)采集(包括IMU姿態(tài)測(cè)量單元數(shù)據(jù)的采集和電池電量的

54、AD采集)、遙控任務(wù)、姿態(tài)調(diào)整等按照不同的優(yōu)先級(jí)分配管理任務(wù)。</p><p><b>  硬件系統(tǒng)的設(shè)計(jì)</b></p><p>  硬件系統(tǒng)的構(gòu)造首先必須要綜合考慮STM32自身的配置及其各個(gè)管腳的功能、復(fù)用功能的調(diào)用、各個(gè)芯片可靠的供電電流及其安全保護(hù)措施,又要考慮到IMU姿態(tài)傳感器的管腳需求,同時(shí)還要考慮充分利用STM32的資源,盡可能多的將功能口線外引出來(lái)為

55、后面的開發(fā)和調(diào)試做好準(zhǔn)備。</p><p><b>  硬件的構(gòu)建</b></p><p>  為了讓四旋翼飛行器平穩(wěn)、安全、可靠的飛行,硬件電路必須要小型化、低功耗。在四旋翼飛行器飛行器過(guò)程中,姿態(tài)調(diào)節(jié)是一個(gè)高速調(diào)節(jié)的控制過(guò)程,就要求測(cè)量變量的敏感元件反應(yīng)速度快,在飛行過(guò)程中,為了讓飛控系統(tǒng)更安全起見(jiàn),我們要對(duì)電池電量實(shí)時(shí)關(guān)注,并返回給MCU,讓MCU可以進(jìn)行一些安

56、全性處理,硬件的總體結(jié)構(gòu)如圖所示:</p><p>  圖3-1 硬件的總體框圖</p><p>  基于STM32的飛控主板的電路設(shè)計(jì)</p><p>  本飛控主板采用的是ST公司的基于ARM CORTEX內(nèi)核的型號(hào)為STM32VCT6為核心處理器。同時(shí)為了以后的發(fā)展需要,還將系統(tǒng)內(nèi)部的IO端口,系統(tǒng)中的SPI總線、I2C總線和多余的串口線外引出來(lái),提高了飛控主

57、板的用途和利用率。</p><p><b>  電源模塊的設(shè)計(jì)</b></p><p>  圖3-2 電源模塊的設(shè)計(jì)</p><p>  主板電路的電源采用TPS79133開關(guān)型穩(wěn)壓電源。當(dāng)使能引腳EN置零是,芯片開始正常工作,輸出穩(wěn)定的3.3V電壓供主板工作,輸入端為5V電壓,當(dāng)P1跳線帽短接的時(shí)候,5V電壓可以從電調(diào)中引過(guò)來(lái);當(dāng)P1跳線帽斷

58、開的時(shí)候,5V電壓需要從電池經(jīng)過(guò)UBEC穩(wěn)壓轉(zhuǎn)換成5V接入到輸入端,同時(shí)為了整塊主板的工作安全可靠,在輸入端加了可以自動(dòng)恢復(fù)型保險(xiǎn)絲(F1)和5V穩(wěn)壓二極管(D3)。</p><p>  FLASH模塊的設(shè)計(jì)</p><p>  圖3-3 FLASH模塊的設(shè)計(jì)</p><p>  STM32本身具有較大的存儲(chǔ)單元,但是為了以后主板能夠運(yùn)行各種不同的系統(tǒng),采用SPI通

59、信的AT45DB161D芯片,該芯片體積小,內(nèi)存大,有4096頁(yè)的每頁(yè)包含528字節(jié)的存儲(chǔ)單元,傳輸速度快,最大可達(dá)66Mhz的傳輸速度,很適合主板的內(nèi)存外擴(kuò)。</p><p>  接收機(jī)輸入PWM的設(shè)計(jì)</p><p>  圖3-4 輸入PWM的設(shè)計(jì)</p><p>  接收機(jī)輸入PWM的接口占用八個(gè)STM32的IO接口,該接口可以外接一個(gè)接收器用來(lái)接收遙控器的信

60、號(hào),通過(guò)接收到遙控器發(fā)射出來(lái)的PWM信號(hào)不同的占空比對(duì)飛行器進(jìn)行各個(gè)方向的控制。</p><p>  控制電機(jī)PWM輸出信號(hào)的設(shè)計(jì)</p><p>  圖3-5 輸出PWM電路的設(shè)計(jì)</p><p>  控制電機(jī)的PWM輸出信號(hào)占用了STM32的定時(shí)器1四個(gè)輸出PWM輸出接口和定時(shí)器3的四個(gè)輸出PWM輸出接口,每個(gè)接口的輸出經(jīng)過(guò)電阻電容的濾波使得波形更加穩(wěn)定,然后將

61、該接口接到電調(diào),通過(guò)電調(diào)去驅(qū)動(dòng)四個(gè)電機(jī),控制飛行器的飛行。</p><p>  JTAG編程接口的設(shè)計(jì)</p><p>  圖3-6 JTAG編程接口的設(shè)計(jì)</p><p>  該端口用于PC機(jī)和主板進(jìn)行通信,用戶可以在PC機(jī)上編程,并將軟件程序(即HEX文件)通過(guò)JTAG接口下載到STM32中,并通過(guò)MDK編譯環(huán)境對(duì)主板進(jìn)行在線調(diào)試,可以實(shí)時(shí)監(jiān)測(cè)程序的每一個(gè)參數(shù)

62、的值,為了對(duì)管腳起到保護(hù),對(duì)于該電平拉高的管腳都增加上拉電阻進(jìn)行限流保護(hù)。為了節(jié)約空間,主板只引出了一個(gè)接地信號(hào),用戶可以將JTAG進(jìn)行修改,將所有的JTAG的接地信號(hào)都同這根引腳進(jìn)行短接,不影響JTAG的功能。</p><p><b>  USB接口的設(shè)計(jì)</b></p><p>  圖3-7 USB接口的設(shè)計(jì)</p><p>  將STM3

63、2的USB接口引出來(lái),可以方便用戶進(jìn)行下載程序,同時(shí)該接口采用通用的迷你USB,使得主板和PC機(jī)的通信更加高速及時(shí),而且更加方便用戶的操作。由于USB是高速信號(hào),所以在布線的時(shí)候必須要注意PA11和PA12兩條線必須是差分等長(zhǎng)線路。</p><p>  MPU6000電路的設(shè)計(jì)</p><p>  圖3-8 MPU6000接口的設(shè)計(jì)</p><p>  MPU600

64、0姿態(tài)測(cè)量傳感器的電路接口的設(shè)計(jì)是本設(shè)計(jì)的關(guān)鍵,MPU6000支持I2C總線和SPI總線的通信,采用SPI的通信可以更加及時(shí)的將姿態(tài)信息傳輸給STM32,以便STM32更加及時(shí)的對(duì)姿態(tài)進(jìn)行處理。為了充分發(fā)揮MPU6000的各個(gè)功能,將MPU的I2C總線外接出來(lái),以便外接一個(gè)磁力傳感器作為從設(shè)備,將FSYNC幀同步引腳接到單片機(jī)上,并將數(shù)據(jù)中斷產(chǎn)生引腳也引到單片機(jī)上,用戶可以自由運(yùn)用MPU6000的所有功能。</p><

65、;p>  電池電量檢測(cè)電路的設(shè)計(jì)</p><p>  圖3-9 電池電量檢測(cè)電路的設(shè)計(jì)</p><p>  電池電量的檢測(cè)包括電壓的檢測(cè)和電流的檢測(cè)。如圖,接線端子P18和P19用來(lái)接電池用的,電池電壓經(jīng)過(guò)R58和R59兩個(gè)電阻進(jìn)行分壓之后通過(guò)PC2引到單片機(jī)的ADC通道,單片機(jī)通過(guò)該路的AD采集就能測(cè)出電池電壓;電池電壓經(jīng)過(guò)采樣電阻R60之后產(chǎn)生一定的壓差,該壓差的差值太小,不能被

66、單片機(jī)識(shí)別,所以將R60兩端的電壓差值經(jīng)過(guò)電流傳感器MAX9643進(jìn)行差分放大、并抑制住了共模信號(hào),電流傳感器的輸出通過(guò)PA0接到單片的ADC通道,單片機(jī)通過(guò)AD采樣可以測(cè)出電池的電流。</p><p><b>  指示燈的設(shè)計(jì)</b></p><p>  圖3-12 指示燈的設(shè)計(jì)</p><p>  主板電路指示燈的作用是用來(lái)指示某些功能是否

67、正常運(yùn)行,其中LED4是用來(lái)判斷電源是否正常上電,LED1用來(lái)指示滾轉(zhuǎn)狀態(tài),LED2用來(lái)指示俯仰運(yùn)動(dòng)狀態(tài),LED3用來(lái)指示偏航運(yùn)動(dòng)狀態(tài)。</p><p>  主控電路PCB板的設(shè)計(jì)</p><p>  整塊主控板的布局和規(guī)劃需要做如下考慮:</p><p>  (1)晶振必須要盡可能近的靠近單片機(jī),以便供單片機(jī)更好的時(shí)鐘信號(hào)。</p><p>

68、;  (2)整體布局盡可能緊湊,減小整塊飛控板的面積,使飛控板更加集成化。</p><p>  (3)必須要考慮到插座的擺放位置,確保插座的穩(wěn)固,以便防止拔插出現(xiàn)脫落等現(xiàn)象。</p><p>  (4)信號(hào)線之間的連線盡可能短,保證信號(hào)線的傳輸速度和準(zhǔn)確性。</p><p>  (5)需要對(duì)每一層進(jìn)行對(duì)地鋪銅,做好屏蔽作用。</p><p>

69、  整塊飛控板的布局如附錄7所示</p><p>  基于STM32的uC/OS-II系統(tǒng)設(shè)計(jì)</p><p>  系統(tǒng)軟件編譯環(huán)境的介紹與配置</p><p>  目前STM32較為熱門的編譯環(huán)境有IAR編譯器和MDK編譯器兩種。MDK是一個(gè)集成了多功能編譯器的窗口化軟件開發(fā)環(huán)境。MDK不僅具有編譯功能,還可以用在線調(diào)試器通過(guò)JLINK連接目標(biāo)程序進(jìn)行在線調(diào)試,在

70、MDK編程環(huán)境下進(jìn)行對(duì)uC/OS-II系統(tǒng)程序設(shè)計(jì)既方便又快捷。</p><p>  用MDK編譯環(huán)境進(jìn)行系統(tǒng)程序設(shè)計(jì)的簡(jiǎn)單操作和配置如下:</p><p>  (1)先打開準(zhǔn)備好的STM32的標(biāo)準(zhǔn)外設(shè)庫(kù),如4-1圖所示,打開MDK,在project中點(diǎn)擊Open project…打開APP工程。</p><p>  圖4-1 MDK打開工程界面</p>

71、;<p>  (2)選擇芯片型號(hào),打開編譯窗口的option,在divice中選擇ST公司的STM32F103VC,如下圖所示:</p><p>  圖4-2 MDK芯片型號(hào)選擇界面</p><p>  (3)在圖5-2中的Target菜單欄中設(shè)置外部晶振為8MHz,在output菜單欄中勾選.HEX文件,為了讓串口打印正常,還必須在C/C++菜單欄中的Optinizatio

72、n選擇Level1(-01)以上的版本。</p><p>  (4)對(duì)在線調(diào)試的配置如圖4-3所示:</p><p>  圖4-3 MDK debug界面</p><p>  當(dāng)剛開始移植完程序時(shí),我們只需要測(cè)試程序能否編譯通過(guò),所以選擇Use Simulator;當(dāng)我們?cè)谡{(diào)試程序是,需要連接JLink進(jìn)行在線仿真時(shí),我們要選擇Use Cortext-M/R J-t

73、race,并把run to main()打鉤。打開setings,在flash down load菜單下點(diǎn)擊add,將stm32f10x…加入。如圖4-4所示:</p><p>  圖4-4 MDK芯片flash配置界面</p><p>  uC/OS-II系統(tǒng)的移植</p><p>  uC/OS-II移植簡(jiǎn)單快捷,下面對(duì)如何將uC/OS-II移植到STM32做粗

74、略介紹。將uCOS-II文件夾中的Source和Ports兩個(gè)文件夾全部拷貝到工程文件中,并在工程文件中新建一個(gè)uC/OS-II/Port和uC/OS-II/SOURCE兩個(gè)文件夾,將Source和Ports的所有.c文件都加到這兩個(gè)文件夾中。</p><p>  接著把os_cfg.h中OS_APP_HOOKS_EN、OS_DEBUG_E、OS_EVENT_MULTI_EN、OS_FLAG_EN 、 OS_MB

75、OX_EN、 OS_MEM_EN 、 OS_MUTEX_EN 、OS_Q_EN、OS_SEM_EN、OS_TMR_EN等使能標(biāo)志位全部清零。再把os_cpu.h中的void OS_CPU_SysTickHandler(void);和 void OS_CPU_SysTickInit(INT32U  cnts);函數(shù)刪掉;同時(shí)將os_cpu_c.c文件中和SysTick相關(guān)的函數(shù)聲明全部刪掉。將os_dbg.h

76、中的#define  OS_COMPILER_OPT  __root中的_root刪掉,再將 os_cpu_a.asm中的PUBLIC OS_CPU_SR_SAVE、PUBLIC OS_CPU_SR_Restore、PUBLIC OSStartHigRdy、PUBLIC OSCtxSw、PUBLIC OS_IntCtxSw、OS_CPU_PendSVHandler中的PUBLIC改為EXPORT。</p>

77、<p>  將startup_stm32f10x_cl.s中的PendSV_Handler全部改為OS_CPU_PendSVHandler;在 includes.h中加入STM32的硬件驅(qū)動(dòng)的文件和OS的配置文件,包括: stdio.h、string.h、ctype.h、stdlib.h、stdarg.h、"app_cfg.h"、"os_cfg.h"、"math.h&quo

78、t;、"os_cpu.h"、"ucos_ii.h"。</p><p>  將stm32f10x_it.c中的SysTick_Handler函數(shù)改成進(jìn)入uC/OS-II執(zhí)行系統(tǒng)時(shí)鐘節(jié)拍的程序,如下:</p><p>  在bsp.c和BSP.H文件中添加STM32系統(tǒng)時(shí)鐘初始化的代碼,在BSP.H中添加如下代碼,詳見(jiàn)附錄1。</p>&l

79、t;p>  按照以上步驟,就將uC/OS-II移植成功了,接下來(lái)就在main函數(shù)中創(chuàng)建用戶需要的任務(wù),系統(tǒng)便能正常運(yùn)行了。</p><p><b>  STM32整體配置</b></p><p>  STM32各個(gè)功能模塊的總體配置步驟包括如下幾個(gè)方面:時(shí)鐘喚醒、設(shè)置各個(gè)功能模塊的模式、初始化功能模塊、使能功能模塊。</p><p>  

80、輸入/輸出管腳的配置</p><p>  因?yàn)镾TM32所有的外設(shè)文件都在stm32f10x_conf.h中,首先在includes.h中的必須包含stm32f10x_conf.h,創(chuàng)建用戶所需的.c文件,寫入#include "includes.h"。接下來(lái)就開始配置時(shí)鐘了,由于STM32的通用輸入/輸出管腳(General purpose input output ports簡(jiǎn)稱:GPIO

81、)都掛在高速外設(shè)時(shí)鐘上,所以進(jìn)行如下命令:RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOC,ENABLE );接下來(lái)配置GPIO的速率,輸入輸出模式,對(duì)需要的GPIO引腳進(jìn)行使能;最后進(jìn)行GPIO的初始化后就可以操作GPIO了。指令GPIO_SetBits(GPIOA,GPIO_Pin_6);GPIO_ResetBits(GPIOA, GPIO_Pin_5);是對(duì)GPIO輸出口置1和置0;GPI

82、O_ReadInputDataBit(GPIOA,GPIO_Pin_6);指令是讀取GPIO的輸入電平值。GPIO的配置如下圖所示:</p><p>  圖4-5 GPIO的配置</p><p><b>  串口的配置</b></p><p>  串口的設(shè)置包括:時(shí)鐘喚醒,復(fù)位串口,配置Tx和Rx的IO口,串行口中斷初始化,串口的波特率、字長(zhǎng)、

83、校驗(yàn)位等的配置。串口的配置流程如圖4-6所示:</p><p>  圖4-6 串口UART1的配置</p><p>  定時(shí)器輸出PWM的配置</p><p>  定時(shí)器輸出PWM的配置包括:定時(shí)器和對(duì)應(yīng)輸出PWM的引腳的時(shí)鐘喚醒,根據(jù)用戶需要設(shè)定的PWM的頻率設(shè)定定時(shí)器的預(yù)分頻、溢出值等,使能輸出PWM。</p><p>  PWM頻率的計(jì)

84、算包括以下幾種情況:</p><p>  (1)當(dāng)用戶設(shè)定的定時(shí)器預(yù)分頻為1時(shí),PWM的計(jì)算如下:</p><p>  (2) 當(dāng)用戶設(shè)定的定時(shí)器預(yù)分頻不為1時(shí),PWM的計(jì)算如下:</p><p>  其中fPWM表示設(shè)定的時(shí)鐘頻率;fCLK表示定時(shí)器的時(shí)鐘源的頻率,當(dāng)定時(shí)器的時(shí)鐘源是高速外設(shè)時(shí)鐘時(shí),fCLK一般為72MHz,當(dāng)定時(shí)器的時(shí)鐘源是低速外設(shè)時(shí)鐘時(shí),fCL

85、K一般為36MHz ;TIM_Period表示時(shí)鐘溢出周期;TIM_Prescaler表示時(shí)鐘預(yù)分頻數(shù)。定時(shí)輸出PWM的配置流程如圖4-7所示:</p><p>  圖4-7 輸出PWM的配置流程</p><p>  SPI接口驅(qū)動(dòng)程序設(shè)計(jì)</p><p>  SPI接口驅(qū)動(dòng)需要包括:SPI功能的時(shí)鐘使能和SPI對(duì)應(yīng)管腳的時(shí)鐘使能;SPI管腳配置:將SCLK時(shí)鐘引腳

86、、MOSI數(shù)據(jù)傳輸管腳和CS片選管腳設(shè)置成推挽式輸出模式,將MISO數(shù)據(jù)傳輸管腳設(shè)置成上拉輸入模式;對(duì)SPI模式進(jìn)行配置,包括主從模式的配置、單雙工模式的配置、每一個(gè)時(shí)鐘周期傳輸數(shù)據(jù)的位數(shù)的配置、空閑時(shí)時(shí)鐘信號(hào)的電平配置、跳變沿采樣的配置、采樣時(shí)鐘的頻率的配置、從高位還是從低位傳輸?shù)呐渲谩⑿r?yàn)位的配置等。具體流程見(jiàn)圖4-8所示。</p><p>  圖4-8 SPI接口的驅(qū)動(dòng)流程</p><p

87、>  以上的操作基本完成了四旋翼飛行器姿態(tài)控制系統(tǒng)的STM32內(nèi)核的基本硬件配置,接下來(lái)用戶就可以根據(jù)自己的需要編寫自己的用戶代碼了。</p><p>  uC/OS-II系統(tǒng)的任務(wù)劃分</p><p>  由于uC/OS-II系統(tǒng)是一個(gè)搶占式優(yōu)先級(jí)的實(shí)時(shí)控制系統(tǒng),在進(jìn)行系統(tǒng)任務(wù)劃分時(shí),必須將實(shí)時(shí)性要求高的任務(wù)的周期設(shè)置盡量短,優(yōu)先級(jí)往高規(guī)劃,將實(shí)時(shí)性要求低的任務(wù)周期可以設(shè)置較長(zhǎng),優(yōu)

88、先級(jí)往低規(guī)劃。表4-1是本設(shè)計(jì)的總體的任務(wù)規(guī)劃:</p><p>  表4-1 uC/OS-II任務(wù)的劃分</p><p>  四旋翼機(jī)的姿態(tài)控制程序設(shè)計(jì)</p><p>  姿態(tài)采集和解算的程序設(shè)計(jì)</p><p>  姿態(tài)信息的采集與解算是四旋翼飛行器姿態(tài)控制系統(tǒng)的關(guān)鍵部分,姿態(tài)信息采集的精度和速度直接關(guān)乎到四旋翼機(jī)姿態(tài)控制的準(zhǔn)確性和及時(shí)

89、性。本設(shè)計(jì)是從MPU6000陀螺儀加速度傳感器中每20ms采集一次相應(yīng)的加速度和陀螺角速度,通過(guò)傳統(tǒng)的四元數(shù)算法[10],將加速度和陀螺角速度融合運(yùn)算與濾波,計(jì)算出相應(yīng)的四元數(shù),再將得出的四元數(shù)轉(zhuǎn)換成相應(yīng)的三個(gè)空間歐拉角(Roll,Pitch,Yaw)。</p><p>  姿態(tài)信息的采集程序設(shè)計(jì)</p><p>  (1)MPU6000 SPI時(shí)序分析</p><p&

90、gt;  圖5-1 MPU6000 SPI時(shí)序</p><p>  如上圖所示,MPU6000是SPI的8位的全雙工模式工作的:傳輸數(shù)據(jù)時(shí)數(shù)據(jù)由高位向地位傳送;數(shù)據(jù)被采樣在SCLK的上升沿,數(shù)據(jù)輸出在SCLK的下降沿;SCLK配置的最高頻率不能高于1MHz;SPI讀寫操作都在16或更多的時(shí)鐘周期完成, 即在兩個(gè)或者兩個(gè)以上的字節(jié)的時(shí)鐘周期完成,第一個(gè)字節(jié)為SPI地址,第二字節(jié)SPI數(shù)據(jù),第一字節(jié)的最高位位包含了讀

91、/寫(讀為1或?qū)憺?操作)位。</p><p>  MPU6000的地址和數(shù)據(jù)寄存器如表5-1 和表5-2所示:</p><p>  表 5-1 SPI地址寄存器</p><p>  表 5-2 SPI數(shù)據(jù)寄存器</p><p>  在本設(shè)計(jì)中,MPU6000和data flash共用一個(gè)SPI接口,由于data flash是高速SPI,而M

92、PU6000最大速度才能達(dá)到1MHz,所以在系統(tǒng)初始化時(shí)將data flash運(yùn)用STM32內(nèi)部SPI進(jìn)行配置,MPU6000的SPI用GPIO去模擬。</p><p>  1) SPI的寫指令</p><p>  MPU6000按一次8位進(jìn)行傳輸,所以用戶只需對(duì)MOSI進(jìn)行8次的循環(huán)動(dòng)作,而由于該SPI是上升沿輸出模式,所以在對(duì)MOSI進(jìn)行相應(yīng)位的傳輸?shù)臅r(shí)候,給SPI的時(shí)鐘信號(hào)一個(gè)由低到

93、高的跳變信號(hào),從機(jī)便可以接收到STM32輸出的電平信號(hào)。</p><p>  2) SPI的讀取指令</p><p>  SPI為下降沿采樣模式,在對(duì)MISO進(jìn)行相應(yīng)位的采用時(shí),給SPI的時(shí)鐘信號(hào)一個(gè)由高到低的跳變信號(hào),STM32便可以接收到從機(jī)的輸出的電平信號(hào)。</p><p>  3) STM32向MPU6000的地址寫入一個(gè)字節(jié)的數(shù)據(jù)</p>&

94、lt;p>  MPU6000內(nèi)部寄存器的地址最高位為0表示寫命令,所以在片選信號(hào)拉低時(shí),將要寫入數(shù)據(jù)的地址寫入到MPU6000,緊接著寫入相應(yīng)數(shù)據(jù),將片選信號(hào)拉高,完成操作。</p><p>  4) STM32從MPU6000的地址讀取一個(gè)字節(jié)的數(shù)據(jù)</p><p>  MPU6000內(nèi)部寄存器的地址最高位為1表示寫命令,所以在片選信號(hào)拉低時(shí),將要讀取數(shù)據(jù)的地址的最高位置一并寫入到

95、MPU6000,緊接著讀取相應(yīng)數(shù)據(jù),將片選信號(hào)拉高,完成操作。</p><p>  (2) MPU6000初始化</p><p>  表5-3 MPU6000初始化相關(guān)寄存器</p><p>  表4-1是MPU6000初始化的相關(guān)寄存器,MPU6000剛上電時(shí)處在休眠狀態(tài),需要對(duì)MPU6000進(jìn)行一系列操作才能正常操作。首先,對(duì)PWR_MGMT_1的bit6位清零

96、,解除休眠模式,接著對(duì)PWR_MGMT_1的bit7位置1,MPU6000進(jìn)行復(fù)位,緊接著通過(guò)將USER_CTRL的bit5清零將I2C通信關(guān)閉,最后根據(jù)用戶需要設(shè)置SMPLRT_DIV、CONFIG、GYRO_CONFIG等寄存器來(lái)配置MPU6000的陀螺儀采樣率、低通濾波器頻率、陀螺儀測(cè)量范圍后芯片就正常工作,用戶就可以讀取陀螺和加速度的值了。</p><p>  (3)陀螺角速度和加速度的轉(zhuǎn)換</p&

97、gt;<p>  表5-4 MPU6000陀螺和加速度寄存器</p><p>  如表4-1所示為MPU6000陀螺和加速度的相關(guān)寄存器,MPU6000讀取陀螺或者加速度的值的操作如下所示:首先,用戶需先讀取需要參數(shù)的高字節(jié)數(shù)據(jù),MCU將要讀取數(shù)據(jù)的地址最高位置1并通過(guò)SPI發(fā)送給MCU6000,SPI片選信號(hào)繼續(xù)拉低,MCU繼續(xù)寫一個(gè)字節(jié)的隨機(jī)數(shù)據(jù)給MCU6000,由于SPI全雙工模式工作的,所以

98、MCU在寫入數(shù)據(jù)的同時(shí)已經(jīng)將所要讀取的數(shù)據(jù)讀取到MCU中了,讀取之后片選信號(hào)拉高。接著用戶已同樣的方式讀取需要參數(shù)的低字節(jié),并將高字節(jié)和低字節(jié)數(shù)據(jù)合成一個(gè)十六位的數(shù)據(jù),并通過(guò)運(yùn)算轉(zhuǎn)換成用戶需要得到的參數(shù)。</p><p>  1)陀螺角速度的轉(zhuǎn)換</p><p>  下面以陀螺儀初始化時(shí)設(shè)定量程為±2000°/s為例,介紹陀螺角速度的轉(zhuǎn)換:在開機(jī)時(shí)STM32通過(guò)讀取陀螺

99、儀相應(yīng)地址的高8位和低8位的的值進(jìn)行合成一個(gè)16位的數(shù)據(jù),為了獲得更準(zhǔn)確的數(shù)據(jù),可以讀取100次得到100個(gè)16位的數(shù)據(jù),再對(duì)這些數(shù)據(jù)求和取平均值,得到0點(diǎn)偏移量,在采樣時(shí),每隔20ms去采樣一次陀螺儀地址的數(shù)據(jù),合成一個(gè)新的16位的數(shù)據(jù),將該數(shù)據(jù)與0點(diǎn)偏移量進(jìn)行求差,根據(jù)陀螺儀初始化的值將該差值除以相應(yīng)的分辨率16.4LSB/°/S,就得到采集出來(lái)的角速度了,再將該速度轉(zhuǎn)換成弧度/s,陀螺儀角速度采樣完成。陀螺儀所設(shè)定的量程

100、和相應(yīng)的分辨率如下表所示:</p><p>  表5-5 陀螺儀的量程和分辨率</p><p><b>  2)加速度的轉(zhuǎn)換</b></p><p>  以加速度初始化時(shí)設(shè)定量程為±2G為例,介紹加速度的轉(zhuǎn)換:在開機(jī)時(shí)STM32通過(guò)讀取加速度相應(yīng)地址的高8位和低8位的的值進(jìn)行合成一個(gè)16位的數(shù)據(jù),同樣可以讀取100次得到100個(gè)16位

101、的數(shù)據(jù),對(duì)這些數(shù)據(jù)求和取平均值,得到0點(diǎn)偏移量,在采樣時(shí),每隔20ms去采樣一次加速度地址的數(shù)據(jù),合成一個(gè)新的16位的數(shù)據(jù),將該數(shù)據(jù)與0點(diǎn)偏移量進(jìn)行求差,并根據(jù)加速度初始化的值將該差值除以相應(yīng)的分辨率,就得到采集出來(lái)的加速度了,加速度采樣完成。特別注意的是:加速度的Z軸受到重力的影響,所以在計(jì)算加速度Z軸求差之后還要加上一個(gè)重力的基準(zhǔn)值,才是最終測(cè)得的加速度Z軸的值。加速度所設(shè)定的量程和相應(yīng)的分辨率如下圖所示:</p>&

102、lt;p>  表5-6 加速度的量程和分辨率</p><p>  姿態(tài)信息的解算程序設(shè)計(jì)</p><p>  姿態(tài)信息的解算的目的是將陀螺儀角速度和加速度進(jìn)行融合,計(jì)算出計(jì)算機(jī)系統(tǒng)方便使用的歐拉角(pitch、roll、yaw)。本設(shè)計(jì)采用的是傳統(tǒng)的,技術(shù)相對(duì)成熟的四元數(shù)法。運(yùn)用四元數(shù)法,可以將陀螺儀和加速度計(jì)得出的數(shù)值轉(zhuǎn)換成四維空間,運(yùn)用四維空間的乘法來(lái)表示三維空間的旋轉(zhuǎn),減輕了計(jì)

103、算機(jī)的復(fù)雜的算法,加快了反應(yīng)速度。</p><p>  使用四元數(shù)函數(shù)時(shí),只要輸入已經(jīng)采集過(guò)來(lái)的陀螺儀和加速度的六個(gè)參數(shù),并設(shè)定好時(shí)候的捕獲時(shí)間,就可以解算出四元數(shù)了,最后將四元數(shù)轉(zhuǎn)換成歐拉角。</p><p><b>  姿態(tài)控制的程序設(shè)計(jì)</b></p><p><b>  姿態(tài)控制的流程</b></p>

104、<p>  四旋翼飛行器的姿態(tài)控制系統(tǒng)是通過(guò)PID的控制思想,將姿態(tài)的給定值和傳感器的測(cè)出值的偏差反饋給電機(jī),實(shí)現(xiàn)電機(jī)的聯(lián)動(dòng)調(diào)節(jié),保證四旋翼機(jī)的平穩(wěn)飛行。四旋翼機(jī)姿態(tài)控制的程序流程圖5-2所示。</p><p>  圖5-2 姿態(tài)控制的總流程</p><p>  姿態(tài)的PID控制程序設(shè)計(jì)</p><p>  姿態(tài)控制系統(tǒng)PID程序設(shè)計(jì)是本設(shè)計(jì)中最重要的環(huán)

105、節(jié)。四旋翼飛行器的姿態(tài)控制過(guò)程屬于自動(dòng)化領(lǐng)域的過(guò)程控制。對(duì)于姿態(tài)控制系統(tǒng)來(lái)說(shuō),我們要控制他,目前的理論是引入負(fù)反饋,PID控制器的作用就是將機(jī)身的姿態(tài)輸出經(jīng)過(guò)傳感器的測(cè)量變送,轉(zhuǎn)化成可以控制的方向角,這個(gè)方向角再和我們預(yù)先給定的姿態(tài)方向角進(jìn)行計(jì)算和處理,使得輸出姿態(tài)跟隨輸入姿態(tài)的變化而變化,做到系統(tǒng)的無(wú)差調(diào)節(jié),即讓輸出姿態(tài)信息等于輸入姿態(tài)信息。四旋翼飛行器的簡(jiǎn)單控制系統(tǒng)的結(jié)構(gòu)圖如圖5-3所示:</p><p> 

106、 圖5-3 四旋翼飛行器的過(guò)程控制框圖</p><p>  姿態(tài)比例控制程序設(shè)計(jì)</p><p>  比例調(diào)節(jié)(簡(jiǎn)稱P調(diào)節(jié))中,調(diào)節(jié)器的輸出姿態(tài)信號(hào)和輸入姿態(tài)信號(hào)的偏差成比例關(guān)系。當(dāng)系統(tǒng)出現(xiàn)誤差時(shí),P調(diào)節(jié)器第一時(shí)間反應(yīng)過(guò)來(lái),反饋給輸入姿態(tài),來(lái)補(bǔ)償系統(tǒng)偏差。也就是說(shuō),當(dāng)傳感器測(cè)量出來(lái)的姿態(tài)信息量與我們給定姿態(tài)信息的偏差不為0時(shí),當(dāng)前誤差多少,我們就給出多少輸出值來(lái)補(bǔ)償當(dāng)前誤差。</p&

107、gt;<p>  姿態(tài)比例控制程序的設(shè)計(jì)很簡(jiǎn)單,只需要將慣性測(cè)量單元測(cè)出來(lái)的姿態(tài)橫滾角、俯仰角、偏航角和我們希望給定的姿態(tài)角分別求差,再將差值分別乘上一個(gè)不同的比例系數(shù),就得到了三個(gè)比例控制量,再將這三個(gè)個(gè)比例控制量通過(guò)飛行器的控制機(jī)制賦值給四路電機(jī)。</p><p>  姿態(tài)積分控制程序設(shè)計(jì)</p><p>  姿態(tài)的積分控制可以提高姿態(tài)控制系統(tǒng)的無(wú)差度。比例調(diào)節(jié)方式的特點(diǎn)

108、是快速而有勁,但是比例調(diào)節(jié)不可避免地會(huì)使系統(tǒng)存在穩(wěn)態(tài)誤差,因?yàn)楸壤h(huán)節(jié)屬于有差調(diào)節(jié)。所以在姿態(tài)控制系統(tǒng)中有必要引入積分控制環(huán)節(jié)來(lái)消除靜差。在數(shù)字控制系統(tǒng)中,只要將測(cè)量單元檢測(cè)出來(lái)的姿態(tài)橫滾角、俯仰角、偏航角和上一次保存下來(lái)的姿態(tài)角進(jìn)行不斷的累加,再將這個(gè)值乘上一個(gè)不同的積分系數(shù),就得到了三個(gè)積分控制量,并通過(guò)飛行器的控制機(jī)制賦值換算成PWM賦值給四路電機(jī)。</p><p>  需要注意的是,這種累加無(wú)疑會(huì)造成系統(tǒng)

109、的不穩(wěn)定,如果系統(tǒng)長(zhǎng)時(shí)間處于不平衡位置,由于實(shí)際姿態(tài)角與給定姿態(tài)角不斷的隨時(shí)間的累計(jì)而累加,積分的作用會(huì)變得越來(lái)越強(qiáng),最后超出比例控制作用,使姿態(tài)控制系統(tǒng)崩潰。所以在程序設(shè)計(jì)時(shí)必須要給定一個(gè)小的角度范圍內(nèi)進(jìn)行積分項(xiàng)的計(jì)算,超出這個(gè)范圍后,系統(tǒng)不再對(duì)姿態(tài)角進(jìn)行積分處理,同時(shí),也要對(duì)積分項(xiàng)進(jìn)行限幅處理。</p><p>  姿態(tài)微分控制程序設(shè)計(jì)</p><p>  微分調(diào)節(jié)器是一種可預(yù)見(jiàn)性的調(diào)

110、節(jié)器,這種調(diào)節(jié)器可以提前預(yù)知系統(tǒng)的運(yùn)動(dòng)趨勢(shì),微分調(diào)節(jié)器和積分調(diào)節(jié)器具有一定的互補(bǔ)性質(zhì),積分調(diào)節(jié)器具有一定的滯后性,而微分調(diào)節(jié)器具有抑制滯后的功能,使姿態(tài)控制系統(tǒng)變得非常敏感。為了簡(jiǎn)便系統(tǒng)的算法,本設(shè)計(jì)巧妙的運(yùn)用了慣性測(cè)量單元自身的自增效應(yīng),直接利用慣性測(cè)量單元測(cè)量出來(lái)的陀螺儀角速度的值來(lái)代替微分項(xiàng),使得整個(gè)控制系統(tǒng)的算法更加簡(jiǎn)潔,反應(yīng)更加快速。</p><p><b>  姿態(tài)的控制機(jī)制</b&g

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論