標題: 基于單片機的家用煤氣報警器的設計文檔 [打印本頁]
作者: 昊天冥下 時間: 2018-5-18 09:45
標題: 基于單片機的家用煤氣報警器的設計文檔
摘要
基于自動控制理論,設計一種以單片機AT89C52為控制平臺,QM-2N氣敏傳感器為CO濃度采樣的家用型煤氣報警器。本設計所包括的主要系統結構有:信號采集電路、信號轉換電路、單片機系統、報警聯動電路、數碼管顯示電路。傳感器將采集到的濃度信息轉換成電壓信號,經過ADC0832芯片完成模擬信號到數字信號的轉換,后送入AT89C52單片機中,單片機對送入的數字信號進行分析并判斷是否達到報警條件,并將濃度信息在四位數碼管中顯示,當濃度低于預設警戒值時綠燈常亮,表示無危險的正常工作狀態;當濃度超過預警值,單片機I/O端口輸出電平控制信號,打開排氣風扇,控制繼電器銜鐵吸合使電磁閥關閉,并伴隨聲、光報警。
目錄
摘要
Abstract
1 緒論
1.1 選題背景與意義
1.2 家用煤氣報警器整體方案設計與選定
1.3 總體設計思路
1.3.1 煤氣報警系統結構分析
1.3.2 煤氣報警器設計流程
2 設計分析
2.1 功能要求
2.2 硬件選擇
2.2.1 AT89C52單片機說明
2.2.2 氣敏傳感器
2.2.3 A/D轉換器
2.2.4 LED數碼管
2.2.5 繼電器
2.3 軟件選擇
2.3.1 搭建電路仿真環境
2.3.2 搭建單片機程序開發環境
3 總體設計與實現
3.1系統總體框架
3.2 子模塊的設計與實現
3.2.1 傳感器及A/D轉換模塊
3.2.2 LED數碼顯示模塊
3.2.3 聲光報警模塊
3.2.4 風扇控制模塊
3.2.5 電磁閥控制模塊
3.2.6 模擬濃度輸入模塊
4 仿真與調試
總結
參考文獻
附錄
1 緒論
1.1 選題背景與意義
近些年來隨著我國各類能源的綜合開發與利用,家用煤氣的普及率逐年上升,但隨之而來的煤氣泄漏所引發的火災、中毒、爆炸事故時有發生,這也在某種程度上增加了城市的不和諧和不安全因素。面對如此之多的煤氣安全事故,從根源上解決實不可行,唯有建立一種準確有效的預防機制,在煤氣泄漏還未造成危害時發出預警,給人們提供時間和相關措施去避免事故的發生,由此,煤氣報警器應運而生。它能有效地對周圍煤氣泄漏及時預警,防止釀成煤氣事故,保障人民生命和財產的安全。目前,市面上的該類產品大多只提供報警功能,當人們不在家時仍會造成很大隱患,考慮到此種因素,設計一種能夠在泄漏發生時自動啟動排氣扇并關閉煤氣通道的報警裝置,能更大程度上地提供安全保障。有關資料顯示,煤氣報警器對CO事故發生避免率達到95%以上[1]。所以在此設計一種合適的家用煤氣泄露報警器切實必要。
盡管在一般條件下,煤氣是一種安全性高的燃氣,但如果其在空氣中含量達到特定濃度時,就會發生燃爆,煤氣報警器就是在發生燃爆前提醒人們盡早的發現隱患,解決隱患[1]。在具體報警器設計當中,應對元器件的選擇嚴格把關,保證系統的準確性,才有可能投入到居民的日常使用中。隨著科學技術的不斷進步以及人們對高功能產品的日益青睞,一種具備高度集成化、智能化的單片機得到了廣泛的應用,它的發展前景是巨大的,無論在商業運營還是工業生產中,單片機可謂是無處不在,他的數量不僅遠超過世界范圍內計算機總和,甚至要比世界人口數還多。本設計是單片機聯系實際的一個典型應用,基于單片機的煤氣報警器是通過檢測管道泄漏的CO濃度作為條件判斷報警的[2];若這類氣體泄漏達到爆炸極限時,可讓單片機處理發出事故聲光警報,同時起動排氣扇或油煙機等通風設備,以免爆炸,造成巨大傷害。
1.2 家用煤氣報警器整體方案設計與選定
為了實現煤氣報警器所具備的各項功能,首先應制定一個充分又切合實際的設計方案,該方案要能考慮到設計中的各個環節,將自動化、智能化綜合運用到實際設計中,發揮該設計的實際意義[3]。以下是兩類比較典型的煤氣報警器設計方案:
方案1:經由氣敏傳感器將采集的濃度模擬信號v送入比較器中,與其內部參考電壓vr進行比對,在兩者電壓幅值相等的附近,輸出電壓會產生躍變,對應輸出1或0,由電平來控制報警電路的運作。而比較器負端也可接電位器來調節參考電壓vr,用于報警靈敏度的調節。
優點:電路簡易。
缺點:可擴展性不足,實現的功能有限。
方案2:以單片機為控制核心,將氣敏傳感器采集的濃度模擬信號送入A/D轉換后輸出8位數字信號,經由單片機I/O輸入并與程序預設警戒值比對,根據比對結果發出多個控制信號驅動一系列的聯動措施。例如環境濃度顯示,燈光指示,電磁閥控制等。
優點:高度可靠性、可控性、智能性。
缺點:相比方案1電路結構較復雜。
就當前發展的趨勢來看,傳感器的應用愈來愈偏向智能化,可控化。方案1中采用純模擬電路,結構簡單,但可控性差,所采用的運放比較器涉及到精度及穩定性,所以對預警濃度的控制不宜用在事故報警中。方案2中以單片機作為控制核心,對送入其內部的數字信號通過編寫程序進行分析比較,具有深度的可調性,可控性,靈活性。且穩定性高。
1.3 總體設計思路
1.3.1煤氣報警系統結構分析
根據方案2的設計思路,首先明確該報警器由三部分組成:濃度檢測電路、單片機控制系統、報警電路。分析后擬定的該煤氣報警器的工作結構如圖1-1:
其中以單片機為核心,濃度檢測為輸入,報警電路為輸出,只有三部分協同工作才能組成完整的煤氣報警器系統。在具體的單元電路設計中,也要遵循布局合理,結構清晰的基本要求。
1.3.2煤氣報警器設計流程
從初期制定煤氣報警器的設計方案直到最后的實物成型,一般需要經歷四個階段:
1.硬件電路設計
在明確設計目標后,需要運用專業知識對家用型煤氣報警器的各項功能進行實現,了解每項功能所對應的單元電路的組成[4]。由于現今計算機的大量普及,電子設計自動化類別的軟件在相關行業中的應用愈加廣泛,作為一種模擬環境下的電路設計,它發揮著十分重要的作用,本設計的第一部分也就是基于計算機下的煤氣報警器電路的模擬。
2.元器件的選擇
在模擬電路搭建過程中,考慮各單元電路所要用到的電子元器件的選擇,對所選的芯片應掌握它各個引腳的功能,在實現同樣功能的條件下,應盡量選取常用的、結構簡單的、成本較低的元件,對于一件產品的接受程度一方面取決于功能,而另一方面往往取決于價格,綜合考慮以上因素,完成模擬電路的設計,
3.MCU程序編寫
要使模擬的煤氣報警器電路在計算機環境中運行,需要設計單片機主程序來驅動仿真電路中的MCU,單片機通過設定的程序來實現對輸入輸出口的信息交互和控制,傳感器采集到的信息才能送入,報警控制電路才能正常運行。將程序寫入單片機后進行電路仿真模擬,通過觀察各單元電路的工作情況進行硬件調試和程序修改。
4.實物的焊接
在確保仿真電路工作符合設計要求后,需要進行元器件的實物收集和焊接,元件的焊接平臺選用15X9洞焊接板,它的優點是布線自由度高,但是焊點過多過于雜亂,主要用于實驗階段的實物設計,待實物通過各項標準,實際測試穩定后,可考慮用軟件對設計原理圖PCB封裝后進行自動布線,制作特定的PCB焊接板。它的集成度高,布局清晰,安全性、穩定性優良,主要用于電子產品的量產化。
2 設計分析
2.1 功能要求
家用煤氣報警器從檢測到的濃度信號送入單片機控制芯片,到單片器同時發出若干條控制指令,各個單元電路協同配合,首先是氣敏傳感器通過對周圍環境中co濃度進行實施檢測,將輸出的濃度信號送入A/D轉換芯片完成對信號的數字化處理,再送入單片機I/O口完成數據交換和判斷,此時根據判斷結果單片機內部會產生不同的輸出控制信號,決定煤氣報警器處于安全工作狀態還是告警情況,并將濃度信息實時顯示到LED數碼管中,當處于一般的正常工作狀態時,電磁閥默認由控制器信號控制繼電器來驅動打開,使煤氣在管道內流通,若需要手動控制電磁閥開合,可以通過撥動開關來控制電磁閥狀態;當處于報警狀態時,執行聲光報警并啟動排氣裝置,將周圍空氣中的CO排出室外,同時通過控制器讓繼電器驅動電磁閥閉合,阻斷煤氣泄漏的根源,避免危險事故的發生[5-6]。
報警器發出聲光報警提示,一方面燈光提示可以讓人們更直觀的察覺到煤氣泄漏,給人們發出一種危險信號,同時聲音報警傳播的空間范圍比較大,能有效地對室內人員傳達信息,常用的蜂鳴器,集成了音樂芯片的音樂報警器等,本系統采用的是蜂鳴器報警。
系統報警功能模塊如圖2-1所示:
2.2 硬件選擇
2.2.1AT89C52單片機說明


AT89C52是51系列中常用的單片機,作為AT89C51的升級版,它的片內集成8kb的可重復擦寫的FLASH Memory型程序存儲器只讀程序存儲器,是一種低壓、高能的CMOS型8位微處理器,壽命高于1000寫/擦循環,通稱單片機(MCU)。它具有3個十六位的可編程計數(Counter)/定時器(Timer)中斷,三十二條可編程的I/O線路,八個中斷源,并集成了片內震蕩器及時鐘電路,與其他MCS-51相兼容[7-10]。它的常用封裝形式如圖2-2。
2.2.2氣敏傳感器
傳感器(Sensor)是一種具備檢測功能的集成器件,它能夠感知周圍所測量的信息,并能把此類信息依據特定的規則轉化為電相關信號或其它要求形式的信息量,來提供信息的傳送、處理、記載、控制、顯示等要求。所以它作為實現自檢功能及自控功能的重要環節。目前的傳感器按輸入量、原理、結構不同分為數十種,各類傳感器廣泛地用于工業生產和商業運營中[11]。
隨著科技發展的日新月異,應用于家用設備的傳感器也開始普及。煤氣報警器就是一種利用傳感器來監測一氧化碳有無泄漏,以預防煤氣泄漏引發的爆炸和不完全燃燒所引起的煤氣中毒,它屬于氣敏傳感器的一種。從作用機理上,氣敏型傳感器主要分為兩種:接觸點燃式傳感器以及半導體式氣體傳感器。
半導體氣體傳感器主要是通過把白金或鈀等貴金屬添加在SnO2等N型氧化物半導體上構成的。可燃性待測氣體在它的表面發生化學反應改變金屬氧化物的電導率,繼而感知可燃性氣體濃度變化。由于在特定的溫度范圍內才可以發生所需的此類反應,因此,傳感器的電阻絲需加熱[12-13]。

接觸點燃式傳感器是通過燃氣和催化劑接觸并發生燃燒,使敏感材料線圈的阻值產生變化繼而感測燃氣濃度。此類傳感器,是由貴金屬催化劑的多孔隙氧化鋁貼附于白金線圈表面組成的。

本設計采用MQ-2型半導體氣敏傳感器, 它的探測區間廣、靈敏系數高、響應迅速、穩定性優異、壽命久,適用于對液化氣、煙霧、甲烷、氫氣、酒精等的檢測。可用于對本設計中煤氣濃度的探測。
MQ-2型半導體氣敏傳感器的規格如下表2-1:
MQ-2在標準環境下測試的靈敏度特性曲線如圖2-5所示:
它的溫濕度特性如圖2-6所示:

它的基本電路如圖2-6所示,由H-H組成加熱電路,A和B為傳感器提供了工作電壓并且B作為信號輸出。VRL 即為輸出電壓,可通過調節RL的阻值還進行濃度的動靜態校準,在煤氣報警值的設定方面,應嚴格按照煤氣濃度爆炸下限的25% LEL進行設定,家用的煤氣主要為焦爐煤氣,據表2-2知:焦爐煤氣的爆炸下限是4.5% VOL,所以報警器的設定值應為它的25% LEL[14]。
根據計算:

由傳感器MQ2的參數可得煤氣爆炸濃度設定值:
故煤氣報警器的報警值應設定為2800ppm。
2.2.3A/D轉換器
A/D轉換器是一種能將輸入模擬電壓(電流)轉換成與它成正比的數字信號。即把被控對象的各類模擬信號轉換成計算機可以識別的數字信號。A/D轉換器的種類很多,從原理上大致可分為四類:計數器式A/D轉換器、逐次逼近式A/D轉換器、并行A/D轉換器、雙積分式A/D轉換器。
作為計數式A/D轉換器,它的結構相對簡易,但由于轉換的速率過慢而很少采用,而并行A/D轉換器,它的轉換速度雖然很快但由于構造復雜價格較高,一般只適用在要求很高的場合,雙積分式A/D轉換器轉換精度高,但是速度仍不夠理想,多用于數字測量儀表中。本設計采用的ADC-0832型逐次逼近式A/D轉換器精度較高,轉換速度快,結構也比較簡單[15]。
ADC-0832 是一種雙通道、八位分辨率A/D轉換模塊,它的工作頻率是250 千赫茲,轉換時間是32微秒,因為它體積小,兼容性好,功耗低,總功耗僅為15mW,所以深受單片機愛好者及企業歡迎,它的封裝及引腳圖如圖2-8所示:
ADC-0832的工作原理是:
將傳感器采集到模擬電壓Vin信號送入Ch0通道,A/D轉換器片內有一個D/A轉換器,首先向片內D/A轉換器輸入10000000,如果電壓比較器:Vin > Vn( Vn為片內的D/A轉換輸出,Vin為A/D轉換器的輸入電壓),則N位寄存器的第一位置1;(若Vin < Vn,則寄存器首位寫0);再向D/A轉換輸入1100 0000(首位寫0時,輸入0111 1111),若Vin > Vn則寄存器第二位置1(若Vin < Vn,則寫0);再向D/A轉換輸入1110 0000(或0011 1111),若Vin > Vn則寄存器第三位置1(若小于,則寫0);順次執行,直至寄存器第8位賦值結束,控制邏輯監測到比較放大器進行8次后,Eoc輸入信號,讓A/D轉換器將結果通過鎖存緩存器輸出至D0~D9。
2.2.4LED數碼管
LED數碼顯示管是由若干個獨立的發光二極管構成,它的內部進行封裝后組成一位形如“8”的元件,當數碼管特定的段加上電壓后,這些特定的段就會發亮,一般條件下,單一的發光二極管的電流低于30mA。將發光二極管的陽極并聯,將并聯端接到電源正極,此接法叫做共陽極數碼管,相反地,發光二極管的陰極并聯,將并聯端接到電源負極,即為共陰數碼管。四位數碼管是由4個單數碼管內部封裝后顯示4位數字,它的應用極其廣泛,本設計選用3461AS四位數碼管,用于實時顯示周圍環境中煤氣濃度,它的引腳結構如下圖2-9:
2.2.5繼電器


繼電器作為一類電子控制元件,它包括控制系統(輸入回路)、被控系統(輸出回路),廣泛地在自控電路中應用,它實際上是用“一個較小的電流控制大電流的開關”,起到安全保護功能,并能進行自動調整,轉換電路。在單片機控制系統中,繼電器裝置作為單片機與其它高功率負載的中介,發揮控制作用。三極管起到放大作用。
本設計采用的是電磁式繼電器,它是一種利用輸入回路中電磁鐵芯與銜鐵之間的吸合作用,實現自動開關控制,它的平面結構如圖,單片機對氣敏傳感器傳入的值進行分析判斷,依據結果來控制對應的引腳輸出高低電平,決定繼電器的電磁線圈內是否有電流流通,若有電流流通,銜鐵吸合并驅動負載電路運行。
2.3 軟件選擇
2.3.1 搭建電路仿真環境
目前市場上的電路原理圖繪制類軟件有很多種,比較常用的有Protel99se、Multism、Proteus、DXP2000等。
Protel軟件能夠實現簡易的模擬和數字電路的設計與仿真,擁有完善的PCB封裝設計功能。Proteus軟件能夠進行直觀的模擬、數字電路還有單片機仿真,更高級的ARM仿真,功能更加完善,并能勝任一般的PCB封裝板設計。
本設計采用的是Proteus軟件來進行原理圖繪制與仿真,他能最大限度地模擬煤氣報警器各單元的功能,效果直觀,調試方便。
2.3.2 搭建單片機程序開發環境
單片機應用程序是讓單片機完成一系列的人們行動的程序指令,最終具有某種特定的功能。Keil C51能兼容51系列的單片機,既可以用匯編語言調試開發也可以在C語言環境開發的工具。本設計采用C語言編寫程序,結構簡單,程序直觀、易懂,后期調試修改方便。
3 總體設計與實現
3.1系統總體框架
根據系統的需求分析,該系統主要實現以下功能:
(1)濃度監測:由傳感器來完成對周圍環境中煤氣濃度的采集并將模擬電壓轉換成8位濃度信號送入單片機分析判斷。
(2)數碼顯示:直觀地反映周圍空氣中煤氣濃度,有助于人們提前發現隱患。
(3)聲光報警:發出報警時,利用聲音和燈光傳達危險信號。
(4)風扇驅動:在報警發生時,驅動風扇工作將室內煤氣濃度高的空氣排出到室外。
(5)電磁閥通斷:電磁閥門能手動控制,且能自動應急關閉,防止煤氣進一步泄漏。
該系統的基本結構如圖3-1:
程序設計的流程圖如圖3-2:
3.2 子模塊的設計與實現
3.2.1 傳感器及A/D轉換模塊


由于該設計采用的MQ-2傳感器輸出的是0-5V電壓量,不能直接與單片機I/O口進行通信,在A / D的模擬信號轉換成8位的數字信號后才能送入單片機內。此外,還應考慮到傳感器在初始工作時應預熱一段時間后,才能正常檢測濃度,在本設計中,傳感器通過隨濃度正相關變化的電壓檢測輸出5v以內可變電壓,送至CHO通道,待ADC0832模擬信道轉換完成后,輸出8位數字信號。
程序設計:傳感器部分,通過設定一個預熱延時顯示程序(void yure();),用于傳感器初始工作時穩定濃度檢測電路。帶預熱結束后,輸出模擬信號對A/D模塊輸入通道進行選擇:Di=0,Do=1對應Ch0單相輸入通道,由單片機控制CS_置0驅動ADC0832程序將Vin送入,至第19 個脈沖信號時完成數據的輸出,表示一次模數轉換結束,將CS_端口置1后數據傳入單片機內進行處理。
3.2.2 LED數碼顯示模塊
為了能實時了解傳感器的工作情況,直觀地顯示周圍空氣中煤氣濃度的信息,可以在電路中加入一塊四位數碼顯示管。該設計采用了3461AS共陰4位數碼管,通過對送入單片機內的8位數字信號進行轉換,然后控制段位引腳來完成數字0-9999PPM的顯示,通過查表得到煤氣發生爆炸的濃度底限,根據底限值的25%觸發報警,計算后得,煤氣報警器的報警濃度設定為2800ppm較為合適,當濃度值超過2800PPM時,觸發報警電路。
程序設計:
將4位共陰極數碼管的八個段引腳分別接到單片機AT89C52的P1.0-P0.7口,控制數碼管段選(sbit dled=P1^0)的9個元素數組定義為uchar Display_Buffer[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};四個位引腳接到P2.0-P2.3口(sbit wled=P2^0)。
3.2.3 聲光報警模塊
聲光報警模塊包含兩個LED和一個有源蜂鳴器,單獨綠色燈亮時表示煤氣濃度在安全范圍之內,紅色燈點亮時表示煤氣濃度超過預設值,同時驅動蜂鳴器進行聲音報警。
程序設計:兩個工作狀態指示燈分別接入P3.7、P3.6口(ledg=P3^7,Ledr
=P3^6),有源蜂鳴器接入P3.4口(buzzer=P3^4),當濃度高于設定值時有源蜂鳴器接入P3.4口(buzzer=P3^4),當濃度高于設定有源蜂鳴器接入P3.4口有源蜂鳴器接入P3.4口(buzzer=P3^4),當濃度高于設定值時,P3.7 P3.6置低電平,P3.4置高電平。濃度低于設定值時,輸出相反電平。
3.2.4 風扇控制模塊

風扇控制模塊主要用于警報發生時,驅動風扇將周圍中煤氣濃度含量超標的空氣排到室外,避免隱患的發生。當檢測濃度高于預設值時,單片機特定口產生低電平信號,經過三極管放大后啟動排氣裝置。當濃度低于設定值時,排氣裝置關閉。

程序設計:通過P3.2口(sbit motor=P3^2)輸出控制電平,當濃度高于設定值時,P3.2輸出低電平,使三極管由截止區工作到飽和區,驅動負載回路。當濃度低于設定值時,P3.2輸出高電平。
3.2.5 電磁閥控制模塊
電磁閥裝置是本設計報警電路的重要組成部分,當煤氣濃度在安全范圍內時,可以通過撥動開關手動控制電磁閥的導通與關斷,當空氣中煤氣濃度高于預設值時,便會自動關閉電磁閥,直到濃度小于設定值,電磁閥導通。檢測濃度高于預設值時,單片機P3.3口發出低電平信號,經過三極管放大后送入繼電

器使得繼電器的輸入回路導通,銜鐵吸合,驅動電磁閥關斷。待危險解除后,P3.3引腳輸出高電平,驅動電磁閥打開。
程序設計:通過P3.3口(sbit relay=P3^3)輸出控制電平,當濃度高于預設值時,P3.3發出高電平信號,使電磁繼電器銜鐵彈開,無法形成輸出回路,電磁閥閉合。濃度低于設定值時,輸出低電平。
3.2.6模擬濃度輸入模塊

在本設計中,模擬濃度輸入量是用來檢測MCU控制模塊和報警電路的工作是否在正常狀態,通過多個按鍵將不同濃度的信號送入單片機I/O口判斷并控制報警電路。一定程度上模擬了環境中不同濃度的煤氣信號,便于進行裝置調試。

程序設計:通過多路開關將報警器切換至測試模式,在該模式下,兩個按鈕開關(sbit key2=P1^6;sbit key3=P1^7)分別代表兩個不同的煤氣濃度值輸入當key2閉合時,P1.6口處于低電平,MCU定義模擬量3800ppm輸入,觸發報警電路,key3閉合時,P1.7口處于低電平,MCU定義模擬量500ppm輸入,轉為安全工作狀態。
4 仿真與調試


在Keil uVision4環境下完成程序編譯,并將編寫好的程序進行調試,選擇Project-Build target,之后根據Build Output界面中的提示來完善程序,待符合要求后生成Hex文件,將Hex文件加載到Proteus仿真圖中的單片機內,選擇Source-Add Source Files單擊New并選擇編譯完成的Hex文件并點擊確定。
接下來進行Proteus仿真運行,選擇Debug-Start Debuging,通過調節滑阻來模擬氣敏傳感器的輸出量,觀察檢測電路和控制電路是否滿足設計要求。
總結
目前煤氣已經成為生產生活中不可缺少的燃氣資源,面對每年時有發生的煤氣安全事故,每一起事故都給人民生活、社會安全造成了極大危害,從事故中反思總結,避免類似事件的發生,也是本次設計所要達到的目的。
本篇文檔對該設計的內容做了明確的闡述,從選題背景與意義出發,擬定初步設計方案,確定設計思路來實現所制定的功能,從硬件選擇到軟件仿真,再到最后的實物焊接,貫徹了一個電子產品“構想-設計-生產”的關鍵環節。
雖然基本完成了該系統所要求實現的功能,但仍然存在著諸多不足之處,出于仿真的角度考慮,對單元電路的仿真設計與實際有一定的差別,仿真電路中主要針對的是功能的直觀表現,簡化了對單元電路的設計,而實物中還需要考慮電路保護、設備驅動能力等因素。
其次,本設計只是家用煤氣報警器中一個比較典型的設計,設計功能還有欠缺[16],若能將小區各戶家中的煤氣報警器實現無線通信,將危險情況第一時間傳達給專業搶修人員,為避免事故提供了更佳的途徑。
參考文獻
[1]趙婷.美國煙霧報警器的統計文檔[J].消防科學與技術,2010(3):183-184.
[2]陳文平.有關吸氣式煙霧探測火災報警系統設計的探討[J].福建建設科技,2009(4):64-65.
[3]孫巨勇.基于單片機的煙霧報警器的設計探究[J].電子測試,2013(15):56-57.
[4]費紅波,吉錘.可燃氣體報警器及其檢測標定系統的設計[J].江蘇現代計量,2010(2):38-40.
[5]毛星.家用煙霧報警器[J].消防科學與技術,2012(9):940.
[6]王勇等.室內一氧化碳安全監控系統設計[J].工業儀表與自動化裝置, 2011:20-50.
[7]徐愛卿,孫涵芳,盛煥鳴.單片微型計算機應用和開發系統[M].北航出版社,2012:14-17.
[8]李全利.單片機原理及應用技術[M].北京:高等教育出版社,2004:225-234.
[9]胡漢才.單片機原理及接口技術(第2版)[M].清華大學出版社,2011:66-78.
[10]王曙霞.單片機實驗與實訓指導[M].西安:西安電子科技大學出版社,2007.
[11]陳榮忠,陳莉.聲表面波氣體傳感器的理論分析[J],傳感器技術,1997(3):27-30.
[12]阮維國.TGS813型半導體氣敏傳感器及其在燃氣毒氣檢測中的應用電路[J].現代科學儀器.1998(3):1-2.
[13]李永生,楊莉玲.半導體氣敏元件的選擇性研究[J].傳感器技術.2002(3):
1-3.
[14]鄧麗芬.可燃氣體報警器檢定注意事項[J].中國計量,2011(06):112.
[15]王百鳴.一種基于流水逐次逼近比較方式的模/數轉換器[J].微電子學,2001(2):92-93
[16]趙中國.火災自動報警系統設計方案有關問題的探討[J].鐵道標準設計,2005(4):98.
附錄1:
附錄4:
設計實物:
致謝
本文檔是在張老師的悉心指導下完成的,在文檔撰寫的整個過程中, 張老師都極負責任,無論從選題指導、文檔框架到細節修改,都給予了我細致全面的指導,并提出了很多寶貴的意見與建議,我的文檔才能如此順利地完成。在此,我要感謝張老師。
同時,我還要感謝在一起愉快的度過大學生活的每個可愛的同學們和尊敬的老師們,正是由于你們的幫助和支持,我才得以克服重重困難和疑惑,直至本文的順利完成。
最后,我要向百忙之中抽時間對本文進行審閱,評議和參與本人文檔的各位老師表示感謝。
單片機源碼:
- #include "reg52.h"
- #include "intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
-
- sbit cs =P1^4;
- sbit clk=P1^1;
- sbit dio=P1^2;
-
- sbit ledg=P3^7; //綠燈-工作狀態指示燈
- sbit ledr=P3^6; //紅燈-報警指示燈
- sbit buzzer=P3^4; //蜂鳴器
- sbit relay=P3^3; //繼電器-控制電磁閥
- sbit motor=P3^5; //排氣裝置
- sbit dled=P0^0; //led段控制
- sbit wled=P2^0; //led位控制
- sbit key2=P1^6; //濃度輸入鍵1
- sbit key3=P1^7; //濃度輸入鍵2
- uint frq; //蜂鳴器頻率
- uint ppm,ledppm,keyppm,ch;
- uchar Display_Buffer[]=
- {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff};
- uint qian,bai,shi,ge; //定義四位數碼管
-
- void delayms(unsigned int ms) //晶振頻率11.0592MHz
- {
- unsigned int i;
- unsigned char j;
- for(i=0;i<ms;i++)
- {
- for(j=0;j<200;j++);
- for(j=0;j<102;j++);
- }
- }
-
- void display() //濃度顯示程序
- {
- qian=ch/1000; //取位
- bai=ch%1000/100;
- shi=ch%1000%100/10;
- ge=ch%10;
-
- if(ledppm<1000&keyppm<1000&ppm<1000) //ppm小于1000時,數碼管不顯示
- {
- P2=~0x0f;
- P0=Display_Buffer[0];
- }
- else
- {
-
- P0=Display_Buffer[qian];
- P2=~0x01; //11111110 P2.0 千位
- delayms(1);
- P2=0xff; //關位去殘影
-
- P0=Display_Buffer[bai];
- P2=~0x02; //11111101 P2.1 百位
- delayms(1);
- P2=0xff;
-
-
- P0=Display_Buffer[shi];
- P2=~0x04; //11111011 P2.2 十位
- delayms(1);
- P2=0xff;
-
-
- P0=Display_Buffer[ge]; //顯示結束-數碼管
- P2=~0x08; //11110111 P2.3 個位
- delayms(1);
- P2=0xff;
- }
- }
-
- void yure() //MQ-2預熱
- {
- int i=0;
- P2=0xff;
- delayms(500);
- while(1)
- {
- delayms(500);
- P2=P2<<1;
- P0=Display_Buffer[10];
- delayms(500);
- i++;
-
- while(P2==0xf0) //11110000
- {
- delayms(500);
- P2=0xff;
- }
- if(i==30|cs==0)
- break; //約為30S
- }
- }
-
-
- void keytest()
- {
- if(key2&key3==1) //模擬濃度輸入開關
- {
- ch=ledppm; //顯示頻道切換
- }
- if(cs==0)
- {
-
- if(key2==0) //3000ppm
- {
- ch=keyppm;
- keyppm=3000;
- }
- if(key3==0) //1500ppm
- {
- ch=keyppm;
- keyppm=1500;
- }
- }
- }
- uchar get_ad_result() // A/D轉換過程
- {
- uchar i,dat1=0,dat2=0;
- cs=0; //使能(驅動芯片)
- clk=0;
- dio=1;
- _nop_();_nop_(); //延時2us
- clk=1; //上升沿
- _nop_();_nop_(); //延時2us
-
- clk=0; //第一個脈沖結束
- dio=1;
- _nop_();_nop_();
- clk=1; //上升沿
- _nop_();_nop_();
- clk=0; //第二個脈沖結束
- dio=0;
- _nop_();_nop_();
- clk=1; //上升沿
- dio=1;
- _nop_();_nop_();
- clk=0; //A/D轉換開始(第四個下降沿)
- dio=1;
- _nop_();_nop_();
- for(i=0;i<8;i++) //讀取8位數據
- {
- clk=1;_nop_();_nop_();
- clk=0;
- dat1=dat1<<1;
- if(dio)dat1|=0x01;
- }
- for(i=0;i<8;i++) //讀取8位相反數據
- { dat2=dat2>>1;
- if(dio)dat2=dat2|0x80;
- clk=1;_nop_();_nop_();
- clk=0;
- }
- cs=1; //A/D轉換結束;//讀取完成釋放總線
- return (dat1==dat2)?dat1:0; //數據效驗如果正確則返回讀取數據
- }
-
- void main() //主函數
- {
- if(cs!=0)
- {
- yure();
- ch=ledppm;
- }
- TMOD = 0x01; //設定時方式1,16位定時器
- frq = 0x00;
- TH0 = 0x00; //賦初值
- TL0 = 0xff; //賦初值 //賦初值
- TR0 = 1; //開定時器T0 //開始計數
- IE = 0x82; //允許中斷 // 0x82;
-
- ledg =1;
- ledr =1;
- buzzer=1;
- relay=1;
- motor =1; //單片機初始化結束
- while(1) //數據判斷與處理
- {
- ppm=get_ad_result()*10000.0/255; //實際濃度值
- ledppm=get_ad_result()*9999.0/255; //4位濃度顯示-數碼管
-
- display(); //濃度顯示
- keytest();
- if(ppm>2812|keyppm>2812) //報警判斷
- {
- ledg=0;
- ledr=0;
- buzzer=0;
- relay=1;
- motor=0;
- TR0=1;
- }
- else //正常工作(不報警)
- {
- ledg=0;
- ledr=1;
- buzzer=1;
- relay=0;
- motor=1;
- TR0=0;
- }
- delayms(1);
- }
- }
-
- void et0() interrupt 1
- {
- TH0 = 0xfe;
- TL0 = frq++;
- buzzer = ~buzzer;
- }
復制代碼 本人初學,僅供參考,存在錯誤和不足之處,請大家回帖多多指教,切勿照搬,文件下載:
以上圖文的Word格式文檔下載(內容和本網頁上的一模一樣,方便大家保存):
煤氣報警器設計.doc
(1.8 MB, 下載次數: 183)
2018-5-18 09:45 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者: jlhjlh 時間: 2018-9-15 13:36
你好,我想做一個跟你類似的項目,能指導我學習一下嗎?
作者: 默默丶關注 時間: 2018-9-16 00:03
不錯,很給力
作者: 1732520990 時間: 2019-1-3 21:56
有些線是用的網絡形式的,文章里也沒有說明啊。有大佬能指點一下嗎?
作者: Mnous 時間: 2019-10-6 14:02
接線好像圖文不符
作者: redandme 時間: 2020-4-11 17:20
多謝樓主的教程
作者: redandme 時間: 2020-4-30 11:43
感謝樓主,這個對我幫助很大,讓我的設計有了茅塞頓開的感覺,謝謝!
作者: qzusergod 時間: 2022-5-30 10:41
有導出的仿真PDF嗎?麻煩發一下可以嗎?
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |