本文提出并設計了一種可以實時檢測呼出氣體的酒精含量,且超出設定值時會聲光報警的測試儀。本文詳細介紹了設計所提出的背景和研究意義,對于所用到的各個器件做了對比介紹,以及各個硬件電路模塊的工作原理,在軟件程序方面,對于各個模塊做了詳細的流程框圖,可以快速看出程序設計思路,最后列舉了硬軟件在設計調試所出現的一系列問題以及與之對應的解決辦法。
2 設計方案選擇
2.1 系統控制芯片選擇
方案一:選擇STC89C52單片機作為主控制芯片。該單片機是8位微控制器,有8K的程序存儲空間,有256個字節數據存儲空間,3個16位定時器/計數器,4個外部中斷,全雙工串行口,具有高速、低功耗、具有超強抗干擾性的特點,其指令代碼完全兼容8051,市場價格較為廉價,且具有靈活的編程方式。
方案二:選擇MSP430單片機作為主控制芯片。該單片機的匯編語言使用起來較為靈活,有許多尋址方式,且具有強大的處理能力,電壓低,功耗較低,片內集成資源豐富,且加密性強,有強抗干擾能力。但是由于工作電壓低,接口電路麻煩,而且I/O口無保護,所以過壓電流會擊穿。其次不易上手,學習資料較少。
綜合以上的描述,鑒于STC89C52較為常用,市場上價格相對較低,設計開發難度較小,查找學習資料便捷,且此單片機已可滿足設計要求,因此選擇STC89C52作為主控制芯片。
2.2 顯示器件的選擇
方案一:使用LCD1602液晶顯示屏。該顯示屏可以直接和STC89C52直接接口,可顯示32個字符,因是字符型液晶,所以可以較為便捷地顯示字母和數字,且控制簡單,市場價格低廉,但是所顯示的字體大小不可隨意改動,對于曲線和圖形等也無法顯示。
方案二:使用LCD12864液晶顯示屏。該液晶顯示屏的各個顯示點都與一個二進制數對應,因此可自行設計輸出的圖形和漢字,分辨率較高,功耗較低,且輕薄,由于顯示信息量大,造成電路及程序的設計較為困難。
綜合以上方案,本設計主要顯示酒精含量、時間和日期,需要顯示的內容較少,選用LCD1602為顯示屏,已可滿足設計要求,且該顯示屏價格低廉,在網絡上可查找資料較多,方便學習參考,設計難度相對較小。
2.3 A/D轉換芯片的選擇
方案一:采用ADC0832作為模數轉換器件。該芯片是雙通道的模數轉換芯片,在0~5V的電壓下可以正常工作,采用250KHZ的頻率,采用雙輸出方式對數據進行嚴格的校對,可有效減少芯片的數據錯誤,并具有較好的穩定性。獨立的允許輸入模式使得多個設備的安裝和控制過程更加方便。
方案二:采用ADC0808作為A/D轉換器件。該芯片是ADC0809的簡化版,功能大致相同,ADC0808是采樣分辨率為8位的、以逐次逼近原理進行模/數轉換的器件。
這兩種設備的基本性能相似,因為本次設計只需一個通道,所以使用ADC0832芯片已可滿足需求,可節省資源,且此芯片兼容性好,較為劃算。
2.4 酒精檢測傳感器的選擇
半導體型的酒精傳感器MQ-3所處環境中含有酒精蒸氣時,當乙醇氣體濃度增大時,傳感器的導電性能也隨之提高,接著將檢測到的酒精含量轉化為電信號,可以得到關于周圍環境中被測氣體狀態的信息。MQ-3對酒精較為敏感,以及有較強的抗干擾能力,對于油煙水汽有較強的抵抗性,且市場價格較低,適用于多種應用,最終方案選擇MQ-3酒精傳感器。
2.5 時鐘芯片的選擇
DS1302時鐘芯片可提供時間等信息,在2V~5.5V之間可以正常工作,具備主電源后備電源雙電源引腳,1腳為主電源接口,8腳作為后備電源接口,可搭配紐扣電池做后備電源,以極低的消耗可保持時鐘運行很長時間,運行時間可達到幾個月甚至幾年,即使斷電后再次上電使用設備也可做到時間同步標準時間。雖然單片機內部也有定時器,但它是對單片機工作節拍的技術的精確度較高,但不適合長時間定時。相比之下,選擇DS1302做時鐘芯片更能滿足課題要求。
2.6 系統整體設計方案
結合上面選擇的解決方案,確定了總體系統框圖,如圖2-1所示。
圖2-1 總體系統框圖
最終將STC89C52單片機作為系統的主控芯片,人機交互通過獨立按鍵和LCD1602液晶顯示屏來實現,并可通過獨立按鍵來設定醉酒閾值,調節時間顯示,與標準時間同步。使用MQ-3酒精傳感器來得到電信號,經過電路處理成模擬電壓后輸送給單片機,經ADC0832轉換器件轉化為數字電壓。模擬信號由A/D轉換模塊輸出,用于檢測酒精的濃度,從而降低設備的使用。將所獲得的數據與預先設置的醉酒閾值進行比較,超過設定值值時,LED亮,同時蜂鳴器發出報警聲。整個電路包括:最小MCU,時鐘,功能按鍵,LCD液晶四大部分。該供電模塊由一個濾波電容,一個自鎖開關,一個LED顯示,可5V直流供電,供電給各模塊;由LCD1602液晶顯示屏和可調電阻器組成液晶顯示模塊。
3 系統硬件設計
3.1 單片機最小系統
3.1.1單片機STC89C52
STC89C52單片機完全兼容8051,該單片機共有四組I/O口,全部提供給用戶(程序長度小于4K)分別是P0、P1、P2、P3。有6個中斷源,3個16位的定時/計數器,片內振蕩器和時鐘電路在5.5V~3.8V之間可正常工作,11.0592MHz和12MHz是常用的時鐘工作頻率,安全性高,功耗低,運行速度快,性能卓越,且市場價格便宜,在多個領域都有應用。
3.1.2單片機最小系統
單片機最小系統電路如圖3-1所示
圖3-1 單片機最小系統
該產品采用STC89C52微控制器,以單片機為控制核心,配合晶振、電源、復位電路,具有優異的性能、較低功耗、充分開放的系統資源、靈活的界面,使用者可以通過自己的方式構建電路,實現各種功能。在晶振電路中,通常可以選擇1.2-12MHz,甚至24MHz,功率隨著頻率的增大而增大。此次采用了2個30pF陶瓷電容器,12MHz的晶振。
MCS-52單片機通常采用上電復位和按鍵復位這兩種復位方式[1]。RST的上方為一電容,并接一高電平,下方為一個電阻,并接地。在通電的情況下,電容器的兩端就會產生短路,RST管腳就會變成高電平,電源就會對電容充電,RST端的電壓就會緩慢地降低,直到達到一定的水平,單片機才能正常工作。
本設計改用了USB接口5V供電,通過一雙擲開關來控制電源的關斷,可連接充電寶或者手機充電器等,方便攜帶使用,其電路如圖3-2所示。
圖3-2 電源接口電路
3.2 MQ-3酒精氣體傳感器
MQ-3是一種半導體酒精感應器,當被測環境中含有酒精氣體時,該傳感器的導電性會隨著被測環境中的酒精氣體的濃度而發生變化,接著通過特定的電路,便可將傳感器的電導率轉化為一定的氣體濃度的信號,MQ-3酒精感應器對酒精的敏感度很高,能夠抵抗汽油,煙霧,水蒸氣等。傳感器在充電時,輸出電壓會迅速升高,當達到一定的溫度后便會緩慢的下降,因此在使用之前,要先對傳感器進行預熱1-2分鐘,這樣就可以保證傳感器的正常工作。被測環境中的酒精濃度與傳感器輸出電壓有著一定的關系,在無酒精氣體的環境中,傳感器的輸出電壓大約為1V,在有酒精氣體的環境中,每提高20 PPM (2毫克/100毫升)的酒精濃度,傳感器的電壓提高0.1V,該模塊內部電路圖如圖3-3所示。
圖3-3 MQ-3酒精檢測模塊內部電路圖
3.3 ADC0832電路設計
ADC0832是一款雙通道的A/D轉換芯片,該芯片的模擬輸入電壓范圍為0-5V,基于有雙輸出的數據,可以進行數據的校驗,從而降低了數據的錯誤,具有較高的轉換速度和較好的穩定性。獨立的晶片允許輸入,使得多個裝置的連接與處理單元的控制更為便利。利用DI的數據輸入,可以較為方便地進行信道功能的選取。如果ADC0832不工作,則其CS輸入為高電平,此時,可將此芯片關閉,CLK及 DO/DI可供選擇。與單片機的接口應為CS、CLK、DO、DI四條數據線路.由于DO和DI在通信過程中不能同時進行,并且與單片機之間的接口也是雙向的,所以在電路上,DO和DI并聯為一條數據線。圖3-4顯示了特定的電路。
圖3-4 ADC0832電路圖
3.4 時鐘電路設計
在DS1302時鐘電路中,管腳1用作主電源接口,管腳8提供低功率和低功耗的情況下的備用電源接口,當主電源斷電時,Vccl可保證其正常工作,保存資料,保持時鐘的正常運轉,做到時間同步。并外加頻率為32.768Hz晶振,提高時鐘的穩定性。圖3-5為本設計的時鐘電路。
圖3-5 時鐘電路
3.5 報警電路設計
經A/D轉換后所得的數字信號若比所設的閾值大,單片機的P2.3口輸出低電平,此口與報警電路相連,當其為低電時,三極管導通,蜂鳴器通電,發出蜂鳴聲,若為高電平時,三極管無法導通,保持靜默。蜂鳴器報警電路如圖3-6所示。
圖3-6 報警模塊電路圖
3.6 功能按鍵模塊
在按鍵上,一般采用獨立的按鍵和矩陣的方式,各有利弊,而單獨的按鍵電路則比較簡單,編程也比較方便,一般用于一些簡單的硬件電路。矩陣電路恰恰相反,編寫程序不易,與獨立按鍵相比更加節省IO口,多用于8個按鍵以上的硬件電路。本設計只需四個按鍵,因此該方案采用了獨立按鍵電路,采用了多個單獨的按鍵進行人機對話。通過按鍵操作,向系統發出操作指令,再與MCU進行串口通訊,顯示在液晶顯示屏上,按鍵的一端與單片機的輸入/輸出端口相連。
這個設計是因為在懸置狀態下,單片機的I/O是置1,不按按鍵的話,I/O就等于懸空,按下按鈕后,此端口的電壓會降低,單片機可以根據輸入/輸出接口是否存在低電平來判定是否按下了按鈕,當然,該按鍵使用的是金屬開鎖,會出現抖動,因此在程序中要加上一個延遲消除。此外,再按下按鍵時會產生抖動,所以在程序中要加一個延遲消除程序。三個按鍵的功能分別是:按鍵2按下后進入設置模式,可以選擇需要調節的參數,可連續選擇。在設置的模式下,按鍵2按下后,對應的參數加一,按鍵3按下后對應參數減一。功能按鍵電路如圖3-7所示。
圖3-7 功能按鍵電路
3.7 LCD1602液晶顯示模塊
顯示LCD1602總共有11個指令,通過MCU將其傳輸到LCD1602中,可以實現諸如屏幕清屏、切換、顯示等功能。LCD1602本身就有一個字庫,可以在顯示的時候直接調用字庫來顯示,當然,如果字庫里沒有的字符也可以按照自己的要求寫在CGROM里,比如5*8個字符,但是定制的字符數量是有限制的,所以要按照一定的順序來設置,最多可以設置8個字符。在LCD的CGROM中寫入定制的字符之后,可以任意調用,調用方法與普通的顯示字符相同。通過讀狀態操作、寫指令操作、讀數據操作可以控制液晶顯示器,其中寫數據操作有固定的對應引腳電平。電路圖如圖3-8所示。
4 系統軟件設計
4.1 程序語言及軟件開發環境
本課題的編寫涉及到軟體的編程,所以必須選用程式語言和軟體的開發環境。在編程語言上,選擇了C。C語言是一種面向過程、抽象的通用編程語言。可以說,這是一種具有兩種語言特性的語言,同時也是一個優秀的程序設計工具,可以使用模塊化的方法編寫代碼,方便調試,同時,C語言還具有很強的數據處理能力,可根據不同的指針,直接對硬件進行訪問,從而實現對存儲和硬件的訪問。
KeilC51是一個可以兼容51系列單片機和C的軟件開發平臺,與C語言的編程十分契合,它的集成環境簡單、方便,軟件調試的功能強大,大大增加了程序的成功概率。而Proteus則是一個EDA的開發工具,可以通過計算機模擬單片機的電路來模擬實際的工作狀況。通過對系統的模擬,可以對系統的整體功能進行檢驗。
4.2 主函數的設計
程序開始運行后,LCD1602液晶顯示器和定時器開始初始化,單片機開始讀取EEPROM存儲的限制數據,接著判斷一分鐘預熱是否完成,保障傳感器可以正常工作,預熱完成后,程序要檢測是否有按鍵按下,若按下便進行數據處理,并判斷顯示是否正常,若不正常則跳到顯示界面,正常則繼續下一步,單片機讀取經A/D轉換后的數字信號,并發送給液晶顯示器,最終顯示出酒精濃度。
評論
查看更多