單片機實現(xiàn)多氣體檢測系統(tǒng)
氣體傳感器是一種能將氣體種類及其與濃度有關(guān)的信息轉(zhuǎn)換成電氣信號的裝置。根據(jù)這些電氣信號的強弱就可以獲得與待測氣體在環(huán)境中存在情況有關(guān)的信息,從而可以進行檢測、監(jiān)控、報警。
本設計采用酒精傳感器、甲烷傳感器、一氧化碳傳感器等多種氣體傳感器組成傳感器陣列,通過傳感器陣列能把氣體中的特定成分檢測出來,并將其轉(zhuǎn)化為電信號,然后采用ADC0809 將傳感器輸出的模擬信號轉(zhuǎn)換為數(shù)字信號,運用AT89C51 進行數(shù)據(jù)處理和計算,并通過LED 顯示氣體種類和濃度信息,實現(xiàn)了對多種氣體的識別和檢測。
1 硬件電路設計
本設計硬件電路由數(shù)據(jù)采集、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)處理、結(jié)果顯示和報警等部分組成,涉及的芯片有AD0809 模數(shù)轉(zhuǎn)換芯片、AT89C51單片機、SUN7474頻率發(fā)生器以及一些氣體傳感器、驅(qū)動電路、復位電路和LED 顯示模塊。系統(tǒng)的功能框圖如圖1 所示。
圖1 系統(tǒng)功能框圖
1.1 氣體傳感器陣列
氣體傳感器陣列是電子嗅覺系統(tǒng)的關(guān)鍵組成單元,相當于初級嗅覺神經(jīng)元,由具有廣譜響應特性、交叉靈敏度較大、對不同氣味/氣體有不同靈敏度的氣敏元件組成。
氣體傳感器是組成氣體傳感器陣列的核心器件。氣體傳感器是一種把氣體中的特定成分檢測出來,并將其轉(zhuǎn)化為電信號的器件。通常,氣體傳感器陣列可以采用數(shù)個單獨的氣體傳感器組合而成,并采用集成工藝制作,體積小,功耗低,便于信號的集中采集與處理。單個氣體傳感器與傳敏陣列在特性上有質(zhì)的區(qū)別,單個氣體傳感器對氣味/ 氣體的響應可用強度來表示,而氣敏傳感器陣列除了各個傳感器的響應外,在全部傳感器組成的多維空間中形成響應模式,在環(huán)境條件一定的情況下,陣列上的響應模式與其激勵是一一對應的,而這正是該系統(tǒng)能對多種氣味和氣體進行辨識的關(guān)鍵所在。
本設計要求實現(xiàn)對酒精、甲烷、一氧化碳氣體的定性和定量分析,首先最重要的工作是選擇合適的傳感器,通過對性能、可實現(xiàn)性、價格等的對比,針對酒精氣體,選擇的是MQ-303A酒精傳感器,針對甲烷氣體,采用的是MQ-4 半導體氣體傳感器,針對一氧化碳氣體,選擇的是V-40 一氧化碳傳感器,由這三種傳感器組成傳感器陣列。
該設計通過氣體傳感器陣列采集氣體信息,并將采集到的信息轉(zhuǎn)化為電信號,然后送到ADC0809 進行模數(shù)轉(zhuǎn)換。
1.2 數(shù)據(jù)采集和數(shù)據(jù)處理系統(tǒng)
由氣體傳感器陣列輸出的微弱電信號,經(jīng)各自信號放大電路對信號進行預處理,使其轉(zhuǎn)換為O ~5V 范圍內(nèi)變化的直流信號,送到A/D 轉(zhuǎn)換電路變換為數(shù)字信號,對其進行數(shù)據(jù)采集處理。
為了方便與89C51 單片機的連接,本系統(tǒng)選用ADC0809芯片對采集到的氣體信息進行模數(shù)轉(zhuǎn)換。其分辨率為8 位,不必進行零點和滿度調(diào)整,且具有高阻抗斬波穩(wěn)定比較器,8個通道的多路開關(guān)可直接存取8 個單端模擬信號中的一個。利用單片機寫啟動A / D 轉(zhuǎn)換器,轉(zhuǎn)換結(jié)束后再由ADC0809 向89C51 發(fā)出中斷請求信號,CPU 響應中斷請求。通過對譯碼器的讀操作,讀取轉(zhuǎn)換結(jié)果并送到被測量的相應存儲區(qū)。再重新選擇被測量,并再次啟動A/D轉(zhuǎn)換后中斷返回。ADC0809與單片機89C51 連線線路如圖2 所示。
圖2 ADC0809 與89C51 的連線線路
微處理器采用的是AT89C51 芯片。
89C51 單片機是ATMEL、PHILIPS和SST等公司生產(chǎn)的與80C51 兼容的低功耗、高性能8 位單片機,具有比8031 更豐富的硬件資源,特別是其內(nèi)部增加的閃速可電改寫的存儲器Flash ROM給單片機的開發(fā)及應用帶來了很大的方便,且芯片價格非常便宜。在該系統(tǒng)中89C51 主要對采集數(shù)據(jù)進行處理,按各種氣體濃度的數(shù)學模型計算出其濃度,由數(shù)碼管顯示其相應的氣體種類及濃度值,當濃度超標時,進行報警。
該系統(tǒng)還采用了分頻器SUN7474.分頻器對脈沖信號進行2的n次方分之一的分頻,例如把32768HZ 的脈沖信號變成1HZ的秒信號。通常利用T觸發(fā)器實現(xiàn),每來一個脈沖后觸發(fā)器狀態(tài)改變一次,經(jīng)過n個T觸發(fā)器處理后就可以得到2的n次方分之一的分頻信號。89C51接12MHZ晶振,經(jīng)ALE端后輸出到分頻器為2MHZ,分頻器進行分頻后為ADC0809 提供所需的工作時鐘。
1.3 顯示電路
在該設計中,LED 顯示器的顯示方法采用動態(tài)顯示。LED 動態(tài)顯示的基本做法在于分時輪流選通數(shù)碼管的公共端,使得各數(shù)碼管輪流導通,在選通相應LED后,即在顯示字段上得到顯示字形碼。這種方式不但能提高數(shù)碼管的發(fā)光效率,并且由于各個數(shù)碼管的字段線是并聯(lián)使用的,從而大大簡化了硬件線路。本設計中處理結(jié)果采用4位LED顯示,首位顯示氣體類別,后3 位顯示氣體濃度。逐位輪流點亮各個LED,每一位保持1ms,在10~20ms 之內(nèi)再一次點亮,重復不止。這樣利用人的視覺停留,好像4 位LED 同時點亮一樣。
綜上可得,基于單片機的多氣體檢測系統(tǒng)的數(shù)據(jù)采集、數(shù)據(jù)處理及結(jié)果顯示電路如圖3。
圖3 多氣體檢測系統(tǒng)電路
2 軟件設計
本設計由數(shù)據(jù)采集、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)處理、顯示和報警幾個模塊組成。
主程序流程圖為圖4。
圖4 主程序流程圖
AD0809 部分程序流程圖為圖5。
圖5 AD0809 部分程序流程圖
顯示子程序流程圖如圖6。
圖6 顯示子程序流程圖
結(jié)語
在本設計中采用多傳感器組成傳感器陣列,可針對多種不同氣體進行信息采集、信息轉(zhuǎn)換和數(shù)據(jù)處理,最后顯示氣體種類和濃度信息,為多種氣體的檢測提供了一種切實可行的解決方案。