趙 科 時(shí)維國(guó) 鞠艷杰
(1.大連交通大學(xué)電氣信息學(xué)院,遼寧 大連 116028;2.人工智能四川省重點(diǎn)實(shí)驗(yàn)室,四川 自貢 643000)
石油化工企業(yè)的生產(chǎn)現(xiàn)場(chǎng)普遍存在有毒和易爆氣體,因此必須設(shè)計(jì)安裝工業(yè)用智能氣體探測(cè)器,以保證危險(xiǎn)場(chǎng)合中工作人員的生命和財(cái)產(chǎn)安全。而設(shè)計(jì)網(wǎng)絡(luò)智能化氣體探測(cè)系統(tǒng),實(shí)現(xiàn)多種類型氣體探測(cè)器的組網(wǎng)和多點(diǎn)組網(wǎng)[1],實(shí)時(shí)對(duì)氣體濃度加以采集和控制,能方便監(jiān)控中心對(duì)大量的多通道探測(cè)器進(jìn)行有效管理,并對(duì)各地各類探測(cè)器進(jìn)行調(diào)試和配置。工業(yè)現(xiàn)場(chǎng)需要探測(cè)的氣體種類繁多,只需更換或增減智能探測(cè)系統(tǒng)中相應(yīng)的氣體傳感器,要求探測(cè)器能自動(dòng)識(shí)別并進(jìn)行相關(guān)的配置,由操作人員進(jìn)行簡(jiǎn)單的調(diào)零和標(biāo)定,即可正常使用,而不需要更改任何硬件電路和嵌入式軟件,從而最大程度地節(jié)約時(shí)間和成本。溫濕度對(duì)氣體傳感器的精度有較大影響,設(shè)計(jì)通過(guò)采集現(xiàn)場(chǎng)環(huán)境溫濕度對(duì)氣體探測(cè)器進(jìn)行溫濕度補(bǔ)償和線性化處理,來(lái)提高探測(cè)器的精度。因此,對(duì)具有通用性的氣體探測(cè)器進(jìn)行設(shè)計(jì)研制具有較高的應(yīng)用價(jià)值和現(xiàn)實(shí)意義。
筆者以STM32作為核心控制器,設(shè)計(jì)工業(yè)生產(chǎn)現(xiàn)場(chǎng)有毒易爆氣體探測(cè)器,并為氣體探測(cè)器設(shè)計(jì)以太網(wǎng)接口,將多探測(cè)器組網(wǎng),給出報(bào)警電路、存儲(chǔ)電路、人機(jī)接口電路、RS232調(diào)試電路和主程序流程,并進(jìn)行軟硬件調(diào)試。
基于以太網(wǎng)和STM32控制器的智能氣體探測(cè)器,通過(guò)外圍連接氣體傳感器、溫濕度傳感器、通信接口電路、報(bào)警電路和人機(jī)接口電路構(gòu)成系統(tǒng)的硬件電路,如圖1所示。
圖1 網(wǎng)絡(luò)化智能氣體探測(cè)器電路構(gòu)成
基于以太網(wǎng)和STM32控制器的智能氣體探測(cè)器的工作原理:氣體傳感器把采集到的相應(yīng)氣體濃度轉(zhuǎn)換為微弱的電信號(hào),經(jīng)過(guò)信號(hào)調(diào)理電路,送入STM32控制器片內(nèi)的ADC實(shí)現(xiàn)模數(shù)轉(zhuǎn)換。同時(shí)由溫濕度傳感器采集環(huán)境的溫濕度信號(hào),采用最小二乘法對(duì)氣體濃度進(jìn)行線性化處理和補(bǔ)償,提高探測(cè)器的測(cè)量精度。顯示電路實(shí)時(shí)顯示采集的氣體濃度,當(dāng)濃度超過(guò)安全上限時(shí)觸發(fā)報(bào)警,由PWM驅(qū)動(dòng)排風(fēng)或給氧系統(tǒng)。RS232調(diào)試電路用于對(duì)氣體探測(cè)器進(jìn)行本地化參數(shù)設(shè)置,并可通過(guò)超級(jí)終端進(jìn)行程序監(jiān)控和調(diào)試。以太網(wǎng)通信電路用于實(shí)現(xiàn)多種通用氣體探測(cè)器通過(guò)路由器組網(wǎng),實(shí)現(xiàn)多種氣體和多區(qū)域探測(cè),并實(shí)現(xiàn)控制中心的集中監(jiān)測(cè)與控制,現(xiàn)僅以CO氣體探測(cè)器為例介紹設(shè)計(jì)過(guò)程。
以32位高性能、低成本且低功耗的STM32F103ZET6控制器作為智能氣體探測(cè)系統(tǒng)的核心部件,其內(nèi)核為CortexTM-M3架構(gòu),運(yùn)行頻率72MHz,內(nèi)置Flash和SRAM,有豐富的I/O端口和外設(shè),包含12位ADC、高級(jí)定時(shí)器和提供時(shí)間日歷的獨(dú)立定時(shí)器RTC;還有SPI、USART通信、I2C、USB、SDIO及CAN等接口[2],方便接口電路設(shè)計(jì),也宜于功能擴(kuò)展。
電源電路可提供穩(wěn)定的5.0V直流電壓,經(jīng)LD1086D2M33TR轉(zhuǎn)換后可得到穩(wěn)定的3.3V直流電壓,為探測(cè)器電路提供電源。系統(tǒng)時(shí)鐘由外部8.000MHz晶振X1提供,RTC實(shí)時(shí)時(shí)鐘由外部32.768kHz晶振X2提供。探測(cè)器采用外部手動(dòng)復(fù)位和外部STWD100看門狗電路組成復(fù)位電路[3],防止系統(tǒng)掉電和程序“跑飛”。
設(shè)計(jì)選用ME3-CO電化學(xué)式氣敏CO氣體傳感器,利用待測(cè)氣體進(jìn)行電化學(xué)反應(yīng)所產(chǎn)生的電流正比于氣體濃度的原理,通過(guò)測(cè)定該電流值來(lái)確定待測(cè)氣體的濃度[4],適合在工業(yè)和環(huán)保領(lǐng)域?qū)τ贑O氣體濃度的檢測(cè)。
ME3-CO傳感器分辨率0.5‰,輸出信號(hào)0.06±0.015μA/ppm(1ppm=0.001‰),容易受外界信號(hào)干擾,因此對(duì)前置信號(hào)調(diào)理電路的要求較高。
設(shè)計(jì)中,信號(hào)調(diào)理電路(圖2)采用高增益、高精度和低溫漂的運(yùn)放AD8574作為信號(hào)放大器。該電路采用兩級(jí)放大模式,前級(jí)采用反相比例放大電路,根據(jù)傳感器使用手冊(cè)推薦,負(fù)載電阻選取47Ω,將電流信號(hào)變換為電壓信號(hào);第二級(jí)采用同相比例放大,經(jīng)兩級(jí)放大后可得輸出信號(hào),送至STM32的ADC單元進(jìn)行模數(shù)轉(zhuǎn)換,實(shí)現(xiàn)了氣體傳感器的信號(hào)采集。各級(jí)放大電路加入電容濾除高頻信號(hào)干擾,提高信噪比。電路正在工作時(shí)斷電后,P溝道結(jié)型場(chǎng)效應(yīng)管Q2保證傳感器的工作電極和參考電極短路,再次得電工作時(shí)可以減少電化學(xué)傳感器的啟動(dòng)時(shí)間。
圖2 信號(hào)調(diào)理電路
溫濕度傳感器選用SHT75,采用CMOSen專利技術(shù)[5],集成了溫濕度敏感元件、信號(hào)處理、A/D轉(zhuǎn)換、循環(huán)冗余校驗(yàn)及串行接口等電路,具有12位分辨率,0~100%RH的相對(duì)濕度測(cè)量范圍(±1.8%RH的測(cè)量精度),-40.0~123.8℃溫度測(cè)量范圍(±0.3℃測(cè)量精度),輸出標(biāo)定的數(shù)字信號(hào),可以方便地利用STM32的I2C通信接口進(jìn)行數(shù)據(jù)通信,溫濕度采集電路如圖3所示。SHT75的典型供電電壓3.3V,電源與地之間接入100nF濾波電容。SHT75平均工作電流28μA,為防止過(guò)大電流損壞器件,在數(shù)據(jù)線DATA和時(shí)鐘線SCK各串聯(lián)200Ω電阻,三態(tài)結(jié)構(gòu)的雙向串行數(shù)據(jù)DATA端接10kΩ上拉電阻。
圖3 溫濕度采集電路
STM32以太網(wǎng)接口模塊支持IEEE802.3協(xié)議的MII和RMII兩種標(biāo)準(zhǔn)接口,可靈活配置。設(shè)計(jì)中選用RMII接口。以太網(wǎng)接口電路如圖4所示,以太網(wǎng)接口收發(fā)器選用DP83848單路10/100Mbit/s以太網(wǎng)收發(fā)器[6],該器件功耗很低,具有智能電源關(guān)閉能量檢測(cè)模式。收發(fā)器輸出端連接HX1198NL網(wǎng)絡(luò)隔離變壓器,實(shí)現(xiàn)信號(hào)傳輸、阻抗匹配、雜波抑制及高電壓隔離等,提高系統(tǒng)的安全性。器件SLVU2.8-4使輸出具有更好的EMC性能,網(wǎng)絡(luò)輸出連接器選用工業(yè)級(jí)M12以太網(wǎng)連接器,使接口連接更加可靠,該接口電路具有較高的抗干擾能力,適合惡劣工業(yè)現(xiàn)場(chǎng)環(huán)境中信息的可靠傳輸。
圖4 以太網(wǎng)接口電路
RS232調(diào)試電路用于對(duì)探測(cè)器進(jìn)行程序下載,用超級(jí)終端進(jìn)行程序監(jiān)控。調(diào)試電路的收發(fā)器選用帶隔離電源的ADM3251,對(duì)收發(fā)信號(hào)進(jìn)行共模保護(hù),使數(shù)據(jù)傳輸可靠,提高了抗干擾能力。
報(bào)警電路實(shí)現(xiàn)探測(cè)器運(yùn)行錯(cuò)誤報(bào)警、氣體濃度超上限報(bào)警及氣體濃度低下限自動(dòng)解除報(bào)警等功能。STM32控制器輸出PWM信號(hào)驅(qū)動(dòng)聲光報(bào)警,并進(jìn)行緊急處理,如驅(qū)動(dòng)排風(fēng)扇電機(jī)轉(zhuǎn)動(dòng)以降低氣體濃度。
STM32內(nèi)置512KByte閃存,但由于氣體探測(cè)器程序量較大,記錄數(shù)據(jù)較多,故采用SST25VF106存儲(chǔ)器擴(kuò)展外部存儲(chǔ)空間,該存儲(chǔ)器容量16MByte,經(jīng)由SPI接口連接到STM32控制器。
鍵盤電路采用薄膜開(kāi)關(guān)面板,主要用于數(shù)據(jù)輸入和人機(jī)對(duì)話。各按鍵采用上拉電阻連接到STM32的GPIO口。無(wú)按鍵按下時(shí)各端口保持高電平,有按鍵按下時(shí)對(duì)應(yīng)鍵變?yōu)榈碗娖?,GPIO通過(guò)識(shí)別各按鍵碼及其狀態(tài)來(lái)執(zhí)行相應(yīng)的操作。
顯示電路采用TFT-LCD顯示屏,分辨率320×240,16位真彩,顯示屏色彩控制器為ILI9325,16位并行數(shù)據(jù)接口,自帶觸摸功能控制器TH2046。顯示屏接線端與STM32控制器的FSMC端口相連,通過(guò)FSMC端口靈活配置與LCD控制器的連接[7]。顯示屏顯示當(dāng)前氣體濃度、采集時(shí)間及溫濕度等信息,實(shí)現(xiàn)了一屏多顯的功能。
氣體探測(cè)器系統(tǒng)程序利用STM32的固件庫(kù)在Keil μVision4環(huán)境下用C語(yǔ)言進(jìn)行模塊化編程[8],主要包括系統(tǒng)初始化、按鍵中斷、數(shù)據(jù)采集線性化與濾波、報(bào)警輸出、數(shù)據(jù)存儲(chǔ)與顯示輸出、以太網(wǎng)數(shù)據(jù)通信及RS232調(diào)試等程序。報(bào)警輸出程序用于驅(qū)動(dòng)氣體濃度值超出上限后的報(bào)警并及時(shí)驅(qū)動(dòng)應(yīng)急處理,以及低于下限時(shí)的報(bào)警解除。RS232調(diào)試程序?qū)崿F(xiàn)對(duì)探測(cè)器的初始配置和程序調(diào)試功能。以太網(wǎng)數(shù)據(jù)通信程序?qū)崿F(xiàn)遠(yuǎn)程數(shù)據(jù)收發(fā)和網(wǎng)絡(luò)共享,可以發(fā)送探測(cè)器的狀態(tài)及存儲(chǔ)記錄等信號(hào)到遠(yuǎn)程監(jiān)控中心,也可以接收遠(yuǎn)程控制中心對(duì)網(wǎng)絡(luò)探測(cè)器的調(diào)試及參數(shù)配置等,實(shí)現(xiàn)遠(yuǎn)程集中監(jiān)控。
系統(tǒng)主程序流程如圖5所示,主程序先進(jìn)行初始化,對(duì)STM32控制器的GPIO端口進(jìn)行配置并初始化調(diào)試串口USART、氣體傳感器、溫濕度傳感器和以太網(wǎng)接口,之后等待鍵盤輸入?yún)?shù)或使用默認(rèn)參數(shù)進(jìn)入采集、顯示和以太網(wǎng)傳輸循環(huán)過(guò)程,根據(jù)不同功能標(biāo)志位的變化進(jìn)行相應(yīng)模塊的處理。
圖5 主程序流程
由于篇幅所限,只列出采用STM32的ADC1執(zhí)行AD轉(zhuǎn)換的操作步驟。
首先,開(kāi)啟PA口時(shí)鐘和ADC1時(shí)鐘,設(shè)置PA1為模擬輸入。用RCC_APB2PeriphClockCmd函數(shù)使能GPIOA和ADC時(shí)鐘,使用GPIO_Init函數(shù)設(shè)置PA1的輸入方式。
然后,復(fù)位ADC1,設(shè)置ADC1分頻因子。開(kāi)啟ADC1時(shí)鐘后,通過(guò)ADC_DeInit(ADC1)函數(shù)復(fù)位ADC1,將ADC1的全部寄存器重設(shè)為缺省值后,用RCC_CFGR設(shè)置ADC1的分頻因子。
之后,初始化ADC1參數(shù),設(shè)置ADC1的工作模式及規(guī)則序列等相關(guān)信息。其程序代碼如下:
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作模式為獨(dú)立模式
ADC_InitStructure.ADC_ScanConvMode=DISABLE;//ADC單通道模式
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//ADC單次轉(zhuǎn)換模式
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//轉(zhuǎn)換由軟件觸發(fā)啟動(dòng)
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數(shù)據(jù)右對(duì)齊
ADC_InitStructure.ADC_NbrOfChannel=1;//順序進(jìn)行規(guī)則轉(zhuǎn)換的ADC通道數(shù)目為1
ADC_Init(ADC1,&ADC_InitStructure);//根據(jù)指定的參數(shù)初始化外設(shè)ADC1
此后,使能ADC1并校準(zhǔn)。設(shè)置完ADC1參數(shù)后必須使能AD轉(zhuǎn)換器,執(zhí)行復(fù)位校準(zhǔn)和AD校準(zhǔn),其程序代碼為:
ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1
ADC_ResetCalibration(ADC1);//執(zhí)行復(fù)位校準(zhǔn)
ADC_StartCalibration(ADC1);//開(kāi)始指定ADC1的校準(zhǔn)狀態(tài)
最后,讀取ADC值。軟件開(kāi)啟ADC轉(zhuǎn)換程序代碼如下:
ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能ADC1軟件轉(zhuǎn)換啟動(dòng)功能
ADC_GetConversionValue(ADC1);//獲取ADC轉(zhuǎn)換結(jié)果數(shù)據(jù)
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待轉(zhuǎn)換結(jié)束
經(jīng)過(guò)測(cè)試,基于STM32的智能氣體探測(cè)器能夠準(zhǔn)確采集并監(jiān)控環(huán)境氣體濃度,并通過(guò)以太網(wǎng)準(zhǔn)確地與監(jiān)控中心進(jìn)行雙向通信。該探測(cè)器工作穩(wěn)定可靠、結(jié)構(gòu)簡(jiǎn)單、成本低廉,并且具有通用性,更換不同的三端氣體傳感器即可實(shí)現(xiàn)對(duì)不同氣體濃度的探測(cè),也可以將多種氣體探測(cè)器通過(guò)以太網(wǎng)接口連接實(shí)現(xiàn)多氣體多區(qū)域氣體的探測(cè),基本實(shí)現(xiàn)了氣體探測(cè)器采集的通用性和網(wǎng)絡(luò)化。利用STM32作為探測(cè)器的控制器,充分發(fā)揮了其內(nèi)核優(yōu)點(diǎn),溫濕度傳感器對(duì)氣體濃度進(jìn)行補(bǔ)償和線性化處理后,氣體探測(cè)器有了更高的準(zhǔn)確性、穩(wěn)定性和快速響應(yīng)性。
[1] 王天杰,原明亭.基于C8051F020的以太網(wǎng)遠(yuǎn)程監(jiān)控系統(tǒng)的設(shè)計(jì)[J].化工自動(dòng)化及儀表,2007,34(5):36~39.
[2] 徐大詔,李正明,劉軍.基于STM32的便攜式礦用多氣體檢測(cè)儀的設(shè)計(jì)[J].儀表技術(shù)與傳感器,2014,(3):14~16.
[3] 唐密媛,張根寶.基于ARM的智能料位監(jiān)控系統(tǒng)設(shè)計(jì)[J].化工自動(dòng)化及儀表,2009,36(3):54~56.
[4] 權(quán)潔,熊書敏,孫曉東,等.基于MSP430的便攜式多參數(shù)氣體檢測(cè)儀[J].化工自動(dòng)化及儀表,2014,41(4):388~421.
[5] 趙科,李常賢,張彤.基于STM32的無(wú)線溫濕度控制器[J].化工自動(dòng)化及儀表,2015,42(6):629~633.
[6] 楊明極,祝慶峰,李碩.基于STM32的嵌入式網(wǎng)絡(luò)控制器設(shè)計(jì)[J].測(cè)控技術(shù),2014,33(10):93~96.
[7] 丁力,宋志平,徐萌萌,等.基于STM32的嵌入式測(cè)控系統(tǒng)設(shè)計(jì)[J].中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2013,44(z1):260~265.
[8] 周兆豐,侯向鋒,魯池梅,等.μC/OS-II在STM32F103上移植的新方法[J].湖北師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2013,33(2):69~73.