梅 真,趙熙臨
(湖北工業(yè)大學(xué)電氣與電子工程學(xué)院,湖北 武漢430068)
智能車系統(tǒng)只有把直流電機(jī)的驅(qū)動(dòng)控制、道路的識(shí)別以及轉(zhuǎn)向舵機(jī)的轉(zhuǎn)向控制完美準(zhǔn)確地組合在一起,才能實(shí)現(xiàn)平穩(wěn)快速行駛。
相比于其他的控制算法,增量式PID有著保持較小的超調(diào)和調(diào)控快速的優(yōu)點(diǎn),并且其算法簡(jiǎn)潔,理論完善成熟。在控制過(guò)程中,增量式PID的穩(wěn)態(tài)誤差對(duì)于控制系統(tǒng)的影響不是很大,但控制性能與其參數(shù)相關(guān),在一般情況下,能夠滿足直流電機(jī)調(diào)速系統(tǒng)的相關(guān)要求。利用光電編碼器采集脈沖數(shù),計(jì)算出智能車當(dāng)前速度,然后比較給定速度和當(dāng)前速度的差值,通過(guò)增量式PID算法調(diào)節(jié)單片機(jī)的PWM波的輸出,實(shí)現(xiàn)對(duì)智能車直流電機(jī)的調(diào)速,以最短的時(shí)間完成速度調(diào)節(jié),借此提高其控制效果。基于增量式PID控制器控制精度高,具有較高的可靠性,算法容易理解。
本文的智能車系統(tǒng)的功能模塊主要包括微控制器MC9S12XS128、電源管理模塊、圖像采集模塊、直流電機(jī)控制模塊、測(cè)速裝置模塊、舵機(jī)控制模塊和無(wú)線發(fā)射與接收模塊。所有的模塊都包含了硬件和軟件兩部分。硬件模塊為系統(tǒng)運(yùn)行提供硬件實(shí)體,相應(yīng)的一些軟件為系統(tǒng)工作提供各種算法。圖1為系統(tǒng)功能模塊結(jié)構(gòu)圖。
在上述模塊中,電源管理模塊、微控制器模塊、圖像采集模塊、直流電機(jī)控制模塊、舵機(jī)的轉(zhuǎn)向控制模塊是智能汽車系統(tǒng)的核心模塊,也是整個(gè)系統(tǒng)穩(wěn)定的關(guān)鍵基礎(chǔ)。這些模塊都是由智能車的總電源(7.2V直流電池)通過(guò)電源管理模塊供電。
圖1 智能小車系統(tǒng)結(jié)構(gòu)圖
智能車是利用直流電機(jī)操控后輪來(lái)驅(qū)動(dòng)的,通過(guò)直流電機(jī)的驅(qū)動(dòng)力為智能小車提供前進(jìn)和后退的動(dòng)力。采用4個(gè)IRF540,組成一個(gè)H橋電路,構(gòu)成單片控制的小功率直流電機(jī)伺服系統(tǒng),實(shí)現(xiàn)對(duì)直流電機(jī)的加減速和正反轉(zhuǎn)的控制。電路圖見圖2。
圖2 電機(jī)驅(qū)動(dòng)電路
IRF540是一個(gè)較高耐壓(100V)、大電流(30A)和低導(dǎo)通電阻(0.077Ω)的N溝道場(chǎng)效應(yīng)管。
IR2104驅(qū)動(dòng)芯片上的 P3、P5、E6、E7是由單片機(jī)產(chǎn)生的PWM波控制,當(dāng)PWM輸出的P3是高電平、E6是低電平時(shí),圖中IR2104芯片的工作情況:U5的7管腳(HO)輸出7.2V的高電平驅(qū)動(dòng)電壓,5管腳(LO)輸出0V低電平驅(qū)動(dòng)電壓;U6的7管腳(HO)輸出0V的低電平驅(qū)動(dòng)電壓,5管腳(LO)輸出7.2V高電平驅(qū)動(dòng)電壓。圖中的4個(gè)IRF540工作情況:當(dāng)Q1、Q4關(guān)斷,Q2、Q3導(dǎo)通時(shí),電機(jī)正轉(zhuǎn)。當(dāng)Q1、Q4導(dǎo)通,Q2、Q3關(guān)段時(shí)則電機(jī)反轉(zhuǎn)。驅(qū)動(dòng)電機(jī)的是采用單片機(jī)輸出不同占空比的PWM波,根據(jù)直道、彎道不同跑道信息改變占空比大小達(dá)到控制電機(jī)速度的目的(圖2)。
本系統(tǒng)采用的車速檢測(cè)裝置是歐姆龍公司生產(chǎn)的E6A2-CS3C型光電編碼器。此光電編碼器重量很輕,對(duì)智能車的機(jī)械影響很小,由5~12V的直流供電 ,測(cè)量精度高。能夠滿足智能車直流電機(jī)的測(cè)速要求。
直流電機(jī)轉(zhuǎn)速的檢測(cè)方法叫做測(cè)頻法,也就是通常所說(shuō)的M法。測(cè)頻法的基本原理是檢測(cè)單位時(shí)間Tc內(nèi)光電編碼器輸出的脈沖,統(tǒng)計(jì)這些脈沖的數(shù)目來(lái)測(cè)定電機(jī)的轉(zhuǎn)速(圖3)。假如使用一個(gè)N線的光電編碼器,那么每當(dāng)光電編碼器旋轉(zhuǎn)一圈的時(shí)候便有4N個(gè)脈沖輸出,因?yàn)楣怆娋幋a器兩路脈沖的每一個(gè)上升沿及其下降沿使得光電編碼器輸出的脈沖信號(hào)被4倍頻。如果現(xiàn)在的脈沖測(cè)量時(shí)間是Tc,通過(guò)計(jì)數(shù)后得到的脈沖數(shù)目是M1,那么可以得出電機(jī)每分鐘的轉(zhuǎn)速
圖3 示波器測(cè)得編碼器脈沖
在實(shí)際的應(yīng)用中,光電編碼器是存在誤差的。因?yàn)樵跍y(cè)量的時(shí)間Tc內(nèi)所測(cè)得脈沖數(shù)目有時(shí)候不是整數(shù),會(huì)出現(xiàn)最大半個(gè)脈沖的實(shí)際誤差。在系統(tǒng)設(shè)計(jì)時(shí)如果要求試驗(yàn)精度高測(cè)試誤差小,例如要求的誤差小于1%,則所測(cè)得M1的數(shù)值要大于50。在一定的電機(jī)的轉(zhuǎn)速下可以通過(guò)增大轉(zhuǎn)速的檢測(cè)時(shí)間Tc來(lái)增大脈沖的檢測(cè)數(shù)目M1來(lái)減小相應(yīng)的誤差。但是在實(shí)際應(yīng)用中所用的檢測(cè)時(shí)間很短暫,比如在伺服系統(tǒng)的反饋控制中,通常的速度檢測(cè)時(shí)間小于0.01s。因此減小測(cè)量誤差的最好方法是使用高線數(shù)的光電編碼器。測(cè)頻發(fā)適合于測(cè)量高轉(zhuǎn)速的情況,當(dāng)電機(jī)的轉(zhuǎn)速一定,在測(cè)量時(shí)間Tc下,線數(shù)越高,計(jì)數(shù)得到的脈沖數(shù)目M1也越大,試驗(yàn)的誤差也就越小。
增量式PID是一種在過(guò)程控制中使用范圍很廣的控制算法。增量式PID的數(shù)字控制器,在控制過(guò)程中只是輸出相關(guān)控制量的增量Δu(k)。在使用增量式PID算法時(shí)計(jì)算機(jī)輸出的控制量的增量Δu(k)不是對(duì)應(yīng)執(zhí)行機(jī)構(gòu)的實(shí)際位置,而是本次執(zhí)行機(jī)構(gòu)的位置增量,因而對(duì)于執(zhí)行機(jī)構(gòu)要求有對(duì)控制量增量進(jìn)行累積的功能,從而達(dá)到對(duì)被控對(duì)象的實(shí)際控制操作。執(zhí)行機(jī)構(gòu)的累積功能可以運(yùn)用硬件來(lái)實(shí)現(xiàn),也能夠采用軟件來(lái)完成,例如,利用算式(1)程序化來(lái)完成。
增量式PID控制算式
式中Δe(k)=e(k)-e(k-1)。進(jìn)一步可以改寫成
通常情況下計(jì)算機(jī)設(shè)定的采樣周期T是一個(gè)固定值,在確定增量式PID的3個(gè)參數(shù)kp、ki、kd后,運(yùn)用公式(2),只需計(jì)算出使用前后3次測(cè)量的偏差便可以得到控制增量。
增量式PID算法的優(yōu)點(diǎn)在于,計(jì)算機(jī)每次運(yùn)算后輸出的是控制增量,也就是相應(yīng)的執(zhí)行機(jī)構(gòu)的位置的變化量,對(duì)系統(tǒng)發(fā)生故障后影響范圍小。增量式PID參數(shù)的整定就是合理選擇PID的各個(gè)參數(shù)。通過(guò)綜合系統(tǒng)的響應(yīng)速度,系統(tǒng)的穩(wěn)定性,超調(diào)量和穩(wěn)態(tài)精度對(duì)系統(tǒng)的影響這幾個(gè)方面來(lái)整定合適的PID參數(shù)。綜合自己調(diào)試的經(jīng)驗(yàn)和工業(yè)調(diào)試的經(jīng)驗(yàn),基本上增量式PID參數(shù)整定滿足以下幾個(gè)規(guī)則:
1)如果e的值較小,可以將kp與ki取得大一點(diǎn),同時(shí)為防止系統(tǒng)在設(shè)定值的附近出現(xiàn)振蕩,通常kd為中等大小,使得系統(tǒng)的穩(wěn)定性能較好,。
2)如果e值是中等大小時(shí),kp可以取得小一點(diǎn),在這種條件下,kd的取值對(duì)系統(tǒng)響應(yīng)的影響很大,ki的取值應(yīng)該適當(dāng)小,使系統(tǒng)的響應(yīng)能夠有較小的超調(diào)。
3)如果e值較大,kp的取值應(yīng)該較大,kd的取值應(yīng)該較小,同時(shí)為防止系統(tǒng)響應(yīng)出現(xiàn)較大的超調(diào)現(xiàn)象,應(yīng)該對(duì)積分作用進(jìn)行限制,一般取ki=0,使系統(tǒng)能夠具備較好的跟蹤性能。
智能車速度的快慢與目前的道路狀況和電機(jī)目前的轉(zhuǎn)速有關(guān)系,在實(shí)際使用的情況下,脈沖累加器中的脈沖數(shù)就是采樣的反饋值y(k),預(yù)設(shè)門限值A(chǔ)的大小,根據(jù)參數(shù)整定時(shí)的實(shí)際情況進(jìn)行調(diào)節(jié),執(zhí)行機(jī)構(gòu)輸出u(k)并不能用于直接控制電機(jī)的轉(zhuǎn)速,需要將u(k)轉(zhuǎn)換成控制PWM占空比,通過(guò)增大或減小PWM占空比的方法來(lái)實(shí)現(xiàn)對(duì)電機(jī)的加速和減速的控制。在求偏差量時(shí),試驗(yàn)測(cè)試中用的是每20ms實(shí)際期望電機(jī)轉(zhuǎn)過(guò)的齒輪數(shù)和電機(jī)實(shí)際轉(zhuǎn)過(guò)的齒輪數(shù),運(yùn)用它們兩個(gè)的差值,再乘以相應(yīng)的參數(shù),即kp、ki、kd的控制,計(jì)算出相應(yīng)的PWM占空比的值。本設(shè)計(jì)中綜合考慮各種因素,為使控制器調(diào)節(jié)穩(wěn)定,使系統(tǒng)產(chǎn)生劇烈振蕩,最后選用的采樣周期為20ms,即每20ms對(duì)電機(jī)進(jìn)行一次采樣。
當(dāng)電機(jī)啟動(dòng)后,電機(jī)通過(guò)齒輪帶動(dòng)編碼器旋轉(zhuǎn),編碼器每轉(zhuǎn)動(dòng)一周會(huì)輸出200個(gè)脈沖,編碼器輸出的脈沖送給單片機(jī)具有輸入捕捉功能的端口PT7,單片機(jī)的PT7口每采集到一個(gè)上升沿,對(duì)應(yīng)的脈沖累加器(PAC)加一,每20ms讀取PAC所捕捉到的脈沖個(gè)數(shù),從而反應(yīng)當(dāng)前速度。為了減少單片機(jī)的運(yùn)算量,直接用每20ms內(nèi)所測(cè)到的脈沖個(gè)數(shù)反應(yīng)電機(jī)的轉(zhuǎn)速(圖4)。
圖4 控制方案原理圖
為了在控制策略中給電機(jī)配置合適的速度,需要知道道路與小車的速度關(guān)系。為此,通過(guò)測(cè)試,將速度由小到大不斷測(cè)量并求平均值。直接以每20 ms內(nèi)所捕捉到的脈沖個(gè)數(shù)作為速度的描述量綱。
由表1值20ms的PWM占空比與所測(cè)脈沖的關(guān)系是
NP為20ms時(shí)測(cè)的脈沖數(shù)。
通過(guò)測(cè)試計(jì)算出小車的速度與脈沖之間的關(guān)系,假設(shè)N為一個(gè)采樣周期T內(nèi)采集到脈沖數(shù)量,l為小車后輪周長(zhǎng),s為小車前進(jìn)的距離,K為編碼器與電機(jī)的齒輪比,v為小車的速度。則
又由速度v=s/t,即有
經(jīng)測(cè)量得,l=157mm,采樣周期t=20ms,齒輪比K =0.48,從而,小車的速度為
表1 空載情況PWMDTY與所測(cè)脈沖數(shù)據(jù)表
圖5為電機(jī)調(diào)速控制程序增量式PID流程圖,每隔20ms對(duì)智能車進(jìn)行一次調(diào)速。通過(guò)計(jì)算得到速度控制PWM波控制電機(jī)速度。
圖5 PID控制流程圖
速度計(jì)算代碼:
int IncPIDCalc1(int Cur_data,int Exp_data)
{
unsigned char i;
register Uk; //當(dāng)前誤差
sptr->buff[0]=sptr->buff[1];
sptr->buff[1]=sptr->buff[2];
sptr->buff[2]=Cur_data;//刷新當(dāng)前速度
for(i=0;i<3;i++)//計(jì)算三次誤差
{
sptr->e[i]= Exp_data-sptr->buff[i];
}
Uk= (int)(sptr->A *sptr->e[2]//e[k]項(xiàng)
-sptr->B*sptr->e[1] //e[k-1]項(xiàng)
+sptr->C*sptr->e[0]); //e[k-2]項(xiàng)
if(Uk>speed_max)
{Uk=speed_max;}
else{
if(Uk<0)
{Uk=0;
}}
return(Uk); //返回增量值
}
增量式PID需要整定的參數(shù)主要是kp、ki、kd三個(gè)常用的控制參數(shù)。工業(yè)整定PID參數(shù)的方法主要有:現(xiàn)場(chǎng)經(jīng)驗(yàn)整定法、阻尼振蕩法、動(dòng)態(tài)特性參數(shù)法、穩(wěn)定邊界法等。由于智能車需要實(shí)時(shí)在道路上運(yùn)動(dòng),因此采用現(xiàn)場(chǎng)經(jīng)驗(yàn)整定法能夠得到最佳的PID參數(shù),從而達(dá)到最佳的控制效果。根據(jù)調(diào)試可以總結(jié)出以下規(guī)律:
當(dāng)智能車的驅(qū)動(dòng)電機(jī)響應(yīng)不是很快時(shí),應(yīng)該把kp項(xiàng)的系數(shù)增大,可是增大kp項(xiàng)系數(shù)會(huì)增大超調(diào)量。當(dāng)超調(diào)量過(guò)大,通過(guò)kd項(xiàng)系數(shù)的增大來(lái)使得超調(diào)量減小,不過(guò)這會(huì)導(dǎo)致系統(tǒng)產(chǎn)生穩(wěn)態(tài)誤差;通過(guò)運(yùn)用ki項(xiàng)可以消除穩(wěn)態(tài)誤差,但是會(huì)減慢智能車的響應(yīng)。具體調(diào)節(jié)時(shí)需要根據(jù)實(shí)際情況來(lái)進(jìn)行參數(shù)調(diào)整。
在實(shí)際參數(shù)整定時(shí),初始是將微分項(xiàng)和積分項(xiàng)關(guān)閉,將kd的值設(shè)置為零、把ki值設(shè)置為無(wú)窮大,使控制器成為純比例調(diào)節(jié)。剛開始的比例度是根據(jù)經(jīng)驗(yàn)數(shù)據(jù)進(jìn)行設(shè)定,依據(jù)速度曲線v,慢慢地整定比例度的數(shù)值,使得系統(tǒng)的速度曲線v達(dá)到4∶1的衰減震蕩。進(jìn)一步將積分的作用加入,但是在加入積分項(xiàng)之前,先將比例度增大為原來(lái)的1.2倍。系統(tǒng)的積分時(shí)間ki按照從大到小的變化進(jìn)行調(diào)整,當(dāng)系統(tǒng)的速度v曲線又出現(xiàn)4∶1的衰減振蕩后,ki數(shù)值不再調(diào)整。如果將微分的作用引入,微分的時(shí)間kd數(shù)值,按照kd=(1/3~1/4)Ti取初始值,此時(shí)可以把比例度的數(shù)值調(diào)到剛開始整定的數(shù)值,有時(shí)也可能要調(diào)整得更小一點(diǎn)。然后將微分的時(shí)間數(shù)值由小到大進(jìn)行調(diào)整,當(dāng)速度v曲線達(dá)到滿意的效果,停止kd的調(diào)整。在整定參數(shù)的過(guò)程中有一點(diǎn)很重要,就是當(dāng)ki、kd變化時(shí),應(yīng)該使比例度的數(shù)值保持不變。
通過(guò)不斷整定,程序中,kp=6,ki=3/25,kd=1/100。根據(jù)攝像頭采集信息處理計(jì)算出的跑道信息,控制電機(jī)速度。將實(shí)際期望電機(jī)轉(zhuǎn)過(guò)的齒輪數(shù)和每20ms電機(jī)轉(zhuǎn)過(guò)的齒輪數(shù)的差值乘以相應(yīng)的系數(shù),即kp、ki、kd的協(xié)調(diào)控制,計(jì)算電機(jī)設(shè)定期望值Exp_data與檢測(cè)的當(dāng)前速度Cur_data的偏差量,計(jì)算出相應(yīng)的PWM占空比的值。
在kp=6,ki=3/25,kd=1/100下得到比較理想的速度曲線。圖6所示的是小車在空載情況下,期望脈沖數(shù)為100時(shí),所測(cè)的智能車運(yùn)行狀態(tài),從圖6可以看出在此組參數(shù)下,效果還是挺滿意的,達(dá)到要求。
圖6 恒定速度曲線
電機(jī)根據(jù)不同賽道情況設(shè)定四個(gè)速度:直道100、進(jìn)入彎道速度80、大S彎道60、小S40。小車跟蹤速度的曲線圖見圖7。
圖7 速度跟蹤曲線
基于增量式PID智能車調(diào)速系統(tǒng)的設(shè)計(jì),使用增量式PID控制算法,并針對(duì)相應(yīng)的道路段采取相應(yīng)的控制。增量式PID算法的數(shù)學(xué)模型簡(jiǎn)單,系統(tǒng)具有快速調(diào)節(jié)控制的優(yōu)勢(shì)。通過(guò)不斷的調(diào)試配置了最適的PID參數(shù)。從智能車控制的實(shí)際效果來(lái)看,具有較好的動(dòng)態(tài)特性、比較理想的穩(wěn)態(tài)品質(zhì)和系統(tǒng)的抗干擾能力增強(qiáng)等優(yōu)點(diǎn)。既有靈活性和適應(yīng)性強(qiáng)的優(yōu)點(diǎn),又有很好的控制精度,且易于實(shí)現(xiàn)。從測(cè)試效果看智能車的驅(qū)動(dòng)電機(jī)的控制比開環(huán)控制更流暢,驅(qū)動(dòng)電機(jī)的響應(yīng)速度更加迅速,智能車的調(diào)速系統(tǒng)的設(shè)計(jì)達(dá)到了要求。
[1] 許 寰.智能小車的運(yùn)動(dòng)控制系統(tǒng)研究[D].長(zhǎng)沙:中南大學(xué),2009.
[2] 卓 晴,黃開勝,邵貝貝.學(xué)做智能車:挑戰(zhàn)“飛思卡爾”杯[M].北京:北京航空航天大學(xué)出版社,2007.
[3] 韓 毅,楊 天.基于 HCS12單片機(jī)的智能尋跡模型車的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,29(18):4 736-4 739.
[4] 李 晨,宓 超.基于飛思卡爾單片機(jī)MC9S12XS128的智能車設(shè)計(jì)[J].上海海事大學(xué)學(xué)報(bào),2012,33(01):82-84.