雷永鋒 劉 勇 黃喜恒
(成都理工大學 工程技術學院,四川 樂山 614007)
隨著科技的進步和高等教育的發展,培養應用型人才成為高校人才培養的主要目標。讓在校大學生參與更多的實踐活動不但能夠增加動手和思考的能力,而且對于適應畢業后的工作有很大的益處。全國大學生智能汽車競賽就為在校學生提供了一個展示自己的平臺,也促進了專業理論知識和實踐能力的結合。本論文設計的基于線性CCD的智能巡線小車控制系統就是利用學院大學生科技創新基金針對競賽而開展的一項創新項目。由于線性CCD的優良特性,使得在小車控制方面得到較好的應用,實現小車平穩、快速的行走。
本智能循跡小車由電源模塊、單片機模塊、舵機模塊、線性CCD圖像采集模塊、顯示和按鍵、無線通訊模塊等模塊組成,系統硬件結構框圖如圖1所示。

圖1 智能循跡小車硬件結構框圖
本系統采用線性CCD作為傳感器,采集來自前方賽道的信息,并將此信息處理后傳送至單片機,通過軟件處理,由舵機調整角度,驅動電機帶動車輪行走。單片機通過串口通訊模塊實現和上位機之間的通訊,由按鍵實現現場參數調整,并可通過LCD實時顯示運行參數。下面對系統主要硬件模塊進行闡述。
本系統采用Freescal半導體公司生產的16位單片機MC9S12XS128作為控制器。MC9S12XS128是一款針對汽車電子市場的高性能16位單片機,具有速度快、功能強、成本低、功耗低等特點。MC9S12XS128總線速度 40MHz,擁有 128KB程序 Flash和 8KB DataFlash,用于實現程序和數據存儲,均帶有錯誤校正碼(ECC),可配置8位、10位或12位ADC,3μs的轉換時間,內嵌MSCAN模塊用于CAN節點應用。內嵌支持LIN協議的增強型SCI模塊及SPI模塊,4通道16位計數器,出色的低功耗特性,帶有中斷喚醒功能的I/O,實現喚醒休眠系統的功能;擁有8通道PWM,易于實現電機控制。作為專業的汽車電子控制芯片,能夠更加適應智能控制。
本系統采用的線性CCD圖像采集傳感器TSL1401-DK是岱默科技公司生產的一款具有128個有效像素點的線性CCD,尺寸為26mm×26mm,重量輕,可以直接任意系列MCU相連接進行數據采集處理。TSL1401-DK有2個電源口,3個數據口;數據口直接與MCU的I/O口相接。
賽道為450mm寬的白色KT板,兩邊有各寬15mm的邊界,賽道外為藍色的底版。環境光源的變化對CCD數據的采集有十分大的影響,所以需要使用軟件技術對采集到的數據進行二值化處理,使其明確路況信息,不至于出現判斷紊亂而小車失控的現象。本次設計的小車CCD的數據采集距離前瞻為70cm,通過排列成一條線的128個有效像素點的數值信息判別前方道路的信息。單個像素點數值的變化范圍為0-255。根據實際外界光照情況,實際采集白色的底板時數值為110左右,黑色邊界的數值為40左右。通過閾值處理,區分賽道和邊界。由于小車在前進的過程中,光線強度在隨時變化,采集數據也在變化,就需要對白色和黑色對應的電壓值進行特殊處理,這樣就增強了小車對賽道的適應性。
舵機主要用來控制單片機的PWM模塊,通過調節脈沖的寬度和周期來控制舵機和電機的工作。通過輸入占空比一定的脈沖,內部電機將轉過一個固定的角度,所以要讓舵機轉到某一個位置,只需要改變脈沖的占空比就可以實現舵機在一定角度內的任意轉動。
智能小車采用RS-540SH直流電機,由于單片機輸出電流不夠,驅動能力不足,電機的反向電動勢也會損壞單片機,所以必須添加電機驅動模塊。本設計采用大功率MOS管IRF4905和IRF3205搭成H橋驅動電機。
電機轉速的控制通過調節PWM的占空比來實現,采用定頻調寬法,PWM波形頻率固定,占空比跟隨速度變化調節。
智能小車的優點在于能夠根據路況的改變和自動實現轉彎等功能,這就對軟件程序的設計要求很高。本設計采用CodeWarrior編程軟件進行程序編寫,并通過串口總線下載到單片機中,進行參數修改與調試。系統軟件流程圖如圖2所示。

圖2 系統軟件流程圖
void GetPixel01()
{
unsigned char ii;
Init_Black=0;
L1=L2=Z0=R1=R2=0;
AverageValueold=Pixelaverage(Pixel);
for(ii=0;ii<128;ii++)
{
if(Pixel[ii]>AverageValueold)
{
Pixel01[ii]=1;
}else
Pixel01[ii]=0;
}
L1=Pixel[9]+Pixel[10]+Pixel[11]+Pixel[12]+Pixel[13];
L1=L1/5;
L2=Pixel[39]+Pixel[40]+Pixel[41]+Pixel[42]+Pixel[38];
L2=L2/5;
Z0=Pixel[62]+Pixel[61]+Pixel[63]+Pixel[60]+Pixel[64];
Z0=Z0/5;
R1=Pixel[92]+Pixel[91]+Pixel[93]+Pixel[90]+Pixel[94];
R1=R1/5;
R2=Pixel[115]+Pixel[116]+Pixel[117]+Pixel[118]+Pixel[119];
R2=R2/5;
void SpeedCtrol(void)
{
int SKP,KI,KD;
static int ek1=0,ek2=0;
angle_erro=8970-angle_Old;
angle_erro=abs(angle_erro);
ExpectSpeed=MAX_speed-angle_erro;
//if(ExpectSpeed<250)
//ExpectSpeed=250;
ek0=ExpectSpeed-puls_num;
ek1=ek0;
ek2=ek1;
if(ek0>50) //加速,啟動
{
SKP=20000;
KI=0;
KD=0;
}
else if(ek0>=0) //加速 PID 參數
{
SKP=1000;
KI=120;
KD=250;
}
else //減速PID參數
{
SKP=800;
KI=100;
KD=200;
}
car_speed=25000+SKP*ek0+KI*(ek0-ek1)+KD*(ek0-2*ek1+ek2);
if(car_speed>25000)
car_speed=25000;
if(car_speed<0)
car_speed=0;
(void)PWM9_SetRatio16(car_speed);
}
本設計分別進行了CCD傳感器信號采集處理模塊設計、動力電機驅動模塊設計、控制算法的編制及執行和調試、舵機控制設計與安裝。通過系統硬件平臺搭建和軟件設計,并反復調試,該智能循跡小車基本達到了設計要求,能夠實現快速直行,最高速度可達4m/s,能夠比較平穩地度過大S彎、小S彎、連續S彎、Ω彎道、十字、坡道等復雜路況,平均速度可以達到3.5m/s。智能小車的設計與開發,對于推動汽車工業的發展具有一定的現實意義和實用價值。
[1]趙萬欣,陳思屹.基于TSL1401線性CCD的智能巡線小車[J].工業控制計算機,2014,27(2):121-122.
[2]李孟桃.基于線性TSL1401CCD的直立智能小車設計[J].電子設計工程,2013,21(21):86-88.
[3]魯小雨.基于MC9S12XS128單片機的智能小車控制系統設計與實現[J].成都大學學報,2011,30(3):164-247,273.
[4]蔡述庭.“飛思卡爾”杯智能汽車競賽設計與實踐[M].北京:北京航空航天大學出版社,2012.
[5]韓建文.基于飛思卡爾單片機智能車的設計[J].電子制作,2014(1):59-60.
[6]郭玉龍,于永會,何志琴.基于 MC9S12XS128的直立輪式智能小車設計[J].現代機械,2013(5):31-34.