新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機的低功耗高精度融雪測量儀的設計

        基于單片機的低功耗高精度融雪測量儀的設計

        作者: 時間:2012-11-22 來源:網絡 收藏

        我國對于積雪的實時檢測技術還比較落后,如通過利用衛星來實時監視積雪融化動態,但在實際的運作中,由于地面環境的復雜性存在比較大的誤差與缺陷[1]。早在1973年,MrClain等人指出雪的表面反射率可以作為雪深的指示因子[2],但是由于地表土壤成分各不相同以及表面雜物不同,其檢測效果也并不可觀。因此,研制一套低是有必要的,而且具有廣闊的應用前景。
        1 總體方案
         本提出以超聲波傳感器進行積雪厚度的實時監測,采用“渡越時間檢測法”進行雪厚的測量。其測量原理為:超聲波發射器垂直地向雪表面發射超聲波,同時采集板上微控制器內部定時器開始計時,碰到雪面反射回來。當超聲波接收器接收到反射波時,定時器就立即停止計時,根據定時值,計算出發射點距雪表面的距離S。假設設備安裝高度為S0,雪厚值為S0-S。最終控制器對采集板進行召測,對采集到的數據處理與分析,并做出相應的預警功能。
        2 低的實現方案
         低實現方案主要有:控制板的主控制器的選型以及工作模式的選擇;控制AT89C2051的工作模式和485通信狀態的控制以及設置合理的采樣周期。
        ?。?)主控制器的選型及工作模式的選擇
         控制板的主控制器選擇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)
        {}
        ?。?)工作模式以及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;//使單片機處于“空閑模式”
        }
        ?。?)設置合理的采樣周期
         由于積雪的融化與溫度有關,當溫度在冰點之下時,積雪不融化。這時候就沒必要一直去采集積雪的融化狀況,即采集頻率可以減小,對于降低功耗是一種有效的方法(根據實際情況可在軟件中設定值)。該中設定的采樣周期如表1所示。

        本文引用地址:http://www.104case.com/article/170684.htm


        3 的實現方案
         的實現方案主要表現為:確定回波檢測方案,溫度補償,對采集值進行數字濾波,真實值與測量值之間做線性補償。
        ?。?)確定回波檢測方案
         能夠快速檢測到回波對于提高精度是一個關鍵點。如果在程序中使用冗余或者復雜的程序后,勢必會增加定時器的計數值,從而影響測距精度。下面是該設計中使用的回波檢測程序。
        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)


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 刚察县| 分宜县| 弥勒县| 临江市| 米泉市| 丽江市| 锡林浩特市| 建阳市| 钟山县| 格尔木市| 鄂托克旗| 江都市| 石狮市| 儋州市| 龙门县| 大余县| 阜南县| 二连浩特市| 梁山县| 农安县| 临猗县| 邢台县| 荥经县| 芜湖县| 伽师县| 蕉岭县| 抚松县| 五指山市| 绥宁县| 东光县| 云安县| 海原县| 长垣县| 高台县| 吉水县| 南岸区| 安康市| 西和县| 兴海县| 裕民县| 元谋县|