<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于STM32L151的便攜式氣體檢測(cè)儀設(shè)計(jì) 

          基于STM32L151的便攜式氣體檢測(cè)儀設(shè)計(jì) 

          作者:何源 黃夢(mèng)濤 王偉峰 時(shí)間:2017-12-26 來(lái)源:電子產(chǎn)品世界 收藏
          編者按:針對(duì)環(huán)境有毒有害氣體檢測(cè),本文設(shè)計(jì)了一種可同時(shí)檢測(cè)多種氣體的便攜式氣體檢測(cè)儀。該設(shè)計(jì)通過(guò)使用TI公司的新型電化學(xué)模擬前端芯片LMP91000和高精度ADC芯片ADS1115改善硬件統(tǒng)一性和硬件測(cè)量精度;微控制器STM32L151軟件設(shè)計(jì)中通過(guò)數(shù)字濾波和溫度補(bǔ)償提高氣體檢測(cè)的溫度穩(wěn)定性和精度。

          作者 / 何源 黃夢(mèng)濤 王偉峰

          本文引用地址:http://www.ex-cimer.com/article/201712/373595.htm

            西安科技大學(xué) 電氣與控制工程學(xué)院(陜西 西安 710054)

            何源(1990-),男,嵌入式系統(tǒng)設(shè)計(jì)師,研究方向:智能傳感器、工業(yè)控制系統(tǒng)、物聯(lián)網(wǎng)。

          摘要:針對(duì)環(huán)境有毒有害氣體檢測(cè),本文設(shè)計(jì)了一種可同時(shí)檢測(cè)多種氣體的便攜式氣體檢測(cè)儀。該設(shè)計(jì)通過(guò)使用TI公司的新型電化學(xué)模擬前端芯片和高精度ADC芯片ADS1115改善硬件統(tǒng)一性和硬件測(cè)量精度;微控制器STM32L151軟件設(shè)計(jì)中通過(guò)提高氣體檢測(cè)的溫度穩(wěn)定性和精度。

          引言

            環(huán)境中常見(jiàn)的有毒有害氣體如:氨氣(NH3)、二氧化硫(SO2)、一氧化碳(C0)、硫化氫(H2S)、氮氧化物(NOX)等。對(duì)于上述有毒有害氣體都有對(duì)應(yīng)的;的主要優(yōu)勢(shì)是:線性輸出、低功耗、良好的分辨率、良好的重復(fù)性和準(zhǔn)確性,所以在氣體檢測(cè)領(lǐng)域得到了廣泛的應(yīng)用[1-4]

            現(xiàn)如今市場(chǎng)中大部分多合一氣體檢測(cè)儀是以分立元件組建的電化學(xué)傳感器前端調(diào)理電路而且以微控制器自身10位或者12位的ADC轉(zhuǎn)換器作數(shù)據(jù)采集,很多產(chǎn)品沒(méi)有考慮溫度對(duì)電化學(xué)傳感器的影響;因此其在溫度穩(wěn)定性和精度上不盡人意。對(duì)此,本文通過(guò)改善硬件電路設(shè)計(jì)和找尋有效的溫度修正方法,從而提高氣體檢測(cè)的溫度穩(wěn)定性和精度。

          1 電化學(xué)傳感器工作原理

            目前大部分電化學(xué)傳感器都是三電極結(jié)構(gòu),其工作原理是氣體通過(guò)選擇型敏感膜擴(kuò)散到傳感器內(nèi),并與傳感器內(nèi)化學(xué)溶液產(chǎn)生氧化反應(yīng)或者還原反應(yīng),并在在工作電極上產(chǎn)生電流信號(hào),其反應(yīng)類型決定工作電極上的電流方向[3,7]。

            簡(jiǎn)化三電極電化學(xué)傳感器調(diào)理電路如圖1所示。工作電流在對(duì)電極與工作極之間流動(dòng),通過(guò)A2運(yùn)放器將電流信號(hào)轉(zhuǎn)化為電壓信號(hào)。分立電路中調(diào)整RF的值,使A2輸出的值滿足后端轉(zhuǎn)換電路的要求[5]??梢钥闯龇至⒄{(diào)理電路較為復(fù)雜,由于分立元件個(gè)體差異調(diào)整難度較大,同時(shí)引入誤差也隨之增大。

            采用芯片可極大簡(jiǎn)化調(diào)理電路的設(shè)計(jì),提高調(diào)理電路的可靠性。芯片內(nèi)部結(jié)構(gòu)圖如圖2所示。芯片內(nèi)部具有可編程的增益控制和基準(zhǔn)電壓控制,能夠適應(yīng)多種電化學(xué)傳感器,芯片通過(guò)I2C 總線與微控制器通信。I2C總線可掛接多個(gè)芯片從而實(shí)現(xiàn)多氣體檢測(cè)傳感器陣列的設(shè)計(jì)。其內(nèi)部寄存器在官方數(shù)據(jù)手冊(cè)中已有詳細(xì)的說(shuō)明,在此就不再贅述。

            根據(jù)運(yùn)算放大器虛短虛斷的特性可得到以下表達(dá)式:

          (1)

            式中,Vref_div為基準(zhǔn)電壓,Vout輸出電壓,Iwe為電化學(xué)傳感器工作電流?!朗怯呻娀瘜W(xué)傳感器性質(zhì)所決定的。

            測(cè)量氣體濃度與電化學(xué)傳感器工作電流的關(guān)系表達(dá)式:

          (2)

            表達(dá)式中C為被測(cè)氣體濃度,SI為電化學(xué)傳感器靈敏度。

            以上表達(dá)式中RTIAVref_div、SI都為已知量,測(cè)量Vout就能推算出被測(cè)氣體濃度C。

          2 硬件系統(tǒng)設(shè)計(jì)

            硬件系統(tǒng)框圖如圖3所示,硬件系統(tǒng)主要由微控制器、溫濕度傳感器、ADC轉(zhuǎn)換器、電化學(xué)傳感器調(diào)理電路、顯示和按鍵控制組成。使用REF3020高精度電壓基準(zhǔn)芯片提供基準(zhǔn)電壓,電化學(xué)傳感器調(diào)理電路使用LMP91000,ADC轉(zhuǎn)換器使用ADS1115,這三個(gè)要素是保證硬件電路高精度測(cè)量的基礎(chǔ)。

          3 軟件系統(tǒng)設(shè)計(jì)

            軟件主要部分流程圖如圖4所示,其余顯示和控制部分程序不是本文重點(diǎn),在此不予闡述。其中最為重要的是與溫度曲線修正兩個(gè)步驟。

            3.1

            對(duì)于數(shù)字濾波本文主要使用中值加均值的綜合濾波方法,即先為采集的n個(gè)電化學(xué)輸出值集合Sn排序得到新的集合Tn,根據(jù)實(shí)際情況去掉集合Tn頭尾m個(gè)數(shù),然后再求集合中剩下數(shù)的平均值,即;此方法既能抑制隨機(jī)干擾,又能濾除明顯的脈沖干擾。

            3.2 溫度曲線修正

            電化學(xué)傳感器的工作溫度一般在-20℃~50℃,在其極限工作溫度下傳感器壽命非常短。在溫度為20℃時(shí),電化學(xué)傳感器被看作沒(méi)有溫漂,即20℃為電化學(xué)傳感器的中心溫度;因此本文計(jì)算溫度擬合曲線就以20℃時(shí)的數(shù)值為基準(zhǔn)點(diǎn)。以一氧化碳傳感器4CO-2000為例,在-5℃~50℃溫度區(qū)間,以5℃遞增;分別使用一氧化碳含量為250ppm、706ppm、1001ppm、1701ppm標(biāo)氣做高低溫實(shí)驗(yàn),實(shí)驗(yàn)溫度曲線如圖5(a)所示,實(shí)驗(yàn)溫漂曲線如圖5(b)所示,實(shí)驗(yàn)溫漂比曲線如圖5(c)所示,實(shí)驗(yàn)平均溫漂比曲線如圖5(d)所示。

            溫漂值是以20℃時(shí)的測(cè)量值為基準(zhǔn)值,分別與其他溫度下測(cè)量值作差得到的集合。溫漂比值是以20℃時(shí)的測(cè)量值為基準(zhǔn)值,分別與溫漂值集合中的值作比得到的集合。平均溫漂比值是4種標(biāo)氣實(shí)驗(yàn)中得到的溫漂比值,在同一個(gè)溫度點(diǎn)做算術(shù)平均得到的集合。

            從溫漂比曲線圖(圖5(c))中不難看出,傳感器在各個(gè)標(biāo)氣溫度實(shí)驗(yàn)中變化趨勢(shì)基本是一致的,再用平均溫漂比曲線(圖5(d))作最小二乘法多項(xiàng)式曲線擬合,就可得到比較適合的溫度修正擬合曲線。

            溫度修正擬合曲線(K(T))一般是兩次或者三次多項(xiàng)式的計(jì)算,它的參數(shù)即為實(shí)時(shí)的溫度值,計(jì)算得到是當(dāng)前溫度下的偏差比值;因此完整的公式為:

          (3)

            表達(dá)式中V(T)為修正后的氣體濃度值;V為未修正的氣體濃度值;K(T)為溫度修正擬合曲線。

          4 性能測(cè)試

            將高低溫實(shí)驗(yàn)后擬合的溫度曲線加入嵌入式軟件程序中,將氣體檢測(cè)儀在純氮?dú)庵羞M(jìn)行校零。再次在-5℃~50℃的溫度區(qū)間進(jìn)行性能測(cè)試,同樣以CO傳感器為例測(cè)試結(jié)果如表1所示。

            由表1中的數(shù)據(jù)可以看出,CO傳感器溫度在-5℃~50℃區(qū)間內(nèi),對(duì)4種標(biāo)氣的測(cè)量誤差都保持在了±4ppm范圍內(nèi),有效的證明了本文中提取溫度修正擬合曲線的方法是可行、有效的。此方法在氣體檢測(cè)儀其他傳感器如:O2傳感器、H2S傳感器、SO2傳感器、NH3傳感器中得到同樣驗(yàn)證。

          5 結(jié)論

            本文討論了基于STM32L151的便攜式氣體檢測(cè)儀的設(shè)計(jì)和實(shí)現(xiàn),對(duì)其硬件電路結(jié)構(gòu)及關(guān)鍵的數(shù)字濾波與溫度修正方法進(jìn)行了詳細(xì)的介紹。通過(guò)大量高低溫實(shí)驗(yàn)證明:本文提出以“平均溫漂比”作參考樣本計(jì)算溫度修正擬合曲線,要比溫度分段式溫度修正方法[6~7]更為有效。為氣體檢測(cè)領(lǐng)域硬件結(jié)構(gòu)設(shè)計(jì)和修正方法提供了新的參考。但是由于電化學(xué)傳感器自身的保質(zhì)期一般在1~5年不等,期間其特性會(huì)發(fā)生細(xì)微變化,可通過(guò)定期校準(zhǔn)能減小此變化對(duì)測(cè)量的影響。

            參考文獻(xiàn):

            [1]劉立紅,車文實(shí),孫晶,等.電化學(xué)傳感器在環(huán)境檢測(cè)中的應(yīng)用研究[J].科技創(chuàng)新與應(yīng)用,2017,(01):43.

            [2]姚毓升,解永平,文濤.三電極電化學(xué)傳感器的恒電位儀設(shè)計(jì)[J].儀表技術(shù)與傳感器,2009,(09):23-25.

            [4]王翠翠,周真,秦勇,等.電流型電化學(xué)傳感器恒電位儀電路的研究[J].傳感器世界,2009,(02):36-39.

            [5]孫宇峰,黃行九,劉偉,等.電化學(xué)CO氣體傳感器及其敏感特性[J].傳感器技術(shù),2004,(07):14-17.

            [5]許劍鋒,蘆靜,郝歡,等.基于LMP91000的電化學(xué)傳感器調(diào)理電路設(shè)計(jì)[J].傳感器世界,2014,(02):22-25.

            [6]李世偉,金貴新,陳彬,等.溫度對(duì)電化學(xué)NH3氣傳感器影響研究[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2016,(28):3-6.

            [7]方長(zhǎng)青,葉樺,尤衛(wèi)衛(wèi).基于STM32的礦用電化學(xué)一氧化碳傳感器的設(shè)計(jì)[J].信息技術(shù)與信息化,2013,(05):145-148.

            本文來(lái)源于《電子產(chǎn)品世界》2018年第1期第49頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處。



          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();