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