惲 浩,卜雄洙,楊昊青,宋 揚
(南京理工大學機械工程學院,江蘇南京 210094)
在國內(nèi)城市家庭中,隨著天然氣使用的日益普遍,人們逐漸開始關注并重視天然氣的安全使用和監(jiān)測預警[1]。甲烷氣體作為溫室效應的罪魁禍首,不但污染大氣環(huán)境,而且影響人們的身體健康[2]。因此,在日常生活和環(huán)境保護等方面,對甲烷氣體進行檢測具有十分重要的意義[3-4]。
可調(diào)諧半導體激光吸收光譜技術是一種光學氣體檢測技術[5],具有非接觸測量、實時性等優(yōu)點[6],目前已經(jīng)廣泛應用于痕量氣體檢測中[7]。半導體激光器經(jīng)過高頻調(diào)制,輸出的激光掃描甲烷氣體的吸收譜線[8-9],通過白板將吸收光反射回來;然后由平凸鏡將反射光信號聚集到光電探測器;最后利用STM32F407的內(nèi)置外設A/D 轉(zhuǎn)換器進行數(shù)據(jù)采集,反演出甲烷氣體的濃度。為了從光電探測器接收到的微弱信號中提取出二次諧波分量,設計了一種基于STM32 的正交鎖相放大器。該正交鎖相放大器結構簡單,運行穩(wěn)定,能夠解調(diào)出反射光信號中的二次諧波分量,實現(xiàn)正交鎖相放大器的功能。
鎖相放大技術是一種將特定頻率的微弱信號從噪聲中提取出來的技術[10-11],它是以互相關檢測原理為基礎的信號檢測手段[12-13]。含有噪聲的微弱信號可以通過鎖相放大技術提取出來,而噪聲被抑制或者濾除。
鎖相放大器的輸出與待測信號和參考信號的相位差有關。當兩個信號的相位相同時,此時直流分量最大;當兩個信號的相位差為90°時,直流分量為0,此時無法檢測出待測信號。為了正確提取出待測信號,采用正交鎖相放大器[14-15],該放大器不需要進行相位調(diào)節(jié)、測量方便、使用廣泛。
為了驗證甲烷氣體檢測系統(tǒng)中正交鎖相放大器的可行性,利用Matlab 進行正交鎖相放大仿真,提取二次諧波信號。仿真時,三角波的頻率為20 Hz,正弦波的頻率為5 kHz,仿真時間為0.05 s。
理想狀態(tài)下,氣體分子在發(fā)生躍遷時,形成的吸收譜線應為單一譜線[16-17]。實際上,由于分子間的相互作用,吸收譜線具有一定的輪廓,以某一中心頻率向兩側分布。在氣體吸收信號的仿真過程中,可以用洛倫茲線型函數(shù)描述這種現(xiàn)象,其中取譜線的半寬高為0.065 cm-1,洛倫茲線型函數(shù)如圖1 所示。
圖1 洛倫茲線型函數(shù)
低頻三角波經(jīng)過高頻正弦波調(diào)制后,驅(qū)動激光器發(fā)射出調(diào)制光。調(diào)制光來回掃描甲烷氣體的吸收峰,然后被氣體吸收并反射回去。經(jīng)過氣體吸收后的反射光信號如圖2 所示。
圖2 經(jīng)過氣體吸收后的反射光信號
吸收信號中的二次諧波含有甲烷氣體的濃度信息,根據(jù)正交鎖相放大器的原理,設置10 kHz 參考信號進行仿真提取。仿真得到的二次諧波信號如圖3所示。
圖3 二次諧波信號
在甲烷氣體檢測系統(tǒng)中,利用鎖相放大技術實現(xiàn)反射光信號的精確提取是實現(xiàn)氣體檢測的關鍵一步。目前,鎖相放大器主要通過硬件實現(xiàn),體積較大。為了實現(xiàn)小型化和數(shù)字化的設計理念,采用基于STM32 的軟件方法實現(xiàn)正交鎖相放大器。將信號控制和數(shù)據(jù)處理集中在STM32 中,在數(shù)據(jù)運算方面采用內(nèi)部硬件FPU 和集成DSP 庫,加速浮點運算,達到實時檢測的目的。
基于Cortex-M4 內(nèi)核的STM32F407 芯片不但內(nèi)部集成了硬件FPU,支持浮點運算指令集,而且還提供了一套DSP 庫,支持多種DSP 指令集,指令的執(zhí)行可以在單周期內(nèi)完成。相比其他的內(nèi)核,Cortex-M4內(nèi)核在浮點數(shù)據(jù)的各種運算速度方面得到大幅度的提升。以STM32F407 作為甲烷氣體檢測系統(tǒng)的控制和數(shù)字信號處理的中樞,完全可以滿足實時檢測的需求。系統(tǒng)軟件設計流程框如圖4 所示。
圖4 系統(tǒng)軟件設計流程框
首先通過定時器定時一個周期對反射光信號進行采集,采集4 096 個點的數(shù)據(jù)并存儲到數(shù)組中。
在正交鎖相放大運算中,10 kHz 的參考信號是通過DSP庫中的兩個庫函數(shù)arm_sin_f32和arm_cos_f32得到的。在DSP庫中事先生成了含有512個浮點數(shù)的正弦數(shù)據(jù)表,并保存在數(shù)組sinTable_f32 中。設置采樣頻率為100 kHz,通過這兩個函數(shù)查找浮點正弦表得到10 kHz 的正弦、余弦值。如果正弦表中沒有對應的數(shù)據(jù),就通過線性插值的方式獲取正弦、余弦值。
生成參考信號以后,開始進行乘法以及FIR 低通濾波運算。乘法運算采用arm_mult_f32 函數(shù),F(xiàn)IR低通濾波采用arm_fir_f32 函數(shù),濾波器的階數(shù)為32階,截止頻率為100 Hz。在函數(shù)中,每組數(shù)據(jù)以四個數(shù)為一個單位進行計算,不夠四個數(shù)則單獨進行計算。浮點數(shù)運算采用單指令多數(shù)據(jù)指令(SIMD)、乘加指令(MAC)在單周期內(nèi)完成。
一方面為了實現(xiàn)甲烷氣體的實時檢測,另一方面為了減少數(shù)據(jù)的運算量,對正交鎖相放大后的信號進行抽取、FIR 低通濾波。抽取因子為8,低通濾波的參數(shù)與正交鎖相放大的濾波器相同。最后,通過STM32 的D/A 轉(zhuǎn)換器輸出二次諧波信號的峰值,并將數(shù)據(jù)通過串口實時打印出來。
為了驗證STM32F407 能夠?qū)崿F(xiàn)正交鎖相放大器的功能,將仿真得到的吸收信號進行二次諧波提取,與仿真結果進行比較。
解調(diào)出來的二次諧波信號通過STM32 的D/A 轉(zhuǎn)換器引腳輸出,示波器觀察到的二次諧波如圖5 所示。從圖5 中可以看出,正交鎖相放大器基本可以解調(diào)出反射光信號中的諧波信號。
圖5 解調(diào)出的二次諧波
由上述分析可知,STM32F407 可以實現(xiàn)正交鎖相放大器的功能,設計滿足微弱信號的檢測需求,為后面的甲烷氣體檢測奠定了基礎。
在環(huán)境溫度為25 ℃,標準大氣壓下對甲烷氣體進行標定實驗。實驗使用的標準氣室寬度為30 cm,入射光穿過標準氣室并反射回去,光程為60 cm。傳感器與標準氣室的距離為5 m。
首先,用導管把標準氣室和紅外分析儀相連接;然后,檢查標準氣室的氣密性;最后,通過入氣口將一定濃度的甲烷氣體通入標準氣室。標準氣室中的氣體濃度通過紅外分析儀讀出,同時串口打印出二次諧波峰值,如表1 所示。
根據(jù)表1 中的數(shù)據(jù),繪制散點圖并進行線性擬合,如圖6 所示。
表1 不同甲烷氣體濃度下二次諧波的峰值
由圖6 可知,甲烷濃度與二次諧波峰值呈線性關系,線性擬合的表達式如下:
圖6 擬合曲線
其中,x為二次諧波峰值,單位為mV;y為甲烷氣體濃度,單位為ppm·m。
將式(1)寫入STM32 中,對甲烷氣體進行探測并將濃度信息顯示在液晶屏上,基本能對甲烷氣體進行檢測和報警。
文中設計了一種基于STM32 的正交鎖相放大器,并將其應用于甲烷氣體的檢測。該正交鎖相放大器采用STM32F407 芯片的硬件FPU 和DSP 庫,通過調(diào)用庫函數(shù)進行各種浮點數(shù)的基本運算和FIR 低通濾波運算。對于需要實時處理的大量數(shù)據(jù),只需要幾個指令周期即可完成,大大提高了運算效率。對0%~3%濃度的甲烷氣體進行檢測實驗,能夠成功提取出反射光信號中的二次諧波,且二次諧波的峰值和甲烷氣體的濃度呈線性關系,線性度為99.66%,設計滿足甲烷檢測系統(tǒng)的要求。