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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于單片機(jī)帶溫度補(bǔ)償?shù)某暡y距儀設(shè)計(jì)

          基于單片機(jī)帶溫度補(bǔ)償?shù)某暡y距儀設(shè)計(jì)

          作者: 時(shí)間:2016-10-18 來源:網(wǎng)絡(luò) 收藏

          具有指向性強(qiáng),能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn)等優(yōu)點(diǎn),因而經(jīng)常用于距離的測量,如物位測量儀和等都可以通過來實(shí)現(xiàn)。利用超聲波檢測比較快速、方便、計(jì)算簡單、易于實(shí)時(shí)控制,并在測量精度方面能達(dá)到工業(yè)實(shí)用的要求,性價(jià)比較高。因此在液位、井深、管道長度的測量、移動機(jī)器人定位和避障等領(lǐng)域得到了廣泛應(yīng)用。

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

          本設(shè)計(jì)以脈沖回波法的超聲波測距原理為依據(jù),AT89S52作為控制核心,結(jié)合超聲波發(fā)送和接收模塊HY—SRF05,實(shí)時(shí)LCD顯示。系統(tǒng)采用DS18B20溫度傳感器,把溫度值的變化補(bǔ)償?shù)匠暡ǖ牟ㄋ僦?,從而提高超聲?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/測距儀">測距儀的精度,降低溫度對測距結(jié)果的影響。

          1 超聲波測距原理

          超聲波測距的原理是通過超聲波發(fā)射裝置發(fā)出超聲波,根據(jù)接收器接到超聲波時(shí)的時(shí)間差就可判斷出距離,這與雷達(dá)測距原理相似。超聲波發(fā)射器向某一方向發(fā)射超聲波,在發(fā)射時(shí)刻的同時(shí)開始計(jì)時(shí),超聲波在空氣中傳播,途中碰到障礙物則立即返回,超聲波接收器收到反射波則停止計(jì)時(shí)。

          a.jpg

          根據(jù)計(jì)時(shí)器記錄的時(shí)間t,就可以計(jì)算出發(fā)射點(diǎn)距障礙物的距離

          d=s/2=(V×t)/2 (1)

          V=331.4+0.61T (2)

          其中,s是超聲波往返通過的路程;V為超聲波介質(zhì)中傳播速度;T為實(shí)際溫度。所以超聲波傳播速度和溫度密切相關(guān),由此可見溫度對于超聲波測距系統(tǒng)的影響是不可忽略的。

          2 系統(tǒng)硬件設(shè)計(jì)

          該系統(tǒng)由5部分組成,以AT89S52作為控制核心,溫度傳感器DS18B20用于溫度的采集,LCD用于顯示實(shí)時(shí)溫度和障礙物的距離,超聲波傳感器HC-SRF05用于超聲波的發(fā)送和接收。系統(tǒng)整體結(jié)構(gòu)框圖如圖2所示。

          b.jpg

          2.1 超聲波傳感器

          超聲波傳感器HC-SRF05集超聲波的發(fā)送和接收功能于一體,可提供2~450 cm的非接觸式距離感測功能。圖3是HC—SRF05的實(shí)物圖,圖4是超聲波模塊電路圖。1腳為5 V電源端;2腳為觸發(fā)控制的信號輸入端,與的P3.7口相連;3腳為回響信號輸出,與單片機(jī)P3.2口相連;4腳接地;5腳為開關(guān)量輸出。

          c.jpg

          P3.7口向觸發(fā)引腳發(fā)送≥10μs的脈沖觸發(fā)信號,該模塊內(nèi)部將發(fā)出8個(gè)40 kHz周期電平并檢測回波,一旦檢測到有回波信號,則3腳輸出回響信號,所測的距離與回響信號的脈沖寬度成正比,由此可通過發(fā)射信號到收到回響信號的時(shí)間間隔計(jì)算得到距離。超聲波時(shí)序圖如圖5所示。

          d.jpg

          2.2 溫度傳感器DS18B20

          由于聲音的速度在不同的溫度下有所不同,因此為提高精度,應(yīng)通過對超聲波的傳播速度進(jìn)行校正。系統(tǒng)采用DS18B20傳感器測量溫度,DS18B20溫度傳感器具有不受外界干擾、精度高、測溫范圍寬等優(yōu)點(diǎn)。檢測電路如圖6所示,單片機(jī)P3.7口接DS18B20數(shù)據(jù)總線,控制DS18B20進(jìn)行溫度轉(zhuǎn)換和傳輸數(shù)據(jù),數(shù)據(jù)總線接10 kΩ的上拉電阻,作用是使總線控制器在溫度轉(zhuǎn)換期間無需一直保持高電平。

          e.jpg

          2.3 LCD顯示模塊

          LCD1602具有超薄、功耗低、體積小等優(yōu)點(diǎn),被廣泛用于低功耗電子產(chǎn)品和智能儀表中。LCD顯示電路如圖7所示,3腳VL為對比度調(diào)整端,使用時(shí)通過接一個(gè)10 kΩ的電阻來調(diào)節(jié)。4腳RS為寄存器選擇信號線,H為數(shù)據(jù)選擇,L為指令選擇,接單片機(jī)的P1.0口。5腳RW為讀寫信號線,接單片機(jī)的P1.1口。6腳E為使能端,當(dāng)E由高電平跳變?yōu)榈碗娖綍r(shí)執(zhí)行命令,接單片機(jī)的P1.2口,8位數(shù)據(jù)線D0~D7,接單片機(jī)的P0口。

          f.jpg

          3 系統(tǒng)軟件設(shè)計(jì)

          3.1 主程序設(shè)計(jì)

          系統(tǒng)軟件采用模塊化設(shè)計(jì),系統(tǒng)初始化部分包括引腳的定義、中斷和定時(shí)器的設(shè)置等,進(jìn)而調(diào)用溫度檢測子程序,根據(jù)溫度值對超聲波速度進(jìn)行校準(zhǔn),最終根據(jù)回波信號計(jì)算距離并顯示,主程序流程如圖8所示。

          g.jpg

          3.2 超聲波測距子程序

          超聲波發(fā)送子程序采用定時(shí)器T0中斷的方式由單片機(jī)P3.7引腳發(fā)送觸發(fā)脈沖,由單片機(jī)P3.2引腳利用定時(shí)器T1來對回波信號進(jìn)行檢測計(jì)時(shí),初始化T1后檢測等待回波信號的到來,當(dāng)信號由低變高后定時(shí)器T1開始計(jì)時(shí),直到信號由高到低計(jì)時(shí)結(jié)束,根據(jù)溫度校準(zhǔn)后的超聲波速度計(jì)算障礙物的距離,超聲波測距流程如圖9所示。

          h.jpg

          4 實(shí)驗(yàn)結(jié)果

          硬件電路如圖10所示,經(jīng)過試驗(yàn)采集的數(shù)據(jù)如表1所示。由表1數(shù)據(jù)可看出,當(dāng)測量范圍在30~150 mm之間時(shí),誤差相對較小,此范圍之外誤差較大。

          i.jpg

          j.jpg

          5 結(jié)束語

          本系統(tǒng)通過引入DS18B20,使超聲波測距系統(tǒng)的測量精度有了較大的提高。該系統(tǒng)具有結(jié)構(gòu)簡單、帶、實(shí)時(shí)LCD顯示和報(bào)警等優(yōu)點(diǎn),并有一定的實(shí)用價(jià)值。



          評論


          相關(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); })();