基于STM32的便攜式酒精濃度檢測儀設計與實現-畢業論文_第1頁
基于STM32的便攜式酒精濃度檢測儀設計與實現-畢業論文_第2頁
基于STM32的便攜式酒精濃度檢測儀設計與實現-畢業論文_第3頁
基于STM32的便攜式酒精濃度檢測儀設計與實現-畢業論文_第4頁
基于STM32的便攜式酒精濃度檢測儀設計與實現-畢業論文_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

成都信息工程大學學位論文基于STM32的便攜式酒精濃度檢測儀設計與實現論文作者姓名:申請學位專業:測控技術與儀器申請學位類別:工學學士論文提交日期:2015年06月10日 基于STM32的便攜式酒精氣體濃度檢測儀設計與實現摘要近年來,隨著我國經濟快速發展,給人們也帶來了很多利益。人們的生活和消費水平迅速提高,制造業也在快速地發展。現在,私家車對于很多人來說已經不再是奢侈品了。但是交通事故發生概率也大大增加了,尤其是由于酒后駕車而引起的。如果飲酒過多,會造成體內酒精濃度過高,給飲酒者帶來不良的生理反應。例如,麻痹神經、肢體不受控制、大腦反應遲鈍等等。所以,過量飲酒者開車是一件非常危險的事情,但是少量飲酒并不會有上述癥狀。因此,我們需要設計一個能夠檢測駕駛員體內酒精含量的智能儀器。目前,許多國家采用呼氣酒精檢測儀來檢測駕駛員體內的酒精含量。在本課題中使用MQ-3氣體傳感器采集數據,經過STM32單片機處理,如果濃度值超過標準,系統將給予聲光報警,并液晶顯示濃度。關鍵詞:酒駕;MQ-3氣體傳感器;STM32單片機;酒精含量;聲光報警DesignofPortableAlcoholConcentrationDetectionInstrumentBasedonSTM32AbstractInrecentyears,WiththerapiddevelopmentofChina'seconomy,ithasbroughtpeoplealotofbenefits.People'slifeandconsumptionlevelincreaserapidly,andmanufacturingindustryisalsodevelopingquickly.Now,theprivatecarforalotofpeoplehaveisnolongeraluxury.Butthetrafficaccidentprobabilityhasgreatlyincreased,especiallyduetodrunkdriving.Ifexcessivedrinking,thealcoholconcentrationwillraiseinbody,bringtheadversephysiologicalresponsestothedrinkers.Forexample,nerveparalysis,bodyoutofcontrol,theslowresponseofthebrainandsoon.So,driveafterexcessivedrinkingisaverydangerousthing.Butasmallamountofalcoholdoesnothavethesesymptoms.Atpresent,inmanycountries,thebreathalcoholdetectorisusedtodetectalcoholcontentinthedriver'sbody.Inthispaper,theMQ-3gassensorisusedtocollectdata,thedataisprocessedthroughSTM32MCU.Iftheconcentrationexceedsthestandard,thesystemwillgivesoundandlightalarm,anddisplayconcentrationthroughliquidcrystalmonitor.Keywords:drunkdriving;MQ-3alcoholconcentrationsensor;STM32MCU;alcoholcontent;soundandlightalarm目錄論文總頁數:31頁TOC\o"1-3"\h\u1引言 頁共31頁1引言1.1課題研究背景及意義據統計,2011年我國共生產了白酒約1026萬噸,排除重復統計的數據,實際的消費量為800萬噸。如果把消費群體定位在15歲以上的成人,當時我國約有11.5億15歲以上的成人,那么可以計算出當時我國成人人均消費的白酒為6.96升。另外,還有啤酒,洋酒,紅酒的消費,當時我國人均消費的啤酒約為36升、洋酒約為1.2升、紅酒約為1.24升。如果按照白酒的酒精含量65%、紅酒的酒精含量10%、洋酒的酒精含量40%、啤酒的酒精含量4%來計算,那么當時我國人均純酒精消費量約為6.566升。但是隨著我國的經濟快速發展,人們的生活、消費水平也逐漸提高,酒精的消費量也再快速的增長,由于飲酒過多而造成的社會安全問題也頻頻發生。比如由于酒駕引起的交通事故等等。當酒精在人體血液里達到一定濃度的時候,會導致駕駛者神經麻痹、觸覺能力降低、判斷能力和操作能力也會降低。并且會使駕駛員視力暫時受損,分辨顏色的能力下降,視像不穩等,這些癥狀會使駕駛者不能發現或正確領會標志、標線、交通信號燈所要表達的意思,在這種情況下,駕駛員幾乎失去了駕駛能力,發生交通事故的概率極限增加。據世界衛生組織調查,由于酒后駕車造成的交通事故的數量非常龐大,大約占所有交通事故的50%—69%,而且由酒駕造成的交通事故后果一般都非常嚴重,所以酒后駕車已經被認為是車禍致死的主要原因。在中國,每年都有數萬起交通事故是由于酒后駕車而造成的,因此交通事故的第一“殺手”被認為是酒后駕車。1.2國內外研究現狀目前,電化學性質的酒精檢測儀在全世界是使用得最多的。酒精檢測儀根據顯示方式的不同主要分為兩種:其中一種是發光管顯示。最常見的發光管顯示是三段式顯示,其中未飲酒區為第一段,飲酒區為第二段,酗酒區為第三段。并且每一段都有一個不同顏色的LED燈,根據測試的結果,來點亮對應那一段的LED指示燈。另一種酒精測試儀是數碼管顯式,它是以數字的形式來顯示檢測的結果。而這兩年出現了一種新型的半導體酒精檢測儀,它就是一種擁有高可靠性、高精度、呼吸式等特點的酒精濃度檢測儀ca2000。新型高科技微變氧化物半導體是它的核心部件,可以非常準確的檢測氣體的酒精含量,而且不會受非酒精類氣體的干擾,比如煙味、可樂、咖啡等等。ca2000擁有小巧輕便,操作簡單等特點,所以它是便攜應用的最佳選擇[1,2]。如果駕駛員喝了酒,那么他呼出的氣體中就含有酒精氣體,所以為了檢查酒駕,便攜式的酒精檢測儀得到了交警的廣泛使用。而目前使用的酒精檢測儀檢測駕駛員是否飲酒只能夠初步的判斷,最終還需要通過血檢來檢測駕駛員體內的酒精含量,來判定駕駛員是不是構成了酒駕。為了檢測更方便,一種超級酒精呼吸檢測儀誕生了,它是由英國內政部推出的。這種酒精檢測儀不僅僅是通過駕駛員體內的酒精含量來判斷駕駛員是否酒駕,它還根據駕駛員的體溫,呼吸頻率等多方面的因素當場判斷駕駛者是否酒駕[3]。受20世紀信息技術快速發展的影響,傳感器技術已經發展到了一個非常高的地步了,在各個領域都得到了廣泛的使用,扮演著非常重要的角色。因此酒精濃度檢測儀應該向著高精度,高可靠性,高穩定性與微型化的方向發展。到目前為止,檢測酒精氣體含量的設備主要分為5種類型,它們分別是:燃料電池型(電化學)、氣體色譜分析型、比色型、半導體型和紅外線型。其中燃料電池和半導體型這兩種類型的酒精含量檢測儀在價格這方面比起其他類型的較便宜,而且使用起來非常方便。所以這兩種類型的酒精含量檢測儀使用得比較多。環保型能源燃料電池可以直接把可燃氣體轉變為電能,而在整個過程中卻不產生污染,所以全世界都在廣泛的研究。而酒精傳感器只是研究燃料電池的一個小小的分支。因此燃料電池型酒精傳感器誕生,它的原理是:使用貴金屬鉑金作為電極,在燃燒室內燃燒酒精,在燃燒的過程中使用了特種催化劑,使酒精充分燃燒。并且轉變成電能,也就是在兩個電極上產生了電壓,由此轉換來的電壓與在燃燒室內燃燒的氣體的酒精濃度是成正比的,在外部通過接入負載來消耗電能[4,5]。燃料電池型酒精濃度檢測儀與半導體型的相比,它具有以下幾個優點1)穩定性好2)精度高3)抗干擾能力強的優點但是燃料電池型酒精傳感器也存在一些致命缺點,比如說在制造過程中對傳感器的結構要求非常精密,制造難度非常大等。所以目前能夠生產燃料電池型酒精傳感器的只有少數幾個國家,比如美國、英國和德國等,再加上制造成本高,所以成品的價格較貴,與半導體型酒精傳感器比起來貴幾十倍。所以在日常生活中用得最多的還是半導體型酒精傳感器[6]。1.3課題研究思路伴隨著單片機(MCU)技術的快速發展和日益完善,單片機在我們的日常生活中已經是屢見不鮮了,我們將它應用于各個領域。從智能控制到監測方面,與其他技術相比,單片機的優越性是非常的明顯。本課題研究的是一種以酒精濃度傳感器和STM32單片機為主,對空氣中的酒精濃度值進行檢測,并且將濃度值通過LED顯示屏顯示出來,最終對超過閥值的濃度值進行聲光報警。其可檢測出人體呼出的氣體和空氣環境中的酒精濃度,只要濃度值大于閾值就進行聲光報警,這個閾值是根據要求和環境的不同來設定的。在本課題設計中使用MQ-3酒精傳感器采集數據,它將采集到的信號轉換為電信號,電信號經過處理后傳給STM32單片機,STM32單片機內嵌有A/D轉換器,它將電信號轉換成數字信號,然后STM32單片機再對數字信號進行分析處理,轉換為酒精濃度值,最后通過顯示屏將濃度值顯示出來。在程序編寫的過程中設置了一個閥值,當被檢測空氣中的酒精濃度值大于閥值時,單片機會控制LED燈亮和蜂鳴器響來實現報警的功能。綜上所述,本課題研究的主要思路是:以空氣中酒精濃度為感知量,設計酒精氣體傳感電路,傳感器負責采集信號,然后將采集的模擬信號經過A/D轉換器,轉換成數字信號后,再由單片機分析處理轉換成濃度值以完成空氣中酒精濃度的測量。如果濃度值大于了閥值,就進行聲光報警。2系統方案設計2.1技術指標中國大陸地區血液中酒精濃度(BAC)與呼氣酒精濃度(BrAC)的比值采用2200,即兩種單位之間的換算關系為BAC=BrAC*2200。判斷是否酒駕以及醉駕的標準如表2-1所示:表2-1是否構成酒駕或醉駕參考標準行為類別血液酒精含量(BAC)呼氣酒精含量(BrAC)飲酒駕車0.2g/L-0.8g/L0.0909mg/L-0.3636mg/L醉酒駕車>0.8g/L>0.3636mg/L報警濃度0.5g/L0.24mg/L根據酒精氣體濃度檢測儀的測量結果,來看結果是落在哪個區域,從而判斷駕駛員是否酒駕。同時判斷是否報警。2.2總體設計方案總體設計方案如圖2-1所示,由MQ-3酒精氣體傳感器負責采集數據,采集的信號通過調理電路處理后,再輸入給單片機,單片機內嵌的A/D轉換模塊對其進行轉換,轉換后變成數字信號,然后單片機再對數字信號進行分析處理轉換成酒精濃度值,再通過顯示屏將濃度值顯示出來。同時將酒精濃度值與閥值進行比較,對于超過閥值的進行聲光報警。單片機信號調理模塊酒精氣體傳感器聲光報警模塊單片機信號調理模塊酒精氣體傳感器聲光報警模塊液晶顯示模塊液晶顯示模塊圖圖2-1總體設計方案框架圖3硬件電路設計3.1元器件選擇3.1.1酒精氣體傳感器1)MQ-3傳感器工作原理MQ-3酒精氣體傳感器中使用了氣敏材料二氧化錫,該傳感器是半導體氣敏元件。它的電導率會根據空氣中酒精氣體濃度的不同而不同,酒精氣體的濃度越大,電導率也就越大。那么它輸出的電壓值就會隨著酒精濃度的增加而增大?在外部使用簡單的電路就可以通過電壓值的變化將電導率的變化表現出來,并且該電壓值是與酒精氣體濃度值相對應的,最后將該信號與預先設定的閥值進行比較,如果大于閥值就進行報警[7]。2)傳感器的管腳分布及外形MQ-3酒精氣體傳感器由以下幾部分組成:(1)SnO2敏感層(2)微型AL2O3陶瓷管(3)加熱器(4)測量電極構成的敏感元件它被固定在不銹鋼或塑料制成的腔體內,由于傳感器工作前必須要預熱,所以它的內部有一個加熱器專門用來加熱傳感器。封裝好的MQ-3酒精氣體傳感器有6只針狀管腳,讀取信號的引腳有4個,另外2個引腳專門提供電流來加熱傳感器。MQ-3的管腳分布如圖3-1所示,A腳和B腳是用來讀取信號的;提供加熱電流的是2個f引腳,電阻絲的阻值為30Ω,當電流經過電阻絲時,電阻絲會被加熱。MQ-3的引腳分布如圖3-2所示。圖3-1MQ-3的引腳圖3-2MQ-3傳感器實物圖3)MQ-3氣體傳感器的特點(1)靈敏度高(2)快速響應恢復特性(3)使用壽命長(4)穩定性可靠(5)驅動回路簡單(6)可以抵抗其他氣體的干擾(7)具有信號輸出指示(8)雙路信號輸出,并具有信號輸出指示(9)TTL輸出有效信號為低電平(10)輸出電壓范圍為0-5V4)MQ-3氣體傳感器對酒精氣體濃度的標定傳感器內部的氣敏電阻的輸出阻值與酒精氣體濃度有關,它隨著酒精濃度的變化而變化。如圖3-3所示,其中:Rs是MQ-3酒精氣體傳感器的輸出阻值,它在不同氣體以及不同濃度下是不同的;R0是MQ-3酒精氣體傳感器在潔凈空氣中的電阻值。從圖中可以看出Rs/R0的值與酒精濃度成某種關系,而Vs與Rs、V0與R0也都成正比,所以Vs/V0=Rs/R0,所以Vs/V0與酒精濃度也成同樣的關系。通過查看手冊,找出了這種關系。如公式3-1所示:alcometer=(V0/Vs-1.12)/(-0.101)-1.1(3-1)在環境不變的情況下V0是一個定值,所以只需要算出MQ-3氣體傳感器在酒精氣體環境下的輸出電壓值,就可以算出酒精氣體的濃度。Vs是根據公式3-2算出的。Vs=Adc_avg*3.34/4096(3-2)式中的Adc_avg是A/D轉換器輸出的平均值,Vs是傳感器在有酒精氣體環境中的輸出電壓。圖3-3中的Rs/R0與酒精濃度的關系是建立在如下環境中的:溫度:20°C相對濕度:65%圖3-3MQ-3的靈敏度特性曲線3.1.2單片機介紹在本課題中選用的單片機型號是STM32F103VCT6,它的管腳分布如圖3-4所示。STM32F103xxx系列單片機的功能以及外部設備配置如表3-1所示。圖3-4STM32F103VCT6單片機管腳分布表3-1STM32F103xx系列單片機功能及外部設備配置外設STM32F103TxSTM32F103CxSTM32F103RxSTM32F103Vx閃存(K字節)64641286412864128SRAM(K字節)20202020定時器通用3個(TIM2、TIM3、TIM4)高級控制1個(TIM1)通信接口SPI1個(SPI1)2個(SPI1、SPI2)I2C1個(I2C1)2個(I2C1、I2C2)USART2個(USART1、USART2)2個(USART1、USART2、USART3)USB1個(USB2.0全速)CAN1個(2.0B主動)GPIO端口2637518012位ADC模塊(通道數)2(10)2(10)2(16)2(16)CPU頻率72MHz工作電壓2.0-3.6V工作溫度環境溫度:-40℃-+80℃封裝VFQFPN36LQFP48LQFP64LQFP1001)STM32F103VCT6的主要特點(1)核心處理器是ARMCortexM3(2)縮減的引腳數目(3)系統功耗低(4)計算性能優越(5)高級的中斷系統響應(6)程序存儲器256KB(7)數據隨機存儲器48KB(8)工作電壓:2.5V或3.3V(9)工作溫度:-40°C-+85°C(10)內嵌2個12bit的A/D轉換器,可用A/D通道16個,轉換范圍為0V-3.3V(11)一共有100個引腳,其中80個為I/O端口。絕大部分端口都可以接受5V信號(12)擁有7個定時器2)低功耗模式(1)睡眠模式:在睡眠模式時,只有CPU停止,其他的外部設備都處于工作狀態,可以通過中斷或事件來喚醒CPU。(2)待機模式:在待機模式下會關閉內部的電壓調壓器,電能消耗達到最低。并且此時內部所有由1.8V供電的部分將被斷開;并且RC振蕩器也都會被關閉;在待機模式下,待機電路仍然在工作,但是,寄存器和SRAM的內容將會消失,后備寄存器的內容仍會保留。只需要滿足NRST上的外部復位信號或者是WKUP管腳上的一個上升邊沿這兩個中的任意一個條件,就可以從待機模式中退出。(3)停機模式:在停機模式下,內部由1.8V供電的部分將不能工作,并且RC振蕩器也都會被關閉,可以把調壓器設置成低功耗和普通模式這兩種模式。把CPU從停機模式中喚醒的前提條件是配置一個EXTI的信號,這個信號的來源有很多方式,比如說可以由16個外部I/O端口中的任意產生,也可以是PVD的輸出,也可以是RTC鬧鐘和USB的喚醒信號[8,9]。3)I2C總線有多達2個I2C總線接口,它們的特點如下(1)支持標準和快速模式(2)支持7位或10位尋址(3)可以使用DMA操作(4)支持SMBus和PMBus總線4)定時器STM32F103VCT6中包含7個定時器,它們分別如下:(1)高級控制定時器1個,特點如下①可以被當成是完整的通用定時器②可以被當成是三相PWM發生器③具有帶死區插入互補PWM輸出④擁有四個獨立通道,它們都可以用于單脈沖輸出、輸入捕獲、輸出比較以及產生PWM⑤計數器可以被凍結,用于調試(2)通用定時器(TIMx)有3個可以同步運行的標準定時器,特點如下①擁有一個16位自動加載遞加計數器,也可以用作遞減計數器②擁有一個16位預分頻器③擁有4個獨立的通道,可以用于單脈沖模式輸出、輸入捕獲以及輸出比較(3)獨立看門狗定時器1個它的時鐘是由一個內部獨立的40KHz的RC振蕩器來提供的,并且這個RC振蕩器獨立于主時鐘,所以它可以在待機模式和停機模式之間切換。它的特點如下:①可以復位整個系統②可以為應用程序提供超時管理③可以通過硬件或者軟件啟動④有一個12位的遞減計數器⑤有一個8位的預分頻器(4)窗口看門狗定時器1個,特點如下①有一個7位的遞減計數器②可以被配置為自由運行③可以復位整個系統④有早期預警中斷的功能(5)系統時基定時器1個它既可以用于實時操作系統,也可以用作是一個標準的遞減計數器。它具有以下四個特點:①24位的遞減計數器②可編程時鐘源③當計數器為0時能夠產生一個可屏蔽系統的中斷④自動重加載功能5)通用輸入輸出接口(GPIO)每一個GPIO引腳都能夠通過軟件來配置,可以將它們設置成輸入、輸出或復用端口。除了那些具有模擬輸入功能的端口,其余的GPIO引腳都能夠通過大電流。如果想要將I/O引腳的外設功能鎖定,那么只需要進行一個特定的操作就可以了,這樣就可以防止意外寫入I/O寄存器。6)ADCSTM32F103VCT6單片機內部嵌有2個12位的模擬/數字轉換器,這兩個轉換器有以下幾個特點:(1)每一個ADC都擁用16個外部通道(2)可以實現單次或掃描轉換(3)在掃描模式下,可以自動切換為選定的模擬輸入中的任何一個ADC接口上其它的邏輯功能還包括(1)交叉采樣和保持(2)同步采樣和保持(3)單次采樣3.1.3充電芯片1)工作原理整個設計使用鋰電池來供電,當鋰電池電能用完時,就要對它進行充電。在本設計中選擇了TP4054這塊充電芯片,它是一款采用恒定電壓/電流的單節鋰電池線性充電器,它能夠提供800mA的充電電流,它采用的是SOT-25封裝,并且外部元件數目較少,因此TP4054是便攜式應用的最佳選擇,它可以通過USB電源和適配器電源對鋰電池進行充電,并且它的內部有防倒充電路,所以沒有必要在外部單獨設計檢測電路和隔離二極管。它的輸出電壓穩定于4.2V,而且充電電流是可以進行設置的,只需要在外部設計一個電阻器就可以了。讓一個充電循環開始的條件有3個,它們分別是(1)Vcc引腳的電壓大于UVLO門限電壓(2)5引腳與地之間連接一個設定電阻器(3)3引腳連接一塊電池2)工作模式(1)涓流充電模式TP4054進入涓流充電模式的條件是3引腳的電壓小于2.9V。在該模式下,TP4054提供的電流只有設定充電電流的1/10,當電流電壓大于安全的電平時,就可以達到滿電流進行充電。(2)恒定電流模式TP4054進入恒定電流模式的條件是3引腳的電壓大于2.9V,在此模式下向電池提供穩定的電流進行充電。(3)恒定電壓模式TP4054進入恒定電壓模式的條件是3引腳的電壓達到最終浮充電壓4.2V,在此模式下充電電流開始慢慢地減小。當充電電流小于設定值的1/10的時候,整個充電循環就結束了。當輸入電壓被斷開的時候,TP4054自行變成低電流的狀態,將電流下降至2uA以下。也可以將TP4054設置為停機模式,在此模式下供電電流為45uA。3)TP4054的特點(1)高達800mA的可編程充電電流(2)恒定電流/電壓操作(3)C/10充電終止(4)自動再充電(5)軟啟動限制了浪涌電流(6)待機模式下的供電電流為45uA(7)精度達到±1%的4.2V預設充電電壓(8)充電電流監視器(9)欠壓閉鎖(10)表示充電結束或是輸入電壓接入的狀態引腳4)TP4054引腳如圖3-5所示圖3-5TP4054引腳圖5)引腳介紹引腳1(CHRG):漏極開路狀態下的輸出引腳2(GND):接地引腳3(BAT):該引腳向電池提供充電電流引腳4(VCC):該引腳接入正電源電壓。Vcc的值在4.25V至6.5V之間,并通過一個電容器進行旁路,這個電容器的值至少為1uF引腳5(PROG):該引腳的作用是對充電電流進行監控/設定和停機。在該引腳與地之間連接了一個電阻器PPROG,通過它來進行充電電流的設定。當在穩定電流模式下充電的時候,該引腳的電壓可以保持在1V左右。并且在所有的模式下,充電電流都可以通過該引腳上的電壓來計算,如公式3-3所示:IBAT=(VPROG/RPROG)*1000(3-3)PROG引腳還可以用來關斷充電器。斷開設定電阻器與地的連接,PROG引腳通過內部一個2.5uA的電流件將電壓升至高電平,充電器啟動停機模式,此時停止充電,并且將輸入電流降至45uA。只需要將RPROG與地相連,就可以讓充電器恢復正常操作狀態。3.1.4低壓差調節器由于整個設計的供電電壓是3.3V,但是鋰電池的輸出電壓是3.7V,所以必須要選擇一款能穩定輸出3.3V的低壓差調節器。KV5033芯片是由SIPEX公司生產的,它是一款低功耗、低電壓調節器。它很適合用于某些電池供電的系統,比如無繩電話、便攜式電子設備和一些無線控制系統等。其擁有低壓差、低靜態的電流等特性,而且具有非常小的初始容限,極低的線路調節率以及良好的負載等特性,并且擁有很低的溫度系數,所以適用于當做低功耗電源。錯誤的標志輸出模塊還能夠對系統的電壓進行監控,當系統電壓不足或者是輸入的電壓下降等情況時,邏輯關斷模塊能夠改變調節器的開、關狀態。它具體的一些特點如下1)輸出電壓:5.0V及3.3V2)極低靜態電流3)過熱保護和過流保護4)極低溫度系數5)僅需1us即可穩定輸出6)極低的線路調節率以及負載調節率3.1.5顯示屏1)對12864液晶顯示屏的概述設計采用12864OLED液晶顯示屏來顯示數據,由于它的內部自帶中文字庫,所以它能夠顯示中文字符。12864液晶顯示屏擁有多種接口方式,比如4/8位并行以及2/3線串行等,它的內部還包含有國標一級和二級簡體中文字庫的點陣圖形液晶顯示模塊;其低電壓低功耗的顯著特點,再加上分辨率高的特點,讓它在電子產品的設計中得到了廣泛的應用。而且它的顯示方案與同類型液晶顯示模塊相比,在硬件電路的結構設計以及程序的編寫方面都要簡單很多。2)12864液晶顯示器的特點(1)低電源電壓(VDD:+3.0V至+5.5V)(2)顯示分辨率:128*64點(3)內置128個16*8點陣字符(4)內置漢字字庫(5)2MHz時鐘頻率(6)不需片選信號,方便軟件設計(7)不用外加負壓(8)工作溫度:0°C至+55°C(9)存儲溫度:-20°C至+60°C3.2主要功能模塊電路圖3.2.1充電及穩壓電路模塊充電及穩壓電路模塊設計如圖3-6所示,3-6(A)中+5V電壓是USB電源提供,通過TP4054充電芯片的3引腳輸出電壓給鋰電池充電,通過撥動3-6(B)中的S1開關來控制鋰電池給整個系統供電,鋰電池輸出3.7V電壓,但是系統的其它模塊都需要3.3V的工作電壓,所以使用了3-6(C)中的KV5033低差調節器,將電壓降至3.3V穩定輸出,給整個系統供電。CBACBA圖3-6充電及穩壓電路3.2.2傳感器及信號調理電路模塊傳感器及信號調理電路模塊設計如圖3-7所示,由電源模塊輸出的3.3V電壓給傳感器供電,為了讓傳感器能夠測量得更準確,誤差達到最小,傳感器要先預熱5分鐘,再進行測量。由2腳和5腳提供加熱電流。當傳感器所在的環境中有酒精氣體時,它的電導率會根據空氣中酒精氣體濃度的不同而不同,酒精氣體的濃度越大,電導率也就越大。所以輸出的電壓值就會越大,輸出信號通過一個電壓跟隨器后從A4引腳輸入單片機進行處理。圖3-7傳感器及信號處理電路3.2.3聲光報警電路模塊聲光報警電路模塊設計如圖3-8所示,當CTRO端(與單片機的D2引腳相連)輸出高電平時(即傳感器輸出電壓高于閥值),三極管就會導通,蜂鳴器就會開始報警。如果傳感器所測電壓值大于閥值,單片機的A8引腳就會輸出低電平,A7引腳就會輸出高電平,此時LED2指示燈亮,LED3指示燈滅。否則LED3指示燈亮,LED2指示燈滅。圖3-8聲光報警電路3.2.4顯示屏模塊電路液晶顯示模塊電路如圖3-9所示,P5是一個4孔的排針,專門供12864液晶顯示屏使用,V33是指接的3.3V電壓;顯示屏的SCL引腳連接的是單片機的E13引腳,通過SCL引腳傳輸串行時鐘數據;SDA引腳連接的是單片機的E15引腳,通過SDA引腳傳輸串行數據。圖3-9液晶顯示屏電路3.3硬件成品展示硬件成品如圖3-10所示,這個系統是鋰電池供電,通過單片機最小系統上的USB數據線接口來給鋰電池充電。圖3-10中有兩個LED指示燈,當酒精濃度超過閥值時,蜂鳴器響并且紅色指示燈亮,否則黃色指示燈亮。從圖中可以看出,整個系統體積比較小,顯示屏小巧,外觀看起來比較舒適,而且采用鋰電池供電,可以隨時充電,這些都滿足了設計要求的便攜式功能。圖3-10硬件成品正面圖4軟件編程設計4.1軟件整體設計4.1.1整體設計方案主程序要實現的功能是結合系統的硬件完成對酒精氣體濃度檢測的各項任務。主要的程序有以下幾個模塊:數據的采集模塊;A/D轉換模塊;數據處理模塊;數據顯示模塊;報警模塊。主程序模塊:系統上電后,首先進入初始化模塊,進入酒精濃度檢測界面測量酒精濃度,首先等待讀數歸零,然后再進行測量。系統測出酒精濃度值后一方面在顯示屏上顯示,另一方面判斷濃度值是否超過閥值,如超過閥值進行報警。4.1.2主程序流程圖如圖4-1所示,是整個系統的主程序流程圖開始開始初始化初始化觸發A/D轉換觸發A/D轉換換算酒精濃度換算酒精濃度酒精濃度顯示酒精濃度顯示NN是否大于閥值是否大于閥值YY報警燈亮報警燈亮結束結束圖圖4-1主程序流程圖4.1.3主程序設計本課題軟件設計主要采用分模塊設計的思想,這樣便于修改和調試。主要程序模塊包括:數據采集子程序、ADC轉換及數據處理子程序、報警子程序、OLED顯示子程序。下面的程序展示如何調用這些子程序。#include"stm32f10x.h"#include"sys.h"#include"usart1.h"#include"led.h"#include"delay.h"#include"sys.h"#include"usart1.h"#include"adc.h"#include"oled.h"#include"warning.h"intmain(void){ Warning_init(); while(1); Adc_Init(); 調用ADC轉換子程序 delay_init(); 調用延時子程序 NVIC_Configuration(); Warning_init();調用報警子程序 OLED_Init();調用LED顯示子程序 OLED_P8x16Str(20,0,"Alcometer"); OLED_P6x8Str(0,2,"Oncentration:"); while(1) { Voltage_Deal(); } }4.2數據采集模塊程序設計數據采集模塊程序為:首先進入初始化,界面歸零,然后開始測量濃度值,A/D設置成連續掃描模式,一次采集12個數,去掉最大值和最小值,然后算出平均值并顯示。程序流程圖如圖4-2所示。開始開始初始化初始化連續采集12個值連續采集12個值去掉最大值、最小值,算出平均值去掉最大值、最小值,算出平均值顯示屏顯示,聲光報警顯示屏顯示,聲光報警結束結束圖4-2數據采集模塊程序流程圖4.3液晶顯示模塊程序設計要讓液晶顯示屏正常工作,首先寫入命令控制字,然后在寫入需要顯示的數據。寫入命令控制字之前,必須用指令來查看液晶是否正在工作。如果正在工作,那就必須等待,直到液晶發出工作完成的信號時,才能夠寫入控制字和數據。液晶顯示模塊程序流程圖如圖4-3設計如圖所示。開始開始OOLED液晶初始化延時延時N顯示器是否忙N顯示器是否忙YY寫指令,設置第一行顯示位置寫指令,設置第一行顯示位置寫顯示的數據寫顯示的數據寫指令,設置第二行顯示位置寫指令,設置第二行顯示位置寫顯示的數據寫顯示的數據結束結束圖4-3液晶顯示模塊程序設計流程圖4.4報警模塊程序設計傳感器采集的數據經過A/D轉換成數字信號后,與閥值進行比較,超過閥值進行聲光報警。如圖4-4所示,是報警模塊程序流程圖。開始開始初始化初始化讀取數據讀取數據NN是否大于閥值是否大于閥值YY聲光報警聲光報警延時延時結束結束圖4-4報警模塊程序流程圖4.5A/D轉換模塊程序設計由于STM32單片機自帶ADC轉換器,所以減少了很多外部硬件電路,但是編程這一塊也是非常重要的。在本次編程設計中采用的是DMA模式,只要ADC轉換一次,DMA就搬運一次,達到指定的次數后完成一次傳輸。在本程序中采用的是使能掃描模式并且連續轉換,由軟件觸發ADC轉換。采樣速率設置為50MHz,選擇1通道傳輸數據。轉換后的數據儲存在指定的地址。最后對轉換后的數據進行處理,找出其最大值和最小值,除去最大值和最小值后計算出平均值。再根據公式算出實際電壓值并與閥值進行比較,判斷是否報警。AD轉換流程如圖4-5所示。開始開始觸發器復位觸發器復位啟動轉換啟動轉換NN轉換是否結束轉換是否結束YY觸發器復位觸發器復位讀取讀取A/D轉換后的數據結束結束圖4-5A/D轉換模塊流程圖5系統調試5.1各模塊調試5.1.1傳感器測試根據MQ-3酒精氣體傳感器的特性,接好電源后,分別測出傳感器在潔凈空氣中和有酒精氣體的空氣中的輸出信號,發現輸出信號有變化,并且當傳感器與酒精氣體源的距離發生變化時,輸出信號也會發生變化,由此可以判斷傳感器是完好的。5.1.2充電電路測試TP4054接入5V電源時,通過3引腳給鋰電池充電,當測得3引腳電壓大于2.9V時,此時的充電電流比較穩定。測得鋰電池的輸出電壓為3.7V,通過KV5033低壓差調節器后,輸出電壓為3.3V。此電壓完全能使整個系統正常工作。5.1.3報警電路測試首先,檢查連線是否正確,排除斷路、短路等情況,然后通過編程設置蜂鳴器和LED燈與單片機相連的腳為高或低電平,然后觀察蜂鳴器和LED燈的變化。5.1.4系統整體調試在對系統整體進行調試時,系統上電后,要先等待大約1分鐘左右,目的是要給傳感器預熱,這樣測試的準確度才會更高。當系統上電后,顯示屏上會顯示Alcometer的字樣,以及初始濃度0.000mg/L。并且此時黃色指示燈亮。大約一分鐘過后就可以開始測試了,在測試的時候,找了一瓶45度的白酒,將系統的傳感器靠近瓶口,此時顯示屏上的濃度值會發生變化,大約10秒鐘后顯示出最終的測量結果,當濃度值大于閥值時,就會進行聲光報警。此時蜂鳴器響、紅色指示燈亮,黃色指示燈滅。5.2調試結果分析5.2.1測試數據給整個系統上電后,等待大約一分鐘左右,然后找了一瓶45度的白酒,打開瓶蓋,然后把系統上的酒精傳感器對準瓶口,開始測試數據。表5-1是對45度的白酒進行測試的一組酒精濃度數據,單位是mg/L。表5-1檢測儀測量的數據0.5440.4960.5600.5170.5120.5170.5280.5070.5230.5650.5230.512根據表中的數據去掉最大值和最小值算出平均值為0.524mg/L。從市面上買了一個精確度為±0.1%F.S的酒精氣體傳感器,由它測量的濃度值為1.5g/L,這個濃度是指血液中的酒精濃度(BAC),它與呼氣酒精濃度(BrAC)的關系為:BAC=BrAC×2200。所以由標準儀器測量的呼氣酒精濃度為BrAC=0.682mg/L。因此可以算出整個設計的相對誤差為:g=(0.682-0.524)/0.682=0.2由于整個設計設定的閥值酒精濃度為0.24mg/L,轉化為電壓為1.41V,所以只要傳感器的輸出電壓大于1.41V,即所測的酒精濃度超過0.24mg/L時,蜂鳴器就會報警。5.2.2誤差分析以上測試數據是對45度白酒測量12次的結果,測量結果精度較高,精度達到0.001mg/L。該酒精濃度檢測儀存在一些誤差,該誤差主要由以下幾方面造成。1)傳感器在工作時會受到溫度、濕度的影響,若在惡劣的環境中工作,傳感器所占的誤差比例會更大。2)在測量的過程中,傳感器與酒精源的距離也會給測量結果帶來誤差,距離酒精源越近,酒精的濃度越大。3)酒精檢測儀在運行過程中,單片機會受到軟件的控制,從而產生軟件延時誤差。4)在使用的過程中,若鋰電池的供電電壓不穩定,會直接影響傳感器的輸出,從而產生誤差。5.3調試中的問題及解決方案1)整個硬件模塊不能正常供電最初選擇的低壓差調節器的型號是AMS1117,它是一款正電壓輸出低壓差的三端線性穩壓芯片,主要是利用它將鋰電池的輸出電壓降至3.3V來給整個系統供電。雖然在一些資料上看到它可以將輸出電壓調節為3.3V,但是在實際調試過程中發現ASM1117的輸出電壓比我們想要的3.3V要小得多,所以整個系統不能正常工作。于是就把低壓差調節器換成了KV5033芯片,KV5033的輸出電壓剛好能達到我們想要的3.3V電壓。而且它能夠穩定的輸出3.3V電壓來給整個系統供電。換成KV5033低壓差調節器后系統就能正常供電了。2)傳感器輸出信號不正常調試傳感器模塊時,在最初調試的過程中,我是在系統剛一開始供電就開始調試,結果發現傳感器的輸出信號變化不正常,與預期的結果不一樣,但是過幾分鐘后調試就正常了,剛開始一直以為是電路哪里有問題,但是找了很久都沒有找到問題所在,后來再去查看MQ-3傳感器的使用手冊的時候發現,MQ-3傳感器在使用之前要先預熱5分鐘,才能使它的精度達到最高,誤差最小。3)蜂鳴器不報警調試聲光報警模塊的時候,當整個系統正常運行時,發現酒精濃度值超過閥值時只有指示燈亮,蜂鳴器不響,就去檢查電路,覺得電路沒問題,就以為是程序報警模塊寫錯了,又去檢查程序,檢查過后還是沒有發現問題所在。我在這一部分浪費了不少時間,還是沒結果。后來找同學幫忙看一看才發現是一個非常小的問題,由于自己的粗心把與蜂鳴器相連的三極管接反了。4)LED指示燈指示不正確在最后的調試中,感覺程序和硬件都做好了,但是就是有一個指示燈該亮的時候不亮,后來才發現是程序中的輸出引腳與硬件中的對不上,更改過來后運行就正常了。5)傳感器的輸出結果與電位器的分壓比較結果指示不正常為了方便后期軟件編程過程中的調試,在最初的硬件設計過程中,本來是想將傳感器的輸出信號與電位器的分壓(設置成閥值)作比較,通過一個LED指示燈來指示比較結果。傳感器輸出信號接入比較器的正向端,電位器的分壓接入比較器的負向端,預期的結果是當傳感器的輸出信號大于電位器分壓(即正向端電壓大于負向端電壓)時,比較器輸出為低電平,LED指示燈亮,否則LED指示燈不亮。但是在調試過程中發現比較器的輸出端很難達到一個能讓LED指示燈亮的低電平,即使LED指示燈亮了,肉眼也很難分辨出來。調試了很久也沒找出問題在哪里,后來考慮到這個模塊對硬件的整體設計和功能沒有什么影響,于是決定把這個模塊取消了,現在在產品成品上還遺留著那個電位器。6)酒精濃度換算誤差較大根據圖2-4氣敏元件靈敏度特性曲線來查找酒精傳感器的輸出電壓與酒精濃度的關系,最初為了計算方便,就把酒精傳感器在純凈空氣中的電壓與在酒精氣體中輸出電壓的比值與酒精濃度看成是成正比的關系,根據這種關系來換算酒精濃度值,后來發現誤差太大。就去查找原因,通過查找MQ-3酒精傳感器的使用手冊發現,并不是根據上述的關系來換算的,酒精傳感器在純凈空氣中的電壓值與在酒精氣體中輸出的值電壓的比值與酒精濃度并不是成正比的。而是如式5-1這樣的一種關系:alcometer=(V0/Vs-1.12)/(-0.101)-1.1(5-1)根據這種關系換算出來的酒精濃度值與實際值更接近。但是受環境溫度和濕度的影響,還是存在一些誤差。6結論綜上所述,基于STM32的便攜式酒精氣體濃度檢測儀的設計與實現,軟、硬件的設計和調試都已完成,所有性能及功能基本已達到了設計指標的要求。硬件電路的設計結構簡單,準確度較高,聲光報警模塊均工作正常。軟件的編程設計過程中,采用的是分模塊設計,各個子程序之間互不影響,大大的簡化了整個編程過程,這樣還有益于后期的調試和升級。該酒精濃度檢測系統不僅可以用于檢測空氣中的酒精含量,對人身安全起保護作用,而且也可以用于其他需要進行酒精濃度檢測的環境中。參考文獻[1]李建榮,薛亞平,錢松.基于單片機的酒精濃度檢測儀的設計[A].南通紡織職業技術學院學報,2013,13(4):1-4[2]王彩紅,王學梅.酒精檢測儀的研制[J].科技信息,2008,29:1-3[3]田哥.國外酒后駕車檢測儀科技新動向[J].道路交通與安全,2009,5[4]潘祖軍,朱文勝,岳睿.汽車用酒精傳感器的分析[A].學術論壇,2007:39-40[5]楊金瑞.基于法布里—珀羅干涉效應的多孔硅乙醇傳感器[J].重慶大學出版,2009:19-20[6]韓瑞芳.酒后駕車涉及問題的綜合探討[M].西安文理學院學報(自然科學報),2007,4(10):126-130[7]龍光利.一種駕駛員酒精超標測控電路的設計[J].陜西理工學院報(自然科學報),2012,6[8]陳海生.基于STM32的TransFlash卡讀寫技術研究[J].哈爾濱工業大學,2009:18-19[9]劉婧.電梯及扶梯GSM無線遠程報警系統設計與應用[M].上海交通大學出版,2011:21-28致謝本文是在趙麗娜老師的指導下,以及實驗室同學的幫助下完成的,在這里向指導和幫助我的老師和同學表示衷心的感謝并致以崇高的敬意!在硬件設計及調試過程中遇到了許多問題,在導師和同學的幫助下都迎刃而解了,在撰寫論文的過程中也遇到了許多這樣那樣的問題,有的是專業上的問題,有的是論文格式上的問題,在趙麗娜老師的細心、耐心指導下,最終又快又好的完成了我的論文。在此,再一次向他們表示衷心的感謝。作者簡介姓名:性別:男出生年月:民族:漢聲明本論文的工作是2014年12月至2015年6月在成都信息工程大學控制工程學院完成的。文中除了特別加以標注地方外,不包含他人已經發表或撰寫過的研究成果,也不包含為獲得成都信息工程大學或其他教學機構的學位或證書而使用過的材料。關于學位論文使用權和研究成果知識產權的說明:本人完全了解成都信息工程大學有關保管使用學位論文的規定,其中包括:(1)學校有權保管并向有關部門遞交學位論文的原件與復印件。(2)學校可以采用影印、縮印或其他復制方式保存學位論文。(3)學校可以學術交流為目的復制、贈送和交換學位論文。(4)學校可允許學位論文被查閱或借閱。(5)學校可以公布學位論文的全部或部分內容(保密學位論文在解密后遵守此規定)。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程大學。特此聲明!作者簽名:年月日附件AD轉換主要程序voidAdc_Init(void){ RCC_Configuration_ADC(); GPIO_Configuration_ADC(); DMA_Configuration_ADC(); ADC1_Configuration_DMA();}voidGet_Adc_Average(void){ staticu8t=0; staticu32adc_cnt; staticu16adc_max=0,adc_min=0; if(t<12&&Adc_avg_flag==0) { adc_cnt+=ADC_ConvertedValue[0];//求和 delay_ms(100); if(ADC_ConvertedValue[0]>adc_max)//求最大和最小 adc_max=ADC_ConvertedValue[0]; if(ADC_ConvertedValue[0]<adc_min) adc_min=ADC_ConvertedValue[0]; t++; } if(t==12) { Adc_avg_flag=1; t=0; Adc_avg=(adc_cnt-adc_max-adc_min)/10; adc_cnt=0; adc_max=0; adc_min=0xffff; }}#defineAir_cv1.394voidVoltage_Deal(void){ floatvoltage_cv; floatalcometer=0; u8str[11]="a98"; Get_Adc_Average(); if(Adc_avg_flag==1) { Adc_avg_flag=0; voltage_cv=Adc_avg*3.34/4096; alcometer=(Air_cv/voltage_cv-1.12)/(-0.101)-1.1; if(alcometer<0.1)alcometer=0; sprintf(str,"%3.3fmg/L",alcometer); OLED_P8x16Str(10,4,str); Warning(alcometer); }}報警主要程序 voidWarning_init(void){ GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD; GPIO_Init(GPIOD,&GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD; GPIO_Init(GPIOA,&GPIO_InitStructure); Warning_BEEP=0; Warning_LED0=1; Warning_LED1=1;}#defineWarning_voltage_red0.24voidWarning(floatalcometer){ if(alcometer>Warning_alcometer_red){ Warning_LED1=0; Warning_LED0=1; Warning_BEEP=1; delay_ms(300); Warning_BEEP=0; } else{ Warning_LED0=0; Warning_LED1=1; }}基于C8051F單片機直流電動機反饋控制系統的設計與研究基于單片機的嵌入式Web服務器的研究MOTOROLA單片機MC68HC(8)05PV8/A內嵌EEPROM的工藝和制程方法及對良率的影響研究基于模糊控制的電阻釬焊單片機溫度控制系統的研制基于MCS-51系列單片機的通用控制模塊的研究基于單片機實現的供暖系統最佳啟停自校正(STR)調節器單片機控制的二級倒立擺系統的研究基于增強型51系列單片機的TCP/IP協議棧的實現基于單片機的蓄電池自動監測系統基于32位嵌入式單片機系統的圖像采集與處理技術的研究基于單片機的作物營養診斷專家系統的研究基于單片機的交流伺服電機運動控制系統研究與開發基于單片機的泵管內壁硬度測試儀的研制基于單片機的自動找平控制系統研究基于C8051F040單片機的嵌入式系統開發基于單片機的液壓動力系統狀態監測儀開發模糊Smith智能控制方法的研究及其單片機實現一種基于單片機的軸快流CO〈,2〉激光器的手持控制面板的研制基于雙單片機沖床數控系統的研究基于CYGNAL單片機的在線間歇式濁度儀的研制基于單片機的噴油泵試驗臺控制器的研制基于單片機的軟起動器的研究和設計基于單片機控制的高速快走絲電火花線切割機床短循環走絲方式研究基于單片機的機電產品控制系統開發基于PIC單片機的智能手機充電器基于單片機的實時內核設計及其應用研究基于單片機的遠程抄表系統的設計與研究基于單片機的煙氣二氧化硫濃度檢測儀的研制基于微型光譜儀的單片機系統單片機系統軟件構件開發的技術研究基于單片機的液體點滴速度自動檢測儀的研制基于單片機系統的多功能溫度測量儀的研制基于PIC單片機的電能采集終端的設計和應用基于單片機的光纖光柵解調儀的研制

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論