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