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