于驕洋,王文鑫, 唐雪瑩
(北京工業大學,北京,100124)
火災事故往往是因為人們的消防安全常識薄弱或存在誤區從而導致悲劇發生[1]。嚴峻的事實讓人們逐漸認識到建立良好火災報警機制的重要性,并隨科技的進步對火災報警系統有了更加多樣化、智能化的需求。
本設計基于STC89C52單片機,在傳統火災報警器的簡單聲光報警的功能基礎上,增加了液晶顯示以及通過液晶和按鍵調整報警閾值的功能,為報警系統在不同環境中的使用增加可變通性,方便用戶的使用;同時,電話報警的功能解決了當火災發生時用戶不在家無法得知災情的問題,并相較于短信報警的提醒更加引人注意;傳感器的運用以及通過編程實現的延時報警可以更加準確、及時地進行報警。系統使用方便、價格低廉,適用于各種無煙環境,可有效地減少由火災引起的人員傷亡和財產損失。
系統的總體結構示意圖如圖1所示。本系統以STC8952單片機為核心,采用5V鋰電池供電,配合內部振蕩器和外部手動復位電路構成單片機最小系統,涵蓋按鍵電路、溫度檢測電路、煙霧檢測電路、液晶顯示電路、聲光報警電路以及電話報警電路六個功能電路,配合軟件編程可實現所需功能。

圖1 系統總體結構示意圖
系統的工作機制為:煙霧與溫度檢測電路通過傳感器不間斷地實時監測所處環境的煙霧濃度和溫度,并將二者通過LCD液晶顯示器呈現給用戶;在報警系統開始工作后,可根據需要通過按鍵電路中的設置鍵與加、減按鍵結合液晶顯示隨時調整煙霧濃度或溫度的報警限。當按下布防鍵后,系統進入布防狀態:若監測的煙霧濃度或溫度超過所設置的報警限,系統確認為非誤報的危險后進行聲光報警,并通過GSM模塊對用戶進行電話報警。
本系統選擇MQ-2氣體傳感器收集煙霧濃度模擬信號,再利用模數轉換芯片ADC0832將其轉換為可被單片機解讀的數字信號,電路原理圖如圖2所示。

圖2 煙霧檢測電路
MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫 (SnO2),工作的適宜溫度為200℃~300℃,當傳感器所處環境中存在煙霧時,傳感器的電導率隨空氣中煙霧濃度的增加而增大,而輸出電阻隨電導率的增大而降低,從而使輸出的模擬量越大[2]。
ADC8032是一種串行A/D數模轉換器,接口線路簡單,被廣泛地應用于中低速測控系統中[3]。其DI與DO引腳分別代表數據信號輸入與輸出,二者在通信時并非同時有效,可并聯到一根數據線上與單片機的I/O口連接。
傳統的測溫方法主要依靠一些熱敏電子元器件進行溫度采集,比如熱敏電阻等,這類方法存在精度低、速度慢、需額外增加轉換器件和電路的缺點[4]。而本設計采用的DS18B20溫度傳感器具有測溫精度高、連接方便、占用口線少等優點。
如圖3所示,在使用時需將DS18B20的數據引腳與單片機的一個I/O口連接,二者可以通過1-Wire協議進行通信,使單片機能夠通過傳感器將外界溫度讀出。

圖3 溫度檢測電路
原理圖如圖4所示。其中引腳RS、RW、E為LCD1602的功能控制端,D0~D7為數據端。

圖4 液晶顯示電路
在系統對環境監測時,液晶上會顯示當前環境的煙霧濃度及溫度大小;當煙霧濃度及溫度大小或其中之一超過報警閾值時,液晶上會同時或單獨顯示“smoke”、“temp”字樣用以提示用戶危險類型;當用戶對報警閾值進行修改時,液晶上也會顯示相應信息方便用戶操作。
令單片機一個I/O端口連接一個電阻并與PNP型三極管基極串聯,集電極一端連接LED燈與蜂鳴器的并聯電路,發射極連接VCC,當I/O口輸出低電平時,三極管導通,從而達到控制LED的亮滅與蜂鳴器報警的目的。
本電路設計了四個按鍵,如圖6所示。

圖5 聲光報警電路

圖6 按鍵控制電路
當按下布防鍵后,系統開始進入對外可報警的布防狀態。而其余三項可以對報警的溫度,煙霧濃度進行調節,此功能通過1602液晶顯示屏顯示方便使用。當按下一次設置鍵后,LCD1602液晶會切換到溫度報警閾值設置的頁面,如圖7所示;再摁下一次設置鍵會切換到煙霧濃度報警閾值設置頁面,如圖8所示;按下第三次設置鍵,液晶會重新回到煙霧濃度、溫度實時監測頁面;當液晶顯示閾值設置頁面時,使用加、減鍵可據環境需要調整閾值。

圖7 溫度報警閾值調節顯示

圖8 煙霧報警閾值調節顯示
將帶有通信功能的GSM模塊SIM900A與單片機的P3.0與P3.1口連接實現二者的串口通信。P3.0與P3.1口的第二功能分別為串行口輸入和串行口輸出,通過這兩個端口,單片機與SIM900A可使用協議中的AT指令進行實時通信,在聲光報警的同時對用戶手機撥打電話進行報警,從而可以及時通知不在災情附近的用戶盡快對災情做出反應以減少損失。
系統所配合的主程序邏輯框圖如圖9所示,利用C語言進行程序編寫,以Keil作為軟件編程工具。

圖9 系統程序框圖
系統實時循環檢測環境中的煙霧濃度及溫度,在布防鍵按下后,系統進入可報警狀態。若判斷為非誤報情況下煙霧濃度或溫度中有超出界定值的情況,則進行報警;在監測環境的同時,系統會判斷是否有按鍵按下,從而進行報警界定值的修改;在按下復位鍵后,單片機會回到初始狀態,重新進行煙霧濃度與溫度檢測。
設置以未觸發報警為條件的循環,將煙霧濃度采集函數與溫度采集函數放置在循環中。
MQ-2實時檢測環境中的煙霧濃度,其輸出引腳將收集到的模擬量傳送給ADC0832的模擬輸入通道CH0。煙霧開始收集時,令ADC0832的使能引腳CS為低電平,芯片被啟用。CLK接收時鐘信號,第一個下降沿前將DI置為高電平作為數據收集開始信號,第二、三個下降沿令DI分別為1、0,從而選擇CH0為模擬輸入通道,之后的8個時鐘信號里ADC0832會將收集到的模擬量轉化為8位二進制數據傳到DO口,將其轉化為適配的煙霧濃度值用變量承接即可。
DS18B20的測量范圍為-55℃~+125℃,在它的寄存器中,溫度存儲值以補碼的格式存儲,低字節的最低位變化1,代表溫度變化0.0625℃,因此只要將測到的數值乘以0.0625并參考符號位即可得到真實溫度。
RS=0,RW=0,E=高脈沖時,液晶處于寫指令模式,指導1206的功能配置,系統開始運行時,令液晶處于此模式,向D0~D7寫入1206指令碼,即可完成液晶的初始化配置。
令RS=0,RW=1,E=1時,液晶處于讀狀態模式,循環讀取存于D0~D7的狀態字,判斷最高位是否為0,若是則代表液晶處于“不忙”狀態,此時才可以使LCD1602進行讀或寫操作。
煙霧濃度與溫度收集完畢時,先將收集到的數據轉換為字符串,令RS=1,RW=0,E=高脈沖,此時液晶處于寫數據狀態,確定顯示位置的初始地址,設置循環使數據引腳循環接收字符串數據,直到接收到結束符,完成內容在LCD1602液晶上的顯示。
此功能的實現較為簡單,只需定義煙霧濃度、溫度兩個報警閾值變量,若單片機檢測到設置鍵按下相應次數,同時檢測到有加或減鍵按下,將相應閾值變量加1或減1并送到LCD1602液晶顯示即可達到目的。
對于降低誤報的概率,編程時采用延時報警的方法。在發現煙霧濃度或溫度有超出界定值的情況后,系統不會立即進行報警,而是延時一小段時間后繼續檢測煙霧濃度與溫度,若再次檢測的值仍然高于界定值,則判斷數值非誤報,進行報警。延時報警可以大大降低系統的誤報概率,使系統更加高效、準確。
按鍵消抖用定時器0中斷, 每2ms進入中斷,把掃描的按鍵的狀態儲存起來,再利用中斷進行8次的掃描,看這八次是否都一致,如果8次狀態都一致,則可以說明處于穩定狀態,這樣就可以確定按鍵狀態了。利用這種方法可以避免延時消抖占用單片機的時間,轉化成按鍵狀態的判定而不是按鍵過程的判定,而8×2=16ms是小于一次按鍵完成的時間的,所以利用按鍵消抖可以更好地控制按鍵。
啟用單片機UART串口通信功能,在系統初始化時,向串行數據緩沖寄存器SBUF中發送判斷SIM是否存在及SIM卡是否注冊網絡的指令,在串口中斷中實時接收SIM900A返回指令,若SIM卡已準備好,將設置的標志位變量置1。在發現警情后,在SBUF中寫入打電話的AT指令,即可對指定用戶撥打電話報警。
經測試,智能火災報警系統各電路正常運行,可實現上述所需功能。

圖10 系統正在進行報警
本系統以STC89C52單片機為基礎,涵蓋多種實用功能,操作方便,成本低廉,能夠實現在各種有火災隱患的無煙環境下對火災的報警作用,為人們帶來更多的便利。