翟延忠,馬 強(qiáng),鄧凱旋
(華北科技學(xué)院 電子信息工程學(xué)院,北京 東燕郊 065201)
在石油、化工、煤礦、冶金等行業(yè)的某些生產(chǎn)環(huán)節(jié)存在著有害氣體的產(chǎn)生與泄露。一氧化碳即是其中一種不可忽視的有毒、有害氣體,一氧化碳無色無味且易燃,人體感官無法察覺,使得一氧化碳事故的發(fā)生往往具有隱蔽性和不可知性,對人危害極大。因此對相關(guān)場所的一氧化碳濃度進(jìn)行監(jiān)測,實時掌握其動態(tài)變化,并在濃度超限時發(fā)出報警,提醒人員采取相應(yīng)措施,對于預(yù)防一氧化碳事故的發(fā)生,防患于未然,保障生產(chǎn)安全具有重要意義。
實現(xiàn)生產(chǎn)場所的一氧化碳監(jiān)測需要考慮多方面的因素,其中首要的是一氧化碳這種氣敏傳感器的選擇。氣敏傳感器主要有半導(dǎo)體式、接觸燃燒式及電化學(xué)式三種類型。
半導(dǎo)體氣敏傳感器是利用半導(dǎo)體氣敏元件同氣體接觸后,發(fā)生還原反應(yīng),放出熱量,造成半導(dǎo)體性質(zhì)(如電阻或伏安特性)的變化來檢測特定氣體的成分或者測量其濃度。它具有成本低廉、制造簡單、靈敏度高、壽命長、對濕度敏感低和電路簡單等優(yōu)點。不足之處是必須輔助加熱、對氣體的選擇性差、元件參數(shù)分散、穩(wěn)定性不理想、功率高等方面。
接觸燃燒式氣體傳感器只能測量可燃?xì)怏w,分為直接接觸燃燒式和催化接觸燃燒式,原理是氣敏材料在通電狀態(tài)下,可燃?xì)怏w在表面或者在催化劑作用下燃燒,由于燃燒使氣敏材料溫度升高從而電阻發(fā)生變化。后者因為催化劑的關(guān)系具有廣普特性應(yīng)用更廣,不足之處是功耗大、壽命較短、安全性差。
電化學(xué)氣敏傳感器是利用電極材料與被測氣體間的氧化還原反應(yīng)產(chǎn)生的原電池效應(yīng),電池回路輸出的電流與被測氣體的濃度相關(guān),通過檢測電流即可實現(xiàn)氣體濃度的檢測。電化學(xué)傳感器的主要優(yōu)點是氣體的高靈敏度、低功耗、響應(yīng)快以及良好的選擇性,其使用壽命可超過兩年。在目前的高品質(zhì)監(jiān)測儀表的開發(fā)中,主要選擇使用電化學(xué)氣敏傳感器。
在具體的生產(chǎn)場所中,為了保證生產(chǎn)環(huán)境的安全,往往會在多個關(guān)鍵點布置若干臺一氧化碳及其它各類監(jiān)測儀表,這些監(jiān)測儀表需要配置某種總線通信技術(shù)。以便在生產(chǎn)控制室實現(xiàn)對所有儀表的集中監(jiān)測。
由于生產(chǎn)現(xiàn)場空間條件的限制,監(jiān)測儀表的安裝位置往往不便于接近,另外,有時因工業(yè)現(xiàn)場環(huán)境復(fù)雜,一氧化碳監(jiān)測儀的防爆外殼也不宜在通電時打開,給儀表的標(biāo)定與維護(hù)帶來了困難,非接觸式的操作就很有必要。
監(jiān)測儀表不僅要實現(xiàn)一氧化碳濃度的檢測處理,還要實現(xiàn)信息的顯示、通信、報警、人機(jī)交互等功能,對嵌入式處理器提出了較高的要求,本儀表即基于STM32處理器進(jìn)行相關(guān)的開發(fā),較為全面地實現(xiàn)了一氧化碳監(jiān)測儀表的各項功能。
儀表選用了ST公司的STM32F103RCT6作為控制核心[4]。該芯片具有256Kbytes的FLASH與48Kbytes的SRAM,無需外擴(kuò)存儲器;多達(dá)51個通用IO口,內(nèi)置的多個16位定時器具有輸入捕獲功能;12位的逐次逼近式ADC[2],模數(shù)轉(zhuǎn)換速率最高可達(dá)1MHz,完全滿足本系統(tǒng)的設(shè)計需求,使硬件得以盡可能的簡化。
最小系統(tǒng)設(shè)計中采用簡單的阻容式低電平復(fù)位電路;處理器外接了8 MHz的晶振作為高速外部時鐘,通過鎖相環(huán)倍頻至72 MHz的頻率。調(diào)試接口為二線制的SWD方式;ADC的參考電壓取自VDDA的3.3 V。儀表總體設(shè)計框圖如圖1所示。
圖1 儀表總體設(shè)計框圖
整個電路工作需要DC24 V、DC5 V和DC3.3 V三種電源,其中DC24 V由外部電源提供,為外接的聲光報警器供電,DC5 V和DC3.3 V分別為信號調(diào)理電路和其它電路供電。
外部DC24 V電源經(jīng)由降壓型開關(guān)電源調(diào)整芯片LM2576-5穩(wěn)壓得到DC5 V的電壓,再通過AMS1117-3.3得到DC3.3 V電壓。電源轉(zhuǎn)換電路如圖2所示。D1為瞬態(tài)抑制二極管,可保護(hù)電源電路免受瞬態(tài)高能量的沖擊,續(xù)流二極管D3在LM2576內(nèi)部開關(guān)管關(guān)閉時為電感L1的能量釋放提供電流返回通路,為降低能量損失,采用肖特基二極管B360。LM2576第5引腳為控制端,其所接電路起到電源欠壓鎖定的作用,提高了電源的穩(wěn)定性和可靠性,其輸入閾值電壓Vth可通過公式Vth≈VD2+(1.0+R1/R3)*VBE(Q1)計算,D2為穩(wěn)壓二極管,選擇其穩(wěn)壓值為12V,因此可得Vth≈13V,當(dāng)VIN>Vth時,Q1導(dǎo)通,LM2576控制端為低電平,電路正常工作;當(dāng)VIN 圖2 24 V轉(zhuǎn)5 V及3.3 V電源電路 為了實現(xiàn)儀表的漢字顯示,選用HJ12864-COG-12液晶顯示屏,其工作電壓和背光電壓均為3.3 V,通過8位并行接口方式與處理器直接相連,利用處理器的I/O 口模擬8080時序?qū)ζ溥M(jìn)行讀寫操作。漢字顯示采用16×16點陣,由于儀表使用的漢字有限,故使用自建軟字庫,以簡化硬件電路的設(shè)計。 為實現(xiàn)儀表的非接觸操作,配置了紅外遙控模塊。具體選用支持NEC協(xié)議的HS0038作為紅外接收探頭,探頭輸出接至STM32的一個輸入捕獲通道接口上。操作時使用紅外遙控器的四個遙控按鍵,每個按鍵都有一個特定的控制碼,利用定時器的輸入捕獲功能測量紅外信號中低電平的脈寬,進(jìn)而對輸入信號進(jìn)行解碼,識別出相應(yīng)的控制碼,從而判斷出紅外按鍵是否按下以及按下的是哪一個按鍵。 在儀表的應(yīng)用中,有些參數(shù)需要實現(xiàn)掉電記憶,如儀表的通訊地址、通信波特率和報警閾值等。由于參數(shù)量較少,設(shè)計選用256字節(jié)容量的AT24C02。接口設(shè)計中使用STM32的普通IO口與AT24C02的SDA和SCL引腳相連,通過軟件模擬I2C的方式對其進(jìn)行讀寫操作。 一氧化碳是一種有害氣體,監(jiān)測儀表必須配置相應(yīng)的聲光報警模塊,警示一氧化碳濃度的超標(biāo),并可按照儀表的設(shè)置產(chǎn)生繼電控制輸出,以供聯(lián)動保護(hù)之需。聲光報警與繼電器控制電路如圖3 所示。儀表配置的聲光報警器工作電壓為24VDC,通過控制場效應(yīng)管Q1決定報警器是否工作,當(dāng)柵極為高電平時,Q1導(dǎo)通,報警器發(fā)出聲光報警。電阻R9可防止單片機(jī)復(fù)位時報警器誤響,D2為續(xù)流二極管,為反向電動勢提供通路,起到保護(hù)電路的作用。 圖3 聲光報警與繼電器控制電路 為實現(xiàn)對監(jiān)測儀表的集中監(jiān)控,監(jiān)測儀表需具有相應(yīng)的總線通信功能。設(shè)計考慮通過RS485總線實現(xiàn)管理終端與諸多監(jiān)測儀表(從機(jī))之間的通信。具體采用SP3485芯片作為收發(fā)器,管理終端通過輪詢的方式依次向各從機(jī)發(fā)送請求數(shù)據(jù)命令,從機(jī)接收到命令后進(jìn)行判斷,若接收無誤且請求地址與本機(jī)地址一致,則根據(jù)命令類型向管理終端發(fā)送相應(yīng)數(shù)據(jù)。 為保證監(jiān)測儀表的品質(zhì),采用NEMOTO公司的電化學(xué)傳感器NE-CO-BL作為敏感元件。它是一種三電極傳感器,除工作電極(W)與對電極(C)之外,引入?yún)⒖茧姌O(R),以避免因電極極化引起的測量誤差,通過維持電極間的電位恒定,可以提高檢測靈敏度并擴(kuò)展測量范圍。 當(dāng)敏感元件接觸到一氧化碳?xì)怏w時,工作電極(W)上發(fā)生氧化反應(yīng),對電極(C)上發(fā)生還原反應(yīng),其化學(xué)方程式為: 工作電極(W):CO+H2O→CO2+2H++2e- 對電極(C):O2+4H++4e-→2H2O 反應(yīng)產(chǎn)生的微弱電流與一氧化碳濃度成正比[6],電流方向流入工作電極(W),放大調(diào)理電路選用具有低偏置電流特性的雙運(yùn)算放大器TLC27L2。電流信號通過U1B放大處理后送入STM32處理器模擬量輸入端進(jìn)行AD轉(zhuǎn)換,其中電容C3用于降低高頻噪音。圖中U1A所接電路為恒電位電路,維持工作電極(W)和參考電極(R)間電位差恒定。場效應(yīng)管Q1起開關(guān)作用,當(dāng)系統(tǒng)上電時,Q1處于高阻態(tài);系統(tǒng)斷電時,Q1導(dǎo)通,工作電極(W)和參考電極(R)電位相等,避免了極化現(xiàn)象,確保了傳感器下次開機(jī)時能迅速準(zhǔn)備就緒[5]。信號調(diào)理電路如圖4所示。 圖4 信號調(diào)理電路 儀表需實現(xiàn)一氧化碳濃度采集、紅外按鍵處理、參數(shù)顯示、校準(zhǔn)、通訊等功能,為提高軟件的開發(fā)效率、提高軟件的可靠性,在軟件開發(fā)中,移植了FreeRTOS實時多任務(wù)操作系統(tǒng),將儀表需實現(xiàn)的功能劃分為多個相對獨立的任務(wù),每個任務(wù)只需完成指定功能,并通過信號量、消息隊列及事件標(biāo)志組與其他任務(wù)進(jìn)行通信,降低了軟件開發(fā)難度,縮短了開發(fā)周期。軟件總體結(jié)構(gòu)如圖5所示。 圖5 軟件總體結(jié)構(gòu)圖 一氧化碳傳感器感應(yīng)的信號經(jīng)調(diào)理電路接至STM32處理器的ADC1的PC0口,PC0初始化時配置為模擬量輸入模式。 在濃度監(jiān)測任務(wù)中,每隔100 ms啟動一次A/D轉(zhuǎn)換,將采集的10次數(shù)據(jù)放在數(shù)組中,去掉其中最大值與最小值,余下數(shù)值作均值處理后作為采集的結(jié)果。然后進(jìn)行標(biāo)度變換,得到一個32位的浮點數(shù)表示的一氧化碳濃度。 濃度監(jiān)測任務(wù)是濃度參數(shù)的唯一生產(chǎn)者,而界面處理任務(wù)、通信發(fā)送任務(wù)均是消費者,因此將該參數(shù)作為全局變量設(shè)置,其它任務(wù)可直接使用。 所選用的紅外接收探頭HS0038支持NEC協(xié)議,該協(xié)議以紅外載波的占空比大小判定邏輯0和邏輯1,一個邏輯1的傳輸需要560 μs高電平和1680 μs低電平,邏輯0的傳輸需要560 μs高電平和560 μs低電平。NEC協(xié)議的數(shù)據(jù)格式為:同步碼、地址碼、地址反碼、控制碼、控制反碼,其中同步碼由9 ms高電平和4.5 ms低電平組成地址碼和控制碼均為低位在前高位在后的8位數(shù)據(jù)格式。 紅外接收探頭接至STM32定時器的輸入捕獲通道,通過輸入捕獲功能測量低電平脈寬,憑此逐位識別出紅外信號的同步碼與數(shù)位碼。在定時器的輸入捕獲中斷服務(wù)程序中首先判斷是否捕獲到下降沿,若捕獲成功則將捕獲方式設(shè)置為上升沿捕獲,同時將定時器清零并使能定時器的溢出中斷,溢出時間設(shè)為10 ms。待捕獲到上升沿后再將捕獲方式設(shè)置為下降沿捕獲,為下一位捕獲做好準(zhǔn)備,同時讀取定時器的值,根據(jù)值的大小解析信號。輸入捕獲中斷服務(wù)程序及溢出中斷服務(wù)程序流程圖如圖6所示。 由于定時器捕獲到的低電平脈寬時長都小于溢出時間,且每次捕獲到下降沿時都會將定時器值清零,所以當(dāng)程序進(jìn)入到定時器溢出中斷服務(wù)程序時,表示本次接收完成,禁止溢出中斷并向遙控處理任務(wù)發(fā)送二值信號量。 遙控處理任務(wù)處于請求信號量狀態(tài),一旦獲得來自定時器1溢出中斷服務(wù)程序發(fā)出的信號量,則從接收數(shù)據(jù)中解析出地址碼、地址反碼、控制碼、控制反碼,并檢驗其正確性,若接收無誤則返回鍵值。 圖6 定時器1輸入捕獲中斷服務(wù)程序及溢出中斷服務(wù)程序流程圖 界面處理任務(wù)實現(xiàn)與界面顯示、參數(shù)設(shè)置相關(guān)的人機(jī)交互處理,儀表共設(shè)置了監(jiān)測顯示與參數(shù)設(shè)置二種界面模式,通過四個紅外按鍵(ESC、△、▽、ENTER)進(jìn)行選擇操控。界面初始設(shè)置為監(jiān)測顯示界面模式,在此模式下按下ENTER鍵進(jìn)入?yún)?shù)設(shè)置界面。在此界面下,通過△、▽鍵選擇地址設(shè)置、波特率設(shè)置、報警設(shè)置、儀表校驗其中之一,然后進(jìn)入相應(yīng)參數(shù)的修改設(shè)置操作,經(jīng)進(jìn)一步確認(rèn)后,將修改后的參數(shù)保存至EEPROM,完成后通過按下ESC鍵可返回到監(jiān)測顯示界面。當(dāng)然,在上電初始化時處理器需從EEPROM中提出相關(guān)的參數(shù)。 多臺一氧化碳監(jiān)測儀表與管理終端通過RS485總線構(gòu)成主從式通信系統(tǒng),為保證通信效率與可靠性,制定如下表所示的通信協(xié)議。 表1 通信協(xié)議格式 對RS485通信的處理由串口接收中斷服務(wù)與通信發(fā)送任務(wù)協(xié)作實現(xiàn)。在接收中斷服務(wù)程序中,完成信息幀的接收與檢驗,當(dāng)檢驗通過即向通信發(fā)送任務(wù)發(fā)送消息,通信發(fā)送任務(wù)處于消息請求狀態(tài),一旦收到消息,即按照通信格式裝配從機(jī)響應(yīng)幀,然后將幀信息發(fā)送到RS485總線上,發(fā)送完畢,再次進(jìn)入消息請求狀態(tài)。 (1) 根據(jù)工業(yè)現(xiàn)場對CO氣體濃度監(jiān)測的需求,儀表選用了功耗低、靈敏度高、壽命長的三電極電化學(xué)傳感器,設(shè)計了可避免極化現(xiàn)象的信號調(diào)理電路;開發(fā)紅外遙控功能,實現(xiàn)了儀表的非接觸操作;儀表的RS-485通信功能更是便于工業(yè)現(xiàn)場對多塊儀表的集中通信管理。 (2) 儀表的軟件設(shè)計基于FreeRTOS環(huán)境開發(fā),將監(jiān)測儀表的各項功能通過相對獨立的多個任務(wù)實現(xiàn),軟件結(jié)構(gòu)清晰、模塊化設(shè)計,提高了軟件的開發(fā)效率與可靠性。 (3) 三電極電化學(xué)傳感器在應(yīng)用中存在溫度漂移現(xiàn)象,在后續(xù)的完善過程中,需考慮引入溫度補(bǔ)償,以提高儀表的測量精度與穩(wěn)定性。本儀表監(jiān)測對象雖僅針對一氧化碳?xì)怏w,但相關(guān)的設(shè)計與開發(fā)技術(shù)對實現(xiàn)其他氣體濃度的監(jiān)測,也具有一定的借鑒價值。1.3 顯示模塊
1.4 紅外遙控模塊
1.5 掉電參數(shù)記憶
1.6 聲光報警電路
1.7 RS485通信模塊
1.8 傳感器及信號調(diào)理
2 系統(tǒng)軟件設(shè)計
2.1 軟件總體架構(gòu)
2.2 濃度監(jiān)測任務(wù)
2.3 遙控處理任務(wù)
2.4 界面處理任務(wù)
2.5 通信處理
3 結(jié)論