<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

本文引用地址:http://dyxdggzs.com/article/172183.htm

e.jpg


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

f.jpg


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

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


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 智能 光電 控制 單片機 成本

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>