繆世坤 趙霄浚 周衡毅 浙江廣廈建設(shè)職業(yè)技術(shù)學(xué)院信息與控制工程學(xué)院
隨著我國經(jīng)濟的發(fā)展,各種新型材料被廣泛應(yīng)用于各個生產(chǎn)及生活領(lǐng)域。作為一種新生事物,人民群眾對這些新型材料的材質(zhì)特點和性能目前尚未完全了解及掌握,這就使得我國的火災(zāi)事故顯現(xiàn)出頻繁化,嚴重化的趨勢。據(jù)統(tǒng)計,我國的火災(zāi)事故每年約發(fā)生10萬起,造成10億多元的直接損失。
預(yù)防對抗火災(zāi)的經(jīng)驗證明,發(fā)現(xiàn)的越早,越容易將火災(zāi)撲滅于萌芽階段。因此,溫度報警器就成為了火災(zāi)預(yù)防的一個重要手段。但是現(xiàn)行的大多數(shù)溫度報警器的報警機制,依然是傳統(tǒng)的檢測-對比-報警機制:在投入使用之前為其設(shè)置一個固定的報警溫度,投入使用后,溫度報警器的傳感器不斷檢測當(dāng)前溫度并與設(shè)置好的報警溫度對比,當(dāng)檢測到的溫度到達或超過預(yù)先設(shè)置的報警溫度時,才發(fā)出警報。而此時火災(zāi)常常已經(jīng)形成一段時間,難以再迅速撲滅。如果想使這一類型的溫度報警器實現(xiàn)提前預(yù)警,唯一的方法就是將報警溫度設(shè)置得較低,而這又會使得溫度報警器經(jīng)常誤動作,不僅使得相關(guān)人員疲于奔命,還會把真正的火災(zāi)報警信息淹沒于無數(shù)的虛假報警信息之中。
作為目前全球最流行的開源硬件單片機電子設(shè)計平臺,Arduino的硬件部分包括一塊ATmega328芯片,可用于SPI通信的ICSP編程接口以及相關(guān)電路。軟件部分則包括一個標準的程序編譯器(IDE)和程序下載燒錄器,使用類似C語言的Processing/Wiring開發(fā)環(huán)境[1]。Arduino具有相當(dāng)突出的特色:Arduino的硬件原理圖、電路圖、IDE文件和核心庫文件都是開源的,擁有眾多的外圍模塊,方便與溫度傳感器等電子組件進行連接,也可以通過編程實現(xiàn)對測量信號的實時處理及對傳感器的操作,除此之外,在成本、耗電量、以及數(shù)據(jù)傳輸速率方面也擁有不可忽視的優(yōu)勢。
在火災(zāi)發(fā)生形成的過程中,一般包括以下五個階段:潛伏、陰燃、明火燃燒、著火區(qū)擴大以及火災(zāi)形成五個階段。在火災(zāi)的初期,最明顯的表現(xiàn)就是周圍環(huán)境溫度的迅速上升,這也是傳統(tǒng)溫度報警器的報警依據(jù)。但是,在實際使用過程中,種種其他原因,例如電壓波動和外界干擾等,會產(chǎn)生檢測數(shù)據(jù)的數(shù)據(jù)波動,同樣也會引起溫度傳感器測得的數(shù)值迅速上升。
因此,就需要設(shè)計一種智能報警器,一方面能夠檢測出溫度迅速上升的趨勢,另一方面又能避免因為數(shù)據(jù)波動而產(chǎn)生的溫度誤報警。通過對溫度傳感器檢測數(shù)據(jù)的分析可知,這種由其他原因產(chǎn)生的溫度檢測數(shù)值的迅速上升,并不會維持很長時間,絕大多數(shù)溫度檢測數(shù)值在一秒鐘內(nèi)就會迅速下降。
由此,設(shè)計智能溫度報警器內(nèi)部邏輯如下:不斷將現(xiàn)在的溫度與上一秒的溫度進行比較,如果發(fā)現(xiàn)溫度有突然上升的趨勢,則提高溫度傳感器采集速率,判斷是數(shù)據(jù)波動還是真實溫度上升變化,如果確實為真實溫度上升變化,則立刻發(fā)出警報;如果只是其他原因?qū)е碌臄?shù)據(jù)波動,則將溫度傳感器采集速率切換為一般狀態(tài)。
該智能溫度報警器內(nèi)部邏輯實現(xiàn)流程如下圖
圖1 智能溫度報警器內(nèi)部邏輯流程圖
溫度檢測傳感器有很多種類型,其中LM35DZ是其中常用的一個型號,其檢測范圍為0~100℃,工作電流133μA,檢測精度0.5℃,能夠基本滿足溫度報警器的要求,Arduion有14個數(shù)字輸入/輸出端口,6個模擬輸入端口,由于LM35DZ輸出為模擬信號,故將其連接到Arduino的A0口。整體智能溫度報警器,設(shè)計硬件電路原理圖如下。
圖2 智能溫度報警器電路原理圖
通過對智能報警器內(nèi)部邏輯流程圖的分析,將其功能分解為兩個函數(shù):首先是為對比函數(shù),功能為實現(xiàn)前后兩個溫度傳感器測量數(shù)據(jù)間的對比,判斷溫度是否有突然變化;其次是驗證函數(shù),當(dāng)接收到溫度突然變化信號時,提高溫度采樣頻率并傳遞給對比函數(shù),驗證是否為其他原因?qū)е碌臄?shù)據(jù)波動。
程序設(shè)計代碼如下:
int LM35 = A0;
int LED = 2;
void setup() {
Serial.begin(9600);
}
void loop() {
float temp0 = (5.0*analogRead(LM35)*100.0)/1024;
delay(1000);
float temp1 = (5.0*analogRead(LM35)*100.0)/1024;
delay(1000);
if(temp1-temp0>=1.0)
{
float temp0 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp1 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp2 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp3 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp4 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp5 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp6 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
float temp7 = (5.0*analogRead(LM35)*100.0)/1024;
delay(100);
if(temp7>temp6&temp6>temp5&temp5>temp4&temp4>temp3&temp3>temp2&temp2>temp1&temp1>temp0)
{digitalWrite(LED,HIGH);}
}
}
本文利用Arduino的種種優(yōu)勢,采用軟件編程的方式實現(xiàn)了溫度報警器的智能檢測報警。整個設(shè)計電路簡單,成本低廉,靈敏度高。該溫度報警器的智能功能不僅適用于火災(zāi)報警,同樣適用于其他需要保持溫度恒定的場合,例如大棚,倉庫,生產(chǎn)車間等。同時,由于Arduino的高度擴展性,只需要接入其他擴展模塊,本智能報警器同樣可以用于檢測濕度、速度及加速度、光照等,可以說具有非常大的應(yīng)用范圍。