日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

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

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

          作者: 時間:2012-12-12 來源:網絡 收藏

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

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

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

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

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

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

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

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

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

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

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

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

          pid控制器相關文章:pid控制器原理




          關鍵詞: ARM11 CPLD 飛行控制器

          評論


          相關推薦

          技術專區(qū)

          關閉