李 薈 趙云敏
(1.東北石油大學計算機與信息技術學院 大慶 163318)
(2.大慶油田第一采油廠 大慶 163318)
為了減少酒駕現象的出現,目前幾乎所有國家都采用呼氣酒精監測儀對駕駛人員進行現場檢測監控[1],但是現場檢測監控儀只能被動的工作,起不到預防的作用,而目前的車內酒精監測儀價格昂貴、安裝程序復雜。針對這些缺陷,我們設計了一款基于ARM的酒精監測儀,它是基于S3C2410(Samsung公司推出的16/32位RISC處理器)與MQ-3型氣敏傳感器模塊的呼氣式酒精濃度監測儀。硬件部分的處理器采用較為先進的ARM處理器,這樣可以很大程度地增加系統處理速度,并且提升系統的準確度,同時我們采取了相應查驗方法來實現對密閉環境中酒精濃度的檢測。其中比較核心的硬件模塊有MQ-3氣體傳感器電路設計、LCD電路設計、蜂鳴器電路設計。本系統主要實現車內環境檢測,特別是車內酒精濃度檢測,這部分是通過MQ-3氣體傳感器來完成。MQ-3氣體傳感器可以較好地檢測空氣濃度,當發現濃度超過設定的閾值時則會立刻提示并且報警,還會在LCD上給出相應的告知信息,并且通過觸摸屏控制實驗的開始與結束。
基于ARM酒精監測儀系統主要由嵌入式微處理器、氣體傳感器模塊、液晶顯示模塊、蜂鳴器報警模塊及其他外圍相關電路組成。本設計采用的硬件開發平臺是深圳優龍科技有限公司開發的FS2410實驗板。
首先采集到模擬信號,氣體傳感器模塊會把他送至A/D轉換器,在這里變為數字信號,然后將數字信號交給處理器部分;處理器的信息會在LCD液晶顯示屏展現;而報警部分的任務就是實現當出現閾值之外的情況進行報警。微處理器是要控制這個車內酒精檢測系統的核心部分,在整個系統中起了決定性作用。系統的硬件框架如圖1所示。

圖1 系統硬件結構框圖
酒精監測儀融合了嵌入式、傳感器、A/D轉換和LCD液晶漢字顯示技術,可實時獲取空氣中酒精濃度。根據酒精濃度的不同,系統設定不同級別的閾值,分為不同情況報警。
本系統主要研究內容包括MQ-3氣敏傳感器數據采集,不同的酒精濃度對傳感器的阻值影響不同,通過MQ-3傳感器電路測量空氣中酒精濃度;AD模數轉換,酒精傳感器電路數據采集的模擬電壓結果經過A/D模數轉換成為數量值;LCD屏幕顯示,設計漢字字庫,使用LCD液晶顯示相關漢字及字符,并且在監測狀態下實時顯示酒精濃度相關信息;酒精含量超過閾值自動報警,酒精濃度超標時,酒精監測儀自動利用蜂鳴器報警,并根據酒精超標的程度不同,分別設定一級報警和二級報警。
MQ-3上使用的是金屬氧化物SnO2構造的N型半導體元件。這種部件的精確元件采用的是金屬氧化物的半導體微結晶粒子燒結體。當這種粒子的表面上有被檢測的物品時,該粒子接觸表面的電阻比會調整,從而使該部件電阻比改變,或增或減。此時發生的變化是可以反復實現的,所以是可重復使用的[2~5]。部件阻值的改變是跟著金屬氧化物面上對物品的吸收和排除而導致的。我們一般可以使用加熱器對氣敏部件提高溫度來提高這種反應速率。在半導體氣敏器件的溫度達到某種恒定的狀況時,表面吸附的物體會在表面傳播,有一些分子在這個過程會消失,其他的部分由于熱分解作用會停留在表面。所以當吸附分子的電子親和力大于部件的功函數,那么吸附分子將從部件獲得離子,這時會產生負離子吸附的情況。電子接收性氣體也叫氧化性氣體,就是帶著負離子吸附趨勢的氣體像O2、NOx等。當吸附分子的離開能力小于部件的功函數,那么吸附分子會朝部件發射電子從而形成正離子吸附。我們把這種現象叫做電子供給性氣體或還原性氣體,像H2、CO、乙醇等。如果N型半導體表面附著了氧化性氣體,此時載流子會降低,從而敏感部件的阻值變大了。相反,如果N型半導體表面附著了還原性氣體,載流子會變得數量增多,從而電阻阻值會降低很多。考慮到我們含氧量在空氣中一般時一定的,所以吸氧量不變,而阻值所以應該也是恒定的。可是當環境改化時,阻值也會變化。我們可以按照分析,根據阻值的改變情況了解吸附氣體的一些情況。
MQ-3氣體傳感器可以根據氣敏元件的制造工藝把他歸類偉燒結型。主要是把測量電極、三氧化二鋁粘結劑和加熱絲融在SnO2部件里,通過700~900的溫度進行制陶加壓工藝。我們還加了很小的貴重金屬,目的是使其成為激活劑。底座的引出線處加了測量電極和加熱器,就做為了傳感器部分。所以此傳感器的硬件部分是有封裝體、加熱器、氣敏元件等構成。其中氣敏元件的組織及傳感器的封裝型式如圖2所示。氣敏元件四個管腳實現信號取出有,兩個管腳實現提供加熱電流,總共其共有六只針狀管腳。

圖2 MQ-3氣體傳感器
包含此敏感元件的傳感器可以對很多氣體進行檢測,例如一氧化碳、酒精等,它的敏感程度會跟隨環境而變化。如在檢驗酒精時,會隨濃度變化影響大,同時靈敏程度也更大。我們在SnO2中放入的貴重金屬可以改變其性能。此傳感器比較容易受到濕度和溫度的干預,所以采取此傳感器還必須反饋操作。加熱器還可以將器件表面的塵埃、油污去除,提高氣體的吸附速率從而提升靈敏度和速率。我們把加熱器設定在200℃~400℃之間。把該傳感器放于車內檢測駕駛員酒精濃度多少,從而判斷該駕駛員是否喝酒,如果喝酒則不應開車。
MQ-3整合到的信號非電量,所以需要轉換成電量,我們采取A/D轉換器。S3C2410片內集成了一個8通道模擬輸入的10位CMOS模數轉換器(ADC)[6]。該片把輸入的模擬信號轉換成10位的二進制數字代碼。當A/D轉換器時鐘為2.5MHz時,最大轉化速率能夠接近500KSPS。
按照工作模式可以將A/D轉化器的分為分離的X/Y軸坐標轉換模式、普通轉換模式、自動、連續X/Y軸坐標轉換模式、等待中斷模式、靜態(Stand?by)模式。本部分不涉及觸摸屏,只用到普通轉換模式和靜態(Standby)模式。
普通轉換模式(XY_PST=0,AUTO_PST=0)可以完成一般目的下的ADC轉換。可以設置ADCTSC和ADCCON對AD轉換完成初始化;然后讀ADCDAT0(ADC數據寄存器0)的XPDATA域(普通ADC轉換)的值來實現轉換的過程。
我們把位于STDBM位的ADCCON寄存器設定成1時,會激活靜態(Standby)模式。此時,結束A/D轉換操作,ADCDAT1寄存器的YPDATA(正常ADC)和ADCDAT0寄存器的XPDATA域的值不會改變。
接下來把傳感器采集到的酒精濃度信息通過A/D轉換器,將其變為數字信息進行操作。微處理器和MQ-3氣體傳感器的接口電路如圖3所示。

圖3 MQ-3與微處理器接口電路圖
觸摸屏可以分類為電容、紅外線掃描、電阻、表面聲波以及矢量壓力傳感器等,而最為人們廣外接受的是四線或五線電阻觸摸屏[7~8],四線電阻觸摸屏的主要部件是兩個透明電阻膜,通過垂直和水平電阻網進行檢測電壓,經過計算確定坐標。
觸摸屏與ADC的工作模式:
1)ADC普通轉換模式:普通轉換模式是一般的ADC轉換時使用的,比如想要用ADC檢測電壓等。
2)獨立X/Y軸坐標轉換模式:獨立的X/Y軸坐標轉換模式分為Y軸模式和X軸模式。首先需要轉換X軸坐標,X軸相關信息會寫入XPDAT中,如果完成轉換由控制器會發出中斷。接下來完成轉換Y軸坐標,Y軸相關信息會寫入YPDAT中,如果完成轉換由控制器會發出中斷。
3)自動X/Y軸坐標轉換模式:自動X/Y軸坐標轉換模式的工作是自動地進行X軸和Y軸的轉換操作,完成以后發出中斷信號。
4)中斷等待模式:當觸摸屏被觸摸,那么開啟中斷模式。此時產生中斷信號。在此期間,Y軸和X軸相關信息都可以從其對應存儲的寄存器中獲得。
5)閑置模式:此時轉換寄存器中的值都被設定成為上一次轉換時的相關信息。
我們使用的S3C2410的YL-LCD35-V1.0它是一個四線電阻觸摸屏。由于觸摸經常發生在觸摸屏的B面,所以我們將該面采用ITO材料,該材料是非常輕薄的,所以難免操作時,會出現微微的縫隙,如果有了縫隙,那么原本應該平均分散的電壓就不平均分散,也就是表現縫隙處電壓不準。當縫隙越來越多,越來越大,觸摸屏便會無用,所以年限太短是四線電阻觸摸屏的致命缺陷。
針對四線觸摸屏的問題,五線電阻進行問題提升:首先五線觸摸屏的A面不再采用導電涂覆層,而是使用了導電玻璃,而這樣做可以將A面的使用年限增加很多,與此同時透光率也得到了改進。另外,五線觸摸屏的B面僅僅是導體作用,選擇了鎳金透明導電層做導體,因為其延展性較好同時電阻率也較低,所以B面的使用年限也得到了改進。五線觸摸屏有一個特別的工藝。在工藝工程過程中極有可能會由于存在不平均而使得電壓場分布的不均勻,精密的電阻可能會經過許多的電流,所以需要補償可能會發生的線性失真問題。五線觸摸屏是截至當前表現最為出色的電阻技術觸摸屏,非常適用于醫療、軍事、航空等方面。同時,YL-LCD35-V1.0用的是TFT LCD液晶顯示器的顯像原理是采用“背透式”原理。當出現光源時,從下偏光板向上透出光源,傳導光線通過液晶分子。YL-LCD35-V1.0與用戶系統的連接只是用了一根軟排線,如圖4所示。連接器用的是市場上非常用已買到的IDC連接器,雙排50針(25*2),引腳間距2.00mm。
預警提示功能我們用蜂鳴器報警電路來完成,在S3C2410上添加了蜂鳴器,并用I/O口P0.7來管理蜂鳴器。采用8550進行驅動控制來放大TTL電平,而其放大的倍數非常高的特點正好是系統需要的。采用R36電阻來減少三極管的基極電流。蜂鳴器的電路如圖5所示。

圖4 優龍LCD連接器IDC50-2.00mm信號分配圖

圖5 蜂鳴器報警電路
系統上電后首先初始化各個硬件模塊,控制器主要運行在主程序模塊下,MQ-3氣體傳感器檢測模塊、液晶顯示及蜂鳴器報警以查詢方式執行。
主程序部分需要初始化多任務環境,然后第一個任務模塊被啟動。該模塊的工程時對各硬件和目標板進行啟動程序。而其他的子模塊則要進行數據的處理、顯示、存儲以及報警等。
根據中華人民共和國《車輛駕駛人員血液、呼氣酒精含量閾值與檢驗》國家標準(GB19522-2004)規定,我們設定引起蜂鳴器報警依據是:
1)如果駕駛員血液中酒精含量小于80mg/100mL大于或等于20mg/100mL那么可以認為是飲酒駕車。也就是MQ-3氣敏傳感器如果探測出酒精濃度大于20/100mL,蜂鳴器應該要發出警報。
2)如果駕駛員每100mL血液中酒精含量達到或者超過80mg,即可以認為其是醉酒駕車。也就是MQ-3氣敏傳感器如果探測處酒精濃度大于80mg/100mL,蜂鳴器應該要發出警報。
當酒精濃度模塊準確運行時,由于探測需要A/D轉換模塊,我們第一步要先設定ADCR初值,讓其設置ADC工作模式、ADC轉換時鐘和轉換通道,同時開始A/D轉換。將轉換數據存儲在ADDR寄存器里面。ADCR部分參數設置如下:轉換時鐘為1MHz;SEL=1,BURST=0,選擇通道0;CLKDIV=Fp?clk/1000000-1,軟件控制轉換操作;CLKS=0,使用11個時鐘轉換;正常工作模式;TEST1:0=00,正常工作模式;START=1,直接啟動ADC轉換;EDGE=0,CAP/MAT引腳下降沿觸發ADC轉換。
VDDA電壓不要小于模擬輸入引腳的信號,如果不然會得出無用的A/D值。當MQ-3氣敏傳感器探測出酒精類似的氣體出現,經過A/D轉換器將酒精濃度進行轉換,將其變成電壓,而后以中斷通知處理器,接著將數據放到ADDR中。隨后讀取存在ADDR的數據,并把DONE歸零為下次操作做準備,將數據經由I/O口傳給處理器。依照酒精濃度與電壓值的關系方程y=0.0034e1.2789x,可以換算得到對應的酒精濃度,最后將值在LCD上顯示輸出。
我們依據蜂鳴器的報警標準來設定,通過I/O口的操作實現這個過程。首先分辨酒精濃度所在區域,如果在20mg/100mL~80mg/100mL之間,可以認為飲酒駕車,那么設定鳴笛一次;如果高于80mg/100mL,可以認為醉酒駕車,那么設定鳴笛兩次。我們通過兩類鳴笛對上述兩類情況進行區分,同時對駕駛員進行提醒警示。除了以上的情況就說明駕駛員未飲酒。
首先通過MQ-3傳感器把當前電壓的模擬量送到模擬輸入通道中,ADC共有AIN0~AIN7 8個模擬輸入通道,本系統選用的是其中的AIN2,經過ADC轉換之后的二進制數存放在ADCDAT0的低十位中。把轉換所得的數字量轉換成十進制數賦值給一個定義的變量a2。同時,根據a2的值計算出當前空氣酒精濃度,再通過LCD顯示當前酒精濃度并且判斷是否需要報警。
本系統的字庫自己設計制作,因為YL-LCD35-V1.0是沒有漢字字庫的附加的。我們以“液晶漢字”距離來解釋如何顯示漢字。漢字在液晶屏上的顯示如圖6所示。液晶屏上的顯示點這里用圖6中的正方形表示,所以黑色的點組合在一起形成了文字。而圖6中每一個黑色的正方形可以對應液晶屏上的一個顯示點。

圖6 “液晶漢字”的字模圖
采用外部晶體管連接觸摸屏到S3C2410的接口電路,一般在程序中選擇連續的、自動的X/Y軸坐標轉換或是分離的X/Y軸坐標轉換模式以獲取觸摸點的X/Y坐標,本系統采用的是后者。設置觸摸屏接口為等待中斷模式,等待的是INT_TC中斷。如果中斷(INT_TC)發生,那么立即激活相應的AD轉換,在得到觸摸點的X/Y軸坐標值后,返回到等待中斷模式。
FS2410開發板上集成的蜂鳴器首先需要跳線J5控制使能,接上短路帽,使能蜂鳴器,在S3C2410中通過GPIO驅動控制蜂鳴器。GPIO(General Pur?pose Input Output)為通用的輸入、輸出端口。嵌入式系統的外部設備通常數量比較多,可是結構相對不復雜,CPU對這些設備進行操作,有的也被CPU當成輸入。微控制器芯片中大多會有通用可編程IO接口,該接口包括兩個以上的寄存器,數據寄存器和控制寄存器。有多達117個多功能I/O引腳集成在S3c2410芯片上。所有引腳都可以為系統實現復雜功能。
傳感器因其巨大的應用前景而受到學術界和工業界越來越廣泛的重視[9~13]。本系統按照功能需求采用了氣體傳感器實現探測酒精的濃度值。接下來說明通過傳感器實現探測酒精的濃度值的原理。
1)氣體傳感器的應用及特性
該系統主要采用的是MQ-3氣體傳感器,原因是他包含許多優點。包括它的敏感度很高,響應時間較短,壽命較長,穩定性較高等。
MQ-3氣體傳感器目前應用在乙醇的探測、駕駛員現場檢測等場所。
2)MQ-3氣體傳感器的測量及構造原理
氣體傳感器有四個針狀管腳,可以進行信號取出,兩個針狀管腳,可以進行加熱電流,共計六只針狀管腳。因為其內部結構比較特殊,元件的阻值會在加熱以后變化,當酒精濃度降低時阻值會增大,該系列氣敏元件的靈敏度變化曲線圖如圖7所示,我們根據圖7所示可以看出電阻值和濃度值的關系。
酒精濃度與電壓值的曲線圖如圖8所示,因為不同酒精濃度會使得電阻值不一樣,所以相應的電壓值會寫在負載電阻上,傳感器會完成將采集出的物理量轉變成電量的工作。

圖7 靈敏度特性曲線圖

圖8 酒精濃度與電壓值的曲線圖
在實驗室環境中,將系統得出的100組電壓值與酒精濃度的結果展示。在實驗過程里,將1ml酒精濃度為95%(mg/l)從0倍依次稀釋為100倍,接下來得出酒精濃度值和電壓值的對應關系圖。酒精濃度與電壓值的曲線關系如圖9所示,總結出對應的公式是y=0.0034e1.2789x,其中x為電壓值,y為酒精濃度值。

圖9 酒精濃度與電壓值的曲線圖
系統開發的結束階段,完成各個功能模塊應用程序的開發后,需要進行軟硬件集成,實現整個系統的融合,生產出一個產品。因此,在系統測試之前需要將應用程序燒寫到FS2410的NAND Flash中。
考慮實現方便性與可重復性我們選使用在BI?OS下用USB Download應用程序并且燒寫到NAND Flash中。FS2410開發板所帶的BIOS的功能包括設訂啟動參數、啟動下載文件、燒寫Flash,設置Wince或Linux自啟動。
BIOS附帶的NAND Flash燒寫功能,是支持三星的64M和32M的。同時BIOS將NAND Flash分區,用0代表B00T區,可以將BIOS、Bootloader存儲在里面,用1代表存儲內核,可以將手寫程序存儲在里面,用2代表根文件系統。啟動BIOS 5s后,若沒有收到用于控制串口的信息,那么就會把放在1分區的程序讀到SDRAM中的Ox30200000位置,然后開始運行。當然也可以選擇不運行,則在輸入2以后,選擇合適的分區在NAND FLASH中將要下載的程序寫進去。經過實驗數據的測試,并對結果進行分析,可以得出系統達到了理想的效果。