久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 21095|回復: 3
打印 上一主題 下一主題
收起左側

基于單片機的天然氣泄漏報警系統設計文檔

[復制鏈接]
跳轉到指定樓層
樓主
ID:419006 發表于 2018-11-1 13:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
摘   要
隨著經濟和科學技術的快速發展,人們對生活質量的提高和生活環境的改善越來越重視。天然氣作為一種清潔型能源進入家庭得到廣泛使用,為人們的生活帶來了方便,減少了城市的污染,提高了生活質量和效率,但是同時,天然氣也是潛在的“危險品”,天然氣在使用過程中,若管道和閥門密封不好,一旦泄漏出去極易爆炸,危及人們的生命財產安全。面對燃氣泄漏而造成的種種事故威脅,我們需要一個解決辦法。然而使用天燃氣檢測系統成為了一個重要的研究課題。
本畢業設計的題目是基于單片機的天然氣泄漏檢測系統設計。本設計主要是由一個MQ-4傳感器采集氣體濃度信號,系統建立濃度與電壓關系,進行濃度電壓轉換,濃度顯示,聲光報警構成的報警裝置。本系統由ADC0832處理數據,MCU采用STC89C52,完成氣體濃度信號的采集顯示內容的傳輸、顯示等功能。本設計的可燃氣體報警器由六個部分組成:傳感器、數碼管顯示器、聲光報警器、控制電路、A/D轉換和電源模塊。軟件上采用C語言編程,結構簡單運行穩定。
該檢測系統能夠檢測天然氣濃度,當檢測天然氣濃度低于設定報警閾值的時候,數碼管顯示器僅僅顯示測得的可燃氣體濃度;當檢測天然氣濃度超出設定報警閾值時給出聲光報警,并伴有語音提醒。
目   錄
摘   要
Abstract
緒   論
1基于單片機的天然氣泄漏檢測系統概述
1.1天然氣泄漏檢測報警器的概述
1.2家用天然氣泄漏檢測報警器現狀
1.3家庭燃氣泄漏報警的發展趨勢
1.4天然氣泄漏檢測報警設計意義
2天然氣泄露檢測報警系統的方案設計
2.1天然氣泄漏檢測報警系統簡介
2.2氣體傳感器的選型
2.3 天然氣泄露報警系統的整體設計方案
2.3.1天然氣泄漏報警器工作原理
2.3.2天然氣泄漏報警器的結構
2.3.3報警器各模塊的功能
3天然氣泄露報警的硬件部分設計
3.1主控電路設計
3.1.1STC89C52單片機簡介
3.1.2 STC89C52單片機的基本結構
3.1.3 STC89C52RC單片機的引腳
3.2電源電路設計
3.3可燃氣體信號采集部分
3.4 MQ-4氣體傳感器
3.5 A/D轉換部分
3.5.1 A/D轉換電路
3.6 氣體結果測量計算
3.7 聲光報警部分
3.8 計數器譯碼顯示電路
3.8.1 LED 的綜述
3.8.2 LED 的結構
3.8.3 LED數碼管的顯示方法
3.9 復位電路
3.10 最小系統及按鍵
4燃氣泄漏檢測報警系統的軟件部分
4.1程序設計流程與編程
4.2系統調試
結    論
參考文獻
附錄A   基于單片機的天然氣泄漏檢測系統原理圖
附錄B   基于單片機的天然氣泄漏檢測系統結果圖
附錄C   C程序
致    謝
緒   論

隨著人民生活水平的提高及環保意識的增強,世界需求干凈能源的呼聲高漲,各國政府也透過立法程序來傳達這種趨勢,天然氣曾被視為最干凈的能源之一,再加上1990年中東的波斯灣危機,加深美國及主要石油國家研發替代能源的決心,因此,在還未發現真正的替代能源前,天然氣需求量自然消耗會增加。

天然氣是一種高效、清潔、經濟、穩定的生活能源。近年來,隨著我國燃氣的變革及西氣東輸工程的進行,天然氣通過管道走進了千家萬戶,極大地方便我們的生產生活,同時也帶來了不少的安全隱患。

從工農業生產的各個領域到人們家庭生活的各個方面,人們直接或間接接觸各種有毒有害氣體的機會大大增加,由此而引起的中毒,火災和爆炸事故屢見不鮮,嚴重威脅到人們的生命和財產安全,成為一種新的社會公害。因此對環境氣體進行檢測和分析技術的研究日益受到人們的重視。傳統的分析氣體組分和濃度的方法是以色譜法為代表的各種化學計量方法,盡管其測量精度很高,但操作手續繁雜,實驗周期長,無法對有毒、有害氣體進行實時、連續、瞬時檢測,而氣體傳感器則滿足這種要求,并且在人們日常生活中對減少氣體爆炸、火災等事故已經發揮著越來越大的作用。

目前世界各大強國都把傳感器技術列為國家發展的重點技術,國防現代化、工業生產過程自動化、家庭電器化都與傳感器的發展休戚相關,今天的傳感器技術已滲透到國民經濟的各個領域,日益突出它的重要作用。集成化、多功能化、智能化、加工技術微精細化、指標高精度化和性能高穩定、高可靠化已經成為人們開發和研究傳感器的重要方向。

泄漏檢測報警系統被廣泛的應用于各個領域,如石油化工企業、石油運輸管線、城市自來水地下管線、鍋爐爐管、發動機箱體、缸蓋等各種領域。

泄漏檢測技術在管道檢測之中的應用得到了很好的發展。對于管道的泄漏檢測要滿足以下幾個要求:

1.準確可靠地判斷泄漏的發生,并能夠在較短的時間內判斷出泄漏點具體的位置。

2.準確可靠地判斷泄漏程度,能對較小量的泄漏做出判斷。

3.檢測原理簡單,易于操作和維護。


1基于單片機的天然氣泄漏檢測系統概述
1.1天然氣泄漏檢測報警器的概述

天然氣泄漏檢測報警器是燃氣安全設備非常重要的一部分,它是由氣敏傳感器、單片機和報警器組成。它是安全使用城市燃氣的最后一道保護設備。天然氣泄漏檢測報警器通過氣敏傳感器探測周圍環境中的天然氣濃度,在通過采樣電路,將探測到的模擬信號轉換成數字信號傳遞給控制器或控制電路。當檢測氣體濃度低于設定報警閾值的時候,數碼管顯示器僅僅顯示測得的可燃氣體濃度;當檢測氣體濃度超出設定報警閾值時給出聲光報警。氣敏傳感器是一種檢測特定氣體的傳感器。它主要包括半導體氣敏傳感器、接觸燃燒式氣敏傳感器和電化學氣敏傳感器等,這些傳感器都是通過對周圍環境中的可燃氣體的吸附,在傳感器表面產生化學反應或電化學反應,造成傳感器的電物理特性的改變,經單片機處理后轉換成檢測氣體的響應濃度 。其中用的最多的是半導體氣敏傳感器。

1.2家用天然氣泄漏檢測報警器現狀

現在每家每戶只要安裝天然氣管道的都必須安裝天然氣報警器。對于目前市場上天然氣報警存在以下問題:1、對天然氣的檢測不敏感或者檢測到天然氣泄漏并不能及時報警作出相應處理;2、對于天然氣檢測過于敏感,正常做飯燒水時難免會有少數天然氣溢出,此時報警器就不停關閥報警嚴重影響生活效率;3、存在謊報誤報的現象,當空氣中存油煙時也會關閥報警所以很多家庭對探測報警器束之高閣當成擺設,買了并不安裝;4、功能簡單,當天然氣發生泄漏時只會關閥報警,倘若家中無人閥門不緊,不能及時處理險情通知戶主。所以市面上的天然氣泄漏檢測報警器亟待于改進,從而才能更好地保障我們的生命財產安全,提高我們的生活質量。

1.3家庭燃氣泄漏報警的發展趨勢

二十多年前,我國的安防報警產品剛剛起步,無論產品技術含量、產品系列完整性、使用性,還是社會影響程度都是相當低的。國外的產品和品牌卻占領我們的大部分市場。由于中國的建設正在面臨飛速發展,我們應該抓住廣闊的市場空間,慶幸的是中國企業抓住了這次機遇,頂住了挑戰,先是一批國家的科研院所,后是一批國營企業、民營企業,業內也吸引和凝聚一大批國內的技術和管理精英,花了多年時間,通過幾次產品更新換代,就使自己的產品緊緊跟上了國際水平,并且奪回了大部分國內市場,使得現在大多國外產品只有招架之勢,這是典型的自力更生,走自己的路。當然目前而言,我們基本占據的是國內市場,對外還剛剛啟動。但是,中國企業已經做好準備進軍海外市場。

1.4天然氣泄漏檢測報警設計意義

天然氣泄漏造成的事故給我們帶來了不少的警示,而市場上的天然氣檢測報警器并不能為我們提供完善的安全保障,為此我們要設計功能更加完善,探測更加精確的天然氣報警器是對付燃氣無形殺手的重要手段之一。燃氣專家指出,燃氣泄漏或廢氣排放而大量產生的一氧化碳是燃氣中毒事件的根源,如采用天燃氣泄漏報警器就能得到及時的警示。有關部門經長期測試得出結論,天燃氣報警器防止天然氣泄漏事故發生的有效率達95%以上。

計算機的普及和信息技術的迅猛發展,人們己不滿足于傳統的居住環境,對家庭及住宅小區提出了更高的要求,智能化被引入家庭,并迅速在世界各地發展起來。人們對居住環境要求的日見增高,體現在希望住宅不僅更便利、舒適而且更安全。

單片機在日用電子產品中的應用越來越廣泛,燃氣泄漏則是人們日常生活中常常需要測量和控制的一個問題。單片機有利于為現代人工作、科研、生活、提供更好的更方便的設施。為了防止中毒事件再次發生,提出利用單片機系統進行有效的預防對策。所以怎樣防止燃氣中毒與爆炸已成為人們的迫切需要。


2天然氣泄露檢測報警系統的方案設計
2.1天然氣泄漏檢測報警系統簡介

天然氣泄漏檢測報警系統不僅能夠檢測環境中的天然氣濃度,同時具有報警功能。儀器的最基本組成部分應包括:氣體信號采集電路、模數轉換電路、單片機控制電路。

氣體信號采集電路一般由氣敏傳感器和模擬放大電路組成,將氣體信號轉化為模擬的電信號。模數轉換電路將從燃氣檢測電路送出的模擬信號轉換成單片機可識別的數字信號后送入單片機。單片機對該數字信號進行處理,并對處理后的數據進行分析,看是否大于或等于某個預設值(報警限),當檢測氣體濃度低于設定報警閾值的時候,數碼管顯示器僅僅顯示測得的可燃氣體濃度;當檢測氣體濃度超出設定報警閾值時給出聲光報警。同時報警裝置會通過語音模塊向戶主發送語音提醒以便讓戶主及時做出判斷處理。為使報警裝置更加完善,可以在聲音報警基礎上,加入閃光報警,變化的光信號可以引起用戶注意,彌補嘈雜環境中聲音報警的局限。以上是根據檢測報警器應具備的功能,提出的整體設計思路。

氣敏傳感器及單片機是燃氣泄漏報警器的兩大核心,根據報警器功能的需要,選擇合適、精確、經濟的氣敏傳感器及單片機芯片是至關重要的。傳感器的選型將在后面介紹。單片機作為硬件電路的核心,它的概況將在第三章詳述。

2.2氣體傳感器的選型

氣體傳感器屬于氣敏傳感器。氣敏傳感器是用來檢測氣體類別、濃度和成分的傳感器。它將氣體種類及其濃度等有關的信息轉換成電信號,根據這些電信號的強弱便可獲得與待測氣體在環境中存在情況有關的信息。所以氣體傳感器是儀表的核心組成部分之一。由此可見,氣體傳感器的選型是非常重要的。

該設計的天然氣泄漏報警器主要應用在廚房中,根據報警器檢測氣體種類的要求,一般選用接觸燃燒式氣敏傳感器或半導體氣敏傳感器。接觸燃燒式氣敏傳感器的探頭會出現阻緩及中毒的問題。阻緩是當在氣體與空氣含硫物質混合的情況下,則有可能在無焰燃燒的同時,有些固態物質附著在催化元件表面,阻塞載體的微孔,從而引起響應緩慢反應滯緩,靈敏度降低。雖然將阻緩的傳感器再放回新鮮空氣環境中有得到某種程度的恢復的可能,但是如果長期暴露在這樣的環境中,其靈敏度會不斷下降,導致該傳感器最終喪失檢測煙霧的能力。中毒是如果環境空氣中含有硅烷之類的物質時,則傳感器將使催化元件產生不可逆轉的中毒,以致靈敏度很快就喪失。當懷疑檢測環境中存在這些物質時,需要經常對探頭進行標定。經常對傳感器進行標定,是保證其準確性的必要的途徑。一般連續使用兩個月后應對傳感器進行量程校準,這種經常性對傳感器的維護需要專業人員和相應設備,特此排除接觸式氣體傳感器,剩下只能選用半導體氣敏傳感器。半導體氣敏傳感器包括用氧化物半導體陶瓷材料作為敏感體制作的氣體傳感器以及用單晶半導體器件制作的氣體傳感器,它具有靈敏度高,響應快、體積小、結構簡單,使用方便、價格便宜等優點,因而得到廣泛應用。半導體氣敏傳感器的性能主要看其靈敏度、選擇性(抗干擾性)和穩定性(使用壽命)。

經過對比上述兩種氣敏傳感器的應用特性,發現半導體氣敏傳感器的優點更加突出:靈敏度高、響應快、抗干擾性好、使用方便、價格便宜,且不會發生探頭阻緩及中毒現象,維護成本較低等。因此,本設計采用半導體氣敏傳感器作為報警器氣體信息采集部分的核心。而在眾多半導體氣敏傳感器中,本設計選用MQ-4型氣敏傳感器,這種型號的傳感器對天然氣有很高的靈敏度對乙醇的靈敏度很低,具有快速反應快速恢復、使用壽命長、穩定可靠等優點。

2.3 天然氣泄露報警系統的整體設計方案
2.3.1天然氣泄漏報警器工作原理

本論文中的天然氣泄漏報警器以STC89C52單片機為控制核心,通過MQ-4型電阻式半導體傳感器采集空氣中天然氣濃度。氣體傳感器MQ-4輸出的是模擬量,其作用是把探測到空氣中的天然氣的濃度轉換成對應的電壓信號,電壓信號送入模數轉換芯片ADC0832轉換成數字信號,轉換成的數字信號送入STC89C52單片機,單片機對數據進行線性化處理,將數字化電壓信號轉化成為對應的濃度值顯示到數碼管上,同時判斷氣體濃度值是否超出報警限,當檢測氣體濃度低于設定報警閾值的時候,數碼管顯示器僅僅顯示測得的可燃氣體濃度;當檢測氣體濃度超出設定報警閾值時給出聲光報警。

2.3.2天然氣泄漏報警器的結構

隨著信息技術的發展,家用電器趨向于智能化、網絡化、信息化。為了滿足家庭對可燃性易爆氣體安全性要求,同時為了符合時代發展的潮流,在傳統的天然氣泄漏檢測報警器的基礎上對其的硬件結構上特進行如下設計:

天然氣泄露檢測報警系統結構框圖如圖2.1所示,該系統以STC89C52單片機為核心,天然氣檢測報警系統要完成天然氣信號采集處理、顯示和控制報警3大功能。可分為電源模塊、天然氣信號采集模塊、A/D轉換模塊、聲光報警模塊、數碼管顯示模塊和單片機控制模塊。STC89C52單片機是51系列單片機的一個成員,是8051單片機的升級版,和51系列單片機的指令和輸出管腳相兼容。氣體檢測模塊依靠MQ-4傳感器和ADC0832轉換芯片、顯示模塊依靠數碼管完成顯示功能。


                     


圖2.1天然氣泄露檢測報警系統結構框圖圖

2.3.3報警器各模塊的功能

(1)電源模塊:提供電源、保護電路、電壓變換、穩壓;

(2)天然氣信號采集模塊:實時采集氣體濃度;

(3)A/D轉換模塊:把采集的模擬信號轉變成數字信號傳送給單片機;

(4)聲光報警模塊:當檢測到氣體泄漏值超過報警限時,發生報警;

(5)顯示模塊:顯示氣體濃度和報警限;

(6)鍵盤模塊:通過按動上下鍵調節報警限;

(7)語音模塊:向戶主提供語音提醒;   


3天然氣泄露報警的硬件部分設計3.1主控電路設計3.1.1STC89C52單片機簡介

本設計采用STC89C52單片機作為系統的處理器, STC89C52是STC公司生產的一種低功耗、高性能CMOS 8位微控制器,具有8K在系統可編程Flash存儲器。 具有以下標準功能:8k字節Flash,512字節RAM,32 位I/O 口線,MAX810復位電路,3個16 位定時器/計數器,4個外部中斷,一個7向量4級中斷結構(兼容傳統51的5向量2級中斷結構),全雙工串行口。空閑模式下,CPU停止工作,允許RAM、定時器/計數器、串口、中斷繼續工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結,單片機一切工作停止,直到下一個中斷或硬件復位為止。最高運作頻率35MHz,6T/12T可選。

它有幾個主要組成部分:中央處理器、存儲器、并行I/O口、定時器/計數器。STC89C52構成的單片機系統是具有簡單的結構、低廉的價格、高效的微控系統,具有較高的性價比。STC89C52的主要性能:首先它是8051單片機的升級版,具有6時鐘/機器周期和12時鐘/機器周期可以任意選擇的特點,其指令代碼完全兼容傳統的8051。在IO口方面,通用I/O口(32個),復位后:P1/P2/P3是準雙向口/弱上拉,P0口是漏極開路輸出,作為總線擴展用時,不必加上拉電阻,當作為I/O口用時,要加上拉電阻。具有EEPROM功能和看門狗功能,3個16位定時器/計數器(即定時器T0、T1、T2),4路外部中斷,下降沿中斷或低電平觸發電路。

3.1.2 STC89C52單片機的基本結構

STC89C52單片機的基本結構如圖3.1所示。



圖3.1基本結構圖

由圖可見,STC89C52單片機主要由以下部分組成:

(1)CPU系統:8位CPU和閃爍存儲器;時鐘電路;總線控制邏輯。

(2)存儲器系統:8KB的程序存儲器(ROM/EPROM/Flash);512字節數據存儲器(RAM)。

(3)I/O口和其他動能單元:4個并行I/O口;3個16位定時/計數器;2個全雙工串行通信口;中斷系統(5個中斷源)

3.1.3 STC89C52RC單片機的引腳

圖3.2 STC89C52管腳示意圖

1.引腳的分類

(1)主電源及時鐘引腳:VCC、GND等。

(2)P0端口(P0.0~P0.7,39~32引腳)。P0口是一個漏極開路的8位雙向I/O口。作為輸出端口,每個引腳能驅動8個TTL負載,對端口P0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數據存儲器時,P0口也可以提供低8位地址和8位數據的復用總線。此時,P0口內部上拉電阻有效。在Flash ROM編程時,P0端口接收指令字節;而在校驗程序時,則輸出指令字節。驗證時,要求接10K的上拉電阻。

(3)P1端口(P1.0~P1.7,1~8引腳):P1口是一個內部自帶上拉的8位雙向I/O口。P1的輸出緩沖器可以直接驅動4個TTL的輸入。給端口寫“1”時,利用內部上拉電阻可以把端口拉高。當把P1口用作輸入口來使用時,因為有內部上拉電阻,那些被外部拉低的端口就會輸出電流。

  表3.1 P1.0和P1.1引腳復用功能

引腳號

功能特性

P1.0

T2(定時器/計數器2外部計數輸入),時鐘輸出

P1.1

T2EX(定時器/計數器2捕獲/重裝觸發和方向控制)


(4)P2端口(P2.0~P2.7,21~28引腳):P2口是一個內部帶上拉的8位雙向I/O端口。P2的輸出緩沖器也可以驅動4個TTL的輸入。當給端口寫入1時,利用內部的上拉電阻可以把端口拉到高,此時P2口可以被用作輸入口。P2作為輸入口使用時,因為內部存在上拉電阻,那些被外部器件拉低的引腳就會輸出電流。P2口也可以訪問外部存儲芯片,訪問16位的存儲器時,P2送出的是高8位的地址。在訪問8位地址的外部芯片存儲器時,P2口引腳上的內容(就是專用寄存器的SFR區中的,P2口寄存器的內容),在訪問的整個期間都不改變。

(5)P3端口(P3.0~P3.7,10~17引腳):P3是一個內部帶上拉的8位雙向I/O端口。P3口的輸出緩沖器可直接驅動4個TTL輸入。給端口寫1時,利用內部的上拉電阻把端口拉高,這時P3口就可以作為輸入口。當P3用做輸入口使用時,因為內部有上拉電阻,那些被外部器件拉低的引腳就會輸入一個電流。

在對Flash ROM編程或程序校驗時,P3還接收一些控制信號,P1接收低8位地址。

RST(9引腳):復位輸入。當連續輸入兩個機器周期以上的高電平時才能有效,用來完成單片機的復位初始化操作。看門狗計時完成后,RST引腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以取消此功能。DISRTO位的默認狀態是復位高電平有效。

ALE(30引腳):地址鎖存控制信號的作用在訪問外部的存儲器時,鎖存低8位地址的脈沖。在Flash編程時,在此引腳(PROG)也用做編程輸入脈沖在一般情況下,ALE會以晶振頻率的1/6的頻率出脈沖,可以用來作為外部器件的定時器或

時鐘來使用(本設計就用到單片機的ALE管腳通過四分頻后為ADC0809提供時鐘)。

PSEN(29引腳):外部程序存儲器的選通管腳。當STC89C52執行外部程序存儲器的程序代碼時,PSEN需要在每個機器周期內需要被激活兩次,而訪問外部的數據存儲器時,PSEN就不需要被激活。

EA/VPP(31引腳):訪問外部程序存儲器的控制管腳。為了使從外部程序存儲器的0000H到FFFFH讀取指令,EA必須接地。注意加密方式1時,EA將內部鎖定位RESET。若是執行內部的程序指令,EA需要接VCC。

XTAL1(19引腳):振蕩器反相放大器和時鐘發生電路的輸入管腳。

XTAL2(18引腳):振蕩器反相放大器的輸出端。

振蕩器特性: XTAL1和XTAL2分別是反向放大器的輸入輸出端。該反向放大器可以被配置為片內振蕩器。石晶振蕩和陶瓷振蕩都可以被采用。若采用的是外部時鐘源驅動器件,XTAL2則不能接。有余輸入至內部時鐘信號要通過一個二分頻的觸發器,所以說對外部時鐘信號的脈寬沒有任何要求,但必須要保證脈沖的高低電平所要求的寬度。

P3口除作為一般I/O口外,還有其他一些復用功能,如表3.2所示:

表3.2 P3口管腳               

管腳
配置功能
P3.0
RXD(串行輸入端口)
P3.1
TXD(串行輸出端口)
P3.2
INT0(外部中斷0端口)
P3.3
INT1(外部中斷1端口)
P3.4
T0(定時器0的外部輸入)
P3.5
T1(定時器1的外部輸入)
P3.6
WR(外部數據存儲區間的寫入端口)
P3.7
RD(外部數據存儲區間的讀取端口)

3.2電源電路設計

如圖3.3,由USB接口提供電源,VCC接5V電壓,GND接地構成電源模塊。


圖3.3 電源模塊

3.3可燃氣體信號采集部分

如圖3.4,天然氣信號采集部分是由氣敏傳感器MQ-4、AD轉換器組成。


圖3.4 信號采集部分

3.4 MQ-4氣體傳感器

MQ-4氣體傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫(SnO2)。當傳感器所處環境中存在可燃氣體時,傳感器的電導率隨空氣中可燃氣體濃度的增加而增大。使用簡單的電路即可將電導率的變化轉換為與該氣體濃度相對應的輸出信號。

MQ-4氣體傳感器對液化氣、甲烷、丙烷、氫氣的靈敏度高,對天然氣和其它可燃蒸汽的檢測也很理想。這種傳感器可檢測多種可燃性氣體,是一款適合多種應用的低成本傳感器。

表3.3 MQ-4材料組成


部件

材料

1

  氣體敏感層

二氧化錫

2

電極

金(Au)

3

測量電極引線

鉑(Pt)

4

加熱器

鎳鉻合金(Ni-Cr)

5

陶瓷管

三氧化二鋁

6

防爆網

100目雙層不銹鋼(SUB316)

7

卡環

鍍鎳銅材(Ni-Cu)

8

基座

膠木或尼龍


圖3.5 MQ-4基本電路

MQ-4基本電路中有如公式3.5:


                                                       (3.1)


濃度與電壓的關系函數如公式3.2:


濃度=(0.7-(10-10*ADdata)/1.4*14.43*ADdata)10^4   (ppm)            (3.2)


3.5 A/D轉換部分3.5.1 A/D轉換電路

MQ-4傳感器采集到的電壓信號接單片機P1.1。


圖3.6 A/D轉換部分

3.5.2 A/D 轉換芯片 ADC0832

ADC0832 是美國國家半導體公司生產的一種8 位分辨率、雙通道A/D轉換芯片。由于它體積小,兼容性,性價比高而深受單片機愛好者及企業歡迎,其目前已經有很高的普及率。學習并使用ADC0832 可是使我們了解A/D轉換器的原理,有助于我們單片機技術水平的提高。

ADC0832 具有以下特點:

8位分辨率;

逐次逼近式A/D轉換器;

雙通道A/D轉換;

輸入輸出電平與TTL/CMOS相兼容;

5V電源供電時輸入電壓在0~5V之間;

工作頻率為250KHZ,轉換時間為32μS;

一般功耗僅為15mW;

8P、14P—DIP(雙列直插)、PICC 多種封裝;

商用級芯片溫寬為0°C to +70°C,工業級芯片溫寬為?40°C to +85°C。

如圖3.7,ADC0832 芯片頂視圖:

圖3.7 ADC0832頂視圖

芯片接口說明:

CS_片選使能,低電平芯片使能。

CH0 模擬輸入通道0,或作為IN+/-使用。

CH1 模擬輸入通道1,或作為IN+/-使用。

GND 芯片參考0 電位(地)。

DI 數據信號輸入,選擇通道控制。

DO 數據信號輸出,轉換數據輸出。

CLK 芯片時鐘輸入。

Vcc/REF 電源輸入及參考電壓輸入(復用)。

3.6 氣體結果測量計算

圖3.8 MQ-4氣敏的靈敏度特性

其中X軸表示外界可燃氣體的濃度,Y軸表示變化內阻與固定電阻的值(Rs/Ro)。

Rs:元件在不同氣體,不同濃度下的電阻值。

Ro:元件在潔凈空氣中的電阻值。(Ro=14.43 K)

3.7 聲光報警部分

采集到的數字信號經過單片機計算后,如果天然氣濃度達到報警器設置的臨界點時,單片機將控制蜂鳴器報警,同時LED亮。LED的正極與PNP三極管的集電極c相連,負極接2K電阻后接地。蜂鳴器采用PNP三極管來驅動,三極管發射極e接電源正極(+5V),基極接1K電阻后接單片機P3.4端,集電極接蜂鳴器,通過蜂鳴器后接地。


圖3.9 聲光報警電路

3.8 計數器譯碼顯示電路3.8.1 LED 的綜述

在單片機的應用系統中,為了便于人們觀察和監視單片機的運行情況,常常需要用顯示器顯示運行的中間結果、狀態等信息,因此顯示器也是不可缺少的外部設備之一。LED顯示屏是八十年代后期在全球迅速發展起來的新型信息顯示媒體,顯示屏由幾萬到幾十萬個半導體發光二極管像素點均勻排列組成。利用不同的材料可以制造不同色彩的LED像素點。目前應用最廣的是紅色、綠色、黃色。而藍色和純綠色LED的開發已經達到了實用階段。LED顯示屏可以顯示變化的數字、文字、圖形圖像;不僅可以用于室內環境還可以用于室外環境,具有投影儀、電視墻、液晶顯示屏無法比擬的優點。

在短短的十來年中,LED點陣顯示屏就以亮度高、工作電壓低、功耗小、小型化、壽命長、耐沖擊和性能穩定的優點迅速成長為平板顯示的主流產品,在信息顯示領域得到了廣泛的應用。LED的發展前景極為廣闊,目前正朝著更高亮度、更高耐氣候性、更高的發光密度、更高的發光均勻性、可靠性、全色化方向發展。

LED顯示屏的應用涉及社會經濟的許多領域,主要包括:證券交易、金融信息顯示。(2)機場航班動態信息顯示。(3)港口、車站旅客引導信息顯示。(4)體育場館信息顯示。(5)道路交通信息顯示。(6)調度指揮中心信息顯示。(7)郵政、電信、商場購物中心等服務領域的業務宣傳及信息顯示。(8)廣告媒體新產品等。

3.8.2 LED 的結構

LED數碼管顯示器是由發光的二極管顯示字段組成的。在單片機應用系統中使用最多的就是七段LED數碼管,有共陰極和共陽極兩種。七段LED數碼管顯示器有8個發光二極管,其中從a~g管腳輸入顯示代碼,可顯示不同的數字或字符,Dp顯示小數點。共陰極LED數碼管顯示器的公共端為發光二極管陰極,通常接地,當發光二極管的陽極為高電平時,發光二極管點亮。共陽極的LED數碼管顯示器的公共端為發光二極管的陽極,通常接+5V電源,當發光二極管的陰極為低電平時,發光二極管點亮。

本設計的顯示采用LED數碼管動態掃描來顯示。1個3位的共陽極LED數碼管組成3位顯示上次測量的數據。單片機的P0口控制顯示字型,P2口控制顯示字位。顯示電路如圖3.10。


                     圖3.10 顯示電路

3.8.3 LED數碼管的顯示方法

靜態顯示方式是指當顯示器顯示某一字符時,發光二極管的位選始終被選中。在這種顯示方式下,每一個LED數碼管顯示器都需要一個8位的輸出口進行控制。由于單片機本身提供的I/O口有限,實際使用中,通常通過擴展I/O口的形式解決輸出口數量不足的問題。靜態顯示主要的優點是顯示穩定,在發光二極管導通電流一定的情況下顯示器的亮度大,系統運行過程中,在需要更新顯示內容時,CPU才去執行顯示更新子程序,這樣既節約了CPU的時間,又提高了CPU的工作效率。其不足之處是占用硬件資源較多,每個LED數碼管需要獨占8條輸出線。隨著顯示器位數的增加,需要的I/O口線也將增加。

動態顯示方式是指一位一位地輪流點亮每位顯示器(稱為掃描),即每個數碼管的位選被輪流選中,多個數碼管公用一組段選,段選數據僅對位選選中的數碼管有效。對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的亮度既與導通電流有關,也與點亮時間和間隔時間的比例有關。通過調整電流和時間參數,可以既保證亮度,又保證顯示。若顯示器的位數不大于8位,則顯示器的公共端只需一個8位I/O口進行動態掃描(稱為掃描口),控制每位顯示器所顯示的字形也需一個8位口(稱為段碼輸出)。

通過比較,我們可以發現LED靜態顯示更加適合本設計,所以采用此方法。

3.9 復位電路

單片機在啟動時都需要復位,以使CPU及系統各部件處于確定的初始狀態,并從初態開始工作。52系列單片機的復位信號是從RST引腳輸入到芯片內的施密特觸發器中的。當系統處于正常工作狀態時,且振蕩器穩定后,如果RST引腳上有一個高電平并維持2個機器周期(24個振蕩周期)以上,則CPU就可以響應并將系統復位。


      圖3.11 復位電路

3.10 最小系統及按鍵

STC89C52單片機的最小系統由起振電路、復位電路、STC89C52芯片組成。單片機接+5V電源;晶體振蕩器頻率為12MHz(11.0592MHz),晶振的兩個引腳分別連接在單片機的XTAL1和XTAL2端,晶振的兩端再分別連接一個30pF電容后接地;復位電路經電源正極(+5V)接10uF電容后接10k歐姆電阻接地,單片機復位端RST接在電容和電阻之間。

本次設計電路中加入4個按鍵,用于人為報警和設置報警的上限值。按鍵分別接單片機P1.4、P1.5、P1.6、P1.7端。S1是數字鍵加,S2是數字鍵減,S3是確認鍵,S4是模擬報警鍵,當按下S4時蜂鳴器報警,LED亮;再次按下S4用來取消報警。


圖3.12 最小系統及按鍵電路


4燃氣泄漏檢測報警系統的軟件部分4.1程序設計流程與編程

程序流程圖如圖4.1所示,軟件設計包含AD采樣程序、數據處理程序、數碼管顯示程序、按鍵掃描程序、系統報警程序。


     


                                N


       Y


圖4.1 程序設計流程圖

STC89C52單片機對ADC0832傳送的氣體濃度信號進行處理,將濃度值與報警限設定值相比較,判斷是否報警。對采集的數字信號進行處理和判斷,運用一定的算法計算出待檢測氣體成分及濃度并送到數碼管顯示器顯示出來。當檢測氣體濃度低于設定報警閥值的時候,數碼管顯示器僅僅顯示測得的可燃氣體濃度;當檢測氣體濃度超出設定報警閥值時給出聲光報警。

在程序設計上我采用的是C語言編程。C語言是一種編譯型程序設計語言,它兼顧了多種高級語言的特點,并具備匯編語言的功能。C語言擁有功能豐富的庫函數,運算速度快、編譯效率高,有良好的可移植性,可以直接對系統硬件實現控制。C語言是一種結構化的程序設計語言,它支持目前程序設計中被廣泛采用的由頂向下的結構化程序設計。此外,C語言程序還具有完善的模塊程序結構,從而為軟件設計中采用的模塊化程序設計方法提供了有力的保障。因此,使用C語言進行程序設計已成為軟件開發的一個主流。用C語言來編寫目標系統軟件,會大大縮短開發周期,且明顯地增加軟件的可讀性,便于改進和擴充,從而研制出規模更大、性能更完備的系統,用C語言進行單片機程序設計是單片機開發與應用的必然趨勢。所以一個技術全面并涉足較大規模的軟件系統開發的單片機開發人員最好能夠掌握基本的C語言編程。編寫C 語言要使用到C 編譯軟件,以便把寫好的C 程序編譯為機器碼,這樣單片機才能執行編寫好的程序。

4.2系統調試

在系統調試階段我是分模塊分階段進行的。我先調試的是氣體濃度檢測部分,該部分就是把模擬量變成數字量,其原理和數字電壓表的設計是一樣的。所以該部分的系統調試在設計數字電壓表的原理基礎上進行調試的。然后調試數碼管顯示器,首先通過按鍵對報警閾值進行設置,最后把氣體濃度與按鍵值統籌在一起就組成了報警閾值調節部分。然后添加進語音報警、聲光報警。經過不斷的實驗測試,形成了系統整體程序。

在設計好硬件的基礎上,下載程序。系統通上電,報警限顯示為18ppm,按動上下鍵可以進行調節。將打火機排出的氣體對準傳感器時,顯示屏上的氣體濃度立即不斷升高;當氣體濃度上升到報警限時,聲光報警器立即開啟,并開始語音提醒:鄧曉佳提醒您,存在安全隱患,請您注意。


結    論

氣體檢測報警器可保障生產與生活的安全,避免火災和爆炸事故以及煤氣中毒的發生,它是防火、防爆和安全生產所必備的儀器,具有廣闊的市場空間與發展前景。

本文設計的天然氣泄漏檢測報警系統采用性價比很高的STC89C52單片機作為主控芯片,利用其強大的處理能力和較豐富的外圍接口,合理選用I/O端口,較好地完成了天然氣泄漏檢測報警系統的設計。本論文設計的氣體報警器由氣體信號采集電路與單片機控制電路兩大部分構成。  

根據設計要求、使用環境、成本等因素,選用MQ-4型半導體電阻式氣體傳感器。該傳感器是對以烷類氣體為主的多種氣體有良好敏感特性的廣譜型半導體敏感器件。它的靈敏度適中,具有響應與恢復特性好,長期工作穩定性、重現性、不易受環境影響及抗溫濕度影響等優點。  本系統能夠實現對空氣中天然氣濃度的實時監測并顯示,當檢測氣體濃度低于設定報警閾值的時候,數碼管顯示器僅僅顯示測得的可燃氣體濃度;當檢測氣體濃度超出設定報警閾值時給出聲光報警。該設計的天然氣泄漏檢測報警系統的綜合功能遠高于市面上的天然氣報警系統,減少誤報關閥的困擾。本設計在電路方案采用模塊化設計,可以方便實現功能擴展,從而滿足特殊應用領域中的功能和可靠性需求。在下一步的工作中,可將GPRS模塊的功能進行設計改善,以實現網絡數據共享,也可以在本系統的基礎上加上手機遠程控制防火滅火報警燈功能。

在元件及調制方面,由于采用的電路使用了很多集成電路。外圍元件不是很多,所以調試不太難。電路中除集成電路外,對各電子元件也無特別要求。未來的時代是個物聯網時代,等我具備編寫電腦軟件的能力后,我會開發出對天然氣檢測報警的聯網控制,從而可以與消防隊進行數據共享。


附錄A   基于單片機的天然氣泄漏檢測系統原理圖


附錄B   基于單片機的天然氣泄漏檢測系統結果圖


致謝

通過這一階段的努力,我的畢業論文《基于單片機的天然氣泄漏報警系統設計》終于完成了,這意味著大學生活即將結束。在大學期間,我在學習上和思想上都受益良多,這除了自身的努力外,與各位老師、同學和朋友的關心、支持和鼓勵是分不開的。

嚴謹的校風校紀、良好的學術氛圍、動手動腦的求學理念、全面發展的育人思想以及老師們對我們的淳淳教誨,讓我在學到專業知識的同時也樹立了正確的人生觀、世界觀、價值觀,為我走向社會參加工作打下良好的基礎。

在本論文的寫作過程中,我的導師王鋼老師傾注了大量的心血,從選題到開題報告,從寫作提綱,到一遍又一遍地指出每稿中的具體問題,嚴格把關,循循善誘。在王鋼老師的精心指導、嚴格要求以及熱情鼓勵下,我順利地完成畢業設計。在此,向王鋼老師致以崇高的敬意和由衷的感謝!同時我還要感謝在我學習期間給我極大關心和支持的各位老師以及關心我的同學和朋友。

即將走出校門,有太多說不出的感慨。感謝我在大學遇到的所有老師。感謝四年以來同窗好友對我的幫助。在此謹向大學所有老師和我的同窗好友們表示衷心的感謝!


單片機源程序如下:
  1. #include<reg52.h>  //包含頭文件,一般情況不需要改動,
  2.                   //頭文件包含特殊功能寄存器的定義
  3. #include <intrins.h>  //Keil library
  4. #include  <math.h>    //Keil library
  5. #include  <stdio.h>   //Keil library
  6. #define uchar unsigned char
  7. #define uint unsigned int
  8. #define ulong unsigned long
  9. #define K_MG_MV    120/66
  10. unsigned char code dispcode0[]={0xc0,0xf9,0xa4,0xb0,
  11.                     0x99,0x92,0x82,0xf8,
  12.                     0x80,0x90};//顯示段碼值0~9,不包含DP點

  13. uchar code table1[]={0x40,0x79,0x24,0x30,
  14.                     0x19,0x12,0x02,0x78,
  15.                     0x00,0x10};//顯示段碼值0~9,包含DP點
  16. uchar code table3[]={0x89,0xC7};//H L
  17. sbit bADcs=P1^2;
  18. sbit bADcl=P1^0;
  19. sbit bADda=P1^1;
  20. sbit LED0=P0^1;//定義第0個數碼管
  21. sbit LED1=P0^3;//定義第1個數碼管
  22. sbit LED2=P0^5;//定義第2個數碼管
  23. sbit LED3=P0^7;//定義第3個數碼管

  24. sbit alarm=P3^3;//蜂鳴器接口
  25. sbit key_up=P1^4;//數字鍵加+
  26. sbit key_down=P1^5;//數字鍵減-
  27. sbit key_ok=P1^6;//確認鍵
  28. sbit key_manual=P1^7;//模擬手動報警和解除報警按鍵
  29. bit SetUpFlag=0;
  30. bit set_manual=0;
  31. uchar key_manual_num=0;
  32. ulong gas_uplimit=150;
  33. /********定義變量*********/
  34. unsigned char data1;
  35. unsigned char count;
  36. unsigned char cycle;
  37. unsigned long data2;
  38. long              Value,num=0;
  39. uchar              temp,getdata;
  40. uchar jian,bai,shi,ge;
  41. uchar time_ms1;


  42. //微秒顯示函數
  43. void Delayus(uchar i)
  44. {
  45.   while(--i);
  46. }
  47.   //毫秒顯示函數
  48. void delay1ms(uint z)
  49. {
  50.               uint x,y;
  51.               for(x=z;x>0;x--)
  52.                             for(y=110;y>0;y--);
  53. }
  54. void ad(void) //ad采樣函數
  55. {
  56.      uchar i;
  57.      //data1=0;
  58.      bADcs = 0;//當ADC0832未工作時其CS輸入端應為高電平,此時芯片禁用.
  59.               bADcl=0;
  60.               bADda=1;
  61.               bADcl=1;
  62.               bADcl=0;//i down
  63.               bADda=1;
  64.               bADcl=1;
  65.               bADcl=0;              //   2 down
  66.               bADda=0;
  67.               bADcl=1;
  68.               bADcl=0;              //   3 down
  69.               bADda=1;
  70.               bADcl=1;
  71.               bADcl=0;              //   4 down

  72.               for(i=8;i>0;i--)
  73.                             {
  74.                            
  75.                             data1<<=1;
  76.                             bADcl=0;
  77.                             bADcl=1;
  78.                             if(bADda==1) data1|=0x01;
  79.                                              bADda=1;
  80.                             }
  81.                             bADcs=1;
  82.             
  83. }
  84.                            
  85. void cal() //計算把采樣到的值轉換成實際電壓值
  86. {
  87.                  Value=data1*1.0/256*500;
  88.                  Value=Value*K_MG_MV;
  89.                  Value=Value-5;
  90.                  if(Value<0)Value=0;
  91. }
  92. void display_temp(int Value)
  93. {
  94.             temp=(uchar)(Value/1000);//分離千分位
  95.                                           jian=temp;
  96.                                           temp=(uchar)((Value%1000)/100);              //分離百分位
  97.                                           bai=temp;
  98.                                           temp=(uchar)((Value%100)/10);//分離十位
  99.                                           shi=temp;
  100.                                           temp=(uchar)(Value%10);//分離個位
  101.                                           ge=temp;

  102. ////////////////////////////////////
  103. //////////////先顯示個位////////////
  104.     LED0=1;
  105.               LED1=0;
  106.               LED2=0;
  107.               LED3=0;
  108.     P2=dispcode0[ge];
  109.     delay1ms(5);
  110. /////////////接著顯示十位/////////
  111.     LED0=0;
  112.               LED1=1;
  113.               LED2=0;
  114.               LED3=0;
  115.     P2=dispcode0[shi];
  116.     delay1ms(5);            
  117. //////////////////////////////////
  118.               /////////////再接著顯示百位////
  119.               LED0=0;
  120.               LED1=0;
  121.               LED2=1;
  122.               LED3=0;
  123.     P2=dispcode0[bai];
  124.     delay1ms(5);

  125. ///////////////////////////
  126.               if(key_up==0)
  127.               {
  128.                             delay1ms(10);
  129.                             if(key_up==0)
  130.                             {              
  131.                                             SetUpFlag=1;
  132.                                             gas_uplimit++;
  133.                                             if(gas_uplimit==999)gas_uplimit=0;

  134.                                             while(!key_up);//等待按鍵釋放            
  135.                             }
  136.                
  137.               }
  138. //////////////////////////////////
  139. ///////////////////////////
  140.               if(key_down==0)
  141.               {
  142.                             delay1ms(10);
  143.                             if(key_down==0)
  144.                             {              
  145.                
  146.                                  SetUpFlag=1;
  147.                                           gas_uplimit--;
  148.                                           if(gas_uplimit==0)gas_uplimit=999;
  149.                            
  150.                                             while(!key_down);//等待按鍵釋放            
  151.                             }
  152.                
  153.               }
  154. //////////////////////////////////
  155. ///////////////////////////
  156.               if(key_ok==0)
  157.               {
  158.                             delay1ms(10);
  159.                             if(key_ok==0)
  160.                             {              
  161.                
  162.                                  SetUpFlag=0;
  163.                            
  164.                            
  165.                                             while(!key_ok);//等待按鍵釋放            
  166.                             }
  167.                
  168.               }
  169. //////////////////////////////////
  170. }
  171. void manual_simulate()
  172. {
  173.               if(key_manual==0)
  174.               {
  175.                             delay1ms(10);
  176.                             if(key_manual==0)
  177.                             {     TR1=0;
  178.             key_manual_num++;
  179.                            
  180.             set_manual=1;
  181.                                 alarm=0;
  182.                            
  183.             if(key_manual_num==2)
  184.                                           {
  185.                                  alarm=1;
  186.                            
  187.              TR1=1;
  188.              set_manual=0;
  189.                                           key_manual_num=0;
  190.                                 }
  191.                                           while(!key_manual);//等待按鍵釋放                           
  192.                             }
  193.               }
  194. }
  195. void Alarm_Limit()
  196. {
  197.     if(Value>=gas_uplimit)//判斷可燃氣體的濃度是否超出設定范圍,如超出LED亮并報警。
  198.               {
  199.                  alarm=0;
  200.               }
  201.               else
  202.               {
  203.                  alarm=1;
  204.               }
  205. }
  206. void SysInit_two(void)//初始化定時器T0
  207. {
  208.     TMOD=0x01;                                            //定時器工作在方式1
  209.               ET0=1;
  210.               EA=1;
  211.               TH0=(65536-50000)/256; //對TH0 TL0賦值
  212.               TL0=(65536-50000)%256; //使定時器0.05秒中斷一次
  213.               TR0=1;                 //開始計時
  214. }
  215. /*------------------------------------------------
  216.                     主函數
  217. ------------------------------------------------*/
  218. void main()
  219. {
  220.   SysInit_two();//初始化定時器T0
  221. ……………………
  222. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便保存):
基于單片機的天然氣泄漏檢測系統設計論文.doc (1.01 MB, 下載次數: 150)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:429133 發表于 2018-11-19 12:43 來自觸屏版 | 只看該作者
樓主這個仿真在哪能看到?
回復

使用道具 舉報

板凳
ID:200295 發表于 2020-1-19 22:25 來自觸屏版 | 只看該作者
樓主為什么主函數顯示錯誤?
回復

使用道具 舉報

地板
ID:728534 發表于 2020-4-13 20:50 | 只看該作者
李傻子 發表于 2020-1-19 22:25
樓主為什么主函數顯示錯誤?

請問你用這個程序出結果了嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久草在线| 另类一区 | 久久久久国产一区二区三区四区 | 国产精品区二区三区日本 | 欧美一区二区免费 | 日本成人中文字幕在线观看 | 久久精品免费一区二区三 | 欧美一区二区三区免费电影 | 中文字幕av一区二区三区 | 久久一视频 | 欧美日韩精品一区二区三区四区 | 日韩精品一区二区三区四区视频 | 久久9久| av黄色在线 | 正在播放国产精品 | 狠狠爱免费视频 | 91原创视频在线观看 | 最新日韩在线 | 91成人免费看片 | 精品视频在线免费观看 | 欧美xxxx黑人又粗又长 | 国产精品美女www爽爽爽视频 | 日韩成人免费视频 | 在线a视频网站 | 成人亚洲| 国产久 | 亚洲精品视频免费 | 福利社午夜影院 | 久久久久久免费免费 | 亚洲高清在线观看 | 91视视频在线观看入口直接观看 | 久久精品亚洲精品国产欧美kt∨ | 国产欧美在线 | 欧美一区二区在线 | 国产精品日韩欧美一区二区 | 成人精品鲁一区一区二区 | 日本视频免费 | 动漫www.被爆羞羞av44 | 精品国产欧美一区二区三区成人 | 亚洲日本欧美日韩高观看 | 一级黄色网页 |