《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于A(yíng)RM微控制器的飛行數(shù)據(jù)記錄儀設(shè)計(jì)
基于A(yíng)RM微控制器的飛行數(shù)據(jù)記錄儀設(shè)計(jì)
2018年電子技術(shù)應(yīng)用第11期
劉 琨,許 哲,李飛飛
中國(guó)航天科技集團(tuán)有限公司第四研究院第四十一研究所,陜西 西安710025
摘要: 為了實(shí)時(shí)記錄無(wú)人直升機(jī)的飛行數(shù)據(jù),為后續(xù)分析直升機(jī)飛行狀態(tài)、建立數(shù)學(xué)模型提供方便,介紹了一種實(shí)用性強(qiáng)、通用性好、移植方便的數(shù)據(jù)記錄儀軟硬件設(shè)計(jì)方案。本方案采用ARM內(nèi)核微處理器結(jié)合SD卡以及文件系統(tǒng)的設(shè)計(jì),并擴(kuò)展出常用的通信接口以適應(yīng)與使用不同通信協(xié)議的設(shè)備互連。經(jīng)實(shí)際運(yùn)行測(cè)試,記錄儀能夠很好地將數(shù)據(jù)存入建立的文件中,為后續(xù)數(shù)據(jù)分析、曲線(xiàn)繪制等工作提供了方便,具有一定的推廣意義和實(shí)用價(jià)值。
中圖分類(lèi)號(hào): TP368.1;V248.2
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.181570
中文引用格式: 劉琨,許哲,李飛飛. 基于A(yíng)RM微控制器的飛行數(shù)據(jù)記錄儀設(shè)計(jì)[J].電子技術(shù)應(yīng)用,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.
Design of flight data recorder based on ARM microcontroller
Liu Kun,Xu Zhe,Li Feifei
The 41st Institute of the Fourth Academy of China Aerospace Science and Technology Co.,Ltd.,Xi′an 710025,China
Abstract: To record the flight data of unmanned helicopter in real time, and for the convenience of subsequent analysis of the helicopter′s flight state and mathematical modeling, in this paper, a data recorder with the features of good practicability, generality and convenient to transplantation is designed with software and hardware solution. This solution is designed with ARM microcontroller combined with SD card and the file system, and commonly used communication interfaces are added to connect with different devices using different communication protocols. By actual running tests, the flight data can be well stored in the file set up before, and provides the convenience for subsequent data analysis, curve drawing and so on. Also, it has certain significance for popularization and practical value.
Key words : flight data recorder;unmanned helicopter;ARM microcontroller;file system;SD card

0 引言

    實(shí)時(shí)記錄飛行器的飛行數(shù)據(jù)對(duì)于監(jiān)測(cè)飛行器飛行狀態(tài)以及后續(xù)研究飛行器(如模型辨識(shí)等)都起著關(guān)鍵的作用。對(duì)于小型飛行器來(lái)說(shuō),設(shè)計(jì)開(kāi)發(fā)一種體積小、重量輕且操作方便的數(shù)據(jù)記錄儀顯得尤為重要。隨著微控制器技術(shù)的發(fā)展,其片上Flash空間也越來(lái)越大,一般都有幾十到上百KB的容量,能夠滿(mǎn)足多數(shù)數(shù)據(jù)量小的應(yīng)用,但對(duì)于某些應(yīng)用(例如數(shù)據(jù)采集和文件存儲(chǔ)等),片上Flash就不能提供足夠的存儲(chǔ)空間了??梢?jiàn)大容量數(shù)據(jù)的存儲(chǔ)是微控制器應(yīng)用系統(tǒng)的瓶頸[1]。因此需要外擴(kuò)存儲(chǔ)設(shè)備來(lái)解決存儲(chǔ)空間不足的問(wèn)題。以Flash為存儲(chǔ)體的SD卡因其具備體積小、功耗低、可擦寫(xiě)以及非易失性等特點(diǎn)而被廣泛應(yīng)用。本文將介紹一種采用ARM處理器結(jié)合SD卡的直升機(jī)飛行數(shù)據(jù)記錄儀設(shè)計(jì)方案。

1 飛行數(shù)據(jù)記錄儀總體設(shè)計(jì)

    本方案所選取的ARM處理器為意法半導(dǎo)體公司的Cortex-M3內(nèi)核高性能微處理器STM32F103,其片內(nèi)擁有豐富的資源。數(shù)據(jù)記錄儀的數(shù)據(jù)接收端由STM32F103擴(kuò)展出常用的通信接口:USART、SPI、I2C、USB2.0,以適用于不同通信協(xié)議的設(shè)備;直升機(jī)的控制輸入數(shù)據(jù)即4個(gè)舵機(jī)PWM控制信號(hào)由STM32F103輸入捕獲單元捕獲并做信號(hào)解混控處理;數(shù)據(jù)存儲(chǔ)端采用STM32F103內(nèi)特有的SDIO接口與SD卡連接并結(jié)合FatFs文件系統(tǒng),實(shí)現(xiàn)與SD的通信與數(shù)據(jù)文件存儲(chǔ);同時(shí)增加按鍵與指示燈來(lái)實(shí)現(xiàn)對(duì)設(shè)備的操作和設(shè)備狀態(tài)指示功能。飛行數(shù)據(jù)記錄儀的總體設(shè)計(jì)圖如圖1所示。

ck3-t1.gif

2 記錄儀硬件設(shè)計(jì)

    記錄儀所采用的核心處理器STM32F103是意法半導(dǎo)體公司生產(chǎn)的具有ARM Cortex-M3內(nèi)核的32位高性能微處理器,最高主頻72 MHz,具有512 KB容量片內(nèi)Flash、64 KB片內(nèi)SRAM、12通道DMA控制器,以及多達(dá)11個(gè)定時(shí)器,并擁有I2C、USART、SPI、CAN、USB2.0和SDIO通信接口[2],足以滿(mǎn)足數(shù)據(jù)記錄儀的設(shè)計(jì)要求。

2.1 串口通信電路

    本無(wú)人直升機(jī)系統(tǒng)所使用的AHRS采用串口RS232協(xié)議,為了采集AHRS數(shù)據(jù)需要設(shè)計(jì)主控制器與AHRS的通信接口電路。本文采用RS232電平轉(zhuǎn)換芯片MAX232作為RS232電平與TTL電平轉(zhuǎn)換器,以實(shí)現(xiàn)AHRS與主控制器的數(shù)據(jù)通信。RS232串口通信電平轉(zhuǎn)換電路如圖2所示。

ck3-t2.gif

2.2 MicroSD卡電路

    SD卡與主控制器內(nèi)SDIO接口連接,以實(shí)現(xiàn)主控制器與SD卡的通信以及對(duì)SD卡的操作,完成SD卡檢測(cè)和文件系統(tǒng)的建立以及數(shù)據(jù)存儲(chǔ)。本文采用MicroSD卡作為存儲(chǔ)介質(zhì),該型卡的數(shù)據(jù)信號(hào)線(xiàn)采用6線(xiàn)制,分別為數(shù)據(jù)線(xiàn)D0、D1、D2和D3,命令線(xiàn)CMD和時(shí)鐘線(xiàn)CK。數(shù)據(jù)線(xiàn)D0~D3分別與主控制器SDIO接口的4根數(shù)據(jù)SDIO-D0~SDIO-D3線(xiàn)互連,命令線(xiàn)與時(shí)鐘線(xiàn)分別與SDIO接口的SDIO-CMD和SDIO-CK連接。其中數(shù)據(jù)線(xiàn)和命令線(xiàn)需加上拉電阻。MicroSD卡采用3.3 V供電。MicroSD卡的SDIO模式電路圖如圖3所示。

ck3-t3.gif

2.3 舵機(jī)PWM信號(hào)捕獲電路

    由于舵機(jī)的控制信號(hào)PWM信號(hào)具有周期固定、占空比可調(diào)的特點(diǎn),因此只需要捕獲PWM信號(hào)高電平所占的寬度即可。使用STM32F103內(nèi)部定時(shí)器的輸入捕獲功能就可完成此項(xiàng)任務(wù)。從接收機(jī)輸出的PWM信號(hào)一路輸入舵機(jī)同時(shí)分出相同一路輸入STM32F103的定時(shí)器TIM3的4個(gè)通道TIM3_CH1~ TIM3_CH4進(jìn)行信號(hào)捕獲處理。舵機(jī)PWM信號(hào)的捕獲電路示意圖如圖4所示。

ck3-t4.gif

3 記錄儀軟件設(shè)計(jì)

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)來(lái)對(duì)數(shù)據(jù)進(jìn)行接收。環(huán)形緩沖區(qū)示意圖如圖5所示。

ck3-t5.gif

    數(shù)據(jù)包以包頭、數(shù)據(jù)、包尾的順序依次進(jìn)入緩沖區(qū),程序中定義包頭包尾檢測(cè)函數(shù),從當(dāng)前指針位置實(shí)時(shí)檢測(cè)尋找數(shù)據(jù)包尾,當(dāng)找到數(shù)據(jù)包尾時(shí),再逆序遍歷找到對(duì)應(yīng)的數(shù)據(jù)包頭,以此保證一包數(shù)據(jù)的實(shí)時(shí)性。環(huán)形緩沖區(qū)的長(zhǎng)度是一包數(shù)據(jù)長(zhǎng)度的2倍,兩個(gè)緩沖區(qū)交替讀/寫(xiě)數(shù)據(jù),因此能夠保證數(shù)據(jù)的完整性。

3.2 文件系統(tǒng)

    由于采集的數(shù)據(jù)需要使用與PC兼容的FAT16文件系統(tǒng)組織文件才可以直接在PC上使用MATLAB或Excel軟件打開(kāi)并繪制曲線(xiàn),因此需要在微控制器中移植文件系統(tǒng)來(lái)完成此功能。本方案選取的FatFs文件系統(tǒng)是一個(gè)完全免費(fèi)開(kāi)源的文件系統(tǒng),專(zhuān)門(mén)為小型的嵌入式系統(tǒng)設(shè)計(jì)。它完全用標(biāo)準(zhǔn)C語(yǔ)言編寫(xiě),具有良好的硬件平臺(tái)獨(dú)立性,只需做簡(jiǎn)單的修改就可以方便移植到不同類(lèi)型的微處理器上[3];它支持FAT12、FAT16和FAT32,支持多個(gè)存儲(chǔ)媒介;具有多個(gè)緩沖區(qū),可以對(duì)多個(gè)文件進(jìn)行讀/寫(xiě)。FatFs文件系統(tǒng)層次結(jié)構(gòu)如圖6所示。

ck3-t6.gif

    對(duì)于最頂層的應(yīng)用層,用戶(hù)無(wú)須理會(huì)FatFs的內(nèi)部結(jié)構(gòu)和復(fù)雜的FAT 協(xié)議,只需要調(diào)用FatFs模塊提供給用戶(hù)的一系列應(yīng)用接口函數(shù),如f_open、f_read、f_write和f_close等,就可以方便地讀/寫(xiě)文件。中間層的FatFs模塊實(shí)現(xiàn)了FAT 文件讀/寫(xiě)協(xié)議。FatFs模塊提供的是ff.c和ff.h兩個(gè)文件。除非有必要,用戶(hù)一般不用修改,使用時(shí)將頭文件直接包含進(jìn)去即可。需要編寫(xiě)移植代碼的是FatFs模塊提供的底層接口,它包括存儲(chǔ)媒介讀/寫(xiě)接口(disk I/O)和供給文件創(chuàng)建修改時(shí)間的實(shí)時(shí)時(shí)鐘[4]。本文采用的FatFs文件系統(tǒng)版本是R0.09a。FatFs在移植時(shí)一般只需要修改2個(gè)文件,即ffconf.h和diskio.c。FatFs的所有配置項(xiàng)都是存放在ffconf.h 中,可以通過(guò)配置其中一些選項(xiàng)來(lái)滿(mǎn)足自己的需求。

    FatFs的移植主要分為3步:(1)根據(jù)編譯器的數(shù)據(jù)類(lèi)型在integer.h文件中定義好數(shù)據(jù)類(lèi)型;(2)ffconf.h文件配置FatFs的相關(guān)功能以滿(mǎn)足需求;(3)在diskio.c文件中進(jìn)行底層驅(qū)動(dòng)編寫(xiě),一般需要編寫(xiě)6個(gè)驅(qū)動(dòng)函數(shù):disk_initialize、disk_status、disk_read、disk_write、disk_ioctl和get_fattime。完成以上3個(gè)步驟后即可完成FatFs的移植,在使用FatFs之前必須先通過(guò)f_mount函數(shù)注冊(cè)一個(gè)工作區(qū)才能開(kāi)始后續(xù)應(yīng)用接口函數(shù)的使用。

3.3 直升機(jī)傾斜盤(pán)舵機(jī)信號(hào)解混控

    由于控制直升機(jī)傾斜盤(pán)的3個(gè)舵機(jī)是以聯(lián)動(dòng)的方式使傾斜盤(pán)產(chǎn)生相應(yīng)動(dòng)作來(lái)控制直升機(jī)姿態(tài),而直升機(jī)的控制輸入變量為縱向周期變距變量Δδe、側(cè)向周期變距變量Δδa、總距變量Δδc以及尾槳變距變量Δδr[5],因此需要對(duì)控制傾斜盤(pán)動(dòng)作的3個(gè)舵機(jī)信號(hào)做解混控處理來(lái)分別解算出縱向周期變距變量Δδe、側(cè)向周期變距變量Δδa、總距變量Δδc。其中尾槳變距舵機(jī)單獨(dú)工作,因此不需要做信號(hào)解混控,只需單獨(dú)采集該舵機(jī)信號(hào)即可換算出尾槳變距變量Δδr。直升機(jī)傾斜盤(pán)結(jié)構(gòu)示意圖如圖7所示。

ck3-t7.gif

    當(dāng)傾斜盤(pán)做單純前后傾斜運(yùn)動(dòng)時(shí)(對(duì)應(yīng)直升機(jī)滾轉(zhuǎn)運(yùn)動(dòng)),舵機(jī)A與舵機(jī)B同時(shí)動(dòng)作且幅度相同,舵機(jī)C則相對(duì)舵機(jī)A、B差動(dòng);當(dāng)傾斜盤(pán)做單純左右傾斜運(yùn)動(dòng)時(shí)(對(duì)應(yīng)直升機(jī)俯仰運(yùn)動(dòng)),舵機(jī)A與舵機(jī)B差動(dòng)且幅度相同,而此時(shí)舵機(jī)C則不動(dòng);當(dāng)傾斜盤(pán)做單純平行上下運(yùn)動(dòng)時(shí)(對(duì)應(yīng)直升機(jī)總距變化),3個(gè)舵機(jī)同時(shí)動(dòng)作且幅度相同。

    由圖7所示的傾斜盤(pán)結(jié)構(gòu)示意圖可簡(jiǎn)化出如圖8所示的傾斜盤(pán)舵機(jī)間幾何關(guān)系圖。

ck3-t8.gif

    由于A(yíng)、B、C構(gòu)成等邊三角形3個(gè)頂點(diǎn),因此由圖8所示幾何關(guān)系可知舵機(jī)A與舵機(jī)B的連線(xiàn)中點(diǎn)D對(duì)旋翼軸心O的力臂L1是舵機(jī)C對(duì)旋翼軸心O力臂的1/2,當(dāng)傾斜盤(pán)做單純前后傾斜運(yùn)動(dòng)時(shí)(對(duì)應(yīng)直升機(jī)滾轉(zhuǎn)運(yùn)動(dòng)),舵機(jī)C的動(dòng)作幅度應(yīng)是舵機(jī)A、B動(dòng)作幅度的2倍,對(duì)應(yīng)采集到的舵機(jī)C的PWM信號(hào)占空比變化量也是舵機(jī)A、B的PWM信號(hào)占空比變化量的2倍。由以上分析可得出直升機(jī)傾斜盤(pán)舵機(jī)控制信號(hào)值與縱向周期變距變量Δδe、側(cè)向周期變距變量Δδa以及總距變量Δδc的關(guān)系式如式(1)所示:

     ck3-gs1.gif

式中,α、β、γ分別代表實(shí)時(shí)采集到的舵機(jī)A、B、C的PWM信號(hào)高電平寬度值,α0、β0、γ0分別代表總距為0°時(shí)舵機(jī)A、B、C的PWM信號(hào)高電平寬度值。

    由式(1)可反解出對(duì)應(yīng)的縱向周期變距變量Δδe、側(cè)向周期變距變量Δδa、總距變量Δδc如式(2)所示:

     ck3-gs2.gif

    由式(2)可知,由總距為0°時(shí)舵機(jī)A、B、C的PWM信號(hào)高電平寬度值和實(shí)時(shí)采集到舵機(jī)A、B、C的PWM信號(hào)高電平寬度值即可實(shí)時(shí)解算出對(duì)應(yīng)的縱向周期變距變量Δδe、側(cè)向周期變距變量Δδa和總距變量Δδc。

3.4 程序流程圖

    數(shù)據(jù)記錄儀的軟件部分如上所述,包含AHRS數(shù)據(jù)接收與解包、文件系統(tǒng)建立與文件存儲(chǔ)、舵機(jī)PWM信號(hào)捕獲與信號(hào)解混控以及人機(jī)交互程序。整個(gè)軟件部分的程序流程圖如圖9所示。

ck3-t9.gif

4 飛行數(shù)據(jù)記錄儀的應(yīng)用

    按照正常操作流程,將數(shù)據(jù)記錄儀搭載到無(wú)人直升機(jī)上進(jìn)行數(shù)據(jù)采集,各項(xiàng)飛行參數(shù)被正常記錄到在板載MicroSD卡內(nèi)創(chuàng)建的Flight Data.txt文件中,可以通過(guò)MATLAB、Excel等軟件對(duì)文件中的數(shù)據(jù)繪制成曲線(xiàn)供后續(xù)數(shù)據(jù)分析,也可對(duì)數(shù)據(jù)做預(yù)處理后作為無(wú)人直升機(jī)模型辨識(shí)的控制輸入數(shù)據(jù)。根據(jù)記錄的數(shù)據(jù)利用MATLAB繪制的直升機(jī)三軸姿態(tài)角、三軸角速率分別如圖10、圖11所示。

ck3-t10.gif

ck3-t11.gif

5 結(jié)束語(yǔ)

    本飛行數(shù)據(jù)記錄儀能夠很好地完成飛行數(shù)據(jù)記錄功能,可將數(shù)據(jù)實(shí)時(shí)寫(xiě)入創(chuàng)建的Flight Data.txt中,并能夠方便地在PC上使用MATLAB、Excel等軟件讀入數(shù)據(jù)并繪制曲線(xiàn)。同時(shí),預(yù)留的不同通信協(xié)議接口可以方便地與使用不同通信協(xié)議的傳感器等設(shè)備互連,且軟件修改方便,只需修改前端數(shù)據(jù)接收部分程序即可快速投入使用,通用性強(qiáng),可移植性好,能夠滿(mǎn)足實(shí)際使用的要求。

參考文獻(xiàn)

[1] 張濤,左謹(jǐn)平,馬華玲.FatFs在32位微控制器STM32上的移植[J].電子技術(shù),2010(3):25.

[2] Stmicroelectronics.STM32F103xCDE datasheet[Z].2009.

[3] 洪岳煒,王百鳴,謝超英.一種易于移植和使用的文件系統(tǒng)FatFs Moduel[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008(5):29.

[4] 李世奇,董浩斌,李榮生.基于FatFs文件系統(tǒng)的SD卡存儲(chǔ)器設(shè)計(jì)[J].測(cè)控技術(shù),2011,30 (12):79-80.

[5] 楊一棟.直升機(jī)飛行控制[M].北京:國(guó)防工業(yè)出版社,2007.



作者信息:

劉  琨,許  哲,李飛飛

(中國(guó)航天科技集團(tuán)有限公司第四研究院第四十一研究所,陜西 西安710025)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。