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