李 薈 趙云敏
(1.東北石油大學(xué)計算機與信息技術(shù)學(xué)院 大慶 163318)
(2.大慶油田第一采油廠 大慶 163318)
為了減少酒駕現(xiàn)象的出現(xiàn),目前幾乎所有國家都采用呼氣酒精監(jiān)測儀對駕駛?cè)藛T進行現(xiàn)場檢測監(jiān)控[1],但是現(xiàn)場檢測監(jiān)控儀只能被動的工作,起不到預(yù)防的作用,而目前的車內(nèi)酒精監(jiān)測儀價格昂貴、安裝程序復(fù)雜。針對這些缺陷,我們設(shè)計了一款基于ARM的酒精監(jiān)測儀,它是基于S3C2410(Samsung公司推出的16/32位RISC處理器)與MQ-3型氣敏傳感器模塊的呼氣式酒精濃度監(jiān)測儀。硬件部分的處理器采用較為先進的ARM處理器,這樣可以很大程度地增加系統(tǒng)處理速度,并且提升系統(tǒng)的準確度,同時我們采取了相應(yīng)查驗方法來實現(xiàn)對密閉環(huán)境中酒精濃度的檢測。其中比較核心的硬件模塊有MQ-3氣體傳感器電路設(shè)計、LCD電路設(shè)計、蜂鳴器電路設(shè)計。本系統(tǒng)主要實現(xiàn)車內(nèi)環(huán)境檢測,特別是車內(nèi)酒精濃度檢測,這部分是通過MQ-3氣體傳感器來完成。MQ-3氣體傳感器可以較好地檢測空氣濃度,當發(fā)現(xiàn)濃度超過設(shè)定的閾值時則會立刻提示并且報警,還會在LCD上給出相應(yīng)的告知信息,并且通過觸摸屏控制實驗的開始與結(jié)束。
基于ARM酒精監(jiān)測儀系統(tǒng)主要由嵌入式微處理器、氣體傳感器模塊、液晶顯示模塊、蜂鳴器報警模塊及其他外圍相關(guān)電路組成。本設(shè)計采用的硬件開發(fā)平臺是深圳優(yōu)龍科技有限公司開發(fā)的FS2410實驗板。
首先采集到模擬信號,氣體傳感器模塊會把他送至A/D轉(zhuǎn)換器,在這里變?yōu)閿?shù)字信號,然后將數(shù)字信號交給處理器部分;處理器的信息會在LCD液晶顯示屏展現(xiàn);而報警部分的任務(wù)就是實現(xiàn)當出現(xiàn)閾值之外的情況進行報警。微處理器是要控制這個車內(nèi)酒精檢測系統(tǒng)的核心部分,在整個系統(tǒng)中起了決定性作用。系統(tǒng)的硬件框架如圖1所示。
圖1 系統(tǒng)硬件結(jié)構(gòu)框圖
酒精監(jiān)測儀融合了嵌入式、傳感器、A/D轉(zhuǎn)換和LCD液晶漢字顯示技術(shù),可實時獲取空氣中酒精濃度。根據(jù)酒精濃度的不同,系統(tǒng)設(shè)定不同級別的閾值,分為不同情況報警。
本系統(tǒng)主要研究內(nèi)容包括MQ-3氣敏傳感器數(shù)據(jù)采集,不同的酒精濃度對傳感器的阻值影響不同,通過MQ-3傳感器電路測量空氣中酒精濃度;AD模數(shù)轉(zhuǎn)換,酒精傳感器電路數(shù)據(jù)采集的模擬電壓結(jié)果經(jīng)過A/D模數(shù)轉(zhuǎn)換成為數(shù)量值;LCD屏幕顯示,設(shè)計漢字字庫,使用LCD液晶顯示相關(guān)漢字及字符,并且在監(jiān)測狀態(tài)下實時顯示酒精濃度相關(guān)信息;酒精含量超過閾值自動報警,酒精濃度超標時,酒精監(jiān)測儀自動利用蜂鳴器報警,并根據(jù)酒精超標的程度不同,分別設(shè)定一級報警和二級報警。
MQ-3上使用的是金屬氧化物SnO2構(gòu)造的N型半導(dǎo)體元件。這種部件的精確元件采用的是金屬氧化物的半導(dǎo)體微結(jié)晶粒子燒結(jié)體。當這種粒子的表面上有被檢測的物品時,該粒子接觸表面的電阻比會調(diào)整,從而使該部件電阻比改變,或增或減。此時發(fā)生的變化是可以反復(fù)實現(xiàn)的,所以是可重復(fù)使用的[2~5]。部件阻值的改變是跟著金屬氧化物面上對物品的吸收和排除而導(dǎo)致的。我們一般可以使用加熱器對氣敏部件提高溫度來提高這種反應(yīng)速率。在半導(dǎo)體氣敏器件的溫度達到某種恒定的狀況時,表面吸附的物體會在表面?zhèn)鞑?,有一些分子在這個過程會消失,其他的部分由于熱分解作用會停留在表面。所以當吸附分子的電子親和力大于部件的功函數(shù),那么吸附分子將從部件獲得離子,這時會產(chǎn)生負離子吸附的情況。電子接收性氣體也叫氧化性氣體,就是帶著負離子吸附趨勢的氣體像O2、NOx等。當吸附分子的離開能力小于部件的功函數(shù),那么吸附分子會朝部件發(fā)射電子從而形成正離子吸附。我們把這種現(xiàn)象叫做電子供給性氣體或還原性氣體,像H2、CO、乙醇等。如果N型半導(dǎo)體表面附著了氧化性氣體,此時載流子會降低,從而敏感部件的阻值變大了。相反,如果N型半導(dǎo)體表面附著了還原性氣體,載流子會變得數(shù)量增多,從而電阻阻值會降低很多??紤]到我們含氧量在空氣中一般時一定的,所以吸氧量不變,而阻值所以應(yīng)該也是恒定的??墒钱敪h(huán)境改化時,阻值也會變化。我們可以按照分析,根據(jù)阻值的改變情況了解吸附氣體的一些情況。
MQ-3氣體傳感器可以根據(jù)氣敏元件的制造工藝把他歸類偉燒結(jié)型。主要是把測量電極、三氧化二鋁粘結(jié)劑和加熱絲融在SnO2部件里,通過700~900的溫度進行制陶加壓工藝。我們還加了很小的貴重金屬,目的是使其成為激活劑。底座的引出線處加了測量電極和加熱器,就做為了傳感器部分。所以此傳感器的硬件部分是有封裝體、加熱器、氣敏元件等構(gòu)成。其中氣敏元件的組織及傳感器的封裝型式如圖2所示。氣敏元件四個管腳實現(xiàn)信號取出有,兩個管腳實現(xiàn)提供加熱電流,總共其共有六只針狀管腳。
圖2 MQ-3氣體傳感器
包含此敏感元件的傳感器可以對很多氣體進行檢測,例如一氧化碳、酒精等,它的敏感程度會跟隨環(huán)境而變化。如在檢驗酒精時,會隨濃度變化影響大,同時靈敏程度也更大。我們在SnO2中放入的貴重金屬可以改變其性能。此傳感器比較容易受到濕度和溫度的干預(yù),所以采取此傳感器還必須反饋操作。加熱器還可以將器件表面的塵埃、油污去除,提高氣體的吸附速率從而提升靈敏度和速率。我們把加熱器設(shè)定在200℃~400℃之間。把該傳感器放于車內(nèi)檢測駕駛員酒精濃度多少,從而判斷該駕駛員是否喝酒,如果喝酒則不應(yīng)開車。
MQ-3整合到的信號非電量,所以需要轉(zhuǎn)換成電量,我們采取A/D轉(zhuǎn)換器。S3C2410片內(nèi)集成了一個8通道模擬輸入的10位CMOS模數(shù)轉(zhuǎn)換器(ADC)[6]。該片把輸入的模擬信號轉(zhuǎn)換成10位的二進制數(shù)字代碼。當A/D轉(zhuǎn)換器時鐘為2.5MHz時,最大轉(zhuǎn)化速率能夠接近500KSPS。
按照工作模式可以將A/D轉(zhuǎn)化器的分為分離的X/Y軸坐標轉(zhuǎn)換模式、普通轉(zhuǎn)換模式、自動、連續(xù)X/Y軸坐標轉(zhuǎn)換模式、等待中斷模式、靜態(tài)(Stand?by)模式。本部分不涉及觸摸屏,只用到普通轉(zhuǎn)換模式和靜態(tài)(Standby)模式。
普通轉(zhuǎn)換模式(XY_PST=0,AUTO_PST=0)可以完成一般目的下的ADC轉(zhuǎn)換??梢栽O(shè)置ADCTSC和ADCCON對AD轉(zhuǎn)換完成初始化;然后讀ADCDAT0(ADC數(shù)據(jù)寄存器0)的XPDATA域(普通ADC轉(zhuǎn)換)的值來實現(xiàn)轉(zhuǎn)換的過程。
我們把位于STDBM位的ADCCON寄存器設(shè)定成1時,會激活靜態(tài)(Standby)模式。此時,結(jié)束A/D轉(zhuǎn)換操作,ADCDAT1寄存器的YPDATA(正常ADC)和ADCDAT0寄存器的XPDATA域的值不會改變。
接下來把傳感器采集到的酒精濃度信息通過A/D轉(zhuǎn)換器,將其變?yōu)閿?shù)字信息進行操作。微處理器和MQ-3氣體傳感器的接口電路如圖3所示。
圖3 MQ-3與微處理器接口電路圖
觸摸屏可以分類為電容、紅外線掃描、電阻、表面聲波以及矢量壓力傳感器等,而最為人們廣外接受的是四線或五線電阻觸摸屏[7~8],四線電阻觸摸屏的主要部件是兩個透明電阻膜,通過垂直和水平電阻網(wǎng)進行檢測電壓,經(jīng)過計算確定坐標。
觸摸屏與ADC的工作模式:
1)ADC普通轉(zhuǎn)換模式:普通轉(zhuǎn)換模式是一般的ADC轉(zhuǎn)換時使用的,比如想要用ADC檢測電壓等。
2)獨立X/Y軸坐標轉(zhuǎn)換模式:獨立的X/Y軸坐標轉(zhuǎn)換模式分為Y軸模式和X軸模式。首先需要轉(zhuǎn)換X軸坐標,X軸相關(guān)信息會寫入XPDAT中,如果完成轉(zhuǎn)換由控制器會發(fā)出中斷。接下來完成轉(zhuǎn)換Y軸坐標,Y軸相關(guān)信息會寫入YPDAT中,如果完成轉(zhuǎn)換由控制器會發(fā)出中斷。
3)自動X/Y軸坐標轉(zhuǎn)換模式:自動X/Y軸坐標轉(zhuǎn)換模式的工作是自動地進行X軸和Y軸的轉(zhuǎn)換操作,完成以后發(fā)出中斷信號。
4)中斷等待模式:當觸摸屏被觸摸,那么開啟中斷模式。此時產(chǎn)生中斷信號。在此期間,Y軸和X軸相關(guān)信息都可以從其對應(yīng)存儲的寄存器中獲得。
5)閑置模式:此時轉(zhuǎn)換寄存器中的值都被設(shè)定成為上一次轉(zhuǎn)換時的相關(guān)信息。
我們使用的S3C2410的YL-LCD35-V1.0它是一個四線電阻觸摸屏。由于觸摸經(jīng)常發(fā)生在觸摸屏的B面,所以我們將該面采用ITO材料,該材料是非常輕薄的,所以難免操作時,會出現(xiàn)微微的縫隙,如果有了縫隙,那么原本應(yīng)該平均分散的電壓就不平均分散,也就是表現(xiàn)縫隙處電壓不準。當縫隙越來越多,越來越大,觸摸屏便會無用,所以年限太短是四線電阻觸摸屏的致命缺陷。
針對四線觸摸屏的問題,五線電阻進行問題提升:首先五線觸摸屏的A面不再采用導(dǎo)電涂覆層,而是使用了導(dǎo)電玻璃,而這樣做可以將A面的使用年限增加很多,與此同時透光率也得到了改進。另外,五線觸摸屏的B面僅僅是導(dǎo)體作用,選擇了鎳金透明導(dǎo)電層做導(dǎo)體,因為其延展性較好同時電阻率也較低,所以B面的使用年限也得到了改進。五線觸摸屏有一個特別的工藝。在工藝工程過程中極有可能會由于存在不平均而使得電壓場分布的不均勻,精密的電阻可能會經(jīng)過許多的電流,所以需要補償可能會發(fā)生的線性失真問題。五線觸摸屏是截至當前表現(xiàn)最為出色的電阻技術(shù)觸摸屏,非常適用于醫(yī)療、軍事、航空等方面。同時,YL-LCD35-V1.0用的是TFT LCD液晶顯示器的顯像原理是采用“背透式”原理。當出現(xiàn)光源時,從下偏光板向上透出光源,傳導(dǎo)光線通過液晶分子。YL-LCD35-V1.0與用戶系統(tǒng)的連接只是用了一根軟排線,如圖4所示。連接器用的是市場上非常用已買到的IDC連接器,雙排50針(25*2),引腳間距2.00mm。
預(yù)警提示功能我們用蜂鳴器報警電路來完成,在S3C2410上添加了蜂鳴器,并用I/O口P0.7來管理蜂鳴器。采用8550進行驅(qū)動控制來放大TTL電平,而其放大的倍數(shù)非常高的特點正好是系統(tǒng)需要的。采用R36電阻來減少三極管的基極電流。蜂鳴器的電路如圖5所示。
圖4 優(yōu)龍LCD連接器IDC50-2.00mm信號分配圖
圖5 蜂鳴器報警電路
系統(tǒng)上電后首先初始化各個硬件模塊,控制器主要運行在主程序模塊下,MQ-3氣體傳感器檢測模塊、液晶顯示及蜂鳴器報警以查詢方式執(zhí)行。
主程序部分需要初始化多任務(wù)環(huán)境,然后第一個任務(wù)模塊被啟動。該模塊的工程時對各硬件和目標板進行啟動程序。而其他的子模塊則要進行數(shù)據(jù)的處理、顯示、存儲以及報警等。
根據(jù)中華人民共和國《車輛駕駛?cè)藛T血液、呼氣酒精含量閾值與檢驗》國家標準(GB19522-2004)規(guī)定,我們設(shè)定引起蜂鳴器報警依據(jù)是:
1)如果駕駛員血液中酒精含量小于80mg/100mL大于或等于20mg/100mL那么可以認為是飲酒駕車。也就是MQ-3氣敏傳感器如果探測出酒精濃度大于20/100mL,蜂鳴器應(yīng)該要發(fā)出警報。
2)如果駕駛員每100mL血液中酒精含量達到或者超過80mg,即可以認為其是醉酒駕車。也就是MQ-3氣敏傳感器如果探測處酒精濃度大于80mg/100mL,蜂鳴器應(yīng)該要發(fā)出警報。
當酒精濃度模塊準確運行時,由于探測需要A/D轉(zhuǎn)換模塊,我們第一步要先設(shè)定ADCR初值,讓其設(shè)置ADC工作模式、ADC轉(zhuǎn)換時鐘和轉(zhuǎn)換通道,同時開始A/D轉(zhuǎn)換。將轉(zhuǎn)換數(shù)據(jù)存儲在ADDR寄存器里面。ADCR部分參數(shù)設(shè)置如下:轉(zhuǎn)換時鐘為1MHz;SEL=1,BURST=0,選擇通道0;CLKDIV=Fp?clk/1000000-1,軟件控制轉(zhuǎn)換操作;CLKS=0,使用11個時鐘轉(zhuǎn)換;正常工作模式;TEST1:0=00,正常工作模式;START=1,直接啟動ADC轉(zhuǎn)換;EDGE=0,CAP/MAT引腳下降沿觸發(fā)ADC轉(zhuǎn)換。
VDDA電壓不要小于模擬輸入引腳的信號,如果不然會得出無用的A/D值。當MQ-3氣敏傳感器探測出酒精類似的氣體出現(xiàn),經(jīng)過A/D轉(zhuǎn)換器將酒精濃度進行轉(zhuǎn)換,將其變成電壓,而后以中斷通知處理器,接著將數(shù)據(jù)放到ADDR中。隨后讀取存在ADDR的數(shù)據(jù),并把DONE歸零為下次操作做準備,將數(shù)據(jù)經(jīng)由I/O口傳給處理器。依照酒精濃度與電壓值的關(guān)系方程y=0.0034e1.2789x,可以換算得到對應(yīng)的酒精濃度,最后將值在LCD上顯示輸出。
我們依據(jù)蜂鳴器的報警標準來設(shè)定,通過I/O口的操作實現(xiàn)這個過程。首先分辨酒精濃度所在區(qū)域,如果在20mg/100mL~80mg/100mL之間,可以認為飲酒駕車,那么設(shè)定鳴笛一次;如果高于80mg/100mL,可以認為醉酒駕車,那么設(shè)定鳴笛兩次。我們通過兩類鳴笛對上述兩類情況進行區(qū)分,同時對駕駛員進行提醒警示。除了以上的情況就說明駕駛員未飲酒。
首先通過MQ-3傳感器把當前電壓的模擬量送到模擬輸入通道中,ADC共有AIN0~AIN7 8個模擬輸入通道,本系統(tǒng)選用的是其中的AIN2,經(jīng)過ADC轉(zhuǎn)換之后的二進制數(shù)存放在ADCDAT0的低十位中。把轉(zhuǎn)換所得的數(shù)字量轉(zhuǎn)換成十進制數(shù)賦值給一個定義的變量a2。同時,根據(jù)a2的值計算出當前空氣酒精濃度,再通過LCD顯示當前酒精濃度并且判斷是否需要報警。
本系統(tǒng)的字庫自己設(shè)計制作,因為YL-LCD35-V1.0是沒有漢字字庫的附加的。我們以“液晶漢字”距離來解釋如何顯示漢字。漢字在液晶屏上的顯示如圖6所示。液晶屏上的顯示點這里用圖6中的正方形表示,所以黑色的點組合在一起形成了文字。而圖6中每一個黑色的正方形可以對應(yīng)液晶屏上的一個顯示點。
圖6 “液晶漢字”的字模圖
采用外部晶體管連接觸摸屏到S3C2410的接口電路,一般在程序中選擇連續(xù)的、自動的X/Y軸坐標轉(zhuǎn)換或是分離的X/Y軸坐標轉(zhuǎn)換模式以獲取觸摸點的X/Y坐標,本系統(tǒng)采用的是后者。設(shè)置觸摸屏接口為等待中斷模式,等待的是INT_TC中斷。如果中斷(INT_TC)發(fā)生,那么立即激活相應(yīng)的AD轉(zhuǎn)換,在得到觸摸點的X/Y軸坐標值后,返回到等待中斷模式。
FS2410開發(fā)板上集成的蜂鳴器首先需要跳線J5控制使能,接上短路帽,使能蜂鳴器,在S3C2410中通過GPIO驅(qū)動控制蜂鳴器。GPIO(General Pur?pose Input Output)為通用的輸入、輸出端口。嵌入式系統(tǒng)的外部設(shè)備通常數(shù)量比較多,可是結(jié)構(gòu)相對不復(fù)雜,CPU對這些設(shè)備進行操作,有的也被CPU當成輸入。微控制器芯片中大多會有通用可編程IO接口,該接口包括兩個以上的寄存器,數(shù)據(jù)寄存器和控制寄存器。有多達117個多功能I/O引腳集成在S3c2410芯片上。所有引腳都可以為系統(tǒng)實現(xiàn)復(fù)雜功能。
傳感器因其巨大的應(yīng)用前景而受到學(xué)術(shù)界和工業(yè)界越來越廣泛的重視[9~13]。本系統(tǒng)按照功能需求采用了氣體傳感器實現(xiàn)探測酒精的濃度值。接下來說明通過傳感器實現(xiàn)探測酒精的濃度值的原理。
1)氣體傳感器的應(yīng)用及特性
該系統(tǒng)主要采用的是MQ-3氣體傳感器,原因是他包含許多優(yōu)點。包括它的敏感度很高,響應(yīng)時間較短,壽命較長,穩(wěn)定性較高等。
MQ-3氣體傳感器目前應(yīng)用在乙醇的探測、駕駛員現(xiàn)場檢測等場所。
2)MQ-3氣體傳感器的測量及構(gòu)造原理
氣體傳感器有四個針狀管腳,可以進行信號取出,兩個針狀管腳,可以進行加熱電流,共計六只針狀管腳。因為其內(nèi)部結(jié)構(gòu)比較特殊,元件的阻值會在加熱以后變化,當酒精濃度降低時阻值會增大,該系列氣敏元件的靈敏度變化曲線圖如圖7所示,我們根據(jù)圖7所示可以看出電阻值和濃度值的關(guān)系。
酒精濃度與電壓值的曲線圖如圖8所示,因為不同酒精濃度會使得電阻值不一樣,所以相應(yīng)的電壓值會寫在負載電阻上,傳感器會完成將采集出的物理量轉(zhuǎn)變成電量的工作。
圖7 靈敏度特性曲線圖
圖8 酒精濃度與電壓值的曲線圖
在實驗室環(huán)境中,將系統(tǒng)得出的100組電壓值與酒精濃度的結(jié)果展示。在實驗過程里,將1ml酒精濃度為95%(mg/l)從0倍依次稀釋為100倍,接下來得出酒精濃度值和電壓值的對應(yīng)關(guān)系圖。酒精濃度與電壓值的曲線關(guān)系如圖9所示,總結(jié)出對應(yīng)的公式是y=0.0034e1.2789x,其中x為電壓值,y為酒精濃度值。
圖9 酒精濃度與電壓值的曲線圖
系統(tǒng)開發(fā)的結(jié)束階段,完成各個功能模塊應(yīng)用程序的開發(fā)后,需要進行軟硬件集成,實現(xiàn)整個系統(tǒng)的融合,生產(chǎn)出一個產(chǎn)品。因此,在系統(tǒng)測試之前需要將應(yīng)用程序燒寫到FS2410的NAND Flash中。
考慮實現(xiàn)方便性與可重復(fù)性我們選使用在BI?OS下用USB Download應(yīng)用程序并且燒寫到NAND Flash中。FS2410開發(fā)板所帶的BIOS的功能包括設(shè)訂啟動參數(shù)、啟動下載文件、燒寫Flash,設(shè)置Wince或Linux自啟動。
BIOS附帶的NAND Flash燒寫功能,是支持三星的64M和32M的。同時BIOS將NAND Flash分區(qū),用0代表B00T區(qū),可以將BIOS、Bootloader存儲在里面,用1代表存儲內(nèi)核,可以將手寫程序存儲在里面,用2代表根文件系統(tǒng)。啟動BIOS 5s后,若沒有收到用于控制串口的信息,那么就會把放在1分區(qū)的程序讀到SDRAM中的Ox30200000位置,然后開始運行。當然也可以選擇不運行,則在輸入2以后,選擇合適的分區(qū)在NAND FLASH中將要下載的程序?qū)戇M去。經(jīng)過實驗數(shù)據(jù)的測試,并對結(jié)果進行分析,可以得出系統(tǒng)達到了理想的效果。