文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.181570
中文引用格式: 劉琨,許哲,李飛飛. 基于ARM微控制器的飛行數據記錄儀設計[J].電子技術應用,2018,44(11):57-60.
英文引用格式: Liu Kun,Xu Zhe,Li Feifei. Design of flight data recorder based on ARM microcontroller[J]. Application of Electronic Technique,2018,44(11):57-60.
0 引言
實時記錄飛行器的飛行數據對于監測飛行器飛行狀態以及后續研究飛行器(如模型辨識等)都起著關鍵的作用。對于小型飛行器來說,設計開發一種體積小、重量輕且操作方便的數據記錄儀顯得尤為重要。隨著微控制器技術的發展,其片上Flash空間也越來越大,一般都有幾十到上百KB的容量,能夠滿足多數數據量小的應用,但對于某些應用(例如數據采集和文件存儲等),片上Flash就不能提供足夠的存儲空間了。可見大容量數據的存儲是微控制器應用系統的瓶頸[1]。因此需要外擴存儲設備來解決存儲空間不足的問題。以Flash為存儲體的SD卡因其具備體積小、功耗低、可擦寫以及非易失性等特點而被廣泛應用。本文將介紹一種采用ARM處理器結合SD卡的直升機飛行數據記錄儀設計方案。
1 飛行數據記錄儀總體設計
本方案所選取的ARM處理器為意法半導體公司的Cortex-M3內核高性能微處理器STM32F103,其片內擁有豐富的資源。數據記錄儀的數據接收端由STM32F103擴展出常用的通信接口:USART、SPI、I2C、USB2.0,以適用于不同通信協議的設備;直升機的控制輸入數據即4個舵機PWM控制信號由STM32F103輸入捕獲單元捕獲并做信號解混控處理;數據存儲端采用STM32F103內特有的SDIO接口與SD卡連接并結合FatFs文件系統,實現與SD的通信與數據文件存儲;同時增加按鍵與指示燈來實現對設備的操作和設備狀態指示功能。飛行數據記錄儀的總體設計圖如圖1所示。
2 記錄儀硬件設計
記錄儀所采用的核心處理器STM32F103是意法半導體公司生產的具有ARM Cortex-M3內核的32位高性能微處理器,最高主頻72 MHz,具有512 KB容量片內Flash、64 KB片內SRAM、12通道DMA控制器,以及多達11個定時器,并擁有I2C、USART、SPI、CAN、USB2.0和SDIO通信接口[2],足以滿足數據記錄儀的設計要求。
2.1 串口通信電路
本無人直升機系統所使用的AHRS采用串口RS232協議,為了采集AHRS數據需要設計主控制器與AHRS的通信接口電路。本文采用RS232電平轉換芯片MAX232作為RS232電平與TTL電平轉換器,以實現AHRS與主控制器的數據通信。RS232串口通信電平轉換電路如圖2所示。
2.2 MicroSD卡電路
SD卡與主控制器內SDIO接口連接,以實現主控制器與SD卡的通信以及對SD卡的操作,完成SD卡檢測和文件系統的建立以及數據存儲。本文采用MicroSD卡作為存儲介質,該型卡的數據信號線采用6線制,分別為數據線D0、D1、D2和D3,命令線CMD和時鐘線CK。數據線D0~D3分別與主控制器SDIO接口的4根數據SDIO-D0~SDIO-D3線互連,命令線與時鐘線分別與SDIO接口的SDIO-CMD和SDIO-CK連接。其中數據線和命令線需加上拉電阻。MicroSD卡采用3.3 V供電。MicroSD卡的SDIO模式電路圖如圖3所示。
2.3 舵機PWM信號捕獲電路
由于舵機的控制信號PWM信號具有周期固定、占空比可調的特點,因此只需要捕獲PWM信號高電平所占的寬度即可。使用STM32F103內部定時器的輸入捕獲功能就可完成此項任務。從接收機輸出的PWM信號一路輸入舵機同時分出相同一路輸入STM32F103的定時器TIM3的4個通道TIM3_CH1~ TIM3_CH4進行信號捕獲處理。舵機PWM信號的捕獲電路示意圖如圖4所示。
3 記錄儀軟件設計
3.1 AHRS數據接收與解包
傳感器數據包由數據包頭、數據、數據包尾組成,且數據包連續發送至控制器串口緩沖區,為了保證能夠接收到完整的數據包且需要保證數據是最新的,本文使用了環形緩沖區數據結構來對數據進行接收。環形緩沖區示意圖如圖5所示。
數據包以包頭、數據、包尾的順序依次進入緩沖區,程序中定義包頭包尾檢測函數,從當前指針位置實時檢測尋找數據包尾,當找到數據包尾時,再逆序遍歷找到對應的數據包頭,以此保證一包數據的實時性。環形緩沖區的長度是一包數據長度的2倍,兩個緩沖區交替讀/寫數據,因此能夠保證數據的完整性。
3.2 文件系統
由于采集的數據需要使用與PC兼容的FAT16文件系統組織文件才可以直接在PC上使用MATLAB或Excel軟件打開并繪制曲線,因此需要在微控制器中移植文件系統來完成此功能。本方案選取的FatFs文件系統是一個完全免費開源的文件系統,專門為小型的嵌入式系統設計。它完全用標準C語言編寫,具有良好的硬件平臺獨立性,只需做簡單的修改就可以方便移植到不同類型的微處理器上[3];它支持FAT12、FAT16和FAT32,支持多個存儲媒介;具有多個緩沖區,可以對多個文件進行讀/寫。FatFs文件系統層次結構如圖6所示。
對于最頂層的應用層,用戶無須理會FatFs的內部結構和復雜的FAT 協議,只需要調用FatFs模塊提供給用戶的一系列應用接口函數,如f_open、f_read、f_write和f_close等,就可以方便地讀/寫文件。中間層的FatFs模塊實現了FAT 文件讀/寫協議。FatFs模塊提供的是ff.c和ff.h兩個文件。除非有必要,用戶一般不用修改,使用時將頭文件直接包含進去即可。需要編寫移植代碼的是FatFs模塊提供的底層接口,它包括存儲媒介讀/寫接口(disk I/O)和供給文件創建修改時間的實時時鐘[4]。本文采用的FatFs文件系統版本是R0.09a。FatFs在移植時一般只需要修改2個文件,即ffconf.h和diskio.c。FatFs的所有配置項都是存放在ffconf.h 中,可以通過配置其中一些選項來滿足自己的需求。
FatFs的移植主要分為3步:(1)根據編譯器的數據類型在integer.h文件中定義好數據類型;(2)ffconf.h文件配置FatFs的相關功能以滿足需求;(3)在diskio.c文件中進行底層驅動編寫,一般需要編寫6個驅動函數:disk_initialize、disk_status、disk_read、disk_write、disk_ioctl和get_fattime。完成以上3個步驟后即可完成FatFs的移植,在使用FatFs之前必須先通過f_mount函數注冊一個工作區才能開始后續應用接口函數的使用。
3.3 直升機傾斜盤舵機信號解混控
由于控制直升機傾斜盤的3個舵機是以聯動的方式使傾斜盤產生相應動作來控制直升機姿態,而直升機的控制輸入變量為縱向周期變距變量Δδe、側向周期變距變量Δδa、總距變量Δδc以及尾槳變距變量Δδr[5],因此需要對控制傾斜盤動作的3個舵機信號做解混控處理來分別解算出縱向周期變距變量Δδe、側向周期變距變量Δδa、總距變量Δδc。其中尾槳變距舵機單獨工作,因此不需要做信號解混控,只需單獨采集該舵機信號即可換算出尾槳變距變量Δδr。直升機傾斜盤結構示意圖如圖7所示。
當傾斜盤做單純前后傾斜運動時(對應直升機滾轉運動),舵機A與舵機B同時動作且幅度相同,舵機C則相對舵機A、B差動;當傾斜盤做單純左右傾斜運動時(對應直升機俯仰運動),舵機A與舵機B差動且幅度相同,而此時舵機C則不動;當傾斜盤做單純平行上下運動時(對應直升機總距變化),3個舵機同時動作且幅度相同。
由圖7所示的傾斜盤結構示意圖可簡化出如圖8所示的傾斜盤舵機間幾何關系圖。
由于A、B、C構成等邊三角形3個頂點,因此由圖8所示幾何關系可知舵機A與舵機B的連線中點D對旋翼軸心O的力臂L1是舵機C對旋翼軸心O力臂的1/2,當傾斜盤做單純前后傾斜運動時(對應直升機滾轉運動),舵機C的動作幅度應是舵機A、B動作幅度的2倍,對應采集到的舵機C的PWM信號占空比變化量也是舵機A、B的PWM信號占空比變化量的2倍。由以上分析可得出直升機傾斜盤舵機控制信號值與縱向周期變距變量Δδe、側向周期變距變量Δδa以及總距變量Δδc的關系式如式(1)所示:
式中,α、β、γ分別代表實時采集到的舵機A、B、C的PWM信號高電平寬度值,α0、β0、γ0分別代表總距為0°時舵機A、B、C的PWM信號高電平寬度值。
由式(1)可反解出對應的縱向周期變距變量Δδe、側向周期變距變量Δδa、總距變量Δδc如式(2)所示:
由式(2)可知,由總距為0°時舵機A、B、C的PWM信號高電平寬度值和實時采集到舵機A、B、C的PWM信號高電平寬度值即可實時解算出對應的縱向周期變距變量Δδe、側向周期變距變量Δδa和總距變量Δδc。
3.4 程序流程圖
數據記錄儀的軟件部分如上所述,包含AHRS數據接收與解包、文件系統建立與文件存儲、舵機PWM信號捕獲與信號解混控以及人機交互程序。整個軟件部分的程序流程圖如圖9所示。
4 飛行數據記錄儀的應用
按照正常操作流程,將數據記錄儀搭載到無人直升機上進行數據采集,各項飛行參數被正常記錄到在板載MicroSD卡內創建的Flight Data.txt文件中,可以通過MATLAB、Excel等軟件對文件中的數據繪制成曲線供后續數據分析,也可對數據做預處理后作為無人直升機模型辨識的控制輸入數據。根據記錄的數據利用MATLAB繪制的直升機三軸姿態角、三軸角速率分別如圖10、圖11所示。
5 結束語
本飛行數據記錄儀能夠很好地完成飛行數據記錄功能,可將數據實時寫入創建的Flight Data.txt中,并能夠方便地在PC上使用MATLAB、Excel等軟件讀入數據并繪制曲線。同時,預留的不同通信協議接口可以方便地與使用不同通信協議的傳感器等設備互連,且軟件修改方便,只需修改前端數據接收部分程序即可快速投入使用,通用性強,可移植性好,能夠滿足實際使用的要求。
參考文獻
[1] 張濤,左謹平,馬華玲.FatFs在32位微控制器STM32上的移植[J].電子技術,2010(3):25.
[2] Stmicroelectronics.STM32F103xCDE datasheet[Z].2009.
[3] 洪岳煒,王百鳴,謝超英.一種易于移植和使用的文件系統FatFs Moduel[J].單片機與嵌入式系統應用,2008(5):29.
[4] 李世奇,董浩斌,李榮生.基于FatFs文件系統的SD卡存儲器設計[J].測控技術,2011,30 (12):79-80.
[5] 楊一棟.直升機飛行控制[M].北京:國防工業出版社,2007.
作者信息:
劉 琨,許 哲,李飛飛
(中國航天科技集團有限公司第四研究院第四十一研究所,陜西 西安710025)