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