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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于51單片機(jī)的超聲波測距系統(tǒng)的設(shè)計(jì)

          基于51單片機(jī)的超聲波測距系統(tǒng)的設(shè)計(jì)

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

          O 引言
          超聲波是指頻率大于20 kHz的在彈性介質(zhì)中產(chǎn)生的機(jī)械震蕩波。由于超聲波頻率較高,穿透力強(qiáng),指向性強(qiáng),傳輸過程中衰減少,能量消耗緩慢,在介質(zhì)中傳播的距離較遠(yuǎn),遇到雜質(zhì)或分界面時(shí)會(huì)產(chǎn)生反射波,因此常被用于非接觸式測距。并且超聲波對光線、色彩和電磁場不敏感,因此超聲波測距對環(huán)境有較好的適應(yīng)能力。廣泛應(yīng)用于汽車倒車、機(jī)器人避障、工業(yè)測井、水庫液位測量、管道長度測量等需要自動(dòng)進(jìn)行非接觸測距的場合。

          1 超聲波測距原理
          Pellarn和Galt于1946年提出了脈沖回波法,其工作原理是:用超聲脈沖激勵(lì)超聲探頭向外輻射超聲波,同時(shí)接收從被測物體反射回來的超聲波(簡稱回波),通過檢測或估計(jì)從發(fā)射超聲波至接收回波所經(jīng)歷的射程時(shí)間ToF(Time of Flight),按下式計(jì)算超聲波探頭與被測物體之間的距離d,即
          a.JPG
          其中。c為聲波在空氣介質(zhì)中的傳播速度。

          2 系統(tǒng)構(gòu)成
          本系統(tǒng)硬件電路由單片機(jī)、超聲波發(fā)射電路、超聲波接收電路、測溫電路、顯示電路、報(bào)警電路等構(gòu)成,如圖1所示。

          b.JPG

          3 系統(tǒng)程序設(shè)計(jì)
          3.1 主程序
          主程序首先對系統(tǒng)環(huán)境初始化,設(shè)置定時(shí)器TO工作模式為16位定時(shí)/計(jì)數(shù)器模式,總中斷允許位置1并給顯示端口清0;然后調(diào)用超聲波發(fā)生子程序送出若干個(gè)超聲波脈沖,為了避免超聲波從發(fā)射器直接傳送到接收器引起直射渡觸發(fā),從發(fā)射開始一直到“虛假反射波”結(jié)束這段時(shí)間內(nèi),不開放外部中斷(INTO)申請,便可有效躲避干擾,但同時(shí)也會(huì)造成測試“盲區(qū)”。假設(shè)延時(shí)約0.1 ms后,才打開外部中斷接收返回的超聲波信號,當(dāng)溫度為20℃,測量盲區(qū)為d=1×10-2×344=1.72 cm。
          3.2 超聲波發(fā)生子程序和接收子程序
          超聲波發(fā)生子程序的作用是通過P1.0端口發(fā)送超聲波換能器所需的40kHz的方波信號(脈沖寬度為12μs左右),同時(shí)把計(jì)數(shù)器TO打開進(jìn)行計(jì)時(shí)。超聲波發(fā)生子程序較簡單,但要求程序運(yùn)行準(zhǔn)確,所以采用匯編語言編程。


          上一頁 1 2 下一頁

          評論


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