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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 低成本8位單片機(jī)控制的光電尋跡智能車

          低成本8位單片機(jī)控制的光電尋跡智能車

          作者: 時間:2012-02-06 來源:網(wǎng)絡(luò) 收藏

          3.2 小車行駛狀態(tài)確定
          該系統(tǒng)采用的賽道為寬為50 cm,中心線為25 mm的賽道,傳感器在黑色上讀取為1,在白色上讀取為0,賽道外地板使用傳感器有可能讀1,也有可能讀0。激光傳感器終采用“一”字型排布方式,相鄰的兩個傳感器的距離為20 mm。賽道如圖5所示。

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

          e.jpg


          傳感器在賽道上可能的狀態(tài)可分為:在普通的賽道處、在十字交叉線處,還有跑出賽道。系統(tǒng)定義了變量Car_State來代表小車當(dāng)前的狀態(tài),可能會出現(xiàn)的情況如下:
          1)當(dāng)小車在賽道上時,將會有1到2個傳感器輸出高電平,如果有兩個傳感器同時打到黑點(diǎn),而兩個傳感器并不是相鄰的則認(rèn)為是干擾信號,不作特別處理,其他按照如圖6的傳感器排布方法計算坐標(biāo)從左向右依次為-13到13,此時Car_State計為傳感器打到的坐標(biāo);

          f.jpg


          2)打到10個以上黑點(diǎn)計為交叉線,Car_State計為20;
          3)沒有打到黑點(diǎn)則認(rèn)為小車即將跑出賽道,Car_State計為30;
          4)另外還有一種情況傳感器已經(jīng)打到了賽道之外,而打到賽道外的傳感器可能輸出高電平,也有可能輸出低電平,此時有可能讀出的情況可能會判定為第一種,如圖5示意,此時小車本應(yīng)繼續(xù)左拐,但是判讀位第一種情況,就可能右拐,這種情況的判定就不能僅僅依靠讀傳感器來判定,還應(yīng)考慮小車前面行進(jìn)的趨勢加以判別。因?yàn)榇朔N情況一般只出現(xiàn)在小車轉(zhuǎn)大彎時,由于轉(zhuǎn)角不夠當(dāng)小車的傳感器會打到相反方向的賽道外,所以左轉(zhuǎn)或者右轉(zhuǎn)的角度超過某一特定值時(如60°),應(yīng)當(dāng)屏蔽另一側(cè)的傳感器,只讀轉(zhuǎn)向該側(cè)的傳感器,如圖5小車現(xiàn)轉(zhuǎn)左側(cè)大彎,右側(cè)傳感器檢測到錯誤黑點(diǎn),此時只要將右側(cè)的7個傳感器屏蔽,只讀左側(cè)傳感器數(shù)值即可,此種情況Car_State計為40。
          3.3 舵機(jī)
          小車在賽道上:Car_State為-13到13間的整數(shù),由于管數(shù)量少,造成傳感器返回值離散度過大,不適合進(jìn)行回控,故應(yīng)加快采樣速率,進(jìn)行過采樣,再進(jìn)行一階迭代濾波:
          PVal=((Car_State×1 000)+(Pvalx10))/11;
          小車行使5 ms后位置的偏差進(jìn)行迭代濾波:
          Err=((PVal-PVal1)+(Errx10))/11;//兩次位置偏差
          P_Offset=Err/P_err; //負(fù)值左偏 正值右偏
          if(P_Offset-5)P_Offset=-5; //左偏最大偏離為-5個單位
          if(P_Offset>5)P_Offset=5; //右偏最大偏離為5個單位
          將Err進(jìn)行采樣劃分得到P_Offset變量,P_Offset取值為-5到5的整數(shù),負(fù)數(shù)表示向左偏,正數(shù)表示向右偏,絕對值越大代表偏轉(zhuǎn)角度越大;采樣分辨率為可調(diào)參數(shù)P_err,P_err偏大時,小車反應(yīng)會較為遲鈍,P_err偏小時,小車反應(yīng)會較為靈敏,容易出現(xiàn)很小偏差就會引起小車較大的轉(zhuǎn)向。
          按照小車當(dāng)前的位置以及P_Offset組織數(shù)據(jù)表Angle_Table[],該表共有27行11列,第n行m列元素j,表示小車位置Car_State為n-13偏差P_Offset為m-5時,j的值在-10到10之間,負(fù)值代表向左轉(zhuǎn),正值代表向右轉(zhuǎn),小車舵機(jī)應(yīng)打的角度為jxAngle_C,可調(diào)參數(shù)Angle_C可以根據(jù)賽道狀況舵機(jī)反應(yīng)靈敏度等調(diào)節(jié),其調(diào)節(jié)在調(diào)試程序中完成,其值愈大,同等情況下轉(zhuǎn)角越大。
          舵機(jī)的就是通過查數(shù)據(jù)表Angle_Table來實(shí)現(xiàn),而不是通過公式求解,這種方法比較適用于8位,通過檢索表可以達(dá)到運(yùn)算所達(dá)不到的系統(tǒng)速度。
          小車在交叉線時Car_State=20不更改舵機(jī)的;當(dāng)小車的傳感器打不到黑點(diǎn),即將跑出賽道活著已經(jīng)打到賽道外時Car_State=30或40,此時按照小車轉(zhuǎn)的方向,將舵機(jī)設(shè)置為最大轉(zhuǎn)角,以達(dá)到盡快找到賽道黑線的目的。
          舵機(jī)的輸出PWM采用5 ms周期,與小車傳感器采樣的頻率一致。

          4 試驗(yàn)結(jié)果及總結(jié)
          通過上述方法,小車取得了比較好的試驗(yàn)結(jié)果,在最小曲率半徑不小于50 cm的賽道上,小車可以取得每秒2 m以上的速度。其速度比采用16位的系統(tǒng)沒有很大差異。要特別注意的是,運(yùn)算時采用不同數(shù)據(jù)類型的變量將會帶來不同的效果,經(jīng)實(shí)驗(yàn)證明,如果可以使用字節(jié)存儲類型的變量作雙字節(jié)變量存儲,將會嚴(yán)重影響小車的運(yùn)行情況,這是由編譯環(huán)境進(jìn)行數(shù)學(xué)運(yùn)算引起的,應(yīng)當(dāng)盡量避免不恰當(dāng)?shù)淖兞慷x及算數(shù)運(yùn)算。
          相較于當(dāng)前流行的16位單片機(jī)控制的雙舵機(jī)車,該系統(tǒng)在硬件上較低,而軟件也根據(jù)8位單片機(jī)的特點(diǎn),避開了較為復(fù)雜的運(yùn)算,采用了查表的方式,只在小車位置及偏差運(yùn)算以及速度P算法中涉及了少量的數(shù)學(xué)運(yùn)算,以此達(dá)到系統(tǒng)的快速響應(yīng)。


          上一頁 1 2 3 下一頁

          評論


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