趙 科 時維國 鞠艷杰
(1.大連交通大學電氣信息學院,遼寧 大連 116028;2.人工智能四川省重點實驗室,四川 自貢 643000)
石油化工企業的生產現場普遍存在有毒和易爆氣體,因此必須設計安裝工業用智能氣體探測器,以保證危險場合中工作人員的生命和財產安全。而設計網絡智能化氣體探測系統,實現多種類型氣體探測器的組網和多點組網[1],實時對氣體濃度加以采集和控制,能方便監控中心對大量的多通道探測器進行有效管理,并對各地各類探測器進行調試和配置。工業現場需要探測的氣體種類繁多,只需更換或增減智能探測系統中相應的氣體傳感器,要求探測器能自動識別并進行相關的配置,由操作人員進行簡單的調零和標定,即可正常使用,而不需要更改任何硬件電路和嵌入式軟件,從而最大程度地節約時間和成本。溫濕度對氣體傳感器的精度有較大影響,設計通過采集現場環境溫濕度對氣體探測器進行溫濕度補償和線性化處理,來提高探測器的精度。因此,對具有通用性的氣體探測器進行設計研制具有較高的應用價值和現實意義。
筆者以STM32作為核心控制器,設計工業生產現場有毒易爆氣體探測器,并為氣體探測器設計以太網接口,將多探測器組網,給出報警電路、存儲電路、人機接口電路、RS232調試電路和主程序流程,并進行軟硬件調試。
基于以太網和STM32控制器的智能氣體探測器,通過外圍連接氣體傳感器、溫濕度傳感器、通信接口電路、報警電路和人機接口電路構成系統的硬件電路,如圖1所示。

圖1 網絡化智能氣體探測器電路構成
基于以太網和STM32控制器的智能氣體探測器的工作原理:氣體傳感器把采集到的相應氣體濃度轉換為微弱的電信號,經過信號調理電路,送入STM32控制器片內的ADC實現模數轉換。同時由溫濕度傳感器采集環境的溫濕度信號,采用最小二乘法對氣體濃度進行線性化處理和補償,提高探測器的測量精度。顯示電路實時顯示采集的氣體濃度,當濃度超過安全上限時觸發報警,由PWM驅動排風或給氧系統。RS232調試電路用于對氣體探測器進行本地化參數設置,并可通過超級終端進行程序監控和調試。以太網通信電路用于實現多種通用氣體探測器通過路由器組網,實現多種氣體和多區域探測,并實現控制中心的集中監測與控制,現僅以CO氣體探測器為例介紹設計過程。
以32位高性能、低成本且低功耗的STM32F103ZET6控制器作為智能氣體探測系統的核心部件,其內核為CortexTM-M3架構,運行頻率72MHz,內置Flash和SRAM,有豐富的I/O端口和外設,包含12位ADC、高級定時器和提供時間日歷的獨立定時器RTC;還有SPI、USART通信、I2C、USB、SDIO及CAN等接口[2],方便接口電路設計,也宜于功能擴展。
電源電路可提供穩定的5.0V直流電壓,經LD1086D2M33TR轉換后可得到穩定的3.3V直流電壓,為探測器電路提供電源。系統時鐘由外部8.000MHz晶振X1提供,RTC實時時鐘由外部32.768kHz晶振X2提供。探測器采用外部手動復位和外部STWD100看門狗電路組成復位電路[3],防止系統掉電和程序“跑飛”。
設計選用ME3-CO電化學式氣敏CO氣體傳感器,利用待測氣體進行電化學反應所產生的電流正比于氣體濃度的原理,通過測定該電流值來確定待測氣體的濃度[4],適合在工業和環保領域對于CO氣體濃度的檢測。
ME3-CO傳感器分辨率0.5‰,輸出信號0.06±0.015μA/ppm(1ppm=0.001‰),容易受外界信號干擾,因此對前置信號調理電路的要求較高。
設計中,信號調理電路(圖2)采用高增益、高精度和低溫漂的運放AD8574作為信號放大器。該電路采用兩級放大模式,前級采用反相比例放大電路,根據傳感器使用手冊推薦,負載電阻選取47Ω,將電流信號變換為電壓信號;第二級采用同相比例放大,經兩級放大后可得輸出信號,送至STM32的ADC單元進行模數轉換,實現了氣體傳感器的信號采集。各級放大電路加入電容濾除高頻信號干擾,提高信噪比。電路正在工作時斷電后,P溝道結型場效應管Q2保證傳感器的工作電極和參考電極短路,再次得電工作時可以減少電化學傳感器的啟動時間。

圖2 信號調理電路
溫濕度傳感器選用SHT75,采用CMOSen專利技術[5],集成了溫濕度敏感元件、信號處理、A/D轉換、循環冗余校驗及串行接口等電路,具有12位分辨率,0~100%RH的相對濕度測量范圍(±1.8%RH的測量精度),-40.0~123.8℃溫度測量范圍(±0.3℃測量精度),輸出標定的數字信號,可以方便地利用STM32的I2C通信接口進行數據通信,溫濕度采集電路如圖3所示。SHT75的典型供電電壓3.3V,電源與地之間接入100nF濾波電容。SHT75平均工作電流28μA,為防止過大電流損壞器件,在數據線DATA和時鐘線SCK各串聯200Ω電阻,三態結構的雙向串行數據DATA端接10kΩ上拉電阻。

圖3 溫濕度采集電路
STM32以太網接口模塊支持IEEE802.3協議的MII和RMII兩種標準接口,可靈活配置。設計中選用RMII接口。以太網接口電路如圖4所示,以太網接口收發器選用DP83848單路10/100Mbit/s以太網收發器[6],該器件功耗很低,具有智能電源關閉能量檢測模式。收發器輸出端連接HX1198NL網絡隔離變壓器,實現信號傳輸、阻抗匹配、雜波抑制及高電壓隔離等,提高系統的安全性。器件SLVU2.8-4使輸出具有更好的EMC性能,網絡輸出連接器選用工業級M12以太網連接器,使接口連接更加可靠,該接口電路具有較高的抗干擾能力,適合惡劣工業現場環境中信息的可靠傳輸。

圖4 以太網接口電路
RS232調試電路用于對探測器進行程序下載,用超級終端進行程序監控。調試電路的收發器選用帶隔離電源的ADM3251,對收發信號進行共模保護,使數據傳輸可靠,提高了抗干擾能力。
報警電路實現探測器運行錯誤報警、氣體濃度超上限報警及氣體濃度低下限自動解除報警等功能。STM32控制器輸出PWM信號驅動聲光報警,并進行緊急處理,如驅動排風扇電機轉動以降低氣體濃度。
STM32內置512KByte閃存,但由于氣體探測器程序量較大,記錄數據較多,故采用SST25VF106存儲器擴展外部存儲空間,該存儲器容量16MByte,經由SPI接口連接到STM32控制器。
鍵盤電路采用薄膜開關面板,主要用于數據輸入和人機對話。各按鍵采用上拉電阻連接到STM32的GPIO口。無按鍵按下時各端口保持高電平,有按鍵按下時對應鍵變為低電平,GPIO通過識別各按鍵碼及其狀態來執行相應的操作。
顯示電路采用TFT-LCD顯示屏,分辨率320×240,16位真彩,顯示屏色彩控制器為ILI9325,16位并行數據接口,自帶觸摸功能控制器TH2046。顯示屏接線端與STM32控制器的FSMC端口相連,通過FSMC端口靈活配置與LCD控制器的連接[7]。顯示屏顯示當前氣體濃度、采集時間及溫濕度等信息,實現了一屏多顯的功能。
氣體探測器系統程序利用STM32的固件庫在Keil μVision4環境下用C語言進行模塊化編程[8],主要包括系統初始化、按鍵中斷、數據采集線性化與濾波、報警輸出、數據存儲與顯示輸出、以太網數據通信及RS232調試等程序。報警輸出程序用于驅動氣體濃度值超出上限后的報警并及時驅動應急處理,以及低于下限時的報警解除。RS232調試程序實現對探測器的初始配置和程序調試功能。以太網數據通信程序實現遠程數據收發和網絡共享,可以發送探測器的狀態及存儲記錄等信號到遠程監控中心,也可以接收遠程控制中心對網絡探測器的調試及參數配置等,實現遠程集中監控。
系統主程序流程如圖5所示,主程序先進行初始化,對STM32控制器的GPIO端口進行配置并初始化調試串口USART、氣體傳感器、溫濕度傳感器和以太網接口,之后等待鍵盤輸入參數或使用默認參數進入采集、顯示和以太網傳輸循環過程,根據不同功能標志位的變化進行相應模塊的處理。

圖5 主程序流程
由于篇幅所限,只列出采用STM32的ADC1執行AD轉換的操作步驟。
首先,開啟PA口時鐘和ADC1時鐘,設置PA1為模擬輸入。用RCC_APB2PeriphClockCmd函數使能GPIOA和ADC時鐘,使用GPIO_Init函數設置PA1的輸入方式。
然后,復位ADC1,設置ADC1分頻因子。開啟ADC1時鐘后,通過ADC_DeInit(ADC1)函數復位ADC1,將ADC1的全部寄存器重設為缺省值后,用RCC_CFGR設置ADC1的分頻因子。
之后,初始化ADC1參數,設置ADC1的工作模式及規則序列等相關信息。其程序代碼如下:
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作模式為獨立模式
ADC_InitStructure.ADC_ScanConvMode=DISABLE;//ADC單通道模式
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE;//ADC單次轉換模式
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//轉換由軟件觸發啟動
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數據右對齊
ADC_InitStructure.ADC_NbrOfChannel=1;//順序進行規則轉換的ADC通道數目為1
ADC_Init(ADC1,&ADC_InitStructure);//根據指定的參數初始化外設ADC1
此后,使能ADC1并校準。設置完ADC1參數后必須使能AD轉換器,執行復位校準和AD校準,其程序代碼為:
ADC_Cmd(ADC1,ENABLE);//使能指定的ADC1
ADC_ResetCalibration(ADC1);//執行復位校準
ADC_StartCalibration(ADC1);//開始指定ADC1的校準狀態
最后,讀取ADC值。軟件開啟ADC轉換程序代碼如下:
ADC_SoftwareStartConvCmd(ADC1,ENABLE);//使能ADC1軟件轉換啟動功能
ADC_GetConversionValue(ADC1);//獲取ADC轉換結果數據
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));//等待轉換結束
經過測試,基于STM32的智能氣體探測器能夠準確采集并監控環境氣體濃度,并通過以太網準確地與監控中心進行雙向通信。該探測器工作穩定可靠、結構簡單、成本低廉,并且具有通用性,更換不同的三端氣體傳感器即可實現對不同氣體濃度的探測,也可以將多種氣體探測器通過以太網接口連接實現多氣體多區域氣體的探測,基本實現了氣體探測器采集的通用性和網絡化。利用STM32作為探測器的控制器,充分發揮了其內核優點,溫濕度傳感器對氣體濃度進行補償和線性化處理后,氣體探測器有了更高的準確性、穩定性和快速響應性。
[1] 王天杰,原明亭.基于C8051F020的以太網遠程監控系統的設計[J].化工自動化及儀表,2007,34(5):36~39.
[2] 徐大詔,李正明,劉軍.基于STM32的便攜式礦用多氣體檢測儀的設計[J].儀表技術與傳感器,2014,(3):14~16.
[3] 唐密媛,張根寶.基于ARM的智能料位監控系統設計[J].化工自動化及儀表,2009,36(3):54~56.
[4] 權潔,熊書敏,孫曉東,等.基于MSP430的便攜式多參數氣體檢測儀[J].化工自動化及儀表,2014,41(4):388~421.
[5] 趙科,李常賢,張彤.基于STM32的無線溫濕度控制器[J].化工自動化及儀表,2015,42(6):629~633.
[6] 楊明極,祝慶峰,李碩.基于STM32的嵌入式網絡控制器設計[J].測控技術,2014,33(10):93~96.
[7] 丁力,宋志平,徐萌萌,等.基于STM32的嵌入式測控系統設計[J].中南大學學報(自然科學版),2013,44(z1):260~265.
[8] 周兆豐,侯向鋒,魯池梅,等.μC/OS-II在STM32F103上移植的新方法[J].湖北師范學院學報(自然科學版),2013,33(2):69~73.