低成本光電尋跡智能車設(shè)計(jì)與實(shí)現(xiàn)
if(P_Offset>5)P_Offset=5; //右偏最大偏離為5個(gè)單位
將Err進(jìn)行采樣劃分得到P_Offset變量,P_Offset取值為-5到5的整數(shù),負(fù)數(shù)表示向左偏,正數(shù)表示向右偏,絕對值越大代表偏轉(zhuǎn)角度越大;采樣分辨率為可調(diào)參數(shù)P_err,P_err偏大時(shí),小車反應(yīng)會(huì)較為遲鈍,P_err偏小時(shí),小車反應(yīng)會(huì)較為靈敏,容易出現(xiàn)很小偏差就會(huì)引起小車較大的轉(zhuǎn)向。
按照小車當(dāng)前的位置以及P_Offset組織數(shù)據(jù)表Angle_Table[],該表共有27行11列,第n行m列元素j,表示小車位置Car_State為n-13偏差P_Offset為m-5時(shí),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位單片機(jī),通過檢索表可以達(dá)到運(yùn)算所達(dá)不到的系統(tǒng)速度。
小車在交叉線時(shí)Car_State=20不更改舵機(jī)的控制;當(dāng)小車的傳感器打不到黑點(diǎn),即將跑出賽道活著已經(jīng)打到賽道外時(shí)Car_State=30或40,此時(shí)按照小車轉(zhuǎn)的方向,將舵機(jī)設(shè)置為最大轉(zhuǎn)角,以達(dá)到盡快找到賽道黑線的目的。
舵機(jī)的輸出PWM采用5 ms周期,與小車傳感器采樣的頻率一致。
4 試驗(yàn)結(jié)果及總結(jié)
通過上述方法,小車取得了比較好的試驗(yàn)結(jié)果,在最小曲率半徑不小于50 cm的賽道上,小車可以取得每秒2 m以上的速度。其速度比采用16位單片機(jī)的系統(tǒng)沒有很大差異。要特別注意的是,運(yùn)算時(shí)采用不同數(shù)據(jù)類型的變量將會(huì)帶來不同的效果,經(jīng)實(shí)驗(yàn)證明,如果可以使用字節(jié)存儲(chǔ)類型的變量作雙字節(jié)變量存儲(chǔ),將會(huì)嚴(yán)重影響小車的運(yùn)行情況,這是由單片機(jī)編譯環(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)。
評論