摘要
基于自動控制理論,設(shè)計一種以單片機AT89C52為控制平臺,QM-2N氣敏傳感器為CO濃度采樣的家用型煤氣報警器。本設(shè)計所包括的主要系統(tǒng)結(jié)構(gòu)有:信號采集電路、信號轉(zhuǎn)換電路、單片機系統(tǒng)、報警聯(lián)動電路、數(shù)碼管顯示電路。傳感器將采集到的濃度信息轉(zhuǎn)換成電壓信號,經(jīng)過ADC0832芯片完成模擬信號到數(shù)字信號的轉(zhuǎn)換,后送入AT89C52單片機中,單片機對送入的數(shù)字信號進行分析并判斷是否達到報警條件,并將濃度信息在四位數(shù)碼管中顯示,當濃度低于預設(shè)警戒值時綠燈常亮,表示無危險的正常工作狀態(tài);當濃度超過預警值,單片機I/O端口輸出電平控制信號,打開排氣風扇,控制繼電器銜鐵吸合使電磁閥關(guān)閉,并伴隨聲、光報警。
目錄 摘要 Abstract 1 緒論 1.1 選題背景與意義 1.2 家用煤氣報警器整體方案設(shè)計與選定 1.3 總體設(shè)計思路 1.3.1 煤氣報警系統(tǒng)結(jié)構(gòu)分析 1.3.2 煤氣報警器設(shè)計流程 2 設(shè)計分析 2.1 功能要求 2.2 硬件選擇 2.2.1 AT89C52單片機說明 2.2.2 氣敏傳感器 2.2.3 A/D轉(zhuǎn)換器 2.2.4 LED數(shù)碼管 2.2.5 繼電器 2.3 軟件選擇 2.3.1 搭建電路仿真環(huán)境 2.3.2 搭建單片機程序開發(fā)環(huán)境 3 總體設(shè)計與實現(xiàn) 3.1系統(tǒng)總體框架 3.2 子模塊的設(shè)計與實現(xiàn) 3.2.1 傳感器及A/D轉(zhuǎn)換模塊 3.2.2 LED數(shù)碼顯示模塊 3.2.3 聲光報警模塊 3.2.4 風扇控制模塊 3.2.5 電磁閥控制模塊 3.2.6 模擬濃度輸入模塊 4 仿真與調(diào)試 總結(jié) 參考文獻 附錄
1 緒論 1.1 選題背景與意義 近些年來隨著我國各類能源的綜合開發(fā)與利用,家用煤氣的普及率逐年上升,但隨之而來的煤氣泄漏所引發(fā)的火災、中毒、爆炸事故時有發(fā)生,這也在某種程度上增加了城市的不和諧和不安全因素。面對如此之多的煤氣安全事故,從根源上解決實不可行,唯有建立一種準確有效的預防機制,在煤氣泄漏還未造成危害時發(fā)出預警,給人們提供時間和相關(guān)措施去避免事故的發(fā)生,由此,煤氣報警器應(yīng)運而生。它能有效地對周圍煤氣泄漏及時預警,防止釀成煤氣事故,保障人民生命和財產(chǎn)的安全。目前,市面上的該類產(chǎn)品大多只提供報警功能,當人們不在家時仍會造成很大隱患,考慮到此種因素,設(shè)計一種能夠在泄漏發(fā)生時自動啟動排氣扇并關(guān)閉煤氣通道的報警裝置,能更大程度上地提供安全保障。有關(guān)資料顯示,煤氣報警器對CO事故發(fā)生避免率達到95%以上[1]。所以在此設(shè)計一種合適的家用煤氣泄露報警器切實必要。 盡管在一般條件下,煤氣是一種安全性高的燃氣,但如果其在空氣中含量達到特定濃度時,就會發(fā)生燃爆,煤氣報警器就是在發(fā)生燃爆前提醒人們盡早的發(fā)現(xiàn)隱患,解決隱患[1]。在具體報警器設(shè)計當中,應(yīng)對元器件的選擇嚴格把關(guān),保證系統(tǒng)的準確性,才有可能投入到居民的日常使用中。隨著科學技術(shù)的不斷進步以及人們對高功能產(chǎn)品的日益青睞,一種具備高度集成化、智能化的單片機得到了廣泛的應(yīng)用,它的發(fā)展前景是巨大的,無論在商業(yè)運營還是工業(yè)生產(chǎn)中,單片機可謂是無處不在,他的數(shù)量不僅遠超過世界范圍內(nèi)計算機總和,甚至要比世界人口數(shù)還多。本設(shè)計是單片機聯(lián)系實際的一個典型應(yīng)用,基于單片機的煤氣報警器是通過檢測管道泄漏的CO濃度作為條件判斷報警的[2];若這類氣體泄漏達到爆炸極限時,可讓單片機處理發(fā)出事故聲光警報,同時起動排氣扇或油煙機等通風設(shè)備,以免爆炸,造成巨大傷害。 1.2 家用煤氣報警器整體方案設(shè)計與選定 為了實現(xiàn)煤氣報警器所具備的各項功能,首先應(yīng)制定一個充分又切合實際的設(shè)計方案,該方案要能考慮到設(shè)計中的各個環(huán)節(jié),將自動化、智能化綜合運用到實際設(shè)計中,發(fā)揮該設(shè)計的實際意義[3]。以下是兩類比較典型的煤氣報警器設(shè)計方案: 方案1:經(jīng)由氣敏傳感器將采集的濃度模擬信號v送入比較器中,與其內(nèi)部參考電壓vr進行比對,在兩者電壓幅值相等的附近,輸出電壓會產(chǎn)生躍變,對應(yīng)輸出1或0,由電平來控制報警電路的運作。而比較器負端也可接電位器來調(diào)節(jié)參考電壓vr,用于報警靈敏度的調(diào)節(jié)。 優(yōu)點:電路簡易。 缺點:可擴展性不足,實現(xiàn)的功能有限。 方案2:以單片機為控制核心,將氣敏傳感器采集的濃度模擬信號送入A/D轉(zhuǎn)換后輸出8位數(shù)字信號,經(jīng)由單片機I/O輸入并與程序預設(shè)警戒值比對,根據(jù)比對結(jié)果發(fā)出多個控制信號驅(qū)動一系列的聯(lián)動措施。例如環(huán)境濃度顯示,燈光指示,電磁閥控制等。 優(yōu)點:高度可靠性、可控性、智能性。 缺點:相比方案1電路結(jié)構(gòu)較復雜。 就當前發(fā)展的趨勢來看,傳感器的應(yīng)用愈來愈偏向智能化,可控化。方案1中采用純模擬電路,結(jié)構(gòu)簡單,但可控性差,所采用的運放比較器涉及到精度及穩(wěn)定性,所以對預警濃度的控制不宜用在事故報警中。方案2中以單片機作為控制核心,對送入其內(nèi)部的數(shù)字信號通過編寫程序進行分析比較,具有深度的可調(diào)性,可控性,靈活性。且穩(wěn)定性高。 1.3 總體設(shè)計思路 1.3.1煤氣報警系統(tǒng)結(jié)構(gòu)分析 根據(jù)方案2的設(shè)計思路,首先明確該報警器由三部分組成:濃度檢測電路、單片機控制系統(tǒng)、報警電路。分析后擬定的該煤氣報警器的工作結(jié)構(gòu)如圖1-1:
其中以單片機為核心,濃度檢測為輸入,報警電路為輸出,只有三部分協(xié)同工作才能組成完整的煤氣報警器系統(tǒng)。在具體的單元電路設(shè)計中,也要遵循布局合理,結(jié)構(gòu)清晰的基本要求。 1.3.2煤氣報警器設(shè)計流程 從初期制定煤氣報警器的設(shè)計方案直到最后的實物成型,一般需要經(jīng)歷四個階段: 1.硬件電路設(shè)計 在明確設(shè)計目標后,需要運用專業(yè)知識對家用型煤氣報警器的各項功能進行實現(xiàn),了解每項功能所對應(yīng)的單元電路的組成[4]。由于現(xiàn)今計算機的大量普及,電子設(shè)計自動化類別的軟件在相關(guān)行業(yè)中的應(yīng)用愈加廣泛,作為一種模擬環(huán)境下的電路設(shè)計,它發(fā)揮著十分重要的作用,本設(shè)計的第一部分也就是基于計算機下的煤氣報警器電路的模擬。 2.元器件的選擇 在模擬電路搭建過程中,考慮各單元電路所要用到的電子元器件的選擇,對所選的芯片應(yīng)掌握它各個引腳的功能,在實現(xiàn)同樣功能的條件下,應(yīng)盡量選取常用的、結(jié)構(gòu)簡單的、成本較低的元件,對于一件產(chǎn)品的接受程度一方面取決于功能,而另一方面往往取決于價格,綜合考慮以上因素,完成模擬電路的設(shè)計, 3.MCU程序編寫 要使模擬的煤氣報警器電路在計算機環(huán)境中運行,需要設(shè)計單片機主程序來驅(qū)動仿真電路中的MCU,單片機通過設(shè)定的程序來實現(xiàn)對輸入輸出口的信息交互和控制,傳感器采集到的信息才能送入,報警控制電路才能正常運行。將程序?qū)懭雴纹瑱C后進行電路仿真模擬,通過觀察各單元電路的工作情況進行硬件調(diào)試和程序修改。 4.實物的焊接 在確保仿真電路工作符合設(shè)計要求后,需要進行元器件的實物收集和焊接,元件的焊接平臺選用15X9洞焊接板,它的優(yōu)點是布線自由度高,但是焊點過多過于雜亂,主要用于實驗階段的實物設(shè)計,待實物通過各項標準,實際測試穩(wěn)定后,可考慮用軟件對設(shè)計原理圖PCB封裝后進行自動布線,制作特定的PCB焊接板。它的集成度高,布局清晰,安全性、穩(wěn)定性優(yōu)良,主要用于電子產(chǎn)品的量產(chǎn)化。
2 設(shè)計分析 2.1 功能要求 家用煤氣報警器從檢測到的濃度信號送入單片機控制芯片,到單片器同時發(fā)出若干條控制指令,各個單元電路協(xié)同配合,首先是氣敏傳感器通過對周圍環(huán)境中co濃度進行實施檢測,將輸出的濃度信號送入A/D轉(zhuǎn)換芯片完成對信號的數(shù)字化處理,再送入單片機I/O口完成數(shù)據(jù)交換和判斷,此時根據(jù)判斷結(jié)果單片機內(nèi)部會產(chǎn)生不同的輸出控制信號,決定煤氣報警器處于安全工作狀態(tài)還是告警情況,并將濃度信息實時顯示到LED數(shù)碼管中,當處于一般的正常工作狀態(tài)時,電磁閥默認由控制器信號控制繼電器來驅(qū)動打開,使煤氣在管道內(nèi)流通,若需要手動控制電磁閥開合,可以通過撥動開關(guān)來控制電磁閥狀態(tài);當處于報警狀態(tài)時,執(zhí)行聲光報警并啟動排氣裝置,將周圍空氣中的CO排出室外,同時通過控制器讓繼電器驅(qū)動電磁閥閉合,阻斷煤氣泄漏的根源,避免危險事故的發(fā)生[5-6]。 報警器發(fā)出聲光報警提示,一方面燈光提示可以讓人們更直觀的察覺到煤氣泄漏,給人們發(fā)出一種危險信號,同時聲音報警傳播的空間范圍比較大,能有效地對室內(nèi)人員傳達信息,常用的蜂鳴器,集成了音樂芯片的音樂報警器等,本系統(tǒng)采用的是蜂鳴器報警。 系統(tǒng)報警功能模塊如圖2-1所示:
2.2 硬件選擇 2.2.1AT89C52單片機說明   AT89C52是51系列中常用的單片機,作為AT89C51的升級版,它的片內(nèi)集成8kb的可重復擦寫的FLASH Memory型程序存儲器只讀程序存儲器,是一種低壓、高能的CMOS型8位微處理器,壽命高于1000寫/擦循環(huán),通稱單片機(MCU)。它具有3個十六位的可編程計數(shù)(Counter)/定時器(Timer)中斷,三十二條可編程的I/O線路,八個中斷源,并集成了片內(nèi)震蕩器及時鐘電路,與其他MCS-51相兼容[7-10]。它的常用封裝形式如圖2-2。 2.2.2氣敏傳感器 傳感器(Sensor)是一種具備檢測功能的集成器件,它能夠感知周圍所測量的信息,并能把此類信息依據(jù)特定的規(guī)則轉(zhuǎn)化為電相關(guān)信號或其它要求形式的信息量,來提供信息的傳送、處理、記載、控制、顯示等要求。所以它作為實現(xiàn)自檢功能及自控功能的重要環(huán)節(jié)。目前的傳感器按輸入量、原理、結(jié)構(gòu)不同分為數(shù)十種,各類傳感器廣泛地用于工業(yè)生產(chǎn)和商業(yè)運營中[11]。 隨著科技發(fā)展的日新月異,應(yīng)用于家用設(shè)備的傳感器也開始普及。煤氣報警器就是一種利用傳感器來監(jiān)測一氧化碳有無泄漏,以預防煤氣泄漏引發(fā)的爆炸和不完全燃燒所引起的煤氣中毒,它屬于氣敏傳感器的一種。從作用機理上,氣敏型傳感器主要分為兩種:接觸點燃式傳感器以及半導體式氣體傳感器。 半導體氣體傳感器主要是通過把白金或鈀等貴金屬添加在SnO2等N型氧化物半導體上構(gòu)成的?扇夹源郎y氣體在它的表面發(fā)生化學反應(yīng)改變金屬氧化物的電導率,繼而感知可燃性氣體濃度變化。由于在特定的溫度范圍內(nèi)才可以發(fā)生所需的此類反應(yīng),因此,傳感器的電阻絲需加熱[12-13]。  接觸點燃式傳感器是通過燃氣和催化劑接觸并發(fā)生燃燒,使敏感材料線圈的阻值產(chǎn)生變化繼而感測燃氣濃度。此類傳感器,是由貴金屬催化劑的多孔隙氧化鋁貼附于白金線圈表面組成的。  本設(shè)計采用MQ-2型半導體氣敏傳感器, 它的探測區(qū)間廣、靈敏系數(shù)高、響應(yīng)迅速、穩(wěn)定性優(yōu)異、壽命久,適用于對液化氣、煙霧、甲烷、氫氣、酒精等的檢測?捎糜趯Ρ驹O(shè)計中煤氣濃度的探測。 MQ-2型半導體氣敏傳感器的規(guī)格如下表2-1:
MQ-2在標準環(huán)境下測試的靈敏度特性曲線如圖2-5所示:
它的溫濕度特性如圖2-6所示:
 它的基本電路如圖2-6所示,由H-H組成加熱電路,A和B為傳感器提供了工作電壓并且B作為信號輸出。VRL 即為輸出電壓,可通過調(diào)節(jié)RL的阻值還進行濃度的動靜態(tài)校準,在煤氣報警值的設(shè)定方面,應(yīng)嚴格按照煤氣濃度爆炸下限的25% LEL進行設(shè)定,家用的煤氣主要為焦爐煤氣,據(jù)表2-2知:焦爐煤氣的爆炸下限是4.5% VOL,所以報警器的設(shè)定值應(yīng)為它的25% LEL[14]。 根據(jù)計算:  由傳感器MQ2的參數(shù)可得煤氣爆炸濃度設(shè)定值: 故煤氣報警器的報警值應(yīng)設(shè)定為2800ppm。 2.2.3A/D轉(zhuǎn)換器 A/D轉(zhuǎn)換器是一種能將輸入模擬電壓(電流)轉(zhuǎn)換成與它成正比的數(shù)字信號。即把被控對象的各類模擬信號轉(zhuǎn)換成計算機可以識別的數(shù)字信號。A/D轉(zhuǎn)換器的種類很多,從原理上大致可分為四類:計數(shù)器式A/D轉(zhuǎn)換器、逐次逼近式A/D轉(zhuǎn)換器、并行A/D轉(zhuǎn)換器、雙積分式A/D轉(zhuǎn)換器。 作為計數(shù)式A/D轉(zhuǎn)換器,它的結(jié)構(gòu)相對簡易,但由于轉(zhuǎn)換的速率過慢而很少采用,而并行A/D轉(zhuǎn)換器,它的轉(zhuǎn)換速度雖然很快但由于構(gòu)造復雜價格較高,一般只適用在要求很高的場合,雙積分式A/D轉(zhuǎn)換器轉(zhuǎn)換精度高,但是速度仍不夠理想,多用于數(shù)字測量儀表中。本設(shè)計采用的ADC-0832型逐次逼近式A/D轉(zhuǎn)換器精度較高,轉(zhuǎn)換速度快,結(jié)構(gòu)也比較簡單[15]。 ADC-0832 是一種雙通道、八位分辨率A/D轉(zhuǎn)換模塊,它的工作頻率是250 千赫茲,轉(zhuǎn)換時間是32微秒,因為它體積小,兼容性好,功耗低,總功耗僅為15mW,所以深受單片機愛好者及企業(yè)歡迎,它的封裝及引腳圖如圖2-8所示:
ADC-0832的工作原理是: 將傳感器采集到模擬電壓Vin信號送入Ch0通道,A/D轉(zhuǎn)換器片內(nèi)有一個D/A轉(zhuǎn)換器,首先向片內(nèi)D/A轉(zhuǎn)換器輸入10000000,如果電壓比較器:Vin > Vn( Vn為片內(nèi)的D/A轉(zhuǎn)換輸出,Vin為A/D轉(zhuǎn)換器的輸入電壓),則N位寄存器的第一位置1;(若Vin < Vn,則寄存器首位寫0);再向D/A轉(zhuǎn)換輸入1100 0000(首位寫0時,輸入0111 1111),若Vin > Vn則寄存器第二位置1(若Vin < Vn,則寫0);再向D/A轉(zhuǎn)換輸入1110 0000(或0011 1111),若Vin > Vn則寄存器第三位置1(若小于,則寫0);順次執(zhí)行,直至寄存器第8位賦值結(jié)束,控制邏輯監(jiān)測到比較放大器進行8次后,Eoc輸入信號,讓A/D轉(zhuǎn)換器將結(jié)果通過鎖存緩存器輸出至D0~D9。 2.2.4LED數(shù)碼管 LED數(shù)碼顯示管是由若干個獨立的發(fā)光二極管構(gòu)成,它的內(nèi)部進行封裝后組成一位形如“8”的元件,當數(shù)碼管特定的段加上電壓后,這些特定的段就會發(fā)亮,一般條件下,單一的發(fā)光二極管的電流低于30mA。將發(fā)光二極管的陽極并聯(lián),將并聯(lián)端接到電源正極,此接法叫做共陽極數(shù)碼管,相反地,發(fā)光二極管的陰極并聯(lián),將并聯(lián)端接到電源負極,即為共陰數(shù)碼管。四位數(shù)碼管是由4個單數(shù)碼管內(nèi)部封裝后顯示4位數(shù)字,它的應(yīng)用極其廣泛,本設(shè)計選用3461AS四位數(shù)碼管,用于實時顯示周圍環(huán)境中煤氣濃度,它的引腳結(jié)構(gòu)如下圖2-9:
2.2.5繼電器   繼電器作為一類電子控制元件,它包括控制系統(tǒng)(輸入回路)、被控系統(tǒng)(輸出回路),廣泛地在自控電路中應(yīng)用,它實際上是用“一個較小的電流控制大電流的開關(guān)”,起到安全保護功能,并能進行自動調(diào)整,轉(zhuǎn)換電路。在單片機控制系統(tǒng)中,繼電器裝置作為單片機與其它高功率負載的中介,發(fā)揮控制作用。三極管起到放大作用。 本設(shè)計采用的是電磁式繼電器,它是一種利用輸入回路中電磁鐵芯與銜鐵之間的吸合作用,實現(xiàn)自動開關(guān)控制,它的平面結(jié)構(gòu)如圖,單片機對氣敏傳感器傳入的值進行分析判斷,依據(jù)結(jié)果來控制對應(yīng)的引腳輸出高低電平,決定繼電器的電磁線圈內(nèi)是否有電流流通,若有電流流通,銜鐵吸合并驅(qū)動負載電路運行。 2.3 軟件選擇 2.3.1 搭建電路仿真環(huán)境 目前市場上的電路原理圖繪制類軟件有很多種,比較常用的有Protel99se、Multism、Proteus、DXP2000等。 Protel軟件能夠?qū)崿F(xiàn)簡易的模擬和數(shù)字電路的設(shè)計與仿真,擁有完善的PCB封裝設(shè)計功能。Proteus軟件能夠進行直觀的模擬、數(shù)字電路還有單片機仿真,更高級的ARM仿真,功能更加完善,并能勝任一般的PCB封裝板設(shè)計。 本設(shè)計采用的是Proteus軟件來進行原理圖繪制與仿真,他能最大限度地模擬煤氣報警器各單元的功能,效果直觀,調(diào)試方便。 2.3.2 搭建單片機程序開發(fā)環(huán)境 單片機應(yīng)用程序是讓單片機完成一系列的人們行動的程序指令,最終具有某種特定的功能。Keil C51能兼容51系列的單片機,既可以用匯編語言調(diào)試開發(fā)也可以在C語言環(huán)境開發(fā)的工具。本設(shè)計采用C語言編寫程序,結(jié)構(gòu)簡單,程序直觀、易懂,后期調(diào)試修改方便。
3 總體設(shè)計與實現(xiàn) 3.1系統(tǒng)總體框架 根據(jù)系統(tǒng)的需求分析,該系統(tǒng)主要實現(xiàn)以下功能: (1)濃度監(jiān)測:由傳感器來完成對周圍環(huán)境中煤氣濃度的采集并將模擬電壓轉(zhuǎn)換成8位濃度信號送入單片機分析判斷。 (2)數(shù)碼顯示:直觀地反映周圍空氣中煤氣濃度,有助于人們提前發(fā)現(xiàn)隱患。 (3)聲光報警:發(fā)出報警時,利用聲音和燈光傳達危險信號。 (4)風扇驅(qū)動:在報警發(fā)生時,驅(qū)動風扇工作將室內(nèi)煤氣濃度高的空氣排出到室外。 (5)電磁閥通斷:電磁閥門能手動控制,且能自動應(yīng)急關(guān)閉,防止煤氣進一步泄漏。 該系統(tǒng)的基本結(jié)構(gòu)如圖3-1:
程序設(shè)計的流程圖如圖3-2:
3.2 子模塊的設(shè)計與實現(xiàn) 3.2.1 傳感器及A/D轉(zhuǎn)換模塊   由于該設(shè)計采用的MQ-2傳感器輸出的是0-5V電壓量,不能直接與單片機I/O口進行通信,在A / D的模擬信號轉(zhuǎn)換成8位的數(shù)字信號后才能送入單片機內(nèi)。此外,還應(yīng)考慮到傳感器在初始工作時應(yīng)預熱一段時間后,才能正常檢測濃度,在本設(shè)計中,傳感器通過隨濃度正相關(guān)變化的電壓檢測輸出5v以內(nèi)可變電壓,送至CHO通道,待ADC0832模擬信道轉(zhuǎn)換完成后,輸出8位數(shù)字信號。 程序設(shè)計:傳感器部分,通過設(shè)定一個預熱延時顯示程序(void yure();),用于傳感器初始工作時穩(wěn)定濃度檢測電路。帶預熱結(jié)束后,輸出模擬信號對A/D模塊輸入通道進行選擇:Di=0,Do=1對應(yīng)Ch0單相輸入通道,由單片機控制CS_置0驅(qū)動ADC0832程序?qū)in送入,至第19 個脈沖信號時完成數(shù)據(jù)的輸出,表示一次模數(shù)轉(zhuǎn)換結(jié)束,將CS_端口置1后數(shù)據(jù)傳入單片機內(nèi)進行處理。 3.2.2 LED數(shù)碼顯示模塊 為了能實時了解傳感器的工作情況,直觀地顯示周圍空氣中煤氣濃度的信息,可以在電路中加入一塊四位數(shù)碼顯示管。該設(shè)計采用了3461AS共陰4位數(shù)碼管,通過對送入單片機內(nèi)的8位數(shù)字信號進行轉(zhuǎn)換,然后控制段位引腳來完成數(shù)字0-9999PPM的顯示,通過查表得到煤氣發(fā)生爆炸的濃度底限,根據(jù)底限值的25%觸發(fā)報警,計算后得,煤氣報警器的報警濃度設(shè)定為2800ppm較為合適,當濃度值超過2800PPM時,觸發(fā)報警電路。
程序設(shè)計: 將4位共陰極數(shù)碼管的八個段引腳分別接到單片機AT89C52的P1.0-P0.7口,控制數(shù)碼管段選(sbit dled=P1^0)的9個元素數(shù)組定義為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和一個有源蜂鳴器,單獨綠色燈亮時表示煤氣濃度在安全范圍之內(nèi),紅色燈點亮時表示煤氣濃度超過預設(shè)值,同時驅(qū)動蜂鳴器進行聲音報警。 程序設(shè)計:兩個工作狀態(tài)指示燈分別接入P3.7、P3.6口(ledg=P3^7,Ledr =P3^6),有源蜂鳴器接入P3.4口(buzzer=P3^4),當濃度高于設(shè)定值時有源蜂鳴器接入P3.4口(buzzer=P3^4),當濃度高于設(shè)定有源蜂鳴器接入P3.4口有源蜂鳴器接入P3.4口(buzzer=P3^4),當濃度高于設(shè)定值時,P3.7 P3.6置低電平,P3.4置高電平。濃度低于設(shè)定值時,輸出相反電平。
3.2.4 風扇控制模塊  風扇控制模塊主要用于警報發(fā)生時,驅(qū)動風扇將周圍中煤氣濃度含量超標的空氣排到室外,避免隱患的發(fā)生。當檢測濃度高于預設(shè)值時,單片機特定口產(chǎn)生低電平信號,經(jīng)過三極管放大后啟動排氣裝置。當濃度低于設(shè)定值時,排氣裝置關(guān)閉。  程序設(shè)計:通過P3.2口(sbit motor=P3^2)輸出控制電平,當濃度高于設(shè)定值時,P3.2輸出低電平,使三極管由截止區(qū)工作到飽和區(qū),驅(qū)動負載回路。當濃度低于設(shè)定值時,P3.2輸出高電平。 3.2.5 電磁閥控制模塊 電磁閥裝置是本設(shè)計報警電路的重要組成部分,當煤氣濃度在安全范圍內(nèi)時,可以通過撥動開關(guān)手動控制電磁閥的導通與關(guān)斷,當空氣中煤氣濃度高于預設(shè)值時,便會自動關(guān)閉電磁閥,直到濃度小于設(shè)定值,電磁閥導通。檢測濃度高于預設(shè)值時,單片機P3.3口發(fā)出低電平信號,經(jīng)過三極管放大后送入繼電  器使得繼電器的輸入回路導通,銜鐵吸合,驅(qū)動電磁閥關(guān)斷。待危險解除后,P3.3引腳輸出高電平,驅(qū)動電磁閥打開。 程序設(shè)計:通過P3.3口(sbit relay=P3^3)輸出控制電平,當濃度高于預設(shè)值時,P3.3發(fā)出高電平信號,使電磁繼電器銜鐵彈開,無法形成輸出回路,電磁閥閉合。濃度低于設(shè)定值時,輸出低電平。 3.2.6模擬濃度輸入模塊  在本設(shè)計中,模擬濃度輸入量是用來檢測MCU控制模塊和報警電路的工作是否在正常狀態(tài),通過多個按鍵將不同濃度的信號送入單片機I/O口判斷并控制報警電路。一定程度上模擬了環(huán)境中不同濃度的煤氣信號,便于進行裝置調(diào)試。  程序設(shè)計:通過多路開關(guān)將報警器切換至測試模式,在該模式下,兩個按鈕開關(guān)(sbit key2=P1^6;sbit key3=P1^7)分別代表兩個不同的煤氣濃度值輸入當key2閉合時,P1.6口處于低電平,MCU定義模擬量3800ppm輸入,觸發(fā)報警電路,key3閉合時,P1.7口處于低電平,MCU定義模擬量500ppm輸入,轉(zhuǎn)為安全工作狀態(tài)。
4 仿真與調(diào)試   在Keil uVision4環(huán)境下完成程序編譯,并將編寫好的程序進行調(diào)試,選擇Project-Build target,之后根據(jù)Build Output界面中的提示來完善程序,待符合要求后生成Hex文件,將Hex文件加載到Proteus仿真圖中的單片機內(nèi),選擇Source-Add Source Files單擊New并選擇編譯完成的Hex文件并點擊確定。 接下來進行Proteus仿真運行,選擇Debug-Start Debuging,通過調(diào)節(jié)滑阻來模擬氣敏傳感器的輸出量,觀察檢測電路和控制電路是否滿足設(shè)計要求。
總結(jié) 目前煤氣已經(jīng)成為生產(chǎn)生活中不可缺少的燃氣資源,面對每年時有發(fā)生的煤氣安全事故,每一起事故都給人民生活、社會安全造成了極大危害,從事故中反思總結(jié),避免類似事件的發(fā)生,也是本次設(shè)計所要達到的目的。 本篇文檔對該設(shè)計的內(nèi)容做了明確的闡述,從選題背景與意義出發(fā),擬定初步設(shè)計方案,確定設(shè)計思路來實現(xiàn)所制定的功能,從硬件選擇到軟件仿真,再到最后的實物焊接,貫徹了一個電子產(chǎn)品“構(gòu)想-設(shè)計-生產(chǎn)”的關(guān)鍵環(huán)節(jié)。 雖然基本完成了該系統(tǒng)所要求實現(xiàn)的功能,但仍然存在著諸多不足之處,出于仿真的角度考慮,對單元電路的仿真設(shè)計與實際有一定的差別,仿真電路中主要針對的是功能的直觀表現(xiàn),簡化了對單元電路的設(shè)計,而實物中還需要考慮電路保護、設(shè)備驅(qū)動能力等因素。 其次,本設(shè)計只是家用煤氣報警器中一個比較典型的設(shè)計,設(shè)計功能還有欠缺[16],若能將小區(qū)各戶家中的煤氣報警器實現(xiàn)無線通信,將危險情況第一時間傳達給專業(yè)搶修人員,為避免事故提供了更佳的途徑。
參考文獻 [1]趙婷.美國煙霧報警器的統(tǒng)計文檔[J].消防科學與技術(shù),2010(3):183-184. [2]陳文平.有關(guān)吸氣式煙霧探測火災報警系統(tǒng)設(shè)計的探討[J].福建建設(shè)科技,2009(4):64-65. [3]孫巨勇.基于單片機的煙霧報警器的設(shè)計探究[J].電子測試,2013(15):56-57. [4]費紅波,吉錘.可燃氣體報警器及其檢測標定系統(tǒng)的設(shè)計[J].江蘇現(xiàn)代計量,2010(2):38-40. [5]毛星.家用煙霧報警器[J].消防科學與技術(shù),2012(9):940. [6]王勇等.室內(nèi)一氧化碳安全監(jiān)控系統(tǒng)設(shè)計[J].工業(yè)儀表與自動化裝置, 2011:20-50. [7]徐愛卿,孫涵芳,盛煥鳴.單片微型計算機應(yīng)用和開發(fā)系統(tǒng)[M].北航出版社,2012:14-17. [8]李全利.單片機原理及應(yīng)用技術(shù)[M].北京:高等教育出版社,2004:225-234. [9]胡漢才.單片機原理及接口技術(shù)(第2版)[M].清華大學出版社,2011:66-78. [10]王曙霞.單片機實驗與實訓指導[M].西安:西安電子科技大學出版社,2007. [11]陳榮忠,陳莉.聲表面波氣體傳感器的理論分析[J],傳感器技術(shù),1997(3):27-30. [12]阮維國.TGS813型半導體氣敏傳感器及其在燃氣毒氣檢測中的應(yīng)用電路[J].現(xiàn)代科學儀器.1998(3):1-2. [13]李永生,楊莉玲.半導體氣敏元件的選擇性研究[J].傳感器技術(shù).2002(3): 1-3. [14]鄧麗芬.可燃氣體報警器檢定注意事項[J].中國計量,2011(06):112. [15]王百鳴.一種基于流水逐次逼近比較方式的模/數(shù)轉(zhuǎn)換器[J].微電子學,2001(2):92-93 [16]趙中國.火災自動報警系統(tǒng)設(shè)計方案有關(guān)問題的探討[J].鐵道標準設(shè)計,2005(4):98.
附錄1: 附錄4: 設(shè)計實物: 致謝 本文檔是在張老師的悉心指導下完成的,在文檔撰寫的整個過程中, 張老師都極負責任,無論從選題指導、文檔框架到細節(jié)修改,都給予了我細致全面的指導,并提出了很多寶貴的意見與建議,我的文檔才能如此順利地完成。在此,我要感謝張老師。 同時,我還要感謝在一起愉快的度過大學生活的每個可愛的同學們和尊敬的老師們,正是由于你們的幫助和支持,我才得以克服重重困難和疑惑,直至本文的順利完成。 最后,我要向百忙之中抽時間對本文進行審閱,評議和參與本人文檔的各位老師表示感謝。
單片機源碼:
- #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; //綠燈-工作狀態(tài)指示燈
- 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; //定義四位數(shù)碼管
-
- 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時,數(shù)碼管不顯示
- {
- P2=~0x0f;
- P0=Display_Buffer[0];
- }
- else
- {
-
- P0=Display_Buffer[qian];
- P2=~0x01; //11111110 P2.0 千位
- delayms(1);
- P2=0xff; //關(guān)位去殘影
-
- 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]; //顯示結(jié)束-數(shù)碼管
- 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) //模擬濃度輸入開關(guān)
- {
- 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轉(zhuǎn)換過程
- {
- uchar i,dat1=0,dat2=0;
- cs=0; //使能(驅(qū)動芯片)
- clk=0;
- dio=1;
- _nop_();_nop_(); //延時2us
- clk=1; //上升沿
- _nop_();_nop_(); //延時2us
-
- clk=0; //第一個脈沖結(jié)束
- dio=1;
- _nop_();_nop_();
- clk=1; //上升沿
- _nop_();_nop_();
- clk=0; //第二個脈沖結(jié)束
- dio=0;
- _nop_();_nop_();
- clk=1; //上升沿
- dio=1;
- _nop_();_nop_();
- clk=0; //A/D轉(zhuǎn)換開始(第四個下降沿)
- dio=1;
- _nop_();_nop_();
- for(i=0;i<8;i++) //讀取8位數(shù)據(jù)
- {
- clk=1;_nop_();_nop_();
- clk=0;
- dat1=dat1<<1;
- if(dio)dat1|=0x01;
- }
- for(i=0;i<8;i++) //讀取8位相反數(shù)據(jù)
- { dat2=dat2>>1;
- if(dio)dat2=dat2|0x80;
- clk=1;_nop_();_nop_();
- clk=0;
- }
- cs=1; //A/D轉(zhuǎn)換結(jié)束;//讀取完成釋放總線
- return (dat1==dat2)?dat1:0; //數(shù)據(jù)效驗如果正確則返回讀取數(shù)據(jù)
- }
-
- void main() //主函數(shù)
- {
- if(cs!=0)
- {
- yure();
- ch=ledppm;
- }
- TMOD = 0x01; //設(shè)定時方式1,16位定時器
- frq = 0x00;
- TH0 = 0x00; //賦初值
- TL0 = 0xff; //賦初值 //賦初值
- TR0 = 1; //開定時器T0 //開始計數(shù)
- IE = 0x82; //允許中斷 // 0x82;
-
- ledg =1;
- ledr =1;
- buzzer=1;
- relay=1;
- motor =1; //單片機初始化結(jié)束
- while(1) //數(shù)據(jù)判斷與處理
- {
- ppm=get_ad_result()*10000.0/255; //實際濃度值
- ledppm=get_ad_result()*9999.0/255; //4位濃度顯示-數(shù)碼管
-
- 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格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便大家保存):
煤氣報警器設(shè)計.doc
(1.8 MB, 下載次數(shù): 183)
2018-5-18 09:45 上傳
點擊文件名下載附件
|