我國自2006年起舉辦的全國大學生“飛思卡爾杯”智能汽車競賽融科學性、趣味性和觀賞性為一體,是一項以迅猛發展、前景廣闊的汽車電子為背景,涵蓋了自動控制、模式識別、傳感技術、電子、電氣、計算機、機械與汽車等多個專業學科的科技創新比賽。參賽隊伍應在車模平臺基礎上,制作一個能夠自主識別路線的智能車,然后在專門設計的賽道上自動識別道路并行駛。本文所述的智能車就是根據比賽規則要求設計并制作而成的,該智能車控制系統采用飛思卡爾半導體公司生產的16位MC9S12DG128單片機作為數字控制器,由安裝在車前部的黑白CMOS攝像頭負責采集賽道信息,并將采集到的信號經二值化處理后傳人單片機,在單片機對信號進行判斷處理后,由PWM發生模塊發出PWM波對轉向舵機進行控制,從而完成智能車的轉向。另外,智能車后輪上裝有旋轉編碼器,可用來采集車輪速度的脈沖信號,然后由單片機使用PID控制算法處理后的控制量去改變電機驅動模塊的PWM波占空比,從而控制智能車的行駛速度。 1 系統硬件電路組成 設計有效的智能車控制系統必須首先掌握控制對象的特性。根據對智能車特點的分析,可以認為,智能車轉向控制系統的傳遞函數近似為一階積分加純滯后,速度控制對象的傳遞函數則近似為一階慣性加純滯后的結論。 轉向控制系統主要是要求響應速度快,但對穩態控制精度要求不高。而且控制對象只有積分和滯后環節,沒有常見的慣性環節。根據以上特點,本轉向控制可采用PD控制器。 對速度進行檢測和控制的意義在于盡可能使智能車按照道路條件允許的最高速度行駛。在彎道應將車速限制為不脫軌的最高速度,在直道則應適當進行急加速以縮短單圈運行時間,提高比賽成績。同時,對速度信號進行積分求和可以得到賽道長度信息,以便為道路識別與記憶模塊提供數據。智能車速度控制系統的精度不需要太高,關鍵是如何快速響應賽道的路況變化。因此,速度采用PID控制,以便針對不同的道路狀況可以迅速準確地改變車速,實現穩定過彎。智能車的硬件電路主要由視頻處理模塊、方向控制模塊和車速控制模塊組成。各模塊與單片機之間的硬件關系如圖1所示。 本系統中的視頻處理模塊由CMOS攝像頭、二值化電路和同步分離電路構成;轉向控制模塊主要由舵機完成。舵機的轉動會轉化為車模轉向拉桿的橫向移動,從而帶動車模前輪的轉動,以控制智能車的行駛方向。舵機的轉向控制采用PD控制,單片機可以根據賽道中央黑線的位置向舵機輸出相應占空比的PWM信號。 車速控制模塊主要由直流電機、驅動電路和旋轉編碼器構成。該模塊可根據CMOS攝像頭所檢測的路徑信息判斷智能車當前所處的賽道狀況,并根據旋轉編碼器所檢測的實際車速形成對智能車行駛速度的閉環控制,合理地調整數字PID控制算法的Kp,Ki、Kd三個參數,以達到迅速響應車速并消除靜態誤差之目的。 2 電路設計 2.1 電源模塊設計 電源模塊要為單片機、傳感器、舵機和驅動電機供電。因此需要提供多種電源以滿足各個模塊的要求。電池在完全充滿之后,其空載電壓只有8 V左右,而且隨著電池的消耗,電壓逐漸降低。此外,電機啟動及反接制動時的電流很大,也有可能將電池電壓拉得更低。為了避免電源電壓不穩定,影響攝像頭視頻處理電路和單片機的正常工作,本設計使用了DC-DC變換芯片MC34063以及低差壓穩壓器LM2940。MC34063可輸出穩定的8V電壓給CMOS攝像頭,LM2940則可為16位MC9S12DG128單片機、視頻放大及二值化電路提供穩定的5 V電源,從而保證了系統在各種情況下的穩定運行。其電源模塊電路原理圖如圖2所示。 2.2 直流電機驅動模塊設計 直流電機驅動采用飛思卡爾公司的5 A集成H橋芯片MC33886。MC33886芯片內置有控制邏輯、電荷泵、門驅動電路以及低導通電阻的MOSFET輸出電路。適合用來控制感性直流負載(如直流電機)。該芯片可以提供連續的5 A電流,并集成有過流保護、過熱保護、欠壓保護電路。通過控制MC33886的四根輸入線可以方便地實現電機正轉、能耗制動及反接制動。圖3是經過簡化的H橋電路,圖中,當S1、S4導通且S2、S3截止時,電流正向流過直流電機,智能車前進;當S2、S3導通且S1、S4截止時,電流反向流過直流電機,利用這個過程可以使車模處于反接制動狀態,從而迅速降低車速;當S3、S4導通且S1、S2截止時,沒有電源加在直流電機上,直流電機電樞兩端相當于短接在一起。由于電機軸在外力作用下旋轉時。電機可以產生電能,此時可以把直流電動機看作一個帶了很重負載的發電機,此時電機上會產生一個阻礙輸出軸運動的力,這個力的大小與負荷的大小成正比,這時電機處于能耗制動狀態。 本方案采用了兩片MC33886并聯,一方面減小導通電阻對直流電機特性的影響,另一方面,可以減小MC33886內部過流保護電路對電機啟動及制動的影響。直流電機驅動模塊的電路原理圖如圖4所示。 2.3 傳感器電路設計 本智能車采用CMOS攝像頭作為圖像傳感器,以保證賽道信息采集的準確有效。CMOS攝像頭的輸出信號是PAL制式的復合全電視信號,每秒輸出50幀(分為偶場和奇場)。由于CMOS攝像頭采集圖像時,偶場和奇場不是同時采集的。因此,可以在每場信號都對路徑進行識別。 2.4 無線數據傳輸模塊設計 該智能車加裝了基于射頻收發芯片nRF403的無線數據傳輸模塊,并可在此基礎上實現MOD-BUS通信協議,這對測試智能車參數及程序調試很有幫助。在運行的過程中,可以將智能車的各項參數實時發送上來,而分析智能車的運行狀態可以更有針對性地對控制程序進行改進。事實上,在調試運動參數的過程中,可以通過上位機軟件改變Kp、Ki、Kd等參數,而不用重新燒寫程序,因而十分迅速而方便。 3 軟件設計 本智能車控制系統的程序結構如圖5所示。這是一個兩層的分級控制系統。底層控制包括“轉向控制系統”和“車速控制系統”,上層主控程序則可通過改變底層控制系統的設定值、控制參數和約束條件,來對整個控制系統進行調度。設計這種分層結構的控制系統是參照了集散控制系統DCS的結構特點,程序各部分功能明確、結構清晰,便于調試和維護。為了調試方便,同時在主控程序中添加了基于無線信道的MODBUS通訊協議,因而對智能車行駛參數的監視和調整提供了很大的便利。 本系統軟件所實現的功能主要是初始化、數據采集和濾波處理、道路識別、電機控制和舵機控制等。其中初始化主要是設置系統默認參數。其次是數據采集及濾波處理。為了盡量減少引入的純滯后時間,本文提出了一種獨具創新性的視頻信號采集方法。即用MC9S12DG128單片機提供的SPI口直接讀取經過二值化處理的視頻信號。由于大賽規則中指定了賽道上黑色引導線的寬度為2.5厘米,故攝像頭中采集到的引導線寬度在正常情況下也應當落在一定范圍內。設計時可以用實驗的方法測得引導線對應的像素寬度,然后在濾波程序中對采集到的引導線線寬進行控制,如果超出正常范圍即認為是無效數據。 實驗證明,這種方法可以有效地濾除干擾。智能車分層控制系統的核心是賽道的識別。實際測試發現,由于CMOS攝像頭的可視范圍比較小而且視野范圍呈梯形,且在快速運動中經常發生賽道部分可能全部脫離視野范圍的情況,給賽道識別帶來很大的困難,因此,完整賽道識別模式幾乎是不可能的。為了簡化問題,本方案只識別賽道中的直線段,并根據直線段的數量和長度將賽道分割成不同的區域,然后在一個區域中對控制參數進行優化。 至于電機控制。本系統是用單片機通過接收旋轉編碼器來檢測智能車后輪轉動所產生的脈沖數,然后采用位置式PID控制算法的遞推形式對直流電機的轉速進行快速準確地控制。位置式PID控制算法的遞推形式如下: △u(k)=Kp[e(k)-e(k-1)]+Kixe(k)+Kd[e(k)-2e(k-1)+e(k-2)],u(k)=u(k-1)+△u(k) 式中:u(k)為k時刻控制器的輸出;e(k)為k時刻的偏差;Kp、Ki、Kd分別為位置式PID控制算法的比例系數、積分常數和微分常數。舵機控制也是用單片機通過CMOS攝像頭來檢測路徑信息,然后采用不完全微分PD控制算法來控制舵機的轉角,從而實現路徑跟蹤。 4 結束語 本文介紹了一種智能車控制系統的設計與實現方法。通過大量實驗測試證明,該智能車能快速平穩地在制作的賽道上跟蹤黑色引導線并行駛,而且尋跡效果良好,控制響應速度快,動態性能良好,穩態誤差小,系統的穩定性和抗干擾能力強。用本設計制作的智能車在2008年舉辦的全國大學生“飛思卡爾杯”智能汽車競賽中取得了華北賽區二等獎,充分證明了該設計方案的有效性和穩定性。 |