第一篇:酒精濃度測試儀[范文]
酒精濃度測試儀設計報告
一、設計意義
自《刑法修正案(八)》和修改后的《道路交通安全法》正式實施,“醉酒駕駛”正式入刑。不僅交警部門,而且很多車主都期盼能夠有便攜儀器方便地測量氣體酒精濃度,為安全駕駛提供保障,有效減少重大交通事故的發生。本研究設計的酒精濃度測試儀是一款實用性強、安全可靠的氣體乙醇濃度檢測工具,采用高精度MQ-3乙醇氣體傳感器對空氣中的乙醇濃度進行檢測,利用宏晶公司高性能低成本單片機STC89C52對檢測信號進行A/D轉換和處理,最后通過液晶屏顯示輸出。本研究設計的酒精濃度測試儀還具有醉酒閾值設定功能,可以根據法律法規或用戶需要設定修改醉酒閾值,并進行保存。
二、硬件設計
1、設計框圖
本研究設計的酒精濃度測試儀框圖如圖1所示。MQ-3乙醇氣體傳感器輸出信號經信號調理電路處理,輸出隨乙醇濃度變化的電壓信號,該電壓信號送入單片機系統,經AD轉換,與設定的醉酒閾值進行比較,并顯示或報警。
MQ-3傳感器模塊MQ-3氣體傳感器信號調理電路模擬電壓信號STC12C5A16AD單片機模/數轉換電壓/酒精濃度轉換醉酒閾值閾值比較外部EEPROM酒精濃度顯示過閾報警圖1 酒精濃度測試儀方框圖
2、乙醇信號檢測及調理電路
MQ-3乙醇氣體傳感器可以應用用于機動車駕駛人員及其他嚴禁酒后作業人員的現場檢測,也用于其他場所乙醇蒸汽的檢測。其技術特點為:
? ? ? ? 對乙醇蒸汽有很高的靈敏度和良好的選擇性 快速的響應恢復特性
長期的壽命和可靠的穩定性 簡單的驅動回路
主要技術指標:
MQ-3乙醇氣體傳感器靈敏度曲線如圖2所示,其傳感原理為氣敏電阻的輸出阻值隨乙醇氣體等濃度變化而變化。
圖2 MQ-3乙醇氣體傳感器靈敏度曲線
MQ-3乙醇氣體傳感器管腳與測試電路如圖3所示。
(a)管腳圖(b)測試電路
圖3 MQ-3乙醇氣體傳感器管腳及測試電路
MQ-3乙醇氣體傳感器及其調理電路原理如圖4所示。其外形如圖5所示。經過調理,檢測信號由電阻值轉變成電壓值,便于后續電路進行A/D轉換和處理。
圖4 傳感器及調理模塊原理圖
該傳感器模塊具有如下特點,方便與單片機系統接口組成檢測儀器。? ? ? ? 具有信號輸出指示。
雙路信號輸出(模擬量輸出及TTL電平輸出)TTL輸出有效信號為低電平。
(當輸出低電平時信號燈亮,可直接接單片機)
模擬量輸出0~5V電壓,濃度越高電壓越高。
3、單片機電路
本設計選用宏晶公司高性能單片機STC89C52,其管腳如圖6所示。
圖6 STC89C52單片機管腳圖
該芯片為52內核8位單片機,適用于常用檢測電路。由STC89C52組成的單片機系統原理圖如圖7所示。圖中AOUT為MQ-3傳感器模塊輸出的檢測電壓信號,送入ADC0832采集芯片端口進行處理,該信號可以根據乙醇氣體濃度直接輸出報警信號,報警閾值通過模塊上的電位器進行調節。
圖7 單片機系統原理圖
圖7中,按鍵K2和K3為醉酒閾值調整鍵,其中K2為“增加”,K3為“減小”按鍵。L2和L3為報警指示燈,分別可以進行酒后和醉酒兩級報警。
4、顯示電路
顯示部分采用SMC 1602液晶屏進行數據顯示,其主要技術參數為:
表1 液晶屏技術指標
接口信號說明如表2所示。
表2 液晶屏接口信號說明
與單片機接口電路如圖8所示。其中J2的3腳為背光引腳,R9和R10電阻用于調節背光亮度。J2的4、5、6引腳分別接液晶的RS、E/W和E控制引腳,J2的7—14引腳為數據引腳。
圖8 LCD與單片機接口電路
5、供電及程序下載電路
本設計采用電池盒接口供電,電源電壓5V。同時,其電路原理如圖10所示。
圖10 供電及程序下載電路
三、Protel硬件開發軟件
Protel是目前國內最流行的通用EDA軟件,它是將電路原理圖設計、PCB板圖設計、電路仿真和PLD設計等多個實用工具軟件組合后構成的EDA工作平臺,是第一個將EDA軟件設計成基于Windows的普及型產品。它集成了軟件界面、仿真功能和PLD設計和信號完整性分析,在此基礎上Protel 99SE又增加了一些新的功能,用戶使用更加方便靈活。Protel的功能十分強大,在電子電路設計領域占有極其重要的地位。它以其強大功能和實用性,逐漸獲得廣大硬件設計人員的青睞,是目前眾多EDA設計軟件中用戶最多的產品之一。1.Protel軟件組成
Protel軟件主要由電路原理圖設計模塊、印制電路板設計模塊(PCB設計模塊)、電路信號仿真模塊和PLD邏輯器件設計模塊等組成,各模塊具有強大的功能,可以很好的實現電路設計與分析。
(1)原理圖設計模塊(Schematic模塊)
電路原理圖是表示電氣產品或電路工作原理的重要技術文件,電路原理圖主要由代表各種電子器件的圖形符號、線路和結點組成。圖4.1所示為一張電路原理圖。該原理圖是由Schematic模塊設計完成的。Schematic模塊具有如下功能:豐富而靈活的編輯功能、在線庫編輯及完善的庫管理功能、強大的設計自動化功能、支持層次化設計功能等。
(2)印制電路板設計模塊(PCB設計模塊)
印制電路板(PCB)制板圖是由電路原理圖到制作電路板的橋梁。設計了電路原理圖后,需要根據原理圖生設計成印制電路板的制板圖,然后在根據制板圖制作具體的電路板。印制電路板設計模塊具有如下主要功能和特點:可完成復雜印制電路板(PCB)的設計;方便而又靈活的編輯功能;強大的設計自動化功能;在線式庫編輯及完善的庫管理;完備的輸出系統等。
(3)電路信號仿真模塊
電路信號仿真模塊是一個功能強大的數字/模擬混合信號電路仿真器,能提供連續的模擬信號和離散的數字信號仿真。它運行在Protel的EDA/Client集成環境下,與Protel Advanced Schematic原理圖輸入程序協同工作,作為Advanced Schematic的擴展,為用戶提供了一個完整的從設計到驗證仿真設計環境。
在Protel中進行仿真,只需從仿真用元器件庫中放置所需的元器件,連接好原理圖,加上激勵源,然后單擊防真按鈕即可自動開始。2.PCB板設計
(1)定元件的封裝
① 打開網絡表(可以利用一些編輯器輔助編輯),將所有封裝瀏覽一遍,確保所有元件的封裝都正確無誤并且元件庫中包含所有元件的封裝,網絡表中所有信息全部大寫,一面載入出問題,或PCB BOM不連續。
② 標準元件全部采用公司統一元件庫中的封裝。
③ ④⑥⑤元件庫中不存在的封裝,應自己建立元器件庫。(2)建立PCB板框
① 根據PCB結構圖,或相應的模板建立PCB文件,包括安裝孔、禁布區等相關信息。
② 尺寸標注。在鉆孔層中應標明PCB的精確結構,且不可以形成封閉尺寸標注。
(3)載入網絡表 ① 載入網表并排除所有載入問題,具體請看《PROTEL技術大全》。其他軟件載入問題有很多相似之處,可以借鑒。
② 如果使用PROTEL,網表須載入兩次以上(沒有任何提示信息)才可以確認載入無誤。
(4)布局
① 首先要確定參考點。
一般參考點都設置在左邊和底邊的邊框線的交點(或延長線的交點)上或印制板的插件的第一個焊盤。
② 一但參考點確定以后,元件布局、布線均以此參考點為準。布局推薦使用25MIL網格。
③ 根據要求先將所有有定位要求的元件固定并鎖定。④ 布局的基本原則
A.遵循先難后易、先大后小的原則。
B.布局可以參考硬件工程師提供的原理圖和大致的布局,根據信號流向規律放置主要原器件。
C.總的連線盡可能的短,關鍵信號線最短。
D.強信號、弱信號、高電壓信號和弱電壓信號要完全分開。E.高頻元件間隔要充分。F.模擬信號、數字信號分開。
⑤ 相同結構電路部分應盡可能采取對稱布局。
⑥ 按照均勻分布、重心平衡、版面美觀的標準來優化布局。(5)PCB設計遵循的規則 ① 地線回路規則:
圖11 地線回路規則
環路最小規則,即信號線與其回路構成的環面積要盡可能小,環面積要盡可能小,環面積越小,對外的輻射越少,接收外界的干擾也越小。針對這一規則,在地平面分割時,要考慮到地平面與重要信號走線的分布,防止由于地平面開槽等帶來的問題;在雙層板設計中,在為電源留下足夠空間的情況下,應該將留下的部分用參考地填充,且增加一些必要的過孔,將雙面信號有效連接起來,對一些關鍵信號盡量采用地線隔離,對一些頻率較高的設計,需特別考慮其地平面信號回路問題,建議采用多層板為宜。
② 竄擾控制
竄擾(CrossTalk)是指PCB上不同網絡之間因較長的平行布線引起的相互干擾,主要是由于平行線間的分布電容和分布電感的作用。克服竄擾的主要措施是:
A.加大平行布線的間距,遵循3W規則。B.在平行線間插入接地的隔離線。C.減少布線層與地平面的距離 ③ 屏蔽保護
圖12 屏蔽保護
對應地線回路規則,實際上也是為了盡量減小信號的回路面積,多用于一些比較重要的信號,如時鐘信號,同步信號;對一些特別重要,頻率特別高的信號,應該考慮采用銅軸電纜屏蔽結構設計,即將所布的線上下左右用地線隔離,而且還要考慮好如何有效的讓屏蔽地與實際地平面有效結合。
④ 走線方向控制規則
相鄰層的走線方向成正交結構,避免將不同的信號線在相鄰層走成同一方向,以減少不必要的層間竄擾;當由于板結構限制(如某些背板)難以避免出現該情況,特別是信號速率較高時,應考慮用地平面隔離各布線層,用地信號線隔離各信號線。
⑤ 電源與地線層的完整性規則
對于導通孔密集的區域,要注意避免孔在電源和地層的挖空區域相互連接,形成對平面層的分割,從而破壞平面層的完整性,并進而導致信號線在地層 的回路面積增大。
四、軟件編程
1、軟件流程圖
本設計軟件主程序流程圖如圖13所示。
數據初始化定時器初始化A/D轉換初始化顯示初始化進入后臺while循環觸發A/D轉換換算酒精濃度酒精濃度顯示超過閾值嗎?否酒精濃度顯示是報警有鍵按下嗎?否是按鍵處理 圖13 主程序流程圖
2、主程序
下面介紹main.c主程序編寫,其他程序略。
(1)頭文件和一些宏定義
#include
//調用單片機頭文件 #define uchar unsigned char //無符號字符型 宏定義
變量范圍0~255 #define uint unsigned int //無符號整型 宏定義 變量范圍0~65535
#include
sbit CS=P2^4;//CS定義為P2口的第4位腳,連接ADC0832CS腳 sbit SCL=P2^3;//SCL定義為P2口的第3位腳,連接ADC0832SCL腳 sbit DO=P2^2;//DO定義為P2口的第4位腳,連接ADC0832DO腳
sbit beep = P3^2;
//蜂鳴器IO口定義 long dengji,s_dengji = 50;
//酒精等級
bit flag_300ms;uchar key_can;
//按鍵值的變量 uchar menu_1;
//菜單設計的變量 uchar flag_clock;#include “eeprom52.h”
#include “lcd1602.h”
/***********************1ms延時函數*****************************/ void delay_1ms(uint q){ uint i,j;for(i=0;i for(j=0;j<120;j++);} /******************把數據保存到單片機內部eeprom中******************/ void write_eeprom(){ SectorErase(0x2000);// byte_write(0x2000, s_dengji);byte_write(0x2001, s_dengji);byte_write(0x2060, a_a);} /******************把數據從單片機內部eeprom中讀出來*****************/ void read_eeprom(){ // s_dengji = byte_read(0x2000);s_dengji = byte_read(0x2001);a_a = byte_read(0x2060);} /**************開機自檢eeprom初始化*****************/ void init_eeprom(){ read_eeprom();//先讀 if(a_a!= 2)//新的單片機初始單片機內問eeprom { s_dengji = 80; a_a = 2; write_eeprom();} } /***********讀數模轉換數據********************************************************/ //請先了解ADC0832模數轉換的串行協議,再來讀本函數,主要是對應時序圖來理解,本函數是模擬0832的串行協議進行的 // 1 0 0 通道 // 1 1 1 通道 unsigned char ad0832read(bit SGL,bit ODD){ unsigned char i=0,value=0,value1=0; SCL=0; DO=1; CS=0;//開始 SCL=1;//第一個上升沿 SCL=0; DO=SGL; SCL=1; //第二個上升沿 SCL=0; DO=ODD; SCL=1; //第三個上升沿 SCL=0; //第三個下降沿 DO=1; for(i=0;i<8;i++) { SCL=1; SCL=0;//開始從第四個下降沿接收數據 value<<=1; if(DO) value++; } for(i=0;i<8;i++) { //接收校驗數據 value1>>=1; if(DO) value1+=0x80; SCL=1; SCL=0; } CS=1; SCL=1; if(value==value1) //與校驗數據比較,正確就返回數據,否則返回0 return value;return 0;} /*************定時器0初始化程序***************/ void time_init() { EA = 1; //開總中斷 TMOD = 0X01; //定時器0、定時器1工作方式1 ET0 = 1; //開定時器0中斷 TR0 = 1; //允許定時器0定時 } /****************按鍵處理顯示函數***************/ void key_with(){ if(key_can == 1){ s_dengji ++; //酒精濃度設置數加1 if(s_dengji > 999) s_dengji = 999;} if(key_can == 2){ s_dengji-= 1;//酒精濃度設置數減1 if(s_dengji <= 1) s_dengji = 1;} write_sfm2(2,9,s_dengji); //顯示酒精等級 write_eeprom(); //保存數據 } /********************獨立按鍵程序*****************/ uchar key_can;//按鍵值 void key()//獨立按鍵程序 { static uchar key_new;key_can = 20; //按鍵值還原 P1 |= 0x0f;if((P1 & 0x0f)!= 0x0f)//按鍵按下 { delay_1ms(1); //按鍵消抖動 if(((P1 & 0x0f)!= 0x0f)&&(key_new == 1)) { //確認是按鍵按下 key_new = 0; switch(P1 & 0x0f) { case 0x0b: key_can = 2;break; //得到k3鍵值 case 0x07: key_can = 1;break; //得到k4鍵值 } } } else key_new = 1;} /****************報警函數***************/ void clock_h_l(){ static uchar value;if(dengji >= s_dengji)//報警 { value ++; if(value >= 2) { value = 10; beep = ~beep;//蜂鳴器報警 } }else { if(dengji < s_dengji) //取消報警 { value = 0; beep = 1; } } } /***************主函數*****************/ void main(){ beep = 0; //開機叫一聲 delay_1ms(150);P0 = P1 = P2 = P3 = 0xff;//單片機IO口初始化為1 init_eeprom(); //讀eeprom數據 time_init(); //初始化定時器 init_1602();while(1){ key(); //獨立按鍵程序 if(key_can < 10) { key_with(); //按鍵按下要執行的程序 } if(flag_300ms == 1) { flag_300ms = 0; clock_h_l(); //報警函數 dengji = ad0832read(1,0); dengji = dengji * 450 / 255.0; dengji = dengji-130; //首先減去零點漂移,一般是1V if(dengji < 0) dengji = 0; dengji = dengji * 2; //將mV轉變成mg/L,系數需要校準 //電壓每升高0.1V,實際被測氣體的濃度增加20ppm //1ppm=1mg/kg=1mg/L=1×10-6 常用來表示氣體濃度,或者溶液濃度。 write_sfm2(1,9,dengji); //顯示酒精濃度 } } } /*************定時器0中斷服務程序***************/ void time0_int()interrupt 1 { } static uchar value;TH0 = 0x3c;TL0 = 0xb0; // 50ms value ++; if(value % 6 == 0){ flag_300ms = 1; //300ms value = 0;} 五、下載與調試 當程序在uVision環境下編寫完成,并編譯生成.hex文件后,就可以下載并進行調試了。 1、USB轉串口驅動安裝 打開USB驅動文件夾下的PL2303_Prolific_DriverInstaller_v130.exe安裝文件,按提示安裝USB轉串口驅動程序。安裝完成后,插入USB下載線后,在[開始]-[控制面板]-[打印機和其他硬件]-[設備管理器],在“端口”分支下有(Prolific USB-to-Serial Comm Port(COMX)。X表示串口號,如果沒有說明USB轉串口驅動沒有安裝,須重新安裝。記住括號里的COM口號。 圖14 成功安裝USB轉串口驅動示意圖 2、下載程序 打開STC單片機下載軟件文件夾,點擊運行STC_ISP_V481.exe程序,出現如下界面。 圖15 下載軟件 正確選擇MCU 類型,COM口(與剛才安裝的COM號一致),最高波特率和最低波特率都選2400bps或者1200bps(下載線內PL2303芯片所限,沒辦法!),并打開正確的.hex數據文件。 點擊“Download/下載”按紐,窗口出現提示: Chinese:正在嘗試與 MCU/單片機 握手連接...Connection is failure.You can try: 1.Give your MCU Power On Reset.2.Stop operation, then re-select COM Port.3.Because PLCC-DIP/PQFP-DIP Socket trace too long.4.Update the STC ISP.exe version.5.If still error, your MCU Firmware is error or null.Chinese:連接失敗,請嘗試以下操作: 1.在單片機停電狀態下,點下載按鈕,再給單片機上電 2.停止下載,重新選擇 RS-232 串口, 接好電纜 3.可能需要先將 P1.0/P1.1 短接到地 4.可能外部時鐘未接 5.因 PLCC、PQFP 轉換座引線過長而引起時鐘不振蕩,請 調整參數 6.可能要升級電腦端的 STC ISP.exe 軟件 7.若仍然不成功,可能 MCU/單片機內無 ISP 系統引導碼,或需退回升級,或 MCU 已損壞 8.若使用 USB 轉 RS-232 串口線下載,可能會遇到不兼容的問題,可以讓我們幫助購買兼容的 USB 轉 RS-232 串口線 仍在連接中, 請給 MCU 上電...按下電路板上的電源按紐,保證其有個失電至上電的過程,則窗口顯示開始燒錄芯片。 芯片燒錄成功后,程序開始運行,酒精濃度測試儀正常工作。 酒精測試儀的性能指標 關鍵字: 單片機 氣體傳感器 閥值儲存 語音報數 AD轉換 1.酒精濃度檢測儀的硬件電路設計主要包括:傳感器測量電路、STC12C5A16AD單片機系統、A/D轉換電路、LCD示電路 鍵盤掃描、數據采集、數據處理、顯示、光報警等子程序儀器開機后經初始化,調用LCD顯示子程序顯示提示界面、閾值設置界面、測量結果界面等。鍵盤掃描程序判斷是否有鍵按下。測量時數據采集程序把數據送人到A/D轉換器,進行A/I)轉換。由數據處理程序完成數據間的轉換和數制間轉換。當測量數據超過閾值時,報警子程序啟動 2.儀器開機后經初始化,調用LCD顯示子程序顯示提示界面、閾值設置界面、測量結果界面等。鍵盤掃描程序判斷是否有鍵按下。測量時數據采集程序把數據送人到A/D轉換器,進行A/I)轉換。由數據處理程序完成數據間的轉換和數制間轉換。當測量數據超過閾值時,報警子程序啟動 3.傳感器模塊具有如下特點,方便與單片機系統接口組成檢測儀器 ? ? ? ? ? 具有信號輸出指示。 雙路信號輸出(模擬量輸出及TTL電平輸出)TTL輸出有效信號為低電平。 (當輸出低電平時信號燈亮,可直接接單片機) 模擬量輸出0~5V電壓,濃度越高電壓越高。 MQ-3乙醇氣體傳感器可以應用用于機動車駕駛人員及其他嚴禁酒后作業人員的現場檢測,也用于其他場所乙醇蒸汽的檢測。其技術特點為: ? 對乙醇蒸汽有很高的靈敏度和良好的選擇性 ? 快速的響應恢復特性 ? 長期的壽命和可靠的穩定性 ? 簡單的驅動回路 4.A/D轉換電路 模數轉換電路的作用是將傳感器電路輸出的模擬量信號轉換為適合單片機處理的數字信號,并輸入給單片機。ADC0809主要特性(1)8路8位A/D轉換器,即分辨率8位。(2)具有轉換起停控制端。(3)轉換時間為100μs(4)單個+5V電源供電(5)模擬輸入電壓范圍0~+5V,不需零點和滿刻度校準。 (6)工作溫度范圍為-40~+85攝氏度(7)低功耗,約15mW。2.內部結構 ADC0809是CMOS單片型逐次逼近式A/D轉換器,它由8路模擬開關、地址鎖存與譯碼器、比較器、8位開關樹型D/A轉換器、逐次逼近ADC0809內部結構框圖 寄存器、三態輸出鎖存器等其它一些電路組成。因此,ADC0809可處理8路模擬量輸入,且有三態輸出能力,既可與各種微處理器相連,也可單獨工作。輸入輸出與TTL兼容。外部特性(引腳功能)ADC0809芯片有28條引腳,采用雙列直插式封裝,下面說明各引腳功能。IN0~IN7:8路模擬量輸入端。 2-1~2-8:8位數字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路。ALE:地址鎖存允許信號,輸入,高電平有效。START: A/D轉換啟動信號,輸入,高電平有效。EOC: A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平) OE:數據輸出允許信號,輸入,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態門,輸出數字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。REF(+)、REF(-):基準電壓。Vcc:電源,單一+5V。GND:地。ADC0809工作過程;09,每采集一次需100μs。0809具有8路模擬信號輸入端口,地址線(23-25腳)可決定那一路模擬信號進行A/D轉換。22腳為地址鎖存控制,當輸入為高電平時,對地址信號進行鎖存。6腳為測試控制,當輸入一個2μs的高電平脈沖時,就開始A/D轉換。7引腳為A/D轉換結束標志,當A/D轉換結束時,7腳輸出高電平。9腳為A/D轉換數據輸出允許端,當OE腳為高電平時,A/D轉換數據輸出。10腳為0809的時鐘輸入端。.醉酒閾值存儲 醉酒閾值存儲在EEPROM芯片AT24C04中,并可以通過 “增加”、“減少”按鍵調節并保存。AT24C04是IIC接口的EEPROM芯片,可以用于掉電不易失數據的存儲。其電路如圖9所示。圖中A0、A1和A2為芯片的地址引腳,一般接地即可。SCL和SDA為AT24C04和單片機IIC通信的時鐘線和數據線。 6.數據采集處理子程序 (1)數據采集子程序 數據采集子程序主要是采集檢測傳感器輸出的模擬電壓信號,并將其轉換為單片機程序控制所需的數字量信號。首先對ADC0809進行初始化,然后將其0通道輸入的0-5V的模擬信號轉換為對應的數字量OOH-FFH,然后將對應數值存儲到3FH內存單元。(2)數據處理子程序 主要是系數調整和數制轉換,將ADC0809采集的模擬電壓值轉換為8位二進制數。系數是酒精濃度的最大測量值1500/255=5.88確定。系數調整是為了使十六進制與十進制轉換方便,將轉換系數.5.88放大10倍取整后為59即3BH作為轉換系數。 7.語音模塊 (1)語音模塊主要特點 1.內置微控制器SPI 總線串行通信接口(支持普通單片機5V 邏輯)。 2.單電源3V 工作(3V LDO(如HT7130)芯片穩壓或用一個發光二極管將5V降到3V)。 3.多段信息處理,可錄音120s,分600 段,即每段0.2s。 4.工作電流 25-30mA,維持電流 1μA,靜態低功耗。 5.不耗電信息保存 100 年(典型值),高質量、自然的語音還原技術。 萬次錄音周期(典型值),片內免調整時鐘,可選用外部時鐘。 6.自動靜噪功能。 7語音播報測試結果,并給出是否適合駕駛 (2)語音模塊主要組成 1.麥克風差分輸入電路 2.語音芯片 3.后置音頻放大電路 4.揚聲器 8.LCD1602液晶顯示電路 (1)顯示部分采用SMC 1602液晶屏進行數據顯示,其主要技術參數為: 表1 液晶屏技術指標 表2 液晶屏接口信號說明 數學建模實驗 實驗目的運用藥物注射模型,熟練使用MATLAB曲線擬合方法,解釋飲酒駕車的一些實際問題。 實驗原理 由于酒精不需要進入腸道即可被吸收,且胃對其吸收速率也非常快,本題應采用“快速靜脈注射模型”。酒精主要存在于血液中,故本例應計算吸收室的血藥濃度c1(t)=A1e-αt+B1e-βt,因A1,α,B1,β之間有關聯,為提高精確度,重新解微分方程得和題目對應的模型擬合計算。 實驗內容 國家質量監督檢查檢疫局2004年5月31日發布了新的《車輛駕駛人員血液、呼氣酒精含量閥值與檢查》國家新標準,新標準規定,車輛駕駛人員血液中的酒精含量大于或等于20毫克/百毫升,小于80毫克/百毫升為飲酒駕車(原標準是小于100毫克/百毫升),血液中酒精含量大于或等于80毫克/百毫升為醉就駕車(原標準是大于100毫克/百毫升)。 某人在中午12點喝了一瓶啤酒,下午6點檢查時符合新的駕車標準,緊接著他在吃晚飯的時候又喝了一瓶啤酒,為了保險起見他呆到凌晨2點才駕車回家,又一次遭遇檢查時卻被定為飲酒駕車,這讓他既懊惱又困惑,為什么喝同樣多的酒,兩次檢查的結果會不一樣呢? (1)某人中午12點喝了一瓶啤酒,下午6點檢查合格,晚飯又喝一瓶,次日凌晨2點檢查未通過,請對此情況做出解釋。 (2)短時間內喝啤酒3瓶多長時間之后才能駕車? (3)怎樣估計血液中的酒精含量在什么時候最高? (4)如果天天喝酒,是否還能開車? 解答: 建立常微分方程模型,假設喝進去的酒精從胃吸收的轉移速率與胃里酒精含量成正比;血液代謝酒精的速度與濃度成正比; 如圖所示: X 胃 C 血液 代謝物 K1 K2 設胃里初始含量為X0,血液中初始含量為C0=0 則 即 即 解得 題目所給數據的C0=0,即此時 MATLAB命令: T=[0.25 0.5 0.75 1.5 2.5 3.5 4.5 16]; C=[30 4]; cftool打開曲線擬合工具箱,X data選擇T,Y data選擇C,擬合方式選擇Custom Equation,擬合,參數如圖 擬合得:a=2.273,b=0.1822,c=103.4 即K1=2.273,K2=0.1822,X0=103.4,可以發現擬合的比較好。 第一題 喝一瓶啤酒時X0=51.7,此時 而,故符合駕車標準 緊接著又喝一瓶,此時X0約為51.7,C0=18.8367。到凌晨二點過了8小時,此時 可以發現并沒有大于20,但是當過后7.2小時時,略大于20,屬于酒駕。題目所給情況可能是晚上喝酒不是快速喝下導致的誤差。 第二題 短時間喝三瓶啤酒時X0=155.1,此時 MATLAB命令: T=0:0.1:24; C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T); plot(T,C,’r’) hold on plot([0 24],[20 20],’g’) 得 可發現與C=20相交于11、12之間 T=11:0.1:12; C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T) 輸出: C = 至 列 21.3665 20.9690 20.5789 20.1960 19.8202 19.4515 19.0896 至 列 18.7344 18.3859 18.0438 17.7081 故11.4小時后駕車不會違反規定 題目三 觀察上圖可知最高點在1-2之間 T=1:0.1:2; C=168.616*exp(-0.1878*T)-168.616*exp(-1.971*T) 輸出: C = 至 列 116.2545 117.8569 118.7560 119.0852 118.9541 118.4526 至 列 117.6543 116.6193 115.3972 114.0283 112.5457 故在喝酒后約1.3小時后血液中酒精含量最高 第四題 為簡化問題,假設一天只喝一次,每次快速喝下n瓶,則 要求:,依此類推 考慮到48小時后的影響很小,故只需在數日內符合即可認為符合,這里取十天。 考慮到平常人的酒量,為排除嘔吐等不正常代謝酒精方式和臟器超負荷工作帶來的誤差,只考慮小于等于10瓶啤酒 MATLAB: 建立函數 function C24=CalcC24(n,C0,i) T=0:0.5:24; C=(C0+56.2053*n)*exp(-0.1878*T)-56.2053*n*exp(-1.971*T); C24=(C0+56.2053*n)*exp(-0.1878*24)-56.2053*n*exp(-1.971*24); plot((T+i*24),C,'Color',[((-1)^n+1)/(2*n) ((-1)^(n+1)+1)/(2*n) ((-1)^n+1)/(2*n)]) hold on end 輸入命令: hold off clear clc C0=0; for n =1:10 for i=0:10 temp=CalcC24(n,C0,i); C0=temp; end end plot([0 264],[20 20],’r’); 得: 可發現若每日喝十瓶啤酒的情況下經過18小時,血液中的酒精濃度就能降低到20mg/100ml以下,即若早上八點喝十瓶啤酒,凌晨兩點駕車即不違反新交法 若每隔12小時快速飲酒n瓶,同樣考慮十天 MATLAB 建立函數: function C12=CalcC12(n,C0,i) T=0:0.5:12; C=(C0+56.2053*n)*exp(-0.1878*T)-56.2053*n*exp(-1.971*T); C12=(C0+56.2053*n)*exp(-0.1878*12)-56.2053*n*exp(-1.971*12); plot((T+i*12),C,'Color',[((-1)^n+1)/(2*n) ((-1)^(n+1)+1)/(2*n) ((-1)^n+1)/(2*n)]) hold on end 輸入命令: hold off clear clc C0=0; for n =1:5 for i=0:20 temp=CalcC12(n,C0,i); C0=temp; end end plot([0 264],[20 20],'r') 得: 可以發現喝完2瓶啤酒可以在9.8小時后降低到20mg/100ml以下,而喝完三瓶僅在喝完11.94小時后降低到20mg/100ml以下,也就是僅有每十二小時3.6分鐘符合要求,忽略不計。 故每12小時可飲酒2瓶可以駕車不違反新交法 綜上所述,每12小時可以和2瓶啤酒,每24小時可以喝10瓶及以下的啤酒不違反新交法。 模型評價與改進 1.解得對應模型,綜合運用MATLAB軟件,準確求解,在運用MATLAB進行數據擬合時,得到了較理想化的曲線。 2.本模型引用了醫藥動力學的二室模型進行計算,可靠性較高 3.從問題出發,分析了應該考慮的各種情況,建立了一般的數學模型,并進行實例驗證,從而證明我們建立的數學模型可以較好的解決實際問題。 模型的缺點 1.本文的模型參數僅是依靠一組數據擬合求解得出,有一定的偏差。 2.模型為使計算簡便,使所得的結果更理想化,忽略了一些次要的因素。 3計算所得.和題目所述不盡相同,不過因擬合得較好,只能考慮本身操作的誤差。 — END — 基于LCD顯示的空氣酒精濃度監測儀的設計(李成章) | [<<] [>>] 前言 近年來,隨著我國經濟的高速發展,人民的生活水平迅速提高,越來越多的人有了自己的私家車,而酒后駕車造成的交通事故也頻頻發生。酒后駕車引起的交通事故是由于司機的過量飲酒造成人體內酒精濃度過高,麻痹神經,造成大腦反應遲緩,肢體不受控制等癥狀。少量飲酒并不會有上述癥狀,即人體內酒精濃度比較低時,而人體內酒精超過某一個值時就會引起危險。為此,需要設計一智能儀器能夠監測駕駛員體內酒精含量。目前全世界絕大多數國家都采用呼氣酒精測試儀對駕駛人員進行現場檢測,以確定被測量者體內酒精含量的多少,以確保駕駛員的生命財產安全。此外,空氣酒精濃度監測儀還能監測某一特定環境的酒精濃度如酒精生產車間可避免發生起火、爆炸及工業場地酒精中毒等惡性事故,確保環境安全。 本課題研究的是一種以氣敏傳感器和單片機為主,監測空氣酒精濃度,并具有聲光報警功能及LCD顯示功能的空氣酒精濃度監測儀。其可監測出空氣環境中酒精濃度值,并根據不同的環境設定不同的閾值,對超過的閾值進行聲光報警.來提示危害。 1總體方案設計 本課題采用MQ3氣敏傳感器,AT89C52單片機實現空氣酒精濃度實時測量,通過LCD顯示屏實時顯示。可以通過鍵盤設定閾值,超過閾值具有聲光報警功能。1.1基于MQ3氣敏傳感器的空氣酒精濃度監測儀的 硬件方案 硬件設計時,考慮酒精濃度是由傳感器把非電量轉換為電量,傳感器輸出的是0-5伏的電壓值且電壓值穩定,外部干擾小等。因此,可以直接把傳感器輸出電壓值經過ADC0809采集數據送入單片機進行處理。此外,還需接人LCD顯示,8279鍵盤/顯示器接口芯片,聲光報警電路等。 其總體框圖如圖1所示。 1.2基于MQ3氣敏傳感器的空氣酒精濃度監測儀的軟件方案 軟件方案主要包括鍵盤掃描、數據采集、數據處理、顯示、聲光報警等子程序。儀器開機后經初始化,調用LCD顯示子程序顯示提示界面、閾值設置界面、測量結果界面等。鍵盤掃描程序判斷是否有鍵按下。測量時數據采集程序把數據送人到A/D轉換器,進行A/I)轉換。由數據處理程序完成數據間的轉換和數制間轉換。當測量數據超過閾值時,報警子程序啟動,發出聲光報警。 軟件主程序流程圖如圖2所示。 2硬件設計 2.1傳感器的選擇 本課題選用的是MQ3型氣敏傳感器。其有很高的靈敏度、良好的選擇性、長期的使用壽命和可靠的穩定性。MQ3型氣敏傳感器由微型Al2O3,陶瓷管和SnO2敏感層、測量電極和加熱器構成的敏感元件固定在塑料或不銹鋼的腔體內,加熱器為氣敏元件的工作提供了必要的工作條件。傳感器的標準回路有兩部分組成。其一為加熱回路,其二為信號輸出回路,它可以準確反映傳感器表面電阻值的變化。傳感器的表面電阻RS的變化,是通過與其串聯的負載電阻RL上的有效電壓信號VRL輸出面獲得的。二者之間的關系表述為:RS/RL=(VC-VRL)/VRL,其中VC為回路電壓為10V。負載電阻RL可調為0.5-200K。加熱電壓Uh為5v。上述這些參數使得傳感器輸出電壓為0-5V。MQ3型氣敏傳感器的結構和外形如圖3所示,標準回路如圖4所示,傳感器阻值變化率與酒精濃度、外界溫度的關系圖如圖5所示。為了使測量的精度達到最高,誤差最小,需要找到合適的溫度,一般在測量前需將傳感器預熱5分鐘。 2.2模數轉換電路 模數轉換電路的作用是將傳感器電路輸出的模擬量信號轉換為適合單片機處理的數字信號,并輸入給單片機。本課題采用的是ADC0809 A/D轉換芯片。ADC0809是8路8位逐次比較式A/D轉換器,它能分時地對8路模擬量信號進行A/D轉換,結果為8位2 進制數據。其由+5V電源供電,片內有帶鎖存功能的8路選1的模擬開關,由A,B,C的編碼來決定選擇通道。0809完成一次轉換需要1001xS左右。輸出具有TTI三態鎖存緩沖器,可以直接連到MCS一5l單片機數據總線上。ADC0809可對0-5V的模擬信號進行轉換。 2.3鍵盤電路 8279對鍵盤部分提供一種掃描工作方式,能對64個按鍵鍵盤陣列不斷掃描,自動消抖,自動識別出閉合的鍵并得到鍵號,能對雙鍵或N鍵同時按下進行處理。顯示部分為顯示器提供了按掃描方式工作的顯示接口,可以顯示多達16位的字符或數字。傳感器輸出的信號經ADC0809和單片機采集、處理后輸出的信號為BCD碼形式,它經過8279及顯示電路處理后送入LCD顯示。此外,酒精濃度監測儀的閾值濃度的設置是由鍵盤輸入的,因此需有一個鍵盤/顯示器接口電路。 鍵盤有兩種工作方式:編碼式鍵盤和非編碼式鍵盤。當鍵盤中某一個按鍵被按下時,鍵盤編碼器會自動產生相對應的按鍵代碼,并輸出一選通脈沖信號與CPU進行信息聯絡。編碼式鍵盤使用很方便,目前已有數種大規模集成電路鍵盤編碼器出售,例MM5740AA芯片就是一種專用于64鍵打字機的鍵盤編碼器,其輸出為ASCII碼。非編碼鍵盤不含編碼器,當某鍵被按下時,鍵盤只能送出一個簡單的閉合信號,對應的按鍵代碼的確定必須借助于軟件來完成。顯然,非編碼鍵盤的軟件是比較復雜的,并且要占用較多的CPU時間,這是非編碼鍵盤的不足之處。但非編碼鍵盤可以任意組合、成本低、使用靈活,因而智能儀器大多采用非編碼式鍵盤。本課題選用非編碼鍵盤。鍵盤工作方式為編程掃描方式。 2.4顯示電路 LJDl28X64液晶顯示模塊是128X64點陣的漢字圖形型液晶顯示模塊,可顯示漢字及圖形,內置8192個中文漢字(16X16點陣)、128個字符(8X16點陣)及64X256點陣顯示RAM(GDRAM)。可與CPU直接接口,提供兩種界面來連接微處理機:8一位并行及串行兩種連接方式。具有多種功能:光標顯示、畫面移位、睡眠模式等。 2.5聲光報警電路 報警電路分為蜂鳴器報警電路和LED發光報警電路組成。當輸入端P1.0為低電平時,有電流通過蜂鳴器,蜂鳴器發出聲音報警。而當輸入端為高電平時不報警。當輸人端P1.1為低電平時,LED點亮報警,反之輸入端P1.1為高電平則不報警。 3軟件設計 軟件設計包括分析儀器系統對軟件的要求,程序整體結構設計和程序模塊化設計,畫出每一子程序的詳細流程圖,選擇合適語言編寫程序。最后,將各子程序模塊連接成一個完整的程序。 3.1數據采集子程序 ADC0809初始化后,把0通道輸入的0-5V的模擬信號轉換為對應的數字量OOH-FFH,然后存儲到3FH單元中。 3.2數據處理子程序 數據處理子程序主要是系數調整和數制轉換,將ADC0809采集的模擬電壓值轉換為8位二進制數。系數是酒精濃度的最大測量值1500/255=5.88確定。系數調整是為了使十六進制與十進制轉換方便,將轉換系數.5.88放大10倍取整后為59即3BH作為轉換系數。 3.3鍵盤掃描子程序 鍵盤掃描子程序為通過掃描判斷是否有鍵按下,如有鍵按下則讀出各個按鍵值。并根據鍵值判斷是進人提示界面還是完成閾值設定的輸入,或返回。 3.3.1提示界面鍵盤子程序 首先判斷是否有鍵按下,若按下的是“D”鍵,則進入閾值設定界面。如果不是則返回提示界面繼續判斷。 3.3.2鍵盤閾值設定子程序 鍵盤閾值設定子程序首先判斷是否有鍵按下,若有鍵按下,判斷是“0-9”鍵,還是“F”鍵。如果是“0-9”這些數字鍵。則進行數字鍵處理,是“F”鍵則返回重新設定閾值。鍵盤輸入的數字鍵即為閾值,將其保存在50H開始的3個單元,為了便于比較和顯示,閾值的千位50H中,百位和十位放入5lH,個位放人52H中。 3.4顯示子程序 本課題顯示為LCD顯示。顯示子程序分為開機界面顯示程序,提示界面顯示程序,閾值設定界面顯示程序,測量界面結果顯示程序。 3.5報警子程序 報警子程序執行之前,鍵盤設定的報警閾值轉換為壓縮的BCD碼并存放在兩個存儲單元中。傳感器輸入值A/D轉換后,調用比較程序,經過數據處理后顯示的測量值與閾值比較,小于閾值則繼續執行顯示程序。若大于閾值則將單片機的P1.0、P1.1兩端口清零進行聲光報警。40H、4lH、42H單元存放A/D轉換后,并進行十進制轉換后的結果。40H和50H分別存放的是處理后的測量值與閾值的千位的壓縮BCD碼,41H和51H分別存放的是處理后的測量值與閾值的百位、十位壓縮的BCD碼,42H和52H分別存放的是處理后的測量值與閾值的個位的壓縮BCD碼。程序首先對40H、50H中的值進行比較大小,如果40I-I中的值大于50H中的值,則進行報警。依此類推,比較41H和51H,42H和52H。 4調試分析 調試分析包括硬件調試分析和軟件調試分析及軟、硬件聯調。由于硬件調試分析和軟件調試分析是獨立進行的,所以可以先調硬件再調軟件。再調試中找出錯誤、缺陷,判斷各種故障,并作出軟硬件的修改。直至沒有錯誤。 4.1硬件調試 硬件調試包括傳感器電路、顯示電路、鍵盤電路、單片機外圍電路、聲光報警電路等。下面主要介紹傳感器電路、報警電路的調試。 首先把MQ3型氣敏傳感器按照說明書介紹,接上+6伏工作電源,進行預熱5-10分鐘。由于氣敏傳感器里已經集成了放大電路,而用萬用表測量可證實其輸出是一穩定的0-5V的電壓信號,符合ADC0809及單片機的輸入條件,因此此信號可以直接接人進行A/D轉換而不需要放大、濾波等。 其次對于聲光報警電路的調試分為蜂鳴器和LED的調試。經試驗可知LJD一2008型實驗箱的蜂鳴器和LED只有在低電平工作,了解這一點,對程序的設計很重要。 4.2軟件調試 軟件調試為利用偉福軟件進行模塊化調試。調試過程中觀察存儲單元數據的變化,查找所寫程序的錯誤,并改正。 4.3軟、硬件聯調 利用偉福仿真器及其自帶實現一個模擬仿真系統。把偉福軟件模擬器偉福6000的仿真器設置中語言選為“偉福匯編器”。選擇仿真器用“。H5l/L”選擇仿真頭為“POD-H8X5X”選擇CPU用“AT89C52”。調入程序編譯運行,并把傳感器接人電路,看LCD顯示器是否顯示提示界面。顯示提示界面后根據ICD顯示器上的提示按鍵進行下一步操作。看鍵盤是否能夠設定閾值,并顯示。設定閾值后,用浸有酒精的棉簽靠近氣敏傳感器,并對著棉簽緩緩吹氣觀察LCD顯示的數值。按“F”鍵重新設定小于測量值的閾值,觀察蜂鳴器是否發聲及LED是否被點亮。當過了一兩分鐘后,LCD顯示器上數值下降,當小于閾值時蜂鳴器停止發聲,LED也熄滅。上述這些功能能夠實現則表明達到了課題要求。4.4調試故障及原因分析 報警電路出錯,體現在軟硬件聯調時,程序剛一運行,聲音報警電路就發出報警聲音而LED正常。經程序檢查及對LJD一2008型實驗箱蜂鳴器及LED燈的實驗,發現該實驗箱的蜂蜂鳴器及都是在低電平時工作。而主程序開始就把P1.0口清零了,P1.O口接的是蜂鳴器,這就使程序剛運行蜂鳴器就發出報警聲音了。發現這個錯誤,把程序中不報警時的P1.O口都置高電平,報警時置低電平。 傳感器輸出電壓不穩定。把傳感器工作電路接好后急于接到ADC0809上,運行程序發現還未吹酒精氣體進傳感器而LCD顯示的測量數值明顯偏大。經看M03型氣敏傳感器的嚴原理和使用說明得知該傳感器工作時需加熱到300~C左右,因此需預熱5分鐘,使傳感器內部敏感元件恢復到初始狀態。便于測量結果準確。找到錯誤原因,在測量前傳感器先預熱5分鐘,接人后續電路,測量結果正常。 5結論及進一步設想 本課題主要任務是設計一個基于單片機的空氣酒精濃度監測儀。通過軟、硬件聯調,實驗結果滿足設計的基本要求,達到設計的指標。實現可用鍵盤輸入閾值。并用LCD顯示,而對超過閾值的濃度值進行聲光報警。本設計過程包括了硬件電路設計和軟件程序的編寫兩部分。硬件電路部分結構簡單,使用方便,適合大眾化使用。軟件部分采用模塊化設計思想,各個子程序的功能相對獨立,便于調試和修改。 應用單片機編寫不同的程序嵌入各種儀器中便形成不同功能的智能儀器。作為廣泛應用于工程中的智能儀器將有更大的運用空間。空氣酒精濃度監測儀將越來越深入的運用到普通人民的生活中 營銷總監:姜麗燕 市場營銷本科在讀,現任激揚辯論社社長,思路清晰,創意較多,能夠冷靜的看待和分析問題,有良好的溝通能力,工作認真。有很好的團隊精神,符合營銷工作的需求。第二篇:酒精測試儀的性能指標
第三篇:《數學建模實驗-血液酒精濃度》
第四篇:基于LCD顯示的空氣酒精濃度監測儀的設計
第五篇:酒精銷售