于驕洋,王文鑫, 唐雪瑩
(北京工業(yè)大學(xué),北京,100124)
火災(zāi)事故往往是因?yàn)槿藗兊南腊踩WR(shí)薄弱或存在誤區(qū)從而導(dǎo)致悲劇發(fā)生[1]。嚴(yán)峻的事實(shí)讓人們逐漸認(rèn)識(shí)到建立良好火災(zāi)報(bào)警機(jī)制的重要性,并隨科技的進(jìn)步對火災(zāi)報(bào)警系統(tǒng)有了更加多樣化、智能化的需求。
本設(shè)計(jì)基于STC89C52單片機(jī),在傳統(tǒng)火災(zāi)報(bào)警器的簡單聲光報(bào)警的功能基礎(chǔ)上,增加了液晶顯示以及通過液晶和按鍵調(diào)整報(bào)警閾值的功能,為報(bào)警系統(tǒng)在不同環(huán)境中的使用增加可變通性,方便用戶的使用;同時(shí),電話報(bào)警的功能解決了當(dāng)火災(zāi)發(fā)生時(shí)用戶不在家無法得知災(zāi)情的問題,并相較于短信報(bào)警的提醒更加引人注意;傳感器的運(yùn)用以及通過編程實(shí)現(xiàn)的延時(shí)報(bào)警可以更加準(zhǔn)確、及時(shí)地進(jìn)行報(bào)警。系統(tǒng)使用方便、價(jià)格低廉,適用于各種無煙環(huán)境,可有效地減少由火災(zāi)引起的人員傷亡和財(cái)產(chǎn)損失。
系統(tǒng)的總體結(jié)構(gòu)示意圖如圖1所示。本系統(tǒng)以STC8952單片機(jī)為核心,采用5V鋰電池供電,配合內(nèi)部振蕩器和外部手動(dòng)復(fù)位電路構(gòu)成單片機(jī)最小系統(tǒng),涵蓋按鍵電路、溫度檢測電路、煙霧檢測電路、液晶顯示電路、聲光報(bào)警電路以及電話報(bào)警電路六個(gè)功能電路,配合軟件編程可實(shí)現(xiàn)所需功能。
圖1 系統(tǒng)總體結(jié)構(gòu)示意圖
系統(tǒng)的工作機(jī)制為:煙霧與溫度檢測電路通過傳感器不間斷地實(shí)時(shí)監(jiān)測所處環(huán)境的煙霧濃度和溫度,并將二者通過LCD液晶顯示器呈現(xiàn)給用戶;在報(bào)警系統(tǒng)開始工作后,可根據(jù)需要通過按鍵電路中的設(shè)置鍵與加、減按鍵結(jié)合液晶顯示隨時(shí)調(diào)整煙霧濃度或溫度的報(bào)警限。當(dāng)按下布防鍵后,系統(tǒng)進(jìn)入布防狀態(tài):若監(jiān)測的煙霧濃度或溫度超過所設(shè)置的報(bào)警限,系統(tǒng)確認(rèn)為非誤報(bào)的危險(xiǎn)后進(jìn)行聲光報(bào)警,并通過GSM模塊對用戶進(jìn)行電話報(bào)警。
本系統(tǒng)選擇MQ-2氣體傳感器收集煙霧濃度模擬信號,再利用模數(shù)轉(zhuǎn)換芯片ADC0832將其轉(zhuǎn)換為可被單片機(jī)解讀的數(shù)字信號,電路原理圖如圖2所示。
圖2 煙霧檢測電路
MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫 (SnO2),工作的適宜溫度為200℃~300℃,當(dāng)傳感器所處環(huán)境中存在煙霧時(shí),傳感器的電導(dǎo)率隨空氣中煙霧濃度的增加而增大,而輸出電阻隨電導(dǎo)率的增大而降低,從而使輸出的模擬量越大[2]。
ADC8032是一種串行A/D數(shù)模轉(zhuǎn)換器,接口線路簡單,被廣泛地應(yīng)用于中低速測控系統(tǒng)中[3]。其DI與DO引腳分別代表數(shù)據(jù)信號輸入與輸出,二者在通信時(shí)并非同時(shí)有效,可并聯(lián)到一根數(shù)據(jù)線上與單片機(jī)的I/O口連接。
傳統(tǒng)的測溫方法主要依靠一些熱敏電子元器件進(jìn)行溫度采集,比如熱敏電阻等,這類方法存在精度低、速度慢、需額外增加轉(zhuǎn)換器件和電路的缺點(diǎn)[4]。而本設(shè)計(jì)采用的DS18B20溫度傳感器具有測溫精度高、連接方便、占用口線少等優(yōu)點(diǎn)。
如圖3所示,在使用時(shí)需將DS18B20的數(shù)據(jù)引腳與單片機(jī)的一個(gè)I/O口連接,二者可以通過1-Wire協(xié)議進(jìn)行通信,使單片機(jī)能夠通過傳感器將外界溫度讀出。
圖3 溫度檢測電路
原理圖如圖4所示。其中引腳RS、RW、E為LCD1602的功能控制端,D0~D7為數(shù)據(jù)端。
圖4 液晶顯示電路
在系統(tǒng)對環(huán)境監(jiān)測時(shí),液晶上會(huì)顯示當(dāng)前環(huán)境的煙霧濃度及溫度大??;當(dāng)煙霧濃度及溫度大小或其中之一超過報(bào)警閾值時(shí),液晶上會(huì)同時(shí)或單獨(dú)顯示“smoke”、“temp”字樣用以提示用戶危險(xiǎn)類型;當(dāng)用戶對報(bào)警閾值進(jìn)行修改時(shí),液晶上也會(huì)顯示相應(yīng)信息方便用戶操作。
令單片機(jī)一個(gè)I/O端口連接一個(gè)電阻并與PNP型三極管基極串聯(lián),集電極一端連接LED燈與蜂鳴器的并聯(lián)電路,發(fā)射極連接VCC,當(dāng)I/O口輸出低電平時(shí),三極管導(dǎo)通,從而達(dá)到控制LED的亮滅與蜂鳴器報(bào)警的目的。
本電路設(shè)計(jì)了四個(gè)按鍵,如圖6所示。
圖5 聲光報(bào)警電路
圖6 按鍵控制電路
當(dāng)按下布防鍵后,系統(tǒng)開始進(jìn)入對外可報(bào)警的布防狀態(tài)。而其余三項(xiàng)可以對報(bào)警的溫度,煙霧濃度進(jìn)行調(diào)節(jié),此功能通過1602液晶顯示屏顯示方便使用。當(dāng)按下一次設(shè)置鍵后,LCD1602液晶會(huì)切換到溫度報(bào)警閾值設(shè)置的頁面,如圖7所示;再摁下一次設(shè)置鍵會(huì)切換到煙霧濃度報(bào)警閾值設(shè)置頁面,如圖8所示;按下第三次設(shè)置鍵,液晶會(huì)重新回到煙霧濃度、溫度實(shí)時(shí)監(jiān)測頁面;當(dāng)液晶顯示閾值設(shè)置頁面時(shí),使用加、減鍵可據(jù)環(huán)境需要調(diào)整閾值。
圖7 溫度報(bào)警閾值調(diào)節(jié)顯示
圖8 煙霧報(bào)警閾值調(diào)節(jié)顯示
將帶有通信功能的GSM模塊SIM900A與單片機(jī)的P3.0與P3.1口連接實(shí)現(xiàn)二者的串口通信。P3.0與P3.1口的第二功能分別為串行口輸入和串行口輸出,通過這兩個(gè)端口,單片機(jī)與SIM900A可使用協(xié)議中的AT指令進(jìn)行實(shí)時(shí)通信,在聲光報(bào)警的同時(shí)對用戶手機(jī)撥打電話進(jìn)行報(bào)警,從而可以及時(shí)通知不在災(zāi)情附近的用戶盡快對災(zāi)情做出反應(yīng)以減少損失。
系統(tǒng)所配合的主程序邏輯框圖如圖9所示,利用C語言進(jìn)行程序編寫,以Keil作為軟件編程工具。
圖9 系統(tǒng)程序框圖
系統(tǒng)實(shí)時(shí)循環(huán)檢測環(huán)境中的煙霧濃度及溫度,在布防鍵按下后,系統(tǒng)進(jìn)入可報(bào)警狀態(tài)。若判斷為非誤報(bào)情況下煙霧濃度或溫度中有超出界定值的情況,則進(jìn)行報(bào)警;在監(jiān)測環(huán)境的同時(shí),系統(tǒng)會(huì)判斷是否有按鍵按下,從而進(jìn)行報(bào)警界定值的修改;在按下復(fù)位鍵后,單片機(jī)會(huì)回到初始狀態(tài),重新進(jìn)行煙霧濃度與溫度檢測。
設(shè)置以未觸發(fā)報(bào)警為條件的循環(huán),將煙霧濃度采集函數(shù)與溫度采集函數(shù)放置在循環(huán)中。
MQ-2實(shí)時(shí)檢測環(huán)境中的煙霧濃度,其輸出引腳將收集到的模擬量傳送給ADC0832的模擬輸入通道CH0。煙霧開始收集時(shí),令A(yù)DC0832的使能引腳CS為低電平,芯片被啟用。CLK接收時(shí)鐘信號,第一個(gè)下降沿前將DI置為高電平作為數(shù)據(jù)收集開始信號,第二、三個(gè)下降沿令DI分別為1、0,從而選擇CH0為模擬輸入通道,之后的8個(gè)時(shí)鐘信號里ADC0832會(huì)將收集到的模擬量轉(zhuǎn)化為8位二進(jìn)制數(shù)據(jù)傳到DO口,將其轉(zhuǎn)化為適配的煙霧濃度值用變量承接即可。
DS18B20的測量范圍為-55℃~+125℃,在它的寄存器中,溫度存儲(chǔ)值以補(bǔ)碼的格式存儲(chǔ),低字節(jié)的最低位變化1,代表溫度變化0.0625℃,因此只要將測到的數(shù)值乘以0.0625并參考符號位即可得到真實(shí)溫度。
RS=0,RW=0,E=高脈沖時(shí),液晶處于寫指令模式,指導(dǎo)1206的功能配置,系統(tǒng)開始運(yùn)行時(shí),令液晶處于此模式,向D0~D7寫入1206指令碼,即可完成液晶的初始化配置。
令RS=0,RW=1,E=1時(shí),液晶處于讀狀態(tài)模式,循環(huán)讀取存于D0~D7的狀態(tài)字,判斷最高位是否為0,若是則代表液晶處于“不忙”狀態(tài),此時(shí)才可以使LCD1602進(jìn)行讀或?qū)懖僮鳌?/p>
煙霧濃度與溫度收集完畢時(shí),先將收集到的數(shù)據(jù)轉(zhuǎn)換為字符串,令RS=1,RW=0,E=高脈沖,此時(shí)液晶處于寫數(shù)據(jù)狀態(tài),確定顯示位置的初始地址,設(shè)置循環(huán)使數(shù)據(jù)引腳循環(huán)接收字符串?dāng)?shù)據(jù),直到接收到結(jié)束符,完成內(nèi)容在LCD1602液晶上的顯示。
此功能的實(shí)現(xiàn)較為簡單,只需定義煙霧濃度、溫度兩個(gè)報(bào)警閾值變量,若單片機(jī)檢測到設(shè)置鍵按下相應(yīng)次數(shù),同時(shí)檢測到有加或減鍵按下,將相應(yīng)閾值變量加1或減1并送到LCD1602液晶顯示即可達(dá)到目的。
對于降低誤報(bào)的概率,編程時(shí)采用延時(shí)報(bào)警的方法。在發(fā)現(xiàn)煙霧濃度或溫度有超出界定值的情況后,系統(tǒng)不會(huì)立即進(jìn)行報(bào)警,而是延時(shí)一小段時(shí)間后繼續(xù)檢測煙霧濃度與溫度,若再次檢測的值仍然高于界定值,則判斷數(shù)值非誤報(bào),進(jìn)行報(bào)警。延時(shí)報(bào)警可以大大降低系統(tǒng)的誤報(bào)概率,使系統(tǒng)更加高效、準(zhǔn)確。
按鍵消抖用定時(shí)器0中斷, 每2ms進(jìn)入中斷,把掃描的按鍵的狀態(tài)儲(chǔ)存起來,再利用中斷進(jìn)行8次的掃描,看這八次是否都一致,如果8次狀態(tài)都一致,則可以說明處于穩(wěn)定狀態(tài),這樣就可以確定按鍵狀態(tài)了。利用這種方法可以避免延時(shí)消抖占用單片機(jī)的時(shí)間,轉(zhuǎn)化成按鍵狀態(tài)的判定而不是按鍵過程的判定,而8×2=16ms是小于一次按鍵完成的時(shí)間的,所以利用按鍵消抖可以更好地控制按鍵。
啟用單片機(jī)UART串口通信功能,在系統(tǒng)初始化時(shí),向串行數(shù)據(jù)緩沖寄存器SBUF中發(fā)送判斷SIM是否存在及SIM卡是否注冊網(wǎng)絡(luò)的指令,在串口中斷中實(shí)時(shí)接收SIM900A返回指令,若SIM卡已準(zhǔn)備好,將設(shè)置的標(biāo)志位變量置1。在發(fā)現(xiàn)警情后,在SBUF中寫入打電話的AT指令,即可對指定用戶撥打電話報(bào)警。
經(jīng)測試,智能火災(zāi)報(bào)警系統(tǒng)各電路正常運(yùn)行,可實(shí)現(xiàn)上述所需功能。
圖10 系統(tǒng)正在進(jìn)行報(bào)警
本系統(tǒng)以STC89C52單片機(jī)為基礎(chǔ),涵蓋多種實(shí)用功能,操作方便,成本低廉,能夠?qū)崿F(xiàn)在各種有火災(zāi)隱患的無煙環(huán)境下對火災(zāi)的報(bào)警作用,為人們帶來更多的便利。