鄭傳濤, 華 瑩, 劉 洋, 劉大勇, 宋 芳, 張 宇
(吉林大學(xué)a.電子科學(xué)與工程學(xué)院;b.通信工程學(xué)院,長春 130012)
紅外氣體傳感技術(shù)是利用氣體分子對紅外光的吸收作用來檢測氣體,該光學(xué)氣體檢測方法具有選擇性好、靈敏度高、響應(yīng)速度快等優(yōu)點[1-4]。基于紅外吸收光譜原理,學(xué)者們先后提出了非分散紅外光譜法[5]、可調(diào)諧激光光譜法[6]、腔增強(qiáng)吸收光譜法[7]、光聲光譜法[8]、光熱光譜法[9]等多種紅外氣體檢測方法。面向大氣監(jiān)測、深海勘探、城市燃?xì)庋矙z等國家重要需求,吉林大學(xué)研制了多套紅外氣體傳感系統(tǒng),開展了南海可燃冰勘探、城市烷烴氣體走航探測等示范應(yīng)用[10-13]。
紅外氣體傳感系統(tǒng)包括光學(xué)系統(tǒng)、電學(xué)系統(tǒng)和氣路系統(tǒng)。光學(xué)系統(tǒng)含有光源、氣室、探測器,紅外光與氣體分子作用后產(chǎn)生氣體吸收信號。電學(xué)系統(tǒng)包括主控制系統(tǒng)、信號處理系統(tǒng)、遠(yuǎn)程數(shù)據(jù)處理平臺。氣路系統(tǒng)包括氣泵、氣體過濾等模塊,用于抽樣氣體預(yù)處理。在電學(xué)系統(tǒng)方面,傳統(tǒng)的紅外氣體檢測儀通常僅包含一個主控制器,如先進(jìn)精簡指令集計算機(jī)(ARM),這類單片機(jī)一般不運(yùn)行操作系統(tǒng),不具有聯(lián)網(wǎng)、文件處理等功能。
單片機(jī)類課程是吉林大學(xué)電子信息本科大類專業(yè)下的專業(yè)核心課程,包括微型計算機(jī)原理、MCS-51 系列單片機(jī)原理與應(yīng)用、嵌入式系統(tǒng)(ARM 單片機(jī))、數(shù)字信號處理器(DSP)原理與應(yīng)用等[14]。基于教學(xué)與科研深度融合的教育教學(xué)理念,針對單片機(jī)類課程的實驗教學(xué)要求,在前期開發(fā)的高精度紅外氣體檢測儀基礎(chǔ)上,研制了一種融合ARM、DSP、Linux操作系統(tǒng)的紅外激光氣體檢測儀。該檢測儀不僅能用于DSP、ARM、Linux操作系統(tǒng)等實驗教學(xué),還能讓學(xué)生了解激光光譜傳感、氣體檢測、波長調(diào)制光譜等前沿技術(shù),從實驗、實踐等多個維度提升學(xué)生的單片機(jī)應(yīng)用能力。
波長調(diào)制光譜技術(shù)是在激光器的低頻掃描驅(qū)動信號上疊加一個高頻正弦信號,對激光器輸出光的波長進(jìn)行調(diào)制[15]。經(jīng)過調(diào)制的光信號被氣體吸收后,高次諧波分量的幅值與氣體濃度成比例,采用鎖相放大技術(shù)提取出探測器輸出信號的二次諧波信號,即可測量氣體濃度。波長調(diào)制光譜技術(shù)將信號搬移至高頻段后進(jìn)行處理,從而抑制了激光強(qiáng)度噪聲、光學(xué)干涉、電路噪聲等低頻噪聲,提高了檢測精度。
在高頻正弦信號的調(diào)制作用下,激光器輸出光的頻率f(t)可由下式來表示:
式中:f0(t)為激光的中心頻率;a為調(diào)制幅度;ωm為調(diào)制角頻率。根據(jù)朗伯-比爾定律,紅外光被吸收前后的光強(qiáng)比I/I0為
式中:Si為吸收線強(qiáng);φ(f)為線型函數(shù);p為壓強(qiáng);xj為目標(biāo)氣體的體積分?jǐn)?shù);L為有效光程。
當(dāng)待測氣體的體積分?jǐn)?shù)很小時,吸光度滿足Siφ(f)pxjL?1,因此式(2)可表示為
將式(1)代入式(3),并按照傅里葉級數(shù)展開,可以得到
式中:Hn(f0,a)為展開式的n次項系數(shù)。令θ =ωmt,有
由式(5)、(6)可得,當(dāng)測量痕量氣體時,氣體體積分?jǐn)?shù)均與被吸收信號的各次諧波分量成比例,一般選用偶次諧波中幅值最大的二次諧波分量的最大值來表示氣體體積分?jǐn)?shù)。
所設(shè)計的氣體檢測儀由光學(xué)系統(tǒng)和電學(xué)系統(tǒng)組成,檢測儀結(jié)構(gòu)如圖1 所示。光學(xué)系統(tǒng)主要用于氣體濃度信息感知,是傳感系統(tǒng)的核心。利用由2 個高反鏡(反射率為99.35%)構(gòu)成的法布里-珀羅(FP)腔增強(qiáng)氣體分子對紅外光的吸收。激光器驅(qū)動模塊由外部電壓信號控制,驅(qū)使激光器發(fā)出目標(biāo)波長的激光;光纖準(zhǔn)直器將激光準(zhǔn)直后以離軸方式耦合進(jìn)入諧振腔,經(jīng)過氣體吸收后的光信號經(jīng)由光電探測器轉(zhuǎn)換成電信號。

圖1 紅外激光氣體檢測儀的結(jié)構(gòu)
電學(xué)系統(tǒng)用于透射光強(qiáng)中的濃度信息提取,并提供友好的人-機(jī)交互界面。電學(xué)系統(tǒng)包含嵌入式控制模塊與光譜信息感知模塊。將系統(tǒng)所需的各功能模塊集成在一塊電路板上,最大限度地減小系統(tǒng)體積。結(jié)合無線網(wǎng)絡(luò)與云服務(wù)器,實現(xiàn)傳感信息的遠(yuǎn)程監(jiān)測與智能控制。
嵌入式控制模塊以多核ARM 處理器(型號Exynos 4412)為核心部件,裝載Linux 操作系統(tǒng),運(yùn)行Qt應(yīng)用程序,實現(xiàn)了濃度數(shù)據(jù)、激光器運(yùn)行參數(shù)的實時監(jiān)測、本地信息存儲以及網(wǎng)絡(luò)發(fā)布。基于無線網(wǎng)絡(luò)、消息隊列遙測傳輸(MQTT)協(xié)議、云服務(wù)器以及安卓應(yīng)用程序,實現(xiàn)了數(shù)據(jù)的云存儲、遠(yuǎn)程監(jiān)測以及控制。
控制模塊的主處理器型號為三星公司的Exynos 4412,采用四核Cortex-A9 架構(gòu),主頻為1.4 ~1.6 GHz,板載雙倍速率3(DDR3)內(nèi)存、嵌入式多媒體卡(EMMC)存儲芯片、通用串行總線(USB)集線器、S5M8767 電源管理模塊等,工作電壓2.65 ~5.50 V,支持Linux-Qt操作系統(tǒng)。
除主處理器外,嵌入式控制模塊包含三部分電路:RS-232 串口通信電路、數(shù)據(jù)采集電路以及接口電路。將四路串口資源全部引出:1 號串口專用于二次諧波信號峰值讀取;2 號串口作為虛擬控制臺串口,用于調(diào)試;其余串口用于擴(kuò)展外設(shè)。在數(shù)據(jù)采集電路中,選用2 片模數(shù)轉(zhuǎn)換器(ADC)芯片(型號AD7980),分別采集經(jīng)過隔離處理的激光器電流和溫度信號,實現(xiàn)激光器參數(shù)的監(jiān)測。通過紅綠藍(lán)(RGB)三基色接口連接液晶顯示屏(LCD),該屏幕分辨率為1 024 ×600。引出兩路USB 接口,一路用于跨平臺傳輸文件,另一路連接USB Wi-Fi 模塊,用于網(wǎng)絡(luò)通信。TF(Trans Flash)卡槽和USB OTG(On-The-Go)接口均可用于燒寫操作系統(tǒng)固件。板上引出多路輸入/輸出(I/O)口,用于系統(tǒng)控制。
開機(jī)時,首先運(yùn)行引導(dǎo)加載程序(BootLoader),然后加載Linux內(nèi)核,最后掛載文件系統(tǒng)。Linux 操作系統(tǒng)的移植過程主要包括:建立交叉編譯環(huán)境、編譯BootLoader、裁剪與編譯Linux 內(nèi)核、編譯文件系統(tǒng)以及燒寫系統(tǒng)固件。
由于嵌入式系統(tǒng)的運(yùn)算能力和存儲空間有限,因此通常在個人計算機(jī)(PC)上對源代碼進(jìn)行交叉編譯,再下載到目標(biāo)機(jī)上運(yùn)行。為了實現(xiàn)程序的跨平臺運(yùn)行,需要在個人計算機(jī)上構(gòu)建交叉編譯環(huán)境。本研究中編譯BootLoader以及Linux 內(nèi)核所需要的交叉編譯器為“arm-2009q3”,編譯文件系統(tǒng)所用的交叉工具為“arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linuxgnu”,安裝交叉編譯器并更新環(huán)境變量后交叉編譯環(huán)境搭建完成。
使用U-boot 引導(dǎo)加載程序,U-boot 啟動流程如圖2 所示。ARM處理器上電以后,默認(rèn)執(zhí)行地址為0 的內(nèi)部程序存儲器(iROM)中的代碼BL0;iROM中的程序會根據(jù)設(shè)定的啟動模式(OM),在不同的外部存儲(與非門程序存儲器(NAND)、安全數(shù)碼/多媒體(SD/MMC)存儲卡、嵌EMMC、USB)中拷貝BL1 程序到內(nèi)部數(shù)據(jù)存儲器(iRAM)中運(yùn)行。BL1 是三星公司為了系統(tǒng)安全而設(shè)置的,加載BL1 時會進(jìn)行多重檢驗。BL1 最終加載BL2 到iRAM 中運(yùn)行,BL2 是U-boot 的前14 kB程序,主要功能是初始化外部DDR3 和系統(tǒng)時鐘、構(gòu)建異常向量表等,并將U-boot 加載到DDR3中。U-boot的主要功能是完成大部分硬件的初始化,從外部存儲中加載Linux 內(nèi)核到DDR3 中,完成對內(nèi)核的校驗,設(shè)置內(nèi)核啟動參數(shù),最后調(diào)用內(nèi)核。

圖2 U-boot啟動流程
U-boot的移植過程主要包含以下步驟:①根據(jù)半導(dǎo)體廠商提供的U-boot 源碼以及編譯配置文件編譯U-boot;②燒寫U-boot 并驗證;③檢查SD 卡驅(qū)動、EMMC 驅(qū)動、LCD 驅(qū)動以及網(wǎng)絡(luò)驅(qū)動等是否存在問題;④對各部分驅(qū)動進(jìn)行修改,直到調(diào)試通過。
使用的Linux 內(nèi)核版本為Linux 3.0.15。裁剪Linux內(nèi)核的主要目的是減小內(nèi)核所占的存儲空間,減少內(nèi)核啟動所需時間。采用“make menuconfig”命令以圖像化界面的方式配置Linux 內(nèi)核。將串口驅(qū)動程序、觸摸屏驅(qū)動程序、USB 驅(qū)動程序、USB Wi-Fi 模塊驅(qū)動程序、U盤驅(qū)動程序、SD 卡驅(qū)動程序等編譯進(jìn)內(nèi)核。同時,將不需要的驅(qū)動程序從內(nèi)核中裁剪掉。配置完內(nèi)核后,生成新的“.config”配置文件,執(zhí)行“make zImage”編譯內(nèi)核,成功后生成內(nèi)核鏡像文件“zImage”。
Linux內(nèi)核啟動后,必須掛載一個根文件系統(tǒng)。根文件系統(tǒng)包含一些維護(hù)和運(yùn)行系統(tǒng)的腳本、庫文件、配置文件等,在根文件系統(tǒng)的基礎(chǔ)上,結(jié)合Qt/E 5.7 來構(gòu)建和管理圖形系統(tǒng)。移植Qt/E 5.7 文件系統(tǒng)時,需要編譯源碼和觸摸屏校驗工具“tslib”。編譯文件系統(tǒng)包括以下步驟:①編寫并執(zhí)行編譯配置腳本;②使用編譯命令“make”和安裝命令“make install”完成編譯;③編譯觸摸屏校驗工具;④使用“mkimage”和“make_ext4fs”工具,將根文件系統(tǒng)、Qt/E 5.7 源碼編譯結(jié)果、“tslib”觸摸文件以及字庫文件打包生成鏡像文件“system.img”。
Qt是一個跨平臺C ++圖形用戶界面應(yīng)用程序開發(fā)框架。Qt Creator 是一種Qt 集成開發(fā)環(huán)境,集成高級C ++代碼編輯器、qmake 構(gòu)建工具、Qt Designer 等。本研究在Ubuntu系統(tǒng)中搭建Qt開發(fā)環(huán)境來設(shè)計應(yīng)用程序。
在應(yīng)用程序中,主要設(shè)計了初始化程序、串口通信程序、激光器參數(shù)監(jiān)測程序、波形顯示程序、傳感器控制程序、網(wǎng)絡(luò)通信程序、嵌入式數(shù)據(jù)庫以及人機(jī)交互界面,程序流程如圖3 所示。系統(tǒng)初始化時,開啟子線程來連接Wi-Fi,連接成功后,獲取實時網(wǎng)絡(luò)時間,并將其設(shè)置為Linux 系統(tǒng)時間。此外,還需完成MQTT 客戶端的實例化、結(jié)構(gòu)化查詢語言(SQLite)數(shù)據(jù)庫連接、波形圖初始化以及部分信號與槽函數(shù)的綁定。在串口通信程序中,手動配置串口參數(shù)、讀取二次諧波信號的峰值并轉(zhuǎn)換成濃度信息。在激光器參數(shù)監(jiān)測程序中,根據(jù)ADC工作時序,調(diào)用Linux 驅(qū)動程序提供的通用函數(shù),控制ADC 并讀取轉(zhuǎn)換結(jié)果。采用QCustomPlot構(gòu)件實現(xiàn)波形顯示,實時繪制氣體濃度、激光器溫度、電流等曲線。在傳感器控制程序中,調(diào)用Linux 內(nèi)核的讀寫函數(shù),通過控制I/O 口電平來控制繼電器組的通斷,最終控制激光器溫控、驅(qū)動和氣泵的通和斷。在網(wǎng)絡(luò)通信程序中,基于MQTT 協(xié)議連接代理服務(wù)器“mosquitto”,實現(xiàn)氣體濃度數(shù)據(jù)以及激光器參數(shù)的網(wǎng)絡(luò)發(fā)布,結(jié)合云服務(wù)器實現(xiàn)數(shù)據(jù)的云端存儲;同時,通過訂閱特定主題來接收遠(yuǎn)程控制命令,實現(xiàn)遠(yuǎn)程控制;為了防止網(wǎng)絡(luò)故障時出現(xiàn)數(shù)據(jù)丟失的問題,基于嵌入式SQLite數(shù)據(jù)庫,實現(xiàn)了數(shù)據(jù)的本地存儲。設(shè)計了友好的人機(jī)交互界面,方便可視化操作。

圖3 應(yīng)用程序流程
以DSP為核心的光譜信息感知模塊產(chǎn)生激光器驅(qū)動信號、采集光電探測器輸出信號并計算與濃度相關(guān)的二次諧波信號,按照標(biāo)定曲線計算氣體濃度,最后傳輸給嵌入式控制模塊。
采用美國德州儀器的TMS320F28335 為主控芯片,主頻150 MHz,含32 位浮點處理單元、6 個增強(qiáng)型捕獲(eCAP)模塊、3 個32 位定時器、3 個串行通信接口(SCI)模塊。光譜信息感知模塊主要實現(xiàn)兩大功能:一是產(chǎn)生激光器驅(qū)動信號,控制激光器的掃描波長范圍;二是采集光電探測器輸出電信號,從中提取濃度信息并發(fā)送給嵌入式控制模塊。利用2 片直接數(shù)字頻率合成(DDS)芯片(型號為AD9834)分別產(chǎn)生5 Hz的掃描信號和5 kHz的調(diào)制信號,通過放大電路將信號幅值放大到目標(biāo)范圍內(nèi),再采用加法電路將2 個信號疊加,最終形成激光器的驅(qū)動信號。采用比較器芯片(型號為LM393)將掃描信號與直流電壓信號進(jìn)行比較,生成與掃描信號同頻的方波信號來精準(zhǔn)地控制采集電路采樣的起始點。在采集電路中,首先對探測器的輸出信號進(jìn)行預(yù)放大與隔離處理,然后使用普通I/O口來模擬串行外圍設(shè)備接口(SPI),以控制16 位ADC(型號為AD7902)芯片,并采集探測器的輸出信號。
上電后,對DSP、各個芯片及接口進(jìn)行初始化,產(chǎn)生激光器驅(qū)動信號,允許eCAP 模塊中斷以及定時器中斷。當(dāng)eCAP模塊捕獲到掃描信號同頻方波的上升沿時,執(zhí)行eCAP 模塊對應(yīng)的中斷服務(wù)程序。在中斷服務(wù)程序中,首先開啟定時器,當(dāng)定時時間到時再對探測器輸出信號采樣1 次。定時器的定時時間決定了采樣點之間的時間間隔。當(dāng)采樣點數(shù)大于12 000 時,關(guān)閉定時器,算法開始執(zhí)行標(biāo)志位為1。判斷算法執(zhí)行標(biāo)志位為1 后,對采集到的吸收信號數(shù)組執(zhí)行正交鎖相放大算法,提取二次諧波信號,并找到諧波信號的峰值點;執(zhí)行滑動平均算法,將數(shù)據(jù)通過串口發(fā)送至嵌入式控制模塊中并進(jìn)行處理。最后,清除eCAP 模塊中斷標(biāo)志位,算法開始執(zhí)行標(biāo)志位為0,開啟下一輪光譜信息采集過程。光譜信息提取算法的流程如圖4所示。

圖4 光譜信息提取算法流程
采用研制的紅外激光氣體檢測儀對氨氣濃度進(jìn)行了測試,選取以6 612.7 cm-1為中心的吸收線作為氨氣的目標(biāo)吸收線,采用相應(yīng)波長的分布反饋激光器(DFB)作為激光光源。
激光器驅(qū)動信號的質(zhì)量會直接影響激光器輸出光的質(zhì)量,因此產(chǎn)生低噪聲驅(qū)動信號十分重要。為了掃過氨氣的目標(biāo)吸收線,將激光器驅(qū)動信號電壓設(shè)置為2.36 ~4.20 V。圖5 為實際測得的光譜信息感知模塊產(chǎn)生的激光器驅(qū)動信號。根據(jù)驅(qū)動信號的傅里葉變換光譜分析結(jié)果,驅(qū)動信號中主要包含低頻信號分量以及5 kHz處的頻率分量。

圖5 激光器驅(qū)動信號
在氨氣檢測實驗過程中,對光譜感知模塊提取的二次諧波信號波形進(jìn)行了存儲,以此來評估該模塊對二次諧波信號的提取能力。在不同氨氣體積分?jǐn)?shù)下提取到的二次諧波信號如圖6 所示。可以看出,該模塊在不同氨氣體積分?jǐn)?shù)下均能提取出二次諧波信號,隨著氨氣體積分?jǐn)?shù)的升高諧波信號幅值也增大。同時,諧波信號曲線較為平滑,說明檢測儀的噪聲較小。

圖6 不同氨氣體積分?jǐn)?shù)下的二次諧波信號
為了得到氨氣體積分?jǐn)?shù)與二次諧波信號幅值之間的關(guān)系,利用該檢測儀開展了氨氣標(biāo)定實驗。在標(biāo)定過程中,采用商用氣體混合系統(tǒng)(型號為Environics 4000)產(chǎn)生目標(biāo)體積分?jǐn)?shù)的氨氣樣品。采用純氮氣(純度為99.999%)將體積分?jǐn)?shù)為40 ×10-6的標(biāo)準(zhǔn)氨氣樣品稀釋為體積分?jǐn)?shù)5 ×10-6、10 ×10-6、15 ×10-6、20 ×10-6、25 ×10-6、30 ×10-6、35 ×10-6、40 ×10-6的氨氣樣品。對每種樣品測試4 min,在不同體積分?jǐn)?shù)下得到的二次諧波信號峰值如圖7(a)所示。對每組二次諧波信號峰值取平均值,擬合得到的峰值均值與氨氣體積分?jǐn)?shù)的關(guān)系如圖7(b)所示。結(jié)果表明,兩者之間有良好的線性關(guān)系。

圖7 線性響應(yīng)測試
為了驗證氣體檢測儀的現(xiàn)場應(yīng)用能力,在吉林市東北亞農(nóng)產(chǎn)品批發(fā)市場的氨制冷冷庫中開展了氨氣泄漏的檢測實驗,以定點方式測試了冷庫中氨氣制冷壓縮機(jī)泄漏情況。當(dāng)測量如圖8(a)所示的制冷壓縮機(jī)時,測得的結(jié)果如圖8(b)所示。結(jié)果表明,此處氨氣體積分?jǐn)?shù)較其他地方偏高,說明壓縮機(jī)存在一定泄漏,這驗證了該檢測儀的現(xiàn)場應(yīng)用能力。

圖8 檢測儀現(xiàn)場應(yīng)用測試
針對單片機(jī)類課程的實驗教學(xué)要求,為了促進(jìn)教學(xué)與科研相融合,研制了一種紅外激光氣體檢測儀。該檢測儀采用腔增強(qiáng)吸收光譜技術(shù)和波長調(diào)制光譜技術(shù)實現(xiàn)了氣體傳感功能。結(jié)合嵌入式操作系統(tǒng)、云端服務(wù)器等技術(shù),實現(xiàn)了氣體傳感信息的遠(yuǎn)程共享和交互。利用研制的檢測儀,開展了氨制冷冷庫現(xiàn)場氨氣泄漏的檢測應(yīng)用,驗證了檢測儀功能。該檢測儀不僅能用于DSP、ARM 單片機(jī)、Linux 操作系統(tǒng)等實驗教學(xué),還能讓學(xué)生了解紅外光譜、激光光譜等前沿技術(shù),從多個維度促進(jìn)學(xué)生單片機(jī)應(yīng)用能力的提升,達(dá)到了較好的科研育人、實踐育人的綜合效果。