黃錦陽,胡傲,秦浩杰,趙春鋒
(上海工程技術大學工程實訓中心,上海201620)
隨著科學技術水平和生產力發展水平的提高,人們越來越追求智能化,而交通工具對未來社會的發展起著舉足輕重的作用,智能汽車則是最重要的一個環節。智能小車系統是智能汽車的一個縮影,兩者在信息獲取、信息處理、控制系統構成以及車輛整體設計方案方面有著許多相似之處。因此,研究智能小車的必要性顯而易見。智能小車主要由核心控制模塊、電源管理模塊、路徑識別模塊、車速測定模塊、電機驅動模塊、舵機等組成。
本文主要研究在使用線性CCD的基礎上,由單片機控制自主循跡的智能車。智能車的主控制器為K60單片機,設計智能車各個模塊單元的控制,以實現智能車在無人操作下智能循跡,實現自動駕駛。
智能車系統的基本結構可以分為三部分組成:傳感器、控制器和執行器。智能小車是以檢測車道兩邊黑線為基礎,通過單片機處理信號從而實現對車體能夠自主沿著預設的道路路徑智能行駛。智能車依靠線性CCD攝像頭來獲取收集車道信息,信息到智能車的“大腦”K60微型控制器,對信息進行確認和給出相應的反應(沿著最合理的路徑循跡);通過安裝在車上的編碼器檢測車速的大小,并采用K60的輸出捕捉功能進行脈沖計數從而獲取智能車的實時車速;使用脈沖寬度調制(PWM)來控制驅動電機調整電機的功率;要實現對智能小車運動速度和方向的閉環控制,本文采用經典的PID控制算法調節控制驅動電機的轉速以及轉向舵機偏轉的角度。除此之外,為了對獲得的圖像信息進行實時的分析和處理,本文在小車上安裝了LCD液晶顯示屏。系統總框圖如圖1所示。

圖1 系統總框圖
小車上的硬件總電源由7.2V/2000mAh的鎳鎘蓄電池提供。因為系統中的各個電路模塊所需要的工作電壓及工作電流各不相同,所以電源模塊中包含有多種穩壓電路,目的是將蓄電電池7.2V電壓轉換成各個模塊所需要的相應的電壓。其中K60單片機、線性CCD攝像頭和LCD液晶顯示屏均需要3.3V直流供電,選用LP38690-3.3V穩壓芯片能很好的提供穩定的電壓。另外,為了保證單片機工作不受其他模塊影響,這里采用一塊LP38690-3.3V單獨給單片機供電。編碼器則需要5V直流電壓供電,選用LP38690-5V芯片能提供所需要的電壓。舵機所需的6V電壓由LM2941提供。為了提高智能車的響應速度,保證動力充足,電機驅動模塊則由7.2V鎳鉻蓄電池直接供電。
車道信息采集模塊最主要的部分就是攝像頭。CCD攝像頭的感光度大概比普通CMOS攝像頭的高出2-9倍,所以在其他條件相同的情況下,要拍攝同樣亮度的圖像,普通攝像頭的曝光時間將會比CCD的多2-9倍。也就是說,在速度較快的情況下小車用普通攝像頭獲得的圖像將會變得很模糊。并且在圖像噪聲方面,CCD也比CMOS攝像頭更加突出。CCD攝像頭全部的感光點都經過一個電荷-電壓轉換器,因此可以保證幾萬個感光點的一致性,這就又進一步提高了圖像的穩定性。本文采用的CCD攝像頭型號是TSL1401,該CCD攝像頭包含了128個光電二極管的線性陣列。電路中單片機I/O口直接驅動SI和SLK信號。該CCD的AO輸出引腳有內置的增益調節器,所以從CCD的AO口輸出的電壓不需要經過其他運放,便可以直接接入單片機的AD輸入引腳。CCD的電路接口圖如圖2所示。

圖2 CCD電路接口圖
常用的電機驅動有兩種方式。第一是采用N溝道MOSFET和專用柵極驅動芯片設計,使用MOSFET搭建的驅動模塊,雖然輸出的電流小,發熱量小,但是電路設計較為復雜,可靠性也不高。第二則是采用集成電機驅動芯片,它的優勢電路設計簡單、可靠性較高。所以本電路設計采用的是BTS7970芯片,它的每一片芯片可以集成一個半橋,這里需要兩片BTS7970構成一個全橋。該芯片的安全性主要體現在它在高負荷的情況下工作時,芯片內部會產生較大電流、產生較多的熱量,從而導致內部的過熱保護電路自動切斷電源,使芯片停止工作。使用兩片這樣的芯片便可以很好地控制電機,實現相應的功能。電機驅動模塊的工作原理圖如圖3所示。

圖3 BTS7970結構圖
首先是車道中心線的提取,采用硬件二值化的方法,一個周期為20ms。根據光線強弱,設定適當的電壓比較值,因為車道黑白分明,通過硬件二值化容易區分車道黑白。通過比較器LP393,如果輸出為1(高電平)則為白點,若是輸出0(低電平)則為黑點。信號采集時以上一行的中值為本行采集的中點,向兩邊掃描,若滿足白黑白的條件,則這個黑點為這一邊賽道邊界,如此很容易識別車道,并計算出當前位置。
由于采用CCD攝像頭可以獲取許多車道的信息,為了選擇合適偏差值本文采用加權平均數的方式,選取不同行的偏差值并乘以一個權重并相加得到一個最終的偏差值,這樣能夠更加客觀地反映車道的信息。但是僅僅使用偏差值并不能完全反映車道元素的狀況,根據實驗數據,本文采用方差的方式來識別一些車道元素,例如長直道路和小S,并分配予不同的控制算法以提高小車的速度。
舵機控制本文采用位置式PD控制算法來控制,在求取了小車在車道的準確位置后,利用位置式PD公式算得控制量,再將控制量按照Servo=P+D公式轉換成驅動舵機的PWM模塊的寄存器的數值。公式中P為比例項,為偏差量和比例系數的乘積量;D為微分項,為微分系數和偏差量的變化量的乘積。
智能小車在行駛過程中,根據車道信息的改變電機需要隨時變速,經典的PID算法對本文的電機控制十分合適,數字PID閉環反饋控制系統如圖4所示。

圖4 數字PID閉環反饋控制系統圖
增量PID算法是數字PID控制經常使用的算法,表達式如下:
y(k)=y(k-1)+△y(k)
其中:
y(k)——第k次輸出的控制(信號)值
y(k-1)——前一次輸出的控制(信號)值
△y(k)——輸出增量(可為正、負數)
△y(k)=kp[e(k)-e(k-1)]+ki·e(k)+kd[e(k)-2e(k-1)+e(k-2)]
其中:
Kp——比例系數
Ki——積分系數
Kd——微分系數
e(k)——第k次采樣時的偏差值(采樣值與設定值之差)
e(k-1)——第k-1次采樣時的偏差值(采樣值與設定值之差)
e(k-2)——第k-2次采樣時的偏差值(采樣值與設定值之差)
上式中有kp、ki、Kd 3個系數需要確定,在實際實驗操作中頗具難度,根據之前的鉆研結果,可采用如下簡化的經驗公式:

該式中只包含一個系數,也就是Kp,因此容易在隨后的實驗中慢慢調整確定。
增量式PID的優越性主要體現在,控制增量△u(k)的確定僅與最近k次的采樣值有關,通過加權處理而不需要累加就可以得到較好的控制效果。該算法具備信號鎖存功能,系統發生故障時,也可以保持原值不變。
本文從硬件設計、軟件算法設計兩個方面對基于線性CCD循跡智能車的設計與實現進行了論述。本文采用模塊化思想,將智能車各個功能的實現分到各個模塊上去,每個模塊之間既相對獨立又存在一定的聯系,進而完成對整個智能小車的控制。經過實驗表明,該套系統可以使智能車在兩邊黑線的白色車道內平穩運行,達到了預期的效果。