基于PIC16F87X單片機(jī)的火災(zāi)報(bào)警系統(tǒng)設(shè)計(jì)
火災(zāi)報(bào)警系統(tǒng)是各行各業(yè)必需的一種安全系統(tǒng)網(wǎng)絡(luò),可靠的監(jiān)測(cè)與數(shù)據(jù)傳輸是該系統(tǒng)非常重要的環(huán)節(jié)。
以往的火災(zāi)報(bào)警系統(tǒng)經(jīng)常會(huì)出現(xiàn)總線上的數(shù)據(jù)沖突、長(zhǎng)距離數(shù)據(jù)傳輸?shù)牟豢煽恳约安灰讛U(kuò)展等問題,隨著近年來一些低價(jià)格、高性能單片機(jī)被廣泛應(yīng)用于各個(gè)電路系統(tǒng),尤其是電路控制等方面,這些問題都得到了一定的改善。
本系統(tǒng)采用了美國(guó)微芯公司生產(chǎn)的運(yùn)行速度快、功耗低且驅(qū)動(dòng)能力強(qiáng)的PIC16F87X系列單片機(jī),作為該系統(tǒng)電路的邏輯控制、總線偵聽以及數(shù)據(jù)讀取與發(fā)送單元,解決了可靠數(shù)據(jù)監(jiān)測(cè)以及長(zhǎng)距離傳輸所面臨的問題,可以準(zhǔn)確地遠(yuǎn)程監(jiān)視火災(zāi)發(fā)生地點(diǎn)。
系統(tǒng)硬件電路設(shè)計(jì)
系統(tǒng)基本工作原理如圖1所示。傳感器輸出的電流信號(hào)經(jīng)過電流轉(zhuǎn)換電壓電路變?yōu)殡妷盒盘?hào),然后由信號(hào)放大電路將信號(hào)轉(zhuǎn)化為適合模數(shù)轉(zhuǎn)換器件(A/D)的輸入信號(hào),最后將數(shù)字化的采樣結(jié)果送入單片機(jī)PIC16F87X,分析該數(shù)據(jù)是否已經(jīng)達(dá)到了火災(zāi)效應(yīng)。
若分析得到有火災(zāi)發(fā)生時(shí),先進(jìn)行總線偵聽,當(dāng)總線“空閑”時(shí)則單片機(jī)立即讀出外部ROM事先存儲(chǔ)好的有關(guān)室內(nèi)所有的信息數(shù)據(jù)(包括報(bào)警裝置的放置位置),然后發(fā)送數(shù)據(jù)并將這些重要數(shù)據(jù)送到部門遠(yuǎn)程監(jiān)視系統(tǒng)的液晶顯示器LCD上,最后輸出連續(xù)脈沖信號(hào),通過驅(qū)動(dòng)電路驅(qū)動(dòng)報(bào)警喇叭以提醒監(jiān)視人員有火災(zāi)危險(xiǎn)。
傳感器介紹及其外圍電路的設(shè)計(jì)
該系統(tǒng)使用的傳感器為HS系列一氧化碳電化學(xué)氣體傳感器,以定電位電解為基本原理。當(dāng)一氧化碳擴(kuò)散到氣體傳感器時(shí),其輸出端產(chǎn)生電流輸出,起著將化學(xué)能轉(zhuǎn)化為電能的作用。當(dāng)一氧化碳?xì)怏w濃度發(fā)生變化時(shí),氣體傳感器的輸出電流也隨之成正比變化。
傳感器測(cè)定范圍:0-1000ppm
輸出電流:4010nA/ppm
工作氣壓:1atm 10%
將電流信號(hào)轉(zhuǎn)換為電壓信號(hào)是引入一個(gè)電阻R1,將0~40mA的電流信號(hào)轉(zhuǎn)換為0~4V的電壓信號(hào),然后進(jìn)行放大濾波。圖中OPA637接成電壓跟隨方式,它的輸入阻抗很高,可以減少對(duì)R1的分流作用。OP07接成運(yùn)放電路,可以通過調(diào)節(jié)Rf的大小來改變運(yùn)放的閉環(huán)增益,以調(diào)節(jié)為適應(yīng)于A/D的電壓輸入范圍。
PIC16F87X的特性
PIC16F87X是微芯(Microchip)公司于1998年年底推出的產(chǎn)品,采用哈佛總線結(jié)構(gòu),指令單字節(jié)化,尋址方式簡(jiǎn)單,精簡(jiǎn)指令 集(RISC)技術(shù),僅有35條指令。它運(yùn)行速度快,功耗低,驅(qū)動(dòng)能力強(qiáng),具備有USART模塊和MSSP模塊,程序保密性強(qiáng),目前尚無其他辦法對(duì)其直接進(jìn)行解密拷貝。它的一大特征是片內(nèi)帶有64、128或256字節(jié)的EEPROM數(shù)據(jù)存儲(chǔ)器,另外其程序存儲(chǔ)器是Flash型存儲(chǔ)器,這種存儲(chǔ)器可以實(shí)現(xiàn)在電路板上直接擦/寫程序。
PIC16F87X與外部串型存儲(chǔ)器ROM的硬件連接
在選擇外部存儲(chǔ)器ROM時(shí),由于要在安裝報(bào)警器前通過單片機(jī)將與安裝地點(diǎn)有關(guān)的重要信息全部寫入外部存儲(chǔ)器中,所以必須使用容量較大的靜態(tài)存儲(chǔ)器ROM,以便寫入盡可能多的數(shù)據(jù)信息且掉電后數(shù)據(jù)不易丟失。當(dāng)有火災(zāi)發(fā)生時(shí),單片機(jī)立即在其RA0口模擬出移位時(shí)鐘CLK,并輸入給外部存儲(chǔ)器ROM的CLK引腳,同時(shí)RA1口向 SI口發(fā)送讀 命令,最后從存儲(chǔ)器SO輸出口讀取已經(jīng)保存好的數(shù)據(jù),并立即將這些數(shù)據(jù)送入部門遠(yuǎn)程監(jiān)視系統(tǒng)的顯示器上。
在考慮PIC單片機(jī)與本系統(tǒng)所選的外部串行存儲(chǔ)器AT25F1024的引腳 連接時(shí),由于PIC16F87X供電電源為 V CC =5V,輸出為 CMOS電平,即輸出 高電平約5V,低電平約0V。但是其 輸入為TT L電平,而供電電壓為2.7V~3.6V左右的AT25F1024,其V LL 在?0.6V~ 0.3V CC 之間,V IH 在0.7V CC ~V CC +0.5之間 。所以如果將單片機(jī)和ROM直接連接, 當(dāng)單 片機(jī)輸出高電 平給ROM時(shí),該值將超過ROM的輸入門限值,此 刻就有可 能出現(xiàn)無法識(shí)別數(shù)據(jù)或燒毀存儲(chǔ)器管腳的情況 。 但是 ,AT25F1024的輸出可以直接和單片機(jī)相連接,因 為PIC單片機(jī)的輸入為TTL電平 , 故只 需考慮ROM的輸入接口電平匹配問題。同理,輸入輸出電流也是如此分 析。為了解決接口電平匹配問題,有很多可采用的方法:使用分壓電阻分壓,通過三級(jí)管和CMOS管的開關(guān)作用以及其他適合的芯片來調(diào)節(jié)電壓等。
在設(shè)計(jì)該電路的過程中,由于分壓電路易于實(shí)現(xiàn),如圖3所示,首先考慮使用電阻分壓得到適當(dāng)?shù)碾娖剿徒o串行ROM,經(jīng)調(diào)試后可實(shí)現(xiàn)數(shù)據(jù)通信。此電路結(jié)構(gòu)簡(jiǎn)單,不需要太多的電子元器件,但一般在此情況下使用較少。
為了達(dá)到更好的通信效果。如圖4所示,在此電路中選擇了非門芯片74LVC04A,該非門的供電電壓在1.2V~3.6V之間,可以和外部ROM使用同一個(gè)電源供電,其管腳的高電平電壓輸入范圍在2.0V~5.5V之間,低電平輸入為0V左右,可識(shí)別單片機(jī)的CMOS輸出電平。該芯片輸出高電平電壓約為電源供電電壓,低電平電壓約為0V左右,所以可串聯(lián)兩個(gè)74LVC04A非門將單片機(jī)的輸出信號(hào)轉(zhuǎn)換為AT25F1024可準(zhǔn)確識(shí)別的輸入電壓,從而提高了數(shù)據(jù)的準(zhǔn)確傳輸。
避免總線沖突的設(shè)計(jì)
在本結(jié)構(gòu)中,為了保證正確有效的長(zhǎng)距離數(shù)據(jù)傳輸,使用了開關(guān)管RF634來增加電路的驅(qū)動(dòng)能力,在接收端使用LM393比較器來修正信號(hào),并在其后端連接一個(gè)非門7406,用以還原原始信號(hào)。
當(dāng)一個(gè)節(jié)點(diǎn)需要使用總線時(shí),為了實(shí)現(xiàn)總線通信可靠,在有數(shù)據(jù)需要發(fā)送的情況下先偵聽總線。在硬件接口上,將報(bào)警終端單片機(jī)的數(shù)據(jù)發(fā)送引腳TX與其中斷引腳INT0相連接,且將RA2口作為接收引腳,通過驅(qū)動(dòng)電路與起偵聽作用的單片機(jī)的RA3引腳相連接。報(bào)警終端網(wǎng)絡(luò)中的單片機(jī)在發(fā)送數(shù)據(jù)前,先探測(cè)其RA2口是否保持高電平輸入。若有,則表明總線“忙”,等待主控方釋放總線;若沒有,則表明總線“空閑”,可以發(fā)送數(shù)據(jù)。因主控方在發(fā)送數(shù)據(jù)的同時(shí)也將數(shù)據(jù)傳給了中斷引腳INT0,起偵聽作用的單片機(jī)接收數(shù)據(jù)后,通過其RA3口向報(bào)警裝置網(wǎng)絡(luò)中的所有單片機(jī)以廣播的通信方式發(fā)送高電平1。
報(bào)警終端網(wǎng) 絡(luò)中的單片機(jī)在一直不停地查詢其中斷引腳INT0是否有電平變化,并同時(shí)查詢其RA2接收口是否有高電平輸入。若單片機(jī)的RA2口有高電平輸入且又有中斷引腳電平變化,則繼續(xù)發(fā)送數(shù)據(jù);若只有RA2口有高電平輸入但中斷引腳INT0沒有電平變化,表示其探測(cè)到總線正“忙”,則待主控方完成通信交出總線控制權(quán)后,再讓其得到總線控制權(quán),這樣就較好地解決了總線沖突的問題。采用這種工作方式后,系統(tǒng)中已經(jīng)沒有主、從節(jié)點(diǎn)之分,各個(gè)節(jié)點(diǎn)對(duì)總線 的使用權(quán)限是平等的,從而有效避免了個(gè)別節(jié)點(diǎn)通信負(fù)擔(dān)較重的情況??偩€的利用率和系統(tǒng)的通信效率都得以提升,從而也使系統(tǒng)響應(yīng)的實(shí)時(shí)性得到改善。而且,即使系統(tǒng)中個(gè)別節(jié)點(diǎn)發(fā)生故障,也不會(huì)影響其他節(jié)點(diǎn)的正常通信和正常工作。這樣使得系統(tǒng)的“危險(xiǎn)”分散,從某種程度上來說,增強(qiáng)了系統(tǒng)的工作可靠性和穩(wěn)定性。
在查詢INT0引腳的高低電平變化時(shí),宜采用定時(shí)器TIMER0來定時(shí),在一個(gè)固定的時(shí)間內(nèi)查詢INT0引腳是否有高低電平變化。以避免所發(fā)送的數(shù)據(jù)有連續(xù)的1或0發(fā)送時(shí),INT0引腳無高低電平變化,從而導(dǎo)致主控方停止發(fā)送數(shù)據(jù)。
系統(tǒng)軟件設(shè)計(jì)
軟件的主要流程如下:
1)報(bào)警裝置終端程序:完成系統(tǒng)的初始化工作,開始給模數(shù)轉(zhuǎn)換器發(fā)送啟動(dòng)轉(zhuǎn)換信號(hào),使之開始工作,將轉(zhuǎn)換后的數(shù)據(jù)與空氣中的一氧化碳濃度(已知數(shù)據(jù))相比較,如果其濃度遠(yuǎn)大于空氣中一氧化碳的濃度,則說明有火災(zāi)發(fā)生,否則,繼續(xù)進(jìn)行轉(zhuǎn)換、比較。當(dāng)判斷有火災(zāi)發(fā)生時(shí),先進(jìn)行總線偵聽,若檢測(cè)到總線上有數(shù)據(jù)傳輸時(shí),則等待總線釋放,若沒有檢測(cè)到,則立即從外部ROM里讀出數(shù)據(jù),進(jìn)行數(shù)據(jù)發(fā)送。
2)偵聽電路中的單片機(jī)程序:判斷是否有數(shù)據(jù)接收,若有數(shù)據(jù)接收,則發(fā)送數(shù)據(jù)給遠(yuǎn)程終端,并同時(shí)輸出高電平給報(bào)警裝置單片機(jī)的RA2口。
3)數(shù)據(jù)顯示程序:判斷是否有數(shù)據(jù)接收,若有,則初始化LCD,數(shù)據(jù)寫入LCD,顯示信息。最后輸出連續(xù)脈沖信號(hào)以驅(qū)動(dòng)報(bào)警喇叭。
結(jié)論
基于PIC16F87X單片機(jī)的報(bào)警網(wǎng)絡(luò)系統(tǒng),其電路簡(jiǎn)單、功耗低、電源要求單一、精度高、系統(tǒng)監(jiān)視范圍廣,具有檢測(cè)總線沖突的功能,可以在遠(yuǎn)程監(jiān)視系統(tǒng)中顯示火災(zāi)的具體位置和有關(guān)的重要信息。該系統(tǒng)盡可能減少了火災(zāi)損失,容易擴(kuò)展為一臺(tái)顯示器監(jiān)視較多的報(bào)警裝置的系統(tǒng)網(wǎng)絡(luò),在石油化工、航空、煤炭以及其他易于發(fā)生火災(zāi)的領(lǐng)域,都具有實(shí)用價(jià)值。
評(píng)論