<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)的低功耗高精度融雪測(cè)量?jī)x的設(shè)計(jì)

          基于單片機(jī)的低功耗高精度融雪測(cè)量?jī)x的設(shè)計(jì)

          作者: 時(shí)間:2012-11-22 來(lái)源:網(wǎng)絡(luò) 收藏

          我國(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è)效果也并不可觀。因此,研制一套低是有必要的,而且具有廣闊的應(yīng)用前景。
          1 總體方案
           本提出以超聲波傳感器進(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的工作模式和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)
          {}
           (2)工作模式以及485狀態(tài)控制
           平時(shí)處于“空閑方式”狀態(tài),當(dāng)有串口中斷喚醒的時(shí)候,CPU才開(kāi)始采集數(shù)據(jù)。當(dāng)采集完成后通過(guò)RS-485總線發(fā)送給控制板(注:RS-485平時(shí)處于接收狀態(tài),需要發(fā)送時(shí)才使能發(fā)送端口,為了降低功耗),執(zhí)行完成后繼續(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ī)處于“空閑模式”
          }
           (3)設(shè)置合理的采樣周期
           由于積雪的融化與溫度有關(guān),當(dāng)溫度在冰點(diǎn)之下時(shí),積雪不融化。這時(shí)候就沒(méi)必要一直去采集積雪的融化狀況,即采集頻率可以減小,對(duì)于降低功耗是一種有效的方法(根據(jù)實(shí)際情況可在軟件中設(shè)定值)。該中設(shè)定的采樣周期如表1所示。

          本文引用地址:http://www.ex-cimer.com/article/170684.htm


          3 的實(shí)現(xiàn)方案
           的實(shí)現(xiàn)方案主要表現(xiàn)為:確定回波檢測(cè)方案,溫度補(bǔ)償,對(duì)采集值進(jìn)行數(shù)字濾波,真實(shí)值與測(cè)量值之間做線性補(bǔ)償。
           (1)確定回波檢測(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)


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();