劉楊,張健,黃建芬,趙元鏡
(攀枝花學院智能制造學院,四川攀枝花,617000 )
酒駕是一個全球都急待解決的問題,隨著體內酒精濃度每增加0.05g/dl,駕駛風險就會呈劇烈增加[1]。酒后駕駛發生交通事故的概率是非酒后駕駛的1.72倍[2]。《中華人民共和國道路交通安全法》第九十一條規定,BAC在20~80mg/100ml之間為酒駕,醉駕是BAC值超過80mg/100ml[3],我國對酒駕案件相關的嫌疑人都予刑事拘留絕不容情[4]。
如今的酒檢儀最常見的原理是電化學-燃料電池型,以形成一個微小電壓的電信號,然后在數字顯示儀器上顯示出酒精氣體的濃度值。目前國內已有各種防酒駕系統電子產品[5,6],但由于結構復雜、價格較貴且制造難度大從而未得到大量的普及;基于以上原因,設計了一項基于STC89C51單片機、MQ-3酒精氣敏傳感器和液晶顯示模塊為主的結構簡單的、耗能低的價格便宜的酒精濃度報警裝置,使駕駛員能夠及時的自我檢測從而提高安全意識。
由于STC89C51單片機具有運算速度快、耗能小和超強抗干擾能力[7]所以采用該單片機作為主控芯片,通過LCD1602進行實時顯示信息,采用半導體氣敏傳感器MQ-3對酒精氣壓的檢測,并通過電路將酒精濃度引起的MQ-3內阻變化轉變成電壓變化后由ADC0832進行采集,系統能夠根據采集到的酒精濃度信息于限值進行對比,如果超過限制系統會發出對應的警示,限值可由按鍵進行設置并具有掉電存儲的功能。其總體框圖如圖1所示。

圖1 方案總體框圖
單片機最小系統是能使單片機正常工作的最小硬件電路,它包括電源電路,晶振電路,復位電路和程序存儲器選擇電路[8]。單片機最小系統設計如圖2所示。

圖2 單片機最小系統電路圖
顯示儀器采用的是LCD1602液晶顯示模塊,它是通過PCB 把LCD控制器,驅動器,RAM,ROM和液晶顯示面板連接在一體的,單片機只需向LCD模塊寫入相應的命令和數據就可以顯示需要的內容。只需將LCD1602液晶顯示模塊的引腳口D0-D7連接到STC89C51單片機的P0上以方便進行數據的傳輸;而V0口接一個可調電位器,當調節電位器位置改變時接入V0的電壓也隨之變化進行顯示的清晰度也隨之變化,在實際時采用電位器而不采用固定阻值的電阻,就是為了能夠方便調節在不同電壓的場合下使用。
A/D轉換模塊ADC0832是一種8位分辨率雙通道轉換芯片,其最高分辨可達256級,適用范圍廣泛,ADC0832能把酒精傳感器產生的模擬量信號轉換成CPU能夠識別的數字量信號[9];且存在的誤差極小,轉換速度較高(250Khz時轉換時間32μs)單電源供電,功率低(15mw),穩定性強。
一般情況下ADC0832與單片機的連接應CS、CLK、DO、DI相同。CLK引腳提供ADC0832的工作時鐘, DO引腳將轉換后的數字信號送入單片機內進行處理, DI引腳主要實現ADC0832電壓采樣輸入通道的選擇[10],但由于DO端與DI端在通信時并未同時有效并與單片機的接口是雙向的,所以電路設計時將DO和DI 并聯在一根數據線上使用以節省單片機IO口的使用。
MQ-3氣敏傳感器的工作原理是利用氣敏半導體材料同氣體接觸后,會發生還原反應同時釋放出大量的熱量,造成半導體電阻發生變化,可以檢測的范圍0.04-4mg/L[11],利用這一特性將酒精的濃度變化轉化為傳感器表面電阻RS兩級間的電位差的變化,再通過與其串聯的負載電阻RL上的有效電壓VRL獲得的,二者的關系式為:RS/RL=(VC-VR)/VRS,其中VC為有效電壓。傳感器的輸出電壓與被測環境的酒精濃度存在著一個近視線性的關系,在正常不含酒精時傳感器器的輸出電壓大約在1V左右,當傳感器檢測到酒精氣體時,電壓每升高0.1V,近視被測氣體濃度增加20PPM也即是2mg/100ml。
蜂鳴器模塊設計:蜂鳴器選用的是電磁式有源蜂鳴器,當I/O口輸出低電平時,三極管導通,蜂鳴器鳴叫;當I/O口輸出高電平時,三極管截止,蜂鳴器停止鳴叫。
獨立鍵盤模塊設計:鍵盤實際上是一組開關的集合,當鍵按下時,兩根導線接通;釋放時,兩根導線不通。
程序的主函數是C語言進行編程,其目的是在單片機上電后先對LCD顯示模塊進行初始化,判斷MQ-3酒精傳感器是否加熱完成,對酒精檢測范圍的重置,檢測結果信息的反饋;以達到對酒精濃度檢測功能的實現。設計的主程序圖框圖如圖3所示。

圖3 主程序圖框圖
1602液晶是字符型液晶,它的內部自帶字符庫ROM,要使LCD1602液晶顯示模塊顯示字符,要對其控制器進行初始化設置,還必須對有、無光標,光標的移動方向,光標是否閃爍及字符的移動的方向進行設置;在單片機控制LCD1602液晶顯示模塊顯示字符時,只需要將待顯示的字符的ASCII碼寫入內部的顯示數據RAM,內部控制電路就可將字符在顯示器上顯示出來,且在寫顯示程序的時候,先寫命令,再設定字符顯示,最后寫數據,在每寫一次命令或數據都需要判斷液晶是否忙。
確定一個初始化信號,然后選擇需要采集的通道(單通道0、單通道1、雙通道0、雙通道1其中之一),選擇完通道后單片機發送下降沿開始讀數據,數據是一位位的串行傳輸并且高位在前,低位在后,直到將八位數據都采集完畢后將采集到的數據返回。ADC0832采集子程序設計框圖如圖4所示。

圖4 ADC0832采集子程序設計框圖
程序執行的前提的條件是得先通過鍵盤確定好報警閾值,并且把信息轉換為BCD碼存放在50H-52H的3個儲存單元中。傳感器采集的信息經過A/D轉換后得到的測量值存儲在40H-42H的3個單元中并進行十進制的轉換,再通過與閾值進行一一對應比較,若小于閾值則程序繼續進行;若大于閾值則STC89C51單片機的P1口清零并報警裝置運行。報警子系統程序框圖如圖5所示。

圖5 報警子系統程序框圖
實驗環境:海拔1418m,氣壓843hPa,濕度 58%,氣溫 19℃。
實驗是以日用酒為待測源,使其揮發經過MQ-3傳感器收集到數據。經實驗結果表明:儀器在使用之前需預熱約60s,檢測的酒精濃度范圍10-1000ppm,檢查范圍為 15~25cm,靈敏度 Rin air/Rin typical gas≥ 5,響應時間約7s,回復時間約21s,所以該儀器對酒精有很高的靈敏度和良好的選擇性,快速的相應恢復性和可靠性。
對酒精濃度檢測顯示結果的實物圖如圖6所示。

圖6 酒精檢測儀顯示結果
設計了以STC89C51單片機為程序控制主體,MQ-3氣敏傳感器采集信息,LCD1602液晶顯示模塊輸出信息的酒精濃度檢測儀。經測試結果表明:在確定好需要檢測的酒精濃度范圍值后,儀器能及時的、準確的、智能化的分析,并進行聲光報警。檢測儀的各個子程序互不干擾,方便程序的修改,硬件部分體積小,耗能低,智能化程度高,具有較好實際應用價值。