<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          作者: 時間:2012-12-12 來源:網(wǎng)絡(luò) 收藏

          (2) 數(shù)據(jù)內(nèi)部傳送模塊,負(fù)責(zé)對SPI接收進的數(shù)據(jù)進行解析,主要是將數(shù)據(jù)與命令分開。這里所謂的命令,指的是PWM控制通道的選擇。本設(shè)計中只需有4路PWM輸出,所以只需在模塊中任選4路。通過這種方案,可以實現(xiàn)任意多路PWM輸出,可解決MCU PWM輸出端口不足,實現(xiàn)端口擴展。
          (3) 數(shù)據(jù)保存模塊,數(shù)據(jù)保存模塊功能可以描述成一個數(shù)據(jù)寄存器,即實現(xiàn)傳送數(shù)據(jù)的保持與刷新,存放的數(shù)據(jù)即為PWM波形的高電平數(shù)值。也可稱其為數(shù)據(jù)的緩沖器,在SPI數(shù)據(jù)傳輸?shù)絇WM發(fā)生器過程中加入該模塊,可使得數(shù)據(jù)更加的穩(wěn)定可靠。
          (4) PWM波形發(fā)生模塊,通過對端口數(shù)據(jù)的讀寫,實現(xiàn)PWM波形的發(fā)生。PWM的數(shù)據(jù)是多變的,即占空比的大小是多變的。在設(shè)計時程序中加入了狀態(tài)判斷,實現(xiàn)波形的穩(wěn)定輸出,避免了由于數(shù)據(jù)多變造成的PWM波失真。PWM發(fā)生模塊的基準(zhǔn)時鐘頻率由CLK端口進入,周期為0.4us。
          (5) PWM周期設(shè)定模塊,提供了PWM波的周期數(shù)據(jù)輸出,通過改變程序參數(shù)可以任意改變波形頻率。
          (6) 分頻模塊,實現(xiàn)對系統(tǒng)時鐘25M進行分頻,提供一個周期為0.4us的PWM基準(zhǔn)時鐘。
          本文在特定模式下可接收地面遙控器的指令實現(xiàn)姿態(tài)控制,指令分為升降、副翼、方向、油門、是否定高、是否盤旋、是否開傘、平衡量、任務(wù)載荷9個通道發(fā)送到無人機上的遙控接收機,遙控接收機轉(zhuǎn)換為PWM信號后,由采集。采集接收機PWM信號的實現(xiàn)如圖4所示,實現(xiàn)過程如下:

          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          本文設(shè)計了9路PWM脈寬數(shù)據(jù)采集,該模塊輸入0.4us的基頻,將外部PWM波形信息轉(zhuǎn)換為數(shù)值信息,再由SPI傳輸模塊,傳入MCU。SPI數(shù)據(jù)傳送模塊,實現(xiàn)上模擬從SPI設(shè)備。該設(shè)計有效解決端口不足,釋放了MCU資源,也提高系統(tǒng)實時性。

          3 軟件系統(tǒng)設(shè)計
          在上述硬件平臺上,移植Linux操作系統(tǒng)(Linux 2.6內(nèi)核),并對Linux內(nèi)核作裁剪,對內(nèi)核加上Xenomai補丁[8],Xenomei技術(shù)使得操作系統(tǒng)運行在雙內(nèi)核下,多了一個強實時的微內(nèi)核,能滿足飛控的實時性要求。在此基礎(chǔ)上進行軟件設(shè)計。飛行控制器軟件主要由硬件接口驅(qū)動、導(dǎo)航控制程序、姿態(tài)控制程序組成。
          3.1 接口驅(qū)動程序設(shè)計
          (1) UART接口驅(qū)動:GPS與MCU的連接通過UART串口,所以GPS驅(qū)動需要串口驅(qū)動的支持。本文的GPS接口驅(qū)動,沒有采用linux內(nèi)核里自帶的串口驅(qū)動程序,而是通過內(nèi)存映射以及內(nèi)核函數(shù)直接對MCU內(nèi)部UART寄存器進行讀寫操作,從而實現(xiàn)了高效的GPS數(shù)據(jù)讀取操作。由于對GPS數(shù)據(jù)信息實時性要求不高,驅(qū)動采用了查詢模式[9]。接收的數(shù)據(jù)量大小為一組完整GPS NMEA協(xié)議定義的數(shù)據(jù)的大小,本設(shè)計使用了NMEA協(xié)議中的GGA,RMC語句,最后通過底層的內(nèi)核數(shù)據(jù)傳遞函數(shù)將GPS數(shù)據(jù)從內(nèi)核層傳輸?shù)綉?yīng)用層。
          (2) 姿態(tài)傳感器驅(qū)動程序:ADIS16365通過SPI接口與MCU進行數(shù)據(jù)通信,所以在ADIS16365驅(qū)動模塊中要實現(xiàn)SPI的讀寫驅(qū)動。方法是通過內(nèi)核函數(shù)對SPI寄存器讀寫賦值操作,從而實現(xiàn)數(shù)據(jù)的收發(fā)。除了SPI數(shù)據(jù)收發(fā)驅(qū)動外還得構(gòu)造出ADIS16365規(guī)定的數(shù)據(jù)通信時序,只有正常的時序才能實現(xiàn)數(shù)據(jù)的正確利用。ADIS16365一次完整的數(shù)據(jù)讀取流程需要32個CLK脈沖,1秒內(nèi)平均采集數(shù)據(jù)408次,滿足精度要求。
          (3) 驅(qū)動設(shè)計:本文飛控MCU與CPLD的通信采用的是SPI通信方式,驅(qū)動程序的實現(xiàn)也是通過內(nèi)核函數(shù)對SPI寄存器讀寫賦值操作,從而實現(xiàn)數(shù)據(jù)的讀寫。CPLD為自定義的硬件模塊,其通信的數(shù)據(jù)格式也是自己定義的,CPLD內(nèi)部通訊數(shù)據(jù)位為32位,定義前二位為路數(shù)控制地址信號。
          3.3 導(dǎo)航控制程序設(shè)計
          導(dǎo)航控制是指控制無人機按照存儲在飛行控制器中的航點數(shù)據(jù)自主飛行,航點依次兩兩連接成直線段即構(gòu)成航線。每個航點包括航點序號、經(jīng)度、緯度、高度值信息。而航點、航線的輸入是通過地面控制站軟件中繪制并通過數(shù)傳電臺上傳到飛控中,如圖5所示,在為本文飛控配套開發(fā)的地面控制軟件中繪制航線。

          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          導(dǎo)航控制中的高度控制主要通過計算無人機的高度誤差,進而計算輸出給升降舵機的PWM值來控制高度。高度可由MS5540氣壓傳感器測得的高度與GPS模塊的高度數(shù)據(jù)融合計算后獲得。
          導(dǎo)航控制中的航向控制流程如圖6所示。該流程先讀入FLASH中的航點數(shù)據(jù),再由GPS獲取當(dāng)前位置信息,進而計算航向角、偏航距、偏航角。航向角的計算是在GPS讀出的航向字段基礎(chǔ)上,加上前后兩時刻的位置差進行修正獲得。

          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          偏航距和偏航角的計算如圖7所示。

          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          設(shè)A點為無人機當(dāng)前位置,B為第n個航點,C為第n+1個航點。圖7中,以B為坐標(biāo)原點,X軸表示經(jīng)度,Y軸表示緯度構(gòu)建直角坐標(biāo)系。在地球表面,任意兩點
          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計
          離即線段AB的值,無人機與終點距離即線段AC的值,航線起點與終點距離即線段BC的值,再根據(jù)點到直線距離公式,可求得線段AD即偏航距,根據(jù)三角形余弦定理可求出∠ABD, ∠ABD即為偏航角。
          無人機飛行過程中,判斷是否過航點是讀取下一個航點的必要條件。當(dāng)無人機飛過航線的垂直線EF既為過航點。判斷方法是,過C點繪出Y軸平行的線段CG,求線段BC與CG的夾角基于ARM11+CPLD的小型無人機飛行控制器設(shè)計減線段AC與CG夾角基于ARM11+CPLD的小型無人機飛行控制器設(shè)計的差值,計算該差值的絕對值,若|a1-a2|>90則判定為過點。
          3.4 姿態(tài)控制程序設(shè)計
          姿態(tài)控制主要由俯仰姿態(tài)、滾轉(zhuǎn)姿態(tài)控制構(gòu)成,以俯仰姿態(tài)控制為例,其控制結(jié)構(gòu)如圖8所示:

          基于ARM11+CPLD的小型無人機飛行控制器設(shè)計

          本文設(shè)計了PID控制器實現(xiàn)姿態(tài)控制,而俯仰角基于ARM11+CPLD的小型無人機飛行控制器設(shè)計由姿態(tài)傳感器ADIS16365測量并經(jīng)姿態(tài)計算而得。ADIS16365測量的是機體坐標(biāo)系下的數(shù)值,而要表達機體相對于參考坐標(biāo)系的姿態(tài),需進行姿態(tài)計算。姿態(tài)計算以角速度測量值和運載體的初始條件為輸入,姿態(tài)計算后,輸出飛機的姿態(tài)信息和比力坐標(biāo)變換所需的姿態(tài)矩陣。在姿態(tài)計算過程中,因四元數(shù)法在實際求解中需更新的參數(shù)少、精度較高的特點,本文采用四元數(shù)法求解。

          pid控制器相關(guān)文章:pid控制器原理




          關(guān)鍵詞: ARM11 CPLD 飛行控制器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();