張 霖,張 桐
1.中南大學,湖南長沙 410086
2.廈門大學嘉庚學院,福建廈門 363105
汽車是改變?nèi)祟惿畹囊豁椫匾l(fā)明,其產(chǎn)生和發(fā)展已有百年,從福特的福特汽車到現(xiàn)在的奔馳,汽車的每一次進步都標志著整個人類社會的巨大飛躍。時至如今,智能化已成為時代的潮流,所以開發(fā)車輛自動駕駛系統(tǒng)也成為大勢所趨。
在本文中,設計了一種能夠在鋪有引導線的跑道上自動循跡的小車,小車的控制核心采用荷蘭NXP 公司生產(chǎn)的LPC2131 芯片,并采用電磁引導的方式進行循跡,即通過在跑道中心線鋪設一條通有200mA、20KHz 電流的導線產(chǎn)生磁場來進行導航,并在賽車后輪軸傳動齒輪上加裝脈沖編碼器來測量后輪轉(zhuǎn)速。鑒于傳統(tǒng)的“裸機編程”形式實時性較差且不穩(wěn)定,故而本設計中將實施操作系統(tǒng)μC/OS-II 應用到車輛的自動控制之中,并且應用了PID 控制算法以期獲得更好的結(jié)果。
智能車的設計由采用ARM7 核的LPC2131 芯片作為核心控制器.如圖1 所示,系統(tǒng)硬件分為五個模塊:核心控制單元、路徑識別、微控制器、電機驅(qū)動、電源管理和人機交互等模塊。其中,系統(tǒng)模塊圖如圖1 所示。
圖1 系統(tǒng)整體模塊圖
核心控制模塊采用LPC2131,其特點是片內(nèi)資源豐富,有PWM、AD、SPI、I2C、CAN 等多種通信接口,且封裝小、功耗低,適合智能車系統(tǒng)的使用。系統(tǒng)引腳的分配如下:P0[27:30]為AD 輸入模塊,接收從傳感器得到的信號,P0.21、P0.9 為PWM 信號輸出口,用于控制智能車的轉(zhuǎn)向和行駛,P0.10 口作為智能車測速輸入口,用于接收脈沖編碼器采集到的信號。
智能車供電采用7.2V 鋰電池供電,其中,小車電機直接由鋰電池通過電機驅(qū)動電路供電,而其他部分則經(jīng)過降壓和穩(wěn)壓后供電。賽車的電機驅(qū)動電路必須和核心控制電路分離,因為在電機運行的時候會產(chǎn)生很大的電流,不過不合控制電路分開的話,過大的電流通過地線回流會損壞控制芯片。
核心控制電路中,由LM7806 穩(wěn)壓芯片將電源電壓轉(zhuǎn)化至6V 供舵機使用,由LM2940 將電源電壓穩(wěn)至5V 供除LPC2131外的集成電路芯片使用,由LM1117 將電源電壓穩(wěn)至3.3V 供LPC2131 芯片使用。
在路徑檢測上,使用通有100mA,20kHz 的導線作為引導線,根據(jù)麥克斯韋理論,變換的電場會產(chǎn)生變化的磁場,所以智能車可以通過處理由安裝在賽車前部的4 個電感在切割磁感線時產(chǎn)生的感應電動勢來判斷當前位置。
圖2 賽道周圍磁場分布
圖3 長直導線磁場分析
由于賽道寬度遠小于電磁波波長,故而賽道可視為緩變磁場。所以,我們可以使用分析靜態(tài)電磁場的方法來分析導線附近的電磁場分布,進而檢測位置。根據(jù)畢奧-薩伐爾定律可知:在通有恒定電流I,長度為 L 的通電直導線周圍存在電磁場,距離導線r 處P 點 (如圖3 所示)電磁感應強度為:
可得:
由于賽道的導線很長,可近似視為無限長,故而,上式中θ1=0,θ2=π??傻茫?/p>
如圖4 所示:
圖 4 無限長直導線電磁分析
根據(jù)電感線圈在磁場中感應電動勢計算公式:
可知,在傳感器靠近電磁線的地方,傳感器獲得的電壓信號越大,反之則越小,如圖5 所示。
圖5 感應電動勢E 與距離x 之間的關系
由此,我們可以較容易地獲取賽道中心線的位置。首先,對所有的傳感獲得的數(shù)據(jù)進行處理,找出得到最大數(shù)據(jù)傳感器的位置,實現(xiàn)對賽道信息的粗定位,然后再以最大值傳感器位置為中心,借助其左右傳感器獲取的信號的大小來確定是偏左還是偏右,以實現(xiàn)更加精確的定位。
經(jīng)過多次的研究和實驗發(fā)現(xiàn), 運用分段處理和歸一化運算可以有效的解決上述問題。分段處理就是把相鄰傳感器之間的中心位置作為運算的分界點,分別處理各段的數(shù)據(jù)信息;歸一化運算就是將得到的數(shù)據(jù)與曲線最大值之間的比值來計位置偏移量,這樣將比值控制在0-1 之間,用一個常量乘以這個比值就可以相應的位置。這樣獲得的比例位置關系非常的接近直線關系,可以近似為一次函數(shù)來處理。其仿真關系如圖 6 所示。
圖6 分段處理和歸一化運算
電機驅(qū)動模塊包括兩個部分:電機驅(qū)動部分和測速部分。
電機驅(qū)動部分采用了全橋驅(qū)動的原理,如圖7 所示,通過4 個組成H 狀的MOS 管的通斷來控制電機的轉(zhuǎn)速和正反轉(zhuǎn)。
圖7 H 橋驅(qū)動原理圖
在具體實現(xiàn)上,電源模塊采用了兩塊BTS7960 構(gòu)成一個全橋驅(qū)動電路。BTS7960 是一塊集成的電機驅(qū)動芯片,每塊BTS7960 芯片內(nèi)部集成了一個半橋電路,將兩個BTS7960 連接,便能夠組成一個全橋驅(qū)動電路。
測速部分使用了光電編碼器來實現(xiàn)。光電編碼器內(nèi)部有一與電動機同軸轉(zhuǎn)動的光柵,有一發(fā)光二級管照射在光柵之上,當光柵隨電機轉(zhuǎn)動的時候,發(fā)光二級管的光線透過光柵周期性的照射到另一側(cè)的光電二極管上,便產(chǎn)生脈沖信號,經(jīng)輸出裝置傳送至微處理器中,系統(tǒng)通過對脈沖進行計數(shù)來確定當前電機轉(zhuǎn)速。
賽道電源旨在驅(qū)動賽道中心線下鋪設的0.1mm~0.3mm直徑的漆包線,如圖8 所示,其頻率范圍為頻率范圍:20K±2KHz,其電流范圍為電流范圍:50mA~150mA。
圖8 線圈驅(qū)動電壓與電流示意圖
賽道電源模塊由振蕩電路、功率輸出、恒流控制電路和電源4 個部分組成,如圖9 所示。其中,振蕩電路由555 時基電路組成,用于產(chǎn)生脈沖信號;功率輸出電路由L298 電機驅(qū)動芯片組成,用于提高輸出信號的功率使之能夠使用;恒流電路運用三極管恒流特性,將輸出電流穩(wěn)定在50mA ~150mA 范圍內(nèi)。
智能車的控制采用PID 控制理論。PID 控制分為3 個部分:即比例(P)控制 、積分(I)控制和微分(D)控制。比例控制是一種最簡單的控制方式。其控制器的輸出與輸入誤差信號成比例關系。在積分控制中,控制器的輸出與輸入誤差信號的積分成正比關系,這樣可以通過積分項的增加而消除穩(wěn)態(tài)誤差。在微分控制中,控制器的輸出與輸入誤差信號的微分(即誤差的變化率)成正比關系,這樣就可以通過當前和以前的誤差預測誤差變化的趨勢。
由于智能車電機的供電直接由7.2V 電池完成,而電池的電量卻是時時刻刻在下降,所以選用絕對的PWM 占空比來控制電機轉(zhuǎn)速時不現(xiàn)實的。只能通過每次輸出占空比的增量來控制電機,才能保證控制的有效性。
由以上分析可知,智能車的速度控制需要采用增量式的PID 控制,即:
其中e(k)即為每次速度檢測所得速度值與偏差值之間的誤差。
但是,當此控制系統(tǒng)遇到較大的偏差時,由于PID 算法固有的特性,就會造成魯棒性不足的問題。
所謂魯棒性,魯棒是Robust 的音譯,也就是健壯和強壯的意思,指標稱系統(tǒng)所具有的某一種性能品質(zhì)對于具有不確定性的系統(tǒng)集的所有成員均成立,如果所關心的是系統(tǒng)的穩(wěn)定性,那么就稱該系統(tǒng)具有魯棒穩(wěn)定性;如果所關心的是用干擾抑制性能或用其他性能準則來描述的品質(zhì),那么就稱該系統(tǒng)具有魯棒性能。
為了彌補這一缺點,本設計在算法設計中為PID 的調(diào)節(jié)設定了邊界,當系統(tǒng)誤差過大的時候,便直接輸出最大或最小值以期快速改變減小誤差,防止超調(diào)。
圖9 為智能車速度控制流程圖。
圖9 賽道電源模塊圖
智能車的轉(zhuǎn)向主要由控制舵機完成,而舵機會嚴格地按照單片機輸出的PWM 信號占空比來轉(zhuǎn)向相應的角度,因此,不同于電機,舵機可以使用PWM 占空比的絕對值來控制。
而舵機是一個延遲很大的機械機構(gòu),如果使用PID 算法中的I 項會造成很大的機械延遲,并且I 項對于過去數(shù)據(jù)的依存度很高,累加運算量大,如果中間出現(xiàn)故障,會極大地影響智能車轉(zhuǎn)向的控制,所以,在舵機控制中只使用了PD 控制,去掉了I 項,即:
與電機相同,舵機控制中也存在著魯棒性的問題,所以,也要為PID 的調(diào)節(jié)設定了邊界,當系統(tǒng)誤差過大的時候,便直接輸出最大或最小值以期快速改變減小誤差,防止超調(diào)。
圖10 速度控制流程圖
舵機控制流程圖如圖11 所示。
圖11 轉(zhuǎn)向控制流程圖
在本設計中,選用了嵌入式實時操作系統(tǒng)μC/OS-II。μC/OS-II 是由Labrosse 先生編寫的一個開放式內(nèi)核,最主要的特點就是內(nèi)核占用空間小,源碼公開。μC/OS-II 是一個占先式的內(nèi)核,即已經(jīng)準備就緒的高優(yōu)先級任務可以剝奪正在運行的低優(yōu)先級任務的CPU 使用權。這個特點使得它的實時性比非占先式的內(nèi)核要好。μC/OS-II 和大家所熟知的Linux 等分時操作系統(tǒng)不同,它不支持時間片輪轉(zhuǎn)法。μC/OS-II 是一個基于優(yōu)先級的實時操作系統(tǒng),每個任務的優(yōu)先級必須不同,分析它的源碼會發(fā)現(xiàn),μC/OS-II 把任務的優(yōu)先級當做任務的標識來使用,如果優(yōu)先級相同,任務將無法區(qū)分。進入就緒態(tài)的優(yōu)先級最高的任務首先得到CPU 的使用權,只有等它交出CPU 的使用權后,其他任務才可以被執(zhí)行。μC/OS-II 對共享資源提供了保護機制。正如上文所提到的,μC/OS-II 是一個支持多任務的操作系統(tǒng)。一個完整的程序可以劃分成幾個任務,不同的任務執(zhí)行不同的功能。
表1 任務劃分及說明表
圖12 任務控制關系圖
在本系統(tǒng)的設計中,共定義了4 個任務:系統(tǒng)啟動任務Task_Init()、路徑檢測任務Task_Location()、轉(zhuǎn)向控制任務Task_Turn()和速度控制任務Task_Speed()。調(diào)度工作可分為兩個部分:最高優(yōu)先級任務的尋找和任務切換。
在本系統(tǒng)中,任務劃分及說明如表1 所示。如圖12 所示,操作系統(tǒng)任務調(diào)度和通信流程如下:系統(tǒng)啟動后,執(zhí)行Task_Init()來進行系統(tǒng)的初始化,在初始化任務執(zhí)行完畢后,利用系統(tǒng)內(nèi)置的OSTaskDel()函數(shù),使得該任務進入休眠狀態(tài)。此時,路徑檢測任務Task_Location()將成為優(yōu)先級最高的任務并一直執(zhí)行。當Task_Location()檢測到路徑發(fā)生變化的時候,會通過郵箱傳遞數(shù)據(jù)到Task_Turn(),并由Task_Turn()控制舵機PWM信號的輸出;同時,Task_Location()檢測到路徑發(fā)生變化的時候,也會通過郵箱將預期需要達到的速度發(fā)送到Task_Speed(),Task_Speed()根據(jù)在定時器中斷服務函數(shù)中得到的編碼器轉(zhuǎn)數(shù)來計算速度值,并決定PWM 輸出。任務優(yōu)先級較低,但是同樣會一直執(zhí)行,并且每次中斷都會向該任務發(fā)送信號量使其進入就緒態(tài)。
智能車是一個自動行駛的智能控制系統(tǒng),它從傳感器中采集信息,而后信息流入智能車的大腦,即是微處理器。處理器分析數(shù)據(jù)并運算后得出指令并傳輸給執(zhí)行機構(gòu)。這就是一個完整的智能系統(tǒng),而本文的任務就是如何去完成這個系統(tǒng)并轉(zhuǎn)化到智能小車上。
本文設計的系統(tǒng)能夠較好地滿足智能車行駛的需要,并且有一定的擴展性。在本文中完成了智能車設計的軟件、硬件和機械3 個方面。
在軟件方面,本設計在嵌入式實時操作系統(tǒng)μC/OS-II 開發(fā)了驅(qū)動程序并且設計了系統(tǒng)的整體程序,并運用了PID 控制算法,較好的完成了智能車行駛控制的任務,具有良好的實時性,對于小車行駛中可能遭遇到的各種問題都能很好的應對。
在硬件方面,本設計選擇了一款適合小車的ARM7 系列芯片,并以此為重心完成了小車各個模塊的硬件設計,并在此基礎上,又完成了各個部分的接口電路設計,使得整個小車能夠耦合成為一個有機的整體。
[1]基于交變磁場檢測的路徑識別智能車控制系統(tǒng)設計.
[2]張自友.樂山師范學院學報,2010,25(12).
[3]劉益民,等.轉(zhuǎn)臺伺服系統(tǒng)中高精度測速方法的研究與實現(xiàn)[J].科學技術與工程,2007(8).
[4]楊巍.基于內(nèi)模整定的PID算法應用與研究.華北電力大學(北京),2010.
[4]司利云,等.嵌入式實時操作系統(tǒng)μC/OS-Ⅱ及其應用[J].電子產(chǎn)品世界,2002.
[5]晏五一.基于ARM的新型遠程配變監(jiān)控終端研究與設計[D].湖南大學,2007.
[6]郭煒璜.PID控制在清梳聯(lián)系統(tǒng)中的應用[J].國際紡織導報,2009(2).