摘 要: 針對(duì)我國(guó)西北等地區(qū)因積雪融化而造成山洪,、滑坡,、泥石流等自然災(zāi)害,設(shè)計(jì)一款融雪測(cè)量?jī)x來(lái)實(shí)時(shí)監(jiān)測(cè)積雪的融化狀況,,并作出預(yù)警,。在該設(shè)計(jì)中主要在單片機(jī)的選型、工作模式的控制以及供電電源的控制模式來(lái)降低功耗,。經(jīng)過(guò)測(cè)試,,該設(shè)備運(yùn)行正常、數(shù)據(jù)傳輸穩(wěn)定,,同時(shí)具有高精度,、低功耗的特性。對(duì)于監(jiān)測(cè)積雪的融化狀況是一種可行的設(shè)計(jì)方法,,而且具有一定的實(shí)用價(jià)值,。
關(guān)鍵詞: 單片機(jī);低功耗,;高精度,;數(shù)字濾波
我國(guó)對(duì)于積雪的實(shí)時(shí)檢測(cè)技術(shù)還比較落后,如通過(guò)利用衛(wèi)星來(lái)實(shí)時(shí)監(jiān)視積雪融化動(dòng)態(tài),,但在實(shí)際的運(yùn)作中,,由于地面環(huán)境的復(fù)雜性存在比較大的誤差與缺陷[1]。早在1973年,,MrClain等人指出雪的表面反射率可以作為雪深的指示因子[2],,但是由于地表土壤成分各不相同以及表面雜物不同,其檢測(cè)效果也并不可觀,。因此,,研制一套低功耗高精度的融雪測(cè)量?jī)x是有必要的,而且具有廣闊的應(yīng)用前景,。
1 總體設(shè)計(jì)方案
本設(shè)計(jì)提出以超聲波傳感器進(jìn)行積雪厚度的實(shí)時(shí)監(jiān)測(cè),,采用“渡越時(shí)間檢測(cè)法”進(jìn)行雪厚的測(cè)量。其測(cè)量原理為:超聲波發(fā)射器垂直地向雪表面發(fā)射超聲波,,同時(shí)采集板上微控制器內(nèi)部定時(shí)器開(kāi)始計(jì)時(shí),,碰到雪面反射回來(lái)。當(dāng)超聲波接收器接收到反射波時(shí),定時(shí)器就立即停止計(jì)時(shí),,根據(jù)定時(shí)值,,計(jì)算出發(fā)射點(diǎn)距雪表面的距離S。假設(shè)設(shè)備安裝高度為S0,,雪厚值為S0-S,。最終控制器對(duì)采集板進(jìn)行召測(cè),對(duì)采集到的數(shù)據(jù)處理與分析,,并做出相應(yīng)的預(yù)警功能,。
2 低功耗的實(shí)現(xiàn)方案
低功耗實(shí)現(xiàn)方案主要有:控制板的主控制器的選型以及工作模式的選擇;控制AT89C2051單片機(jī)的工作模式和485通信狀態(tài)的控制以及設(shè)置合理的采樣周期,。
?。?)主控制器的選型及工作模式的選擇
控制板的主控制器選擇MSP430F149,這是一款16位超低功耗的混合信號(hào)處理器,。電源電壓采用1.8~3.6 V,,在2.2 V、1 MHz的時(shí)鐘條件下運(yùn)行時(shí),,電流僅有160 μA,。待機(jī)模式:1.6 μA。關(guān)閉模式(RAM保持):0.1 μA,。平時(shí)讓主控制器處于LPM3模式下,,CPU停止工作,主時(shí)鐘關(guān)閉,,子時(shí)鐘關(guān)閉,,內(nèi)部振蕩器關(guān)閉,輔導(dǎo)時(shí)鐘打開(kāi),,其功耗為2 μA,。同時(shí),將TIMER_A的時(shí)鐘源選為ACLK,,當(dāng)?shù)竭_(dá)定時(shí)時(shí)間時(shí),,用#pragma vector=TIMERA1_VECTOR中斷CPU喚醒。具體程序?qū)崿F(xiàn)方法為:
Void Init_Timer_A()
{
TACTL|=TASSEL_1+TACLR,; //選擇時(shí)鐘源為ACLK
TACTL|=MC1+TAIE,; //使能定時(shí)器A中斷
}
_BIS_SR(LPM3_bits+GIE); //Enter LPM3 interrupt
#pragma vector=TIMERA1_VECTOR //中斷服務(wù)函數(shù)
__interrupt void Timer_A(void)
{}
?。?)工作模式以及485狀態(tài)控制
平時(shí)單片機(jī)處于“空閑方式”狀態(tài),,當(dāng)有串口中斷喚醒的時(shí)候,CPU才開(kāi)始采集數(shù)據(jù),。當(dāng)采集完成后通過(guò)RS-485總線(xiàn)發(fā)送給控制板(注:RS-485平時(shí)處于接收狀態(tài),,需要發(fā)送時(shí)才使能發(fā)送端口,,為了降低功耗),執(zhí)行完成后單片機(jī)繼續(xù)“睡覺(jué)”,。程序?qū)崿F(xiàn)方法如下所示,。
Void Init_Uart()
{
TMOD=0X21;TH1=0XFD,;TL1=0XFD,;TR1=1;
//波特率發(fā)生器的選擇
REN=1,; //使能接受
SM0=0;SM1=1,;
ES=1,; //打開(kāi)串口中斷
EA=1; //開(kāi)總中斷
}
Void Init_485()
{
CONTROL_485=0,; //使485模塊處于接收狀態(tài),;
}
Void Serial() interrupt 4 //串口中斷服務(wù)函數(shù)
{}
Void Lower_Power()
{
CONTROL_485=0; //使485處于接收狀態(tài)
PCON=0X01,;//使單片機(jī)處于“空閑模式”
}
?。?)設(shè)置合理的采樣周期
由于積雪的融化與溫度有關(guān),當(dāng)溫度在冰點(diǎn)之下時(shí),,積雪不融化,。這時(shí)候就沒(méi)必要一直去采集積雪的融化狀況,即采集頻率可以減小,,對(duì)于降低功耗是一種有效的方法(根據(jù)實(shí)際情況可在軟件中設(shè)定值),。該設(shè)計(jì)中設(shè)定的采樣周期如表1所示。
3 高精度的實(shí)現(xiàn)方案
高精度的實(shí)現(xiàn)方案主要表現(xiàn)為:確定回波檢測(cè)方案,,溫度補(bǔ)償,,對(duì)采集值進(jìn)行數(shù)字濾波,真實(shí)值與測(cè)量值之間做線(xiàn)性補(bǔ)償,。
?。?)確定回波檢測(cè)方案
能夠快速檢測(cè)到回波對(duì)于提高精度是一個(gè)關(guān)鍵點(diǎn)。如果在程序中使用冗余或者復(fù)雜的程序后,,勢(shì)必會(huì)增加定時(shí)器的計(jì)數(shù)值,,從而影響測(cè)距精度。下面是該設(shè)計(jì)中使用的回波檢測(cè)程序,。
C語(yǔ)言程序:
while(SUPERSONIC_IN&&(TF0==0))
{}
TR0=0,; //關(guān)閉定時(shí)器0
反匯編分析:
290: while(SUPERSONIC_IN&&(TF0==0))
C:0x055B 30B703 JNB SUPERSONIC_IN(0xB0.7),C:0561
C:0x055E308DFA JNB TF0(0x88.5),,C:055B
291: {}
292:
293: TR0=0,; //關(guān)閉定時(shí)器0
C:0x0561 C28C CLR TR0(0x88.4)
一條JNB bit,,rel匯編語(yǔ)句執(zhí)行時(shí)間為2個(gè)機(jī)器周期,一條CLR C匯編語(yǔ)句執(zhí)行時(shí)間為1個(gè)機(jī)器周期,,所以執(zhí)行一次上述回波檢測(cè)語(yǔ)句需要5個(gè)機(jī)器周期,,而該設(shè)計(jì)中使用的晶振為12 MHz,一個(gè)機(jī)器周期為1 μs,,因此需要5 μs,。由公式S=VT/2,S為距離,,V為波速,,T為渡越時(shí)間。假設(shè)此時(shí)的V為340 m/s,,得S=0.85 mm,,誤差在1 mm之內(nèi),在設(shè)計(jì)允許范圍之內(nèi),。
?。?)溫度補(bǔ)償
由于超聲波波速受到環(huán)境溫度的影響,需要對(duì)波速進(jìn)行溫度補(bǔ)償,,利用數(shù)字溫度傳感器采集環(huán)境溫度,,以便為做成高精度的采集系統(tǒng)做保障。表2列出幾種不同溫度下的超聲波波速[3],。
根據(jù)上述表2中數(shù)據(jù),,可以得出溫度補(bǔ)償公式如式(1)所示:
V=331.5+0.607×T (1)
其中V表示實(shí)際波速,T表示環(huán)境溫度,。程序算法如下所示:
float Count_Supersonic_Speed
(UCHAR real_temp)
{
float V1,;
V1=real_temp/2+real_temp/10+331+1/2;
return V1,;
}
?。?)對(duì)采集值進(jìn)行數(shù)字濾波
由于實(shí)際測(cè)量中會(huì)出現(xiàn)偶然脈沖干擾,使測(cè)得的數(shù)值偏差很大,,通過(guò)防脈沖干擾平均濾波法(Anti-Pulse Interference Average Filtering Method)踢除此干擾,,同時(shí)對(duì)剩余的數(shù)據(jù)取平均值。測(cè)試效果如表3所示,。
?。?)真實(shí)值與測(cè)量值之間做線(xiàn)性補(bǔ)償
由于實(shí)際測(cè)量值與真實(shí)值之間會(huì)存在誤差,現(xiàn)在通過(guò)用一次函數(shù)Y=KX+B做線(xiàn)性補(bǔ)償算法來(lái)減少測(cè)量誤差,。在沒(méi)有加入補(bǔ)償之前如表4中的誤差1所示,。E2到E11中的數(shù)值是Y由式EN=(AN+1-AN)/(BN+1-BN),(N=2~11)得到,。F2到F22中的數(shù)據(jù)是對(duì)E2到E11中數(shù)據(jù)取平均值,。G2到G11中的數(shù)據(jù)由公式GN=AN-FNBN,,(N=2~11)。HN(N=2~11)中的數(shù)據(jù)是對(duì)G2到G11取平均值得到,。計(jì)算出K=1.077 229 163,,B=32.240 783 23。Y=1.077 229 163X+32.240 783 23,,得到補(bǔ)償后的數(shù)據(jù)I2到I22,。最終保證誤差在5‰左右,如表4中的誤差2所示,。
經(jīng)過(guò)測(cè)試,,融雪測(cè)量?jī)x的測(cè)量范圍為300 mm~2 000 mm,測(cè)量精度控制在5‰之內(nèi),,且耗電量低,。同時(shí),由于考慮到實(shí)際應(yīng)用環(huán)境的復(fù)雜性,,對(duì)于元器件的選擇全都采用工業(yè)級(jí)產(chǎn)品,以保證設(shè)備的穩(wěn)定與可靠性,。
參考文獻(xiàn)
[1] 毛煒?lè)?,張旭,楊志華,,等.衛(wèi)星遙感首次監(jiān)測(cè)到準(zhǔn)噶爾盆地西北部的冬季融雪洪水[J].冰川凍土,,2010,32(1):211-214.
[2] RAMSAYB H. The interactive multisensor snow and ice mapping system[J]. Hydrological Processes,, 1998,,12:1537-1546.
[3] 翟國(guó)富,劉茂愷.一種實(shí)時(shí)高精度的機(jī)器人用超聲波測(cè)距處理方法[J].應(yīng)用聲學(xué),,1990(1):17-24.