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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 結(jié)合溫度補償?shù)某暡y距系統(tǒng)設(shè)計

          結(jié)合溫度補償?shù)某暡y距系統(tǒng)設(shè)計

          作者: 時間:2013-01-24 來源:網(wǎng)絡(luò) 收藏

          2.2 發(fā)射、接收電路
          發(fā)射、接收電路如圖2所示。發(fā)射電路由電阻R2及超聲波發(fā)送頭T40組成;接收電路由BG1、BG2X組成的兩組三級管放大電路組成;檢波電路、比較整形電路由C7、D1、D2及BG3組成。

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

          b.JPG


          40kHz的方波由AT89C2051的P3.5驅(qū)動超聲波發(fā)射頭發(fā)射超聲波,經(jīng)反射后由超聲波接收頭接收到40kHz的正弦波,由于聲波在空氣中傳播時衰減,所以接收到的波形幅值較低,經(jīng)接收電路放大、整形,最后輸出一負跳變,輸入的P3.7腳。由于系統(tǒng)的晶振為12M晶振,所以只能產(chǎn)生半周期為12μs或13μs的方波信號,頻率分別為41.67kHz和38.46kHz。本系統(tǒng)在編程時選用了后者。接收到的信號加到BG1、BG2組成的兩級放大器上進行放大。每級放大器的放大倍數(shù)為70倍。放大的信號通過檢波電路得到解調(diào)后的信號。這里使用的是IN4148檢波二極管,輸出的直流信號即兩二極管之間電容電壓。該接收電路結(jié)構(gòu)簡單,性能較好,制作難度小。
          2.3 溫度測量補償電路
          在空氣中,常溫下超聲波的傳播速度是334m/s,但其傳播速度受空氣中溫度、濕度等因素的影響,其中受溫度影響較大,如溫度每升高1℃,聲速就會增加約0.6m/s。因此在相同的間隔測量距離,由于波的傳播時間是相同的,不同溫度下的聲速不同,所以最終造成測量出來的距離不相等,在距離測量精度要求很高的情況下,必須要對溫度進行測量和補償,以避免溫度對測量精度的影響。本系統(tǒng)選用DS18B20作為溫度測量、誤差補償裝置,與單片機交換信息僅需要一根I/O口線,其供電電源可來源于單片機I/O口數(shù)據(jù)線,而無需額外電源。不同溫度下超聲波在空氣中傳播速度隨溫度變化的關(guān)系如下:
          v=331.4+0.61T (1)
          式中,T為實際溫度(℃),v為當(dāng)前環(huán)境下聲速,單位為m/s。

          3 系統(tǒng)軟件設(shè)計
          軟件設(shè)計部分采用模塊化設(shè)計,由主程序、發(fā)射子程序、接收子程序、中斷子程序、溫度測量等組成。超聲波的程序既有較復(fù)雜的計算(計算距離時),又要求精細計算程序運行時間(超聲波時),所以控制程序采用C語言編程。主程序完成初始化工作、超聲波發(fā)射和接收順序的控制、距離上下限超限報警。定時中斷服務(wù)子程序完成超聲波回波接收,外部中斷服務(wù)子程序主要完成時間值的讀取、距離計算、結(jié)果的輸出等工作。

          d.JPG



          評論


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