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

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計應(yīng)用 > 基于雙超聲波接收頭的防撞小車系統(tǒng)

          基于雙超聲波接收頭的防撞小車系統(tǒng)

          作者: 時間:2011-10-20 來源:網(wǎng)絡(luò) 收藏

            摘要:本文提出了一種基于單片機(jī)控制的超聲波定位前方物體的監(jiān)測控制系統(tǒng)。通過一左一右的雙超聲波接收頭檢測信號,送單片機(jī)進(jìn)行數(shù)據(jù)計算處理,能夠精確計算與障礙物的距離,同時判斷該障礙物是否位于車輛行徑的路線上。從而能保證車輛行駛中能準(zhǔn)確避障。實(shí)驗(yàn)測試系統(tǒng)表明,該系統(tǒng)有效距離可達(dá)8m,測量精度可達(dá)0.05m,小車能自由避開前方障礙物,或遇到障礙物時緊急剎車停下, 但不會因?yàn)檎系K物在小車斜方向而誤判停止。

          1 引言

            超聲波傳感器因其測量精度高、 響應(yīng)快和價格低廉而得到了廣泛應(yīng)用,傳統(tǒng)應(yīng)用方式是1 個發(fā)射頭對應(yīng)1 個接收頭 ,也有多個發(fā)射頭對應(yīng)1 個接收頭。但我們在實(shí)際應(yīng)用中發(fā)現(xiàn),如果障礙物的面很大(如墻壁),超聲波傳感器可以用來準(zhǔn)確測距,但若將其應(yīng)用在小車防撞系統(tǒng)中,由于障礙物呈柱狀,而超聲波發(fā)射頭有一定的散射角(左右),因此即使障礙物不在小車正前方,超聲波仍能檢測到斜前方回波,這就給智能控制車輛行進(jìn)帶來困難和誤導(dǎo),為了解決這一問題,我們提出了一種使用雙接收頭的方案,并從實(shí)用角度給出了一套具體控制策略。

          2 系統(tǒng)的結(jié)構(gòu)流程設(shè)計

            我們的整個系統(tǒng)需要完成測距,測速,定位,控制小車運(yùn)動等功能,系統(tǒng)包括如下六部分: 超聲波發(fā)射電路, 超聲波接受電路,信號處理器,溫度測量,小車控制電路等五部分。系統(tǒng)結(jié)構(gòu)框圖如圖一所示:

          圖1:系統(tǒng)結(jié)構(gòu)框圖

            通過單片機(jī)產(chǎn)生40k 的方波,經(jīng)過放大后驅(qū)動超聲波傳感器發(fā)射頭,從而發(fā)出超聲波,遇到前方物體反射后由接收端捕捉,經(jīng)過對兩個接收頭捕捉時間的計算以及加入溫度補(bǔ)償,判斷最終前方小車的方向與距離,再通過與前次數(shù)據(jù)差分計算出其相對前車的速度,最后通過速度、距離以及位置三個數(shù)據(jù)進(jìn)行智能控制,控制小車轉(zhuǎn)彎或減速慢行等。

            具體的硬件組成為: 采用AT89S52 單片機(jī),P1.0 口輸出超聲波換能器所需的40K 方波信號,經(jīng)過反相器7404 后驅(qū)動傳感器,為了能使超聲波發(fā)射得更遠(yuǎn),我們并接了三個發(fā)射頭,利用外中斷0 口監(jiān)測超聲波接收電路輸出的返回信號,回波檢測采用紅外檢測集成芯片CX20106,顯示電路采用簡單的4 位共陽LED 數(shù)碼管,斷碼用74LS244,位碼用8550 驅(qū)動。測溫部分使用18B20 測出當(dāng)前的環(huán)境溫度用以判斷出超聲波傳播的速度。

          3 算法控制

            3.1 距離計算與方位判斷

            單片機(jī)可以計算出發(fā)射與接收到超聲波之間的時間,根據(jù)測溫系統(tǒng)的實(shí)際測溫, 查找出在該對應(yīng)溫度下的聲速,計算出反射物距離兩接收端的距離。 理論上由以上兩個數(shù)據(jù)上就可以直接數(shù)學(xué)推導(dǎo)出該物體的空間位置(如圖2 和公式一、二所示)。

          圖2 超聲波傳感器空間方位

            其中d 為R1 與R2 的距離,z1、z2 分別為物體到各個接收端的距離 ,如果直接這樣計算就會過于復(fù)雜,普通單片機(jī)處理的話耗時較多, 于是我們提出了一種基于計算二者距離差來大致判斷物體位置的方法。一般來講小車只關(guān)心在車前方的物體,我們設(shè)定一個距離參數(shù)l代表前方障礙物與小車的水平距離,再設(shè)定一個距離參數(shù)h,代表前方障礙物與小車的垂直距離。我們可以由下面的關(guān)系推導(dǎo)出h, l, d與z2-z1的關(guān)系(公式3---公式6)。

            將公式6想減的兩項(xiàng)做除法不難發(fā)現(xiàn)第一項(xiàng)始終大于第二項(xiàng),所以z2-z1是關(guān)于l的增函數(shù), 同時隨著h的減小,z2-z1同樣會變大,也就是說當(dāng)障礙物體靠近小車時,如果其偏離了小車的中心(即不會撞到)有一個明顯的特征為其z2-z1的值會比較大,我們可以取d=5cm h=30cm, 讓l在[10cm,30cm]間變化,做出的曲線如圖3所示,各個物理量的幾何關(guān)系見圖4 .

          圖3 z2-z1與l的關(guān)系

          圖4 各個物理量的幾何關(guān)系

            不難發(fā)現(xiàn),當(dāng)l距離在[10cm,30cm](h30cm)區(qū)間時,z2-z1的差將>4cm.據(jù)此我們設(shè)定了一個閾值4cm,當(dāng)檢測到差值大于4cm,不需要做任何剎車控制,直接直行通過,通過這樣簡單的計算判斷,我們可以有效避免由于偏離小車中心的障礙物靠小車過近造成的z1,z2的值過小,從而引來可能的剎車誤判。在做這個項(xiàng)目時,我們采用的車模體積不大,因此設(shè)計的閾值等不是很大,若應(yīng)用到實(shí)際車模中時可根據(jù)情況改變閾值的大小。

            3.2速度的計算

            速度我們采取簡單的近似平均進(jìn)行估算,我們可以計算出系統(tǒng)測距地間隔約為120ms,通過將當(dāng)前的測距結(jié)果與上次測距結(jié)果做差比較,根據(jù)公式7可以估算出當(dāng)前速度的近似值:

            3.3系統(tǒng)流程(見圖5) .

          圖5系統(tǒng)流程

          4 部分測試結(jié)果

            表1是我們對測距電路單獨(dú)的測試結(jié)果:(單位cm) .

          表1 測距結(jié)果

            從此表中可以看出我們的測距電路是很精確的。

            圖6是我們對雙接收頭方案的測試結(jié)果:

          圖6 雙接收頭方案測試結(jié)果

            這六幅圖中,上三幅均為用右接收頭接收信號時間計算出的距離,而下三幅均為用左接收頭接受信號時間計算出的距離,從中亦可看出當(dāng)障礙物偏離中心時,左右接收頭測出的距離明顯不同,由此可用來定位。

            最后當(dāng)我們完成整個小車系統(tǒng)的調(diào)試后,用它測試發(fā)現(xiàn)無論是運(yùn)動的還是靜止的障礙物,在小車前方的任何位置,小車都可正確判后做出前進(jìn)或停止的動作。

          5 結(jié)論

            綜上所述,本系統(tǒng)提出來一種基于雙超聲波接收頭,3發(fā)射頭的車載自動測速測距控制系統(tǒng),可以有效的起到對開車司機(jī)保護(hù)預(yù)判提醒等作用,當(dāng)司機(jī)開車遇到緊急事故采取了錯誤的控制措施時,該系統(tǒng)還可以強(qiáng)行糾正,或進(jìn)行報警提醒司機(jī)檢查。由于該系統(tǒng)簡單,經(jīng)濟(jì)適用,工作穩(wěn)定,具有非常大的市場前景 。



          評論


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