董常慶,施云波*,牛昊東,王 天,康林貴,李 萍
(1.哈爾濱理工大學,測控技術與通信工程學院,黑龍江 哈爾濱 150080;2.哈爾濱理工大學,測控技術與儀器黑龍江省高校重點實驗室,黑龍江 哈爾濱 150080)
目前,氨氣、氯氣、甲烷等氣體是化學工業(yè)上廣泛使用的氣體,超過60%的化學品在其生產(chǎn)制造過程中要使用這些氣體。 同時這些氣體也是化學事故發(fā)生率最高的危險化學品之一[1]。 這些氣體的泄漏事故具有危險性大、危害性廣、突發(fā)性強、處置難度高等特點,如果能夠準確監(jiān)測到泄漏事故的發(fā)生,對于社會的穩(wěn)定、企業(yè)的安全生產(chǎn)運行將具有重要意義。
現(xiàn)階段的氣體傳感器普遍存在交叉敏感性的問題,即在實際檢測中傳感器不僅僅對單一目標氣體敏感,而且還對其他氣體產(chǎn)生響應,無法采用單一氣體傳感器實現(xiàn)對混合氣體組成成分的有效檢測[2]。
采用靈敏度存在差異的多種氣體傳感器組成傳感器陣列,能夠獲得包含目標氣體信息在內(nèi)的一系列多維響應信號,這為實現(xiàn)混合氣體的成分檢測與分析提供了可行性手段。 人工嗅覺系統(tǒng)主要包括氣體傳感器陣列與模式識別算法,其檢測與分析性能主要與氣體傳感器陣列的材料特性和模式識別算法的性能有關,是兩者共同作用的結果[3]。
相關研究學者已經(jīng)在現(xiàn)有氣體傳感器基礎上,通過信號處理方法來提升對氣體的檢測和分析性能,取得了一定的研究成果,并明確指出:信號處理方法在人工嗅覺系統(tǒng)中具有關鍵作用,可以通過提升算法的性能來增強人工嗅覺系統(tǒng)的檢測與分析性能[4]。 宋凱等人[5]使用獨立成分分析(Independent Component Analysis,ICA)對MOS 傳感器陣列的響應數(shù)據(jù)進行分析,成功對3 種不同的氣體進行識別,但ICA 屬于線性特征提取方法,所提取到的混合氣體特征的可分性并不理想;Zou Xiaobo 等人[6]利用主成分分析(Principal Component Analysis,PCA)提取多維響應信號中所包含的特征,再通過人工神經(jīng)網(wǎng)絡實現(xiàn)對氣體種類的識別,然而PCA 算法也屬于線性特征提取和分類方法,在處理非線性響應信號時達不到理想的精度;譚光韜等人[7]利用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)提取傳感器陣列數(shù)據(jù)特征,根據(jù)提取的特征圖,使用不同分支網(wǎng)絡對不同氣體進行定性識別,并根據(jù)識別結果,使用核主成分分析(Kernel Principal Component Analysis,KPCA)與梯度提升決策樹(Gradient Boosting Decision Tree,GBDT)對混合氣體成分進行定量估計。
盡管以上方法在一定程度上實現(xiàn)了對混合氣體濃度的檢測與分析,但想要將這些模式識別算法部署在算力有限的移動設備上,特別是部署在擁有大量監(jiān)測節(jié)點的氣體監(jiān)測系統(tǒng)中,節(jié)點處理器薄弱的計算能力和敏感的成本成為了其算法部署的難點。 所以目前的氣體監(jiān)測系統(tǒng)都存在著功能有限、檢測精度低、監(jiān)測氣體種類單一、監(jiān)測成本高等突出問題。 因此,本文設計了一個將氣體傳感器陣列與數(shù)據(jù)融合算法結合的氣體監(jiān)測系統(tǒng),能夠?qū)怏w進行定性和定量分析,可以有效提高氣體監(jiān)測系統(tǒng)的性能。
本文中,采用nRF52832 BLE Soc 實現(xiàn)傳感器陣列數(shù)據(jù)的采集、處理和傳輸。 選用SSA-BPNN 進行數(shù)據(jù)融合,實現(xiàn)氣體的定性和定量分析。 系統(tǒng)將設備端處理后的信息通過BLE 發(fā)送到上位機進行處理、顯示,從而有效降低系統(tǒng)的負擔,增加系統(tǒng)處理數(shù)據(jù)的靈活性,也可以避免單一節(jié)點的海量存儲,可實現(xiàn)節(jié)點的組網(wǎng)監(jiān)測、在線實時監(jiān)測、數(shù)據(jù)的暫存和后端的大量存儲。
本系統(tǒng)采用以微微網(wǎng)為基本單元,分布式網(wǎng)絡為結構的網(wǎng)絡拓撲方案,網(wǎng)絡支持兩種物理設備,即主從一體設備和從設備,其中主從一體設備可充當BLE 節(jié)點,不僅可以收發(fā)數(shù)據(jù),還具備中繼功能;而從設備只提供部分的BLE 服務,只能充當終端節(jié)點,不具有中繼功能,它只負責將采集的數(shù)據(jù)信息發(fā)送給上層節(jié)點。 整個網(wǎng)絡由數(shù)據(jù)總機、中繼節(jié)點和終端節(jié)點組成。 系統(tǒng)網(wǎng)絡分布如圖1 所示。
圖1 系統(tǒng)網(wǎng)絡分布圖
其中,中繼節(jié)點和終端節(jié)點是整個系統(tǒng)的信息采集部分,主要實現(xiàn)對環(huán)境參數(shù)的監(jiān)測,如氣體濃度、環(huán)境溫濕度等,節(jié)點采集傳感器陣列輸出的電壓信號,并經(jīng)過處理、融合后,再向上傳輸數(shù)據(jù)。 數(shù)據(jù)總機實現(xiàn)系統(tǒng)數(shù)據(jù)的中繼傳輸。 通過上位機實現(xiàn)數(shù)據(jù)的實時顯示、動態(tài)曲線繪制和監(jiān)測區(qū)域內(nèi)的閾值報警等功能,完成人機交互任務。
中繼節(jié)點和終端節(jié)點的角色分別為主從一體設備和從設備,中繼節(jié)點實現(xiàn)兩個微微網(wǎng)單元的連接,既作為上層單元的從設備,又是下層單元的主設備,而終端節(jié)點只能作為本層單元的從設備,不具備其他功能。
網(wǎng)絡中的各設備依靠Nordic s132 協(xié)議棧進行通信連接。 中繼設備通過切換主從角色實現(xiàn)掃描和廣播操作,而終端從設備只進行廣播,并且主角色設備會根據(jù)程序中的廣播名稱與相應的從角色設備進行連接,從角色設備通過串口透傳服務將自身數(shù)據(jù)或中繼數(shù)據(jù)向主角色設備進行傳輸,數(shù)據(jù)層層上傳,最終通過人機交互界面向用戶顯示。
本系統(tǒng)以BLE 為無線通信方式,設計了分布式網(wǎng)絡拓撲結構,系統(tǒng)啟動后網(wǎng)絡內(nèi)各個設備通過通信協(xié)議快速、自動地組成一個獨立的氣體監(jiān)測網(wǎng)絡系統(tǒng),完成監(jiān)測區(qū)域內(nèi)各種氣體的實時監(jiān)測和濃度預警等任務。
傳感器陣列的選型組成需要結合系統(tǒng)要求,針對不同目標氣體的性質(zhì)進行綜合評估、考慮[8]。 氣體傳感器選擇使用MEMS 工藝半導體材料制造的金屬氧化物半導體(MOS)氣體傳感器,其通常使用SnO2、ZnO 和In2O3等半導體氧化物作為敏感材料[9-12],具有靈敏度高、成本低、穩(wěn)定性好等特點。根據(jù)實際應用的需要,選擇了6 種MEMS 傳感器組成傳感器陣列。 其主要參數(shù)、實物圖及連接方式分別見表1、圖2。
表1 傳感器陣列主要參數(shù)
圖2 傳感器陣列實物圖
監(jiān)測節(jié)點的結構主要包括微處理器單元、傳感器陣列、OLED 顯示模塊、Flash 存儲模塊、供電單元等。 其硬件框圖及實物圖如圖3、圖4 所示。
圖3 監(jiān)測節(jié)點硬件框圖
圖4 系統(tǒng)監(jiān)測節(jié)點實物圖
監(jiān)測節(jié)點各部分協(xié)同工作,共同完成信息的采集、處理、存儲以及信息交互等功能。 傳感器陣列包括多個MEMS 氣體傳感器、溫濕度傳感器以及相應的信號調(diào)理電路,負責測量環(huán)境中的氣體濃度和溫、濕度,并將測量的信號調(diào)理為微處理器單元可采樣的標準電壓信號。 微處理器將采集到的標準電壓信號進行融合計算,得到直觀可讀的氣體濃度、溫濕度數(shù)據(jù),并通過BLE 通信實現(xiàn)與上級節(jié)點的信息交互。 Flash 數(shù)據(jù)存儲容量為16 MB,保存了最近時間內(nèi)的數(shù)據(jù),存滿后自動覆蓋更新,方便后期對設備的檢查更新和參數(shù)標定,從而實現(xiàn)各氣體濃度檢測值的可靠性輸出。 供電單元通過電壓轉(zhuǎn)換為節(jié)點的各個部分提供穩(wěn)定、可靠的供電。
1.4.1 下位機軟件設計
監(jiān)測節(jié)點的控制核心是nRF52832,實現(xiàn)設備間的連接以及采集數(shù)據(jù)的處理和運算。 軟件設計流程如圖5(a)所示。
圖5 系統(tǒng)軟件設計
1.4.2 上位機軟件設計
監(jiān)測軟件具有實時顯示網(wǎng)絡中各監(jiān)測節(jié)點的工作狀態(tài)、濃度動態(tài)曲線、監(jiān)測數(shù)據(jù)歷史查詢調(diào)取等功能。 設計流程如圖5(b)所示。
實驗采用靜態(tài)配氣法,將一定量的氣態(tài)或蒸汽態(tài)的待測氣體加入已知容積的氣體測試箱,通過內(nèi)置的微型風扇將待測氣體與稀釋氣體混合均勻,氣體的體積分數(shù)就是待測量的濃度,即同一壓力下,待測氣體的體積分數(shù)與總氣體的體積分數(shù)的比值。 由此,改變加入待測氣體的體積分數(shù)就可以得到具有不同體積分數(shù)的標準氣體樣本。 稀釋氣體和清洗氣體為高濃度氮氣N2。
系統(tǒng)實驗測試示意圖如圖6 所示。 先將監(jiān)測節(jié)點、數(shù)據(jù)總機、移動終端進行組網(wǎng)連接,待成功后,通過配氣系統(tǒng)將稀釋氣體氮氣和待測氣體以一定的比例輸入到氣體測試箱中,待風扇將氣體混合均勻,開始測量,傳感器陣列的輸出經(jīng)監(jiān)測節(jié)點采集后,通過中繼傳輸,傳送到手機端進行保存。
圖6 系統(tǒng)實驗測試示意圖
待測氣體為C2H5OH、CH4、NH3三種氣體,配制在不同背景氣體下不同體積分數(shù)待測氣體的氣樣,背景氣體為待測目標氣體外的其他兩種氣體,如目標氣體為乙醇時,背景氣體為甲烷和氨氣,共獲得91 組測試數(shù)據(jù)。 對每一個樣本都進行三次測量,每次測量間隔90 s,樣本間的測量間隔為5 min,隨機抽取三次測量中的數(shù)據(jù)組成訓練集數(shù)據(jù)和測試集。部分實驗測量數(shù)據(jù)如表2 所示。
表2 部分實驗測量數(shù)據(jù)
人工神經(jīng)網(wǎng)絡是由大量神經(jīng)元所組成的非線性系統(tǒng),通過不斷地調(diào)整神經(jīng)元之間權重和閾值來發(fā)現(xiàn)輸入輸出之間的關系,不需要建立復雜的方程式,避開復雜的理論推理分析,在氣體識別中有較多的應用,其中BP 神經(jīng)網(wǎng)絡應用最為廣泛[13-15]。 BP 網(wǎng)絡局部尋優(yōu)能力強,但是容易受初始權重和閾值的影響陷入局部最優(yōu),導致模型預測精度差、穩(wěn)定性差。 因此引進麻雀搜索算法(Sparrow Search Algorithm,SSA)來優(yōu)化BP 神經(jīng)網(wǎng)絡的初始權重和閾值,提高模型的預測精度,相較于其他優(yōu)化算法如灰狼算法(Grey Wolf Optimizer,GWO)、引力搜索算法(Gravitational Search Algorithm,GSA)和粒子群優(yōu)化算法(Particle Swarm Optimization,PSO),該算法在精度、收斂速度、穩(wěn)定性和魯棒性等方面優(yōu)于GWO、PSO 和GSA。 本文采用LM 優(yōu)化算法(Levenberg-Marquardt Algorithm,LMA)對神經(jīng)網(wǎng)絡模型進行訓練。
3.1.1 模型設計及優(yōu)化
理論已經(jīng)證明,單個隱層的網(wǎng)絡可以通過增加神經(jīng)元節(jié)點的個數(shù)來實現(xiàn)輸入到輸出的非線性映射。 由于傳感器陣列是由6 個氣體傳感器組成,分析測試需要對乙醇、甲烷、氨氣三種氣體進行定性分析,因此建立一個具有6 維輸入、3 維輸出,結構為6:H:3 的BP 神經(jīng)網(wǎng)絡,H 為隱層的神經(jīng)元節(jié)點數(shù),3 代表網(wǎng)絡的輸出結果,期望輸出為:
神經(jīng)元個數(shù)H 可以根據(jù)經(jīng)驗公式[16]進行選擇,其公式為:
式中:m和n分別為輸出層和輸入層的神經(jīng)元個數(shù),a是[0,10]之間的常數(shù)。 根據(jù)式(1)選擇4 個~14個神經(jīng)元進行訓練,得到隱層神經(jīng)元數(shù)在[4,14]范圍內(nèi)變化時,MSE 和訓練步數(shù)變化的曲線。 由圖7可知,隨著神經(jīng)元數(shù)的增加,訓練步數(shù)并不是有規(guī)律的增加或者減少,MSE 隨著神經(jīng)元數(shù)增加而逐漸減小,但當大于11 時,MSE 急劇增加。 最終確定定性分析模型的隱層神經(jīng)元數(shù)為11。
圖7 隱層神經(jīng)元數(shù)對MSE 和訓練步數(shù)的影響
3.1.2 數(shù)據(jù)預處理
為了提高分類辨識效果,需要對傳感器陣列的輸出信號進行預處理,以消除或降低氣體濃度對傳感器輸出的影響[17-18]。 預處理算法直接影響著系統(tǒng)的工作特性,根據(jù)系統(tǒng)使用的氣體傳感器類型、模式識別方法,利用歸一化算法進行信號陣列的歸一化處理,用Vgas、Vair分別表示傳感器在被測樣氣和潔凈空氣中的電壓值,其公式為:
式中:i=1,2,…,6,經(jīng)式(2)處理后的陣列響應Xgas=[xgas,1,xgas,2,…,xgas,6]作為模式識別的實際輸入。
3.1.3 氣體定性預測結果分析
將預處理后的測試集樣本輸入已訓練完成的神經(jīng)網(wǎng)絡模型,得到預測值,通常將預測值>0.7 認為1,將預測值<0.3 認為0,在0.3 ~0.7 之間視為預測出錯。 當設定誤差指標為0.001 時,BPNN 的分類識別準確率為93.55%,SSA-BPNN 的分類識別準確率為100%。 經(jīng)算法優(yōu)化的SSA-BPNN 具有更好的分類效果。 表3 為部分測試集樣本分類識別結果。
表3 不同體積分數(shù)下的部分測試集分類識別結果
未知種類氣體的定量分析通常要經(jīng)過以下兩個步驟來實現(xiàn):首先,對未知種類氣體進行定性識別,得到其種類;其次根據(jù)定性識別結果,轉(zhuǎn)入相應氣體的定量預測模型,從而得到氣體的濃度值。 定量分析實現(xiàn)過程如圖8 所示。
圖8 未知氣體定量分析的實現(xiàn)過程
3.2.1 模型的設計及優(yōu)化
氣體定量分析模型與定性分析模型相似,都是具有6 維輸入、單個隱含層的BP 神經(jīng)網(wǎng)絡模型,但前者輸出是一維的,即氣體濃度預測值Ci。 結構為6 ∶Hi∶1,隱層神經(jīng)元數(shù)Hi則根據(jù)式(1),選擇3 ~13個神經(jīng)元進行訓練,乙醇、甲烷、氨氣三種氣體定量分析模型的MSE 和訓練步數(shù)隨神經(jīng)元數(shù)變化的曲線分別如圖9(a)、(b)、(c)所示。
圖9 定量分析模型訓練結果
氣體濃度信號的歸一化算法為:
式中:cmax為測試集樣本期望結果最大值100,j=1,2,…,20。
測試集樣本經(jīng)傳感器信號歸一化處理后,陣列輸入向量的每一個元素都處于同一個數(shù)量級,既可以作為神經(jīng)網(wǎng)絡合適的輸入數(shù)據(jù),也可以減小化學計量識別中的計算誤差;氣體濃度歸一化可以滿足神經(jīng)元S 型激勵函數(shù)輸出幅度的要求,模型進行預測時,其輸出經(jīng)過氣體濃度信號歸一化算法的反變換得到氣體預測濃度值。
3.2.3 模型參數(shù)的優(yōu)化
使用麻雀搜索算法對模型的初始權重和閾值進行優(yōu)化,優(yōu)化算法程序選取訓練集與測試集整體的均方誤差為SSA 的適應度值。 設置適應度為:
mseTrain、mseTest分別為訓練集和測試集的預測均方誤差,適應度表明最終得到的網(wǎng)絡在測試集和訓練集上均有良好效果。 適應度越小,表明訓練越準確,兼顧模型的預測精度越好。 圖10 為三種預測模型的適應度曲線,模型適應度在迭代數(shù)為50 左右時
圖10 各氣體預測模型的適應度曲線
由圖9 可知,神經(jīng)元數(shù)為10、8、10 時,其模型的MSE 最小,為了使模型獲得更好的預測性能,故選擇10、8、10 作為三種預測模型的神經(jīng)元數(shù)。
3.2.2 數(shù)據(jù)預處理
數(shù)據(jù)預處理包含傳感器信號歸一化和氣體濃度信號的歸一化[19]。 傳感器信號歸一化算法為:
式中:i=1,2,…6,max[·]表示傳感器i對所有測試樣本的最大響應值。已趨于平緩,適應度值分別為:0.165 54、0.073 74、0.304 10,說明三種模型都具有良好的預測性能。
3.2.4 單一氣體定量預測結果分析
將單一氣體測試集分別輸入未經(jīng)優(yōu)化的BP 網(wǎng)絡模型和經(jīng)過麻雀搜索算法優(yōu)化的SSA-BP 網(wǎng)絡模型,樣本經(jīng)傳感器信號歸一化和氣體濃度信號歸一化后作為各模型的實際輸入,最后得到測試結果。BPNN 與SSA-BPNN 的定量預測結果及誤差對比如圖11、表4 所示。
圖11 單一氣體定量分析結果
通過圖11 和表4,可以看出SSA-BPNN 的預測誤差和準確率明顯優(yōu)于BPNN,SSA-BPNN 的大部分預測數(shù)據(jù)均勻分布在黑色實線附近。 而未優(yōu)化的BP 神經(jīng)網(wǎng)絡由于會出現(xiàn)局部最優(yōu)值,導致部分樣本數(shù)據(jù)與整體預測樣本偏離較大。
表4 BPNN 與SSA-BPNN 的預測相對誤差
BPNN 對乙醇、甲烷、氨氣預測的平均相對誤差分別為6.80%、3.99%、15.07%;SSA-BPNN 對三種氣體的預測相對誤差分別為1.11%、1.80%、2.33%。 SSA對BPNN 的優(yōu)化提高了預測模型的預測精度和穩(wěn)定性,模型的預測性能明顯改善。 在一定誤差范圍內(nèi),系統(tǒng)能夠以較高精度實現(xiàn)對單一氣體的定量分析。
3.2.5 混合氣體定量預測結果分析
將混合氣體測試集輸入預測模型進行測試驗證,對比背景氣體濃度為0×10-6、5×10-6、10×10-6下對目標氣體的預測效果,結果如圖12、表5 所示。
圖12、表5 對比了乙醇、甲烷、氨氣三種模型在不同濃度背景氣體下對目標氣體的預測效果。 從預測結果分析,背景氣體濃度為0×10-6時,模型對目標氣體的預測誤差在0.04%~4.02%之間,能較好地對單一氣體濃度進行預測;在背景氣體濃度分別為5×10-6、10×10-6時,模型對目標氣體的預測誤差略有增大,分別在0.40%~5.04%、1.05%~5.43%之間,背景氣體會對模型預測目標氣體造成一定的干擾,但模型仍能以一定精度實現(xiàn)對目標氣體的定量預測。 進一步觀察從樣本濃度上分析,以目標氣體為乙醇為例,對高濃度樣本的預測,預測值更加接近真實值,其相對誤差隨目標氣體濃度升高而降低,這可能是因為乙醇濃度越高,傳感器對乙醇的響應越大,背景氣體對傳感器的干擾性越低,得到的預測結果越準確;對于低濃度氣體,傳感器響應較低,容易受背景氣體干擾,影響預測結果。 當背景氣體濃度升高時,目標氣體的定量預測誤差顯著增大,說明背景氣體濃度的升高會增強其對傳感器的干擾,影響預測效果。 其他氣體分析同理。
圖12 不同濃度背景氣體下對目標氣體的預測效果對比
表5 不同濃度背景氣體下對目標氣體預測的相對誤差
3.2.6 算法部署測試
將完成訓練的SSA-BP 模型的權重和閾值參數(shù)導出,在監(jiān)測節(jié)點上進行部署測試,得到系統(tǒng)節(jié)點的算法執(zhí)行時間、完整運行時間等相關參數(shù)。
通過設置定時器計時,得出處理器執(zhí)行預測模型算法的時間。 算法的執(zhí)行時間在20 ms~50 ms 之間,平均時間為35.25 ms。
監(jiān)測節(jié)點采集一組數(shù)據(jù)到上位機顯示的時間,不僅與網(wǎng)絡的通信協(xié)議有關,還與外界環(huán)境有關。系統(tǒng)的實時性測試在室內(nèi)進行,節(jié)點與節(jié)點間的距離為10 m,中間無阻擋物。 運行時間統(tǒng)計結果如表6 所示。
表6 采集一次數(shù)據(jù)到上位機顯示的運行時間 單位:ms
系統(tǒng)網(wǎng)絡的通信速度并不固定,而是一直在浮動變化。 當下層節(jié)點的數(shù)據(jù)中繼轉(zhuǎn)發(fā)時,會在中繼節(jié)點處消耗一定的時間,造成一定延遲,但可以滿足在線實時監(jiān)測的要求。
本文基于氣體傳感器陣列和BP 神經(jīng)網(wǎng)絡開發(fā)了一種新型無線傳感器網(wǎng)絡監(jiān)測系統(tǒng)。 測試結果表明:麻雀搜索算法具有一定的全局搜索能力和跳出局部最優(yōu)能力,SSA-BPNN 具有良好的非線性擬合能力和預測精度,能夠有效解決氣體傳感器的交叉敏感問題,提高系統(tǒng)對氣體的選擇性,從而提高系統(tǒng)的定性、定量分析性能。
融合氣體傳感器陣列和SSA-BP 神經(jīng)網(wǎng)絡的氣體監(jiān)測系統(tǒng),使得危險氣體監(jiān)測變得智能化和多功能化,更好地保證社會的穩(wěn)定發(fā)展、生產(chǎn)企業(yè)的安全運行,具有推廣應用的價值。