計算機(jī)控制設(shè)計pid智能小車_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  計算機(jī)檢測與控制技術(shù)X</p><p><b>  課程設(shè)計報告</b></p><p>  題 目: PID對智能小車的應(yīng)用</p><p>  姓 名: 呂振</p><p>  班 級: 電信14-1班</p><p>  學(xué) 號: 314071

2、8181</p><p>  摘要:在智能車比賽過程中,小車需要不停的檢測前方道路信息以及自身的行駛信息,在檢測過程中會有復(fù)雜信息需要采集并多種干擾因素需要抗拒。將檢測到的道路信息與自身行駛信息相結(jié)合,以確定下一步動作,直道就加速,入彎道就減速入彎,由彎入直再加速。在工程實際中,應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律為比例、積分、微分控制,簡稱PID控制,又稱PID調(diào)節(jié)。它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工

3、業(yè)控制的主要技術(shù)之一。當(dāng)被控對象的結(jié)構(gòu)和參數(shù)不能完全掌握,或得不到精確的數(shù)學(xué)模型時,控制理論的其它技術(shù)難以采用時,系統(tǒng)控制器的結(jié)構(gòu)和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調(diào)試來確定,這時應(yīng)用PID控制技術(shù)最為方便。即當(dāng)我們不完全了解一個系統(tǒng)和被控對象﹐或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用PID控制技術(shù)。PID控制,實際中也有PI和PD控制。PID控制器就是根據(jù)系統(tǒng)的誤差,利用比例、積分、微分計算出控制量進(jìn)行控制的。</p>

4、<p>  關(guān)鍵詞:智能車;PID控制;檢測;</p><p>  PID vague control and its application in smartcar</p><p>  Abstract: In a Smartcar game, there is a need for cars to detect the information of the front ro

5、ad and the car itself. There will exist so much interference during the detection which are required to be resisted. Combining the two types of information, we can decide the next action: speed up when in straight road,

6、speed down when go into a tortuous path and speed up again when it goes into the straight path. In an engineering project, the most widely used control principles are proportion, integ</p><p><b>  引言&l

7、t;/b></p><p>  本文以通俗的理解,以小車控制舉例說明PID的一些理解。</p><p>  由于外界原因,小車的實際速度有時不穩(wěn)定。其二,要讓小車以最快的時間達(dá)達(dá)到既定的目標(biāo)速度(小車通過PWM波來控制小車的速度)。其三,速度控制系統(tǒng)是閉環(huán),才能滿足整個系統(tǒng)的穩(wěn)定要求,必竟速度是系統(tǒng)參數(shù)之一。PID控制,速度快,調(diào)節(jié)靈敏,能實現(xiàn)準(zhǔn)確性,實時性,這樣使智能車在比賽過程中

8、速度調(diào)整上升了一個高度。也為智能車在比賽過程中獲得更好的名次做成了很大的貢獻(xiàn)。</p><p><b>  1 PID簡介</b></p><p><b>  1.1</b></p><p>  目前工業(yè)自動化水平已經(jīng)成為衡量各行各業(yè)現(xiàn)代化水平的一個重要標(biāo)志。同時,控制理論的發(fā)展也已經(jīng)經(jīng)歷了古典控制理論,現(xiàn)代控制理論和智能

9、控制理論三個階段。智能控制的典型實例是模糊全自動洗衣機(jī)等。自動控制系統(tǒng)可分為開環(huán)控制系統(tǒng)和閉環(huán)控制系統(tǒng)。一個控制系統(tǒng)包括控制器,傳感器,變送器,執(zhí)行機(jī)構(gòu),輸入輸出接口??刂破鞯妮敵隹诮?jīng)過輸出接口,執(zhí)行機(jī)構(gòu),加到被控系統(tǒng)上;控制系統(tǒng)的被控量,經(jīng)過傳感器,變送器,通過輸入接口送到控制器。</p><p>  開環(huán)控制系統(tǒng):開環(huán)控制系統(tǒng)(Open-loop control system)是指被控對象的輸出(被控制量)對

10、控制器的輸出沒有影響。在這種控制系統(tǒng)中,不依賴將被控量反送回來以形成任何閉環(huán)回路</p><p>  閉環(huán)控制系統(tǒng):(Closed-loop control system)特點是系統(tǒng)被控對象的輸出會反送回來影響控制器的輸出,形成一個或多個閉環(huán)。閉環(huán)控制有正反饋和負(fù)反饋。若反饋信號與系統(tǒng)給定值信號相反,則稱為負(fù)反饋,若極性相同,則稱為正反饋。</p><p>  階躍響應(yīng):是指一個階躍輸入加

11、到系統(tǒng)上時,系統(tǒng)的輸出。</p><p>  圖1 PID控制流程</p><p>  如圖所示,其中,D(S)為控制器,完成PID控制規(guī)律。</p><p><b>  比例(P)控制器</b></p><p><b>  U(t)=e(t)</b></p><p>  比

12、例+積分(PI)控制器</p><p>  U(t)= [e(t)+]</p><p>  比例+積分+微分(PID)控制器</p><p>  U(t)= [e(t)++]</p><p>  以上各式中,Kp—比例放大系數(shù); Ti—積分時間; Td——微分時間</p><p>  1.2 PID一般有兩種:位置式P

13、ID和增量式PID</p><p><b>  圖2 位置式PID</b></p><p>  PID算法表示為 U(k)=Kpe(k)+KiKd[e(k)-e(k-1)]+Uo</p><p>  式中U(k) 第K個采樣時刻的控制</p><p>  Kp 比例放大系數(shù)</p><p> 

14、 Ki= 積分放大系數(shù)</p><p>  Kd= 微分放大系數(shù)</p><p>  Ts 采樣周期</p><p><b>  `</b></p><p>  圖3 增量PID算法</p><p>  增量式PID算法為△Uk=U(k)-U(k-1)</p><

15、p>  =Kp{e(k)-e(k-1)+}</p><p>  位置式PID的輸出與過去的所有狀態(tài)有關(guān),計算時要對e(每一次的控制誤差)進(jìn)行累加,這個計算量非常大,而明沒有必要。而且小車的PID控制器的輸出并不是絕對數(shù)值,而是一個△,代表增多少,減多少。換句話說,通過增量PID算法,每次輸出是PWM要增加多少或者減小多少,而不是PWM的實際值。因此,在小車控制中我們常用增量式PID控制。</p>

16、<p>  下面均以增量式PID說明.打個比方,如果現(xiàn)在的輸出是1,目標(biāo)輸出是100,那么P的作用是以最快的速度達(dá)到100,把P理解為一個系數(shù)即可;關(guān)于I,通過高等數(shù)學(xué)的知識,0的積分才能是一個常數(shù),I就是使誤差為0而起調(diào)和作用;關(guān)于D,微分是求導(dǎo)數(shù),導(dǎo)數(shù)代表切線是吧,切線的方向就是最快到至高點的方向。這樣理解,最快獲得最優(yōu)解,那么微分就是加快調(diào)節(jié)過程的作用了。</p><p>  △Uk=A*e(

17、k)+B*e(k-1)+C*e(k-2)</p><p>  這里KP是P的值,TD是D的值,1/Ti是I的值,都是常數(shù),哦,還有一個T,T是采樣周期,也是已知。而A,B,C是由P I D換算來的,按這個公式,就可以簡化計算量了,因為 P I D 是常數(shù),那么A B C可以用一個宏表示。這樣看來,只需要求e(k) e(k-1) e(k-2)就可以知道△Uk的值了,按照△Uk來調(diào)節(jié)PWM的大小就OK了。</p

18、><p>  圖4 PID調(diào)節(jié)結(jié)果</p><p><b>  2 PID參數(shù)調(diào)試</b></p><p><b>  1.負(fù)反饋 </b></p><p>  自動控制理論也被稱為負(fù)反饋控制理論。首先檢查系統(tǒng)接線,確定系統(tǒng)的反饋為負(fù)反饋。例如電機(jī)調(diào)速系統(tǒng),輸入信號為正,要求電機(jī)正轉(zhuǎn)時,反饋信號也為正(

19、PID算法時,誤差=輸入-反饋),同時電機(jī)轉(zhuǎn)速越高,反饋信號越大。其余系統(tǒng)同此方法。 </p><p>  2.PID調(diào)試一般原則 </p><p>  a.在輸出不振蕩時,增大比例增益P。 </p><p>  b.在輸出不振蕩時,減小積分時間常數(shù)Ti。 </p><p>  c.在輸出不振蕩時,增大微分時間常數(shù)Td。 </p>

20、<p><b>  3.一般步驟 </b></p><p>  a.確定比例增益P </p><p>  確定比例增益P 時,首先去掉PID的積分項和微分項,一般是令Ti=0、Td=0(具體見PID的參數(shù)設(shè)定說明),使PID為純比例調(diào)節(jié)。輸入設(shè)定為系統(tǒng)允許的最大值的60%~70%,由0逐漸加大比例增益P,直至系統(tǒng)出現(xiàn)振蕩;再反過來,從此時的比例增益P逐漸

21、減小,直至系統(tǒng)振蕩消失,記錄此時的比例增益P,設(shè)定PID的比例增益P為當(dāng)前值的60%~70%。比例增益P調(diào)試完成。 </p><p>  b.確定積分時間常數(shù)Ti </p><p>  比例增益P確定后,設(shè)定一個較大的積分時間常數(shù)Ti的初值,然后逐漸減小Ti,直至系統(tǒng)出現(xiàn)振蕩,之后在反過來,逐漸加大Ti,直至系統(tǒng)振蕩消失。記錄此時的Ti,設(shè)定PID的積分時間常數(shù)Ti為當(dāng)前值的150%~18

22、0%。積分時間常數(shù)Ti調(diào)試完成。 </p><p>  c.確定積分時間常數(shù)Td </p><p>  積分時間常數(shù)Td一般不用設(shè)定,為0即可。若要設(shè)定,與確定 P和Ti的方法相同,取不振蕩時的30%。 </p><p>  d.系統(tǒng)空載、帶載聯(lián)調(diào),再對PID參數(shù)進(jìn)行微調(diào),直至滿足要求</p><p>  3 PID與智能車控制的聯(lián)系<

23、/p><p>  小車調(diào)速及轉(zhuǎn)向通過輸出PWM波得占空比來控制??隙ú皇蔷€性的,外界因素那么多,沒人能證明是線性的。如果是線性的,直接用P就可以了。比如在PWM=60%時,速度是2M/S,那么你要它3M/S,就把PWM提高到90%。因為90/60=3/2,這樣一來太完美了。完美是不可能的。那么不是線性的,要怎么怎么控制PWM使速度達(dá)到即定的速度呢?即要快,又要準(zhǔn),又要狠。(即快準(zhǔn)狠)系統(tǒng)這個速度的調(diào)整過程就必須通過某

24、個算法調(diào)整,一般PID就是這個所用的算法??赡苣銜氲?,如果通過編碼器測得現(xiàn)在的速度是2.0m/s,要達(dá)到2.3m/s的速度,那么把PWM增大一點不就行了嗎?是的,增大PWM多少呢?必須要通過算法,因為PWM和速度是個什么關(guān)系,對于整個系統(tǒng)來說,誰也不知道。要一點一點的試,加個1%,不夠,再加1%還是不夠,那么第三次你還會加1%嗎?很有可能就加2%了。通過PID三個參數(shù)得到一個表達(dá)式:△PWM=a *△V1+b *△V2+c *△V3,

25、a b c是通過PID的那個長長的公式展開,然后約簡后的數(shù)字,△V1 ,△V2 ,△V3 此前第一次調(diào)整后的速度差 ,第二次調(diào)整后的速度差,第三次依次類推。一</p><p>  4 PID小車控制例程</p><p>  //定義PID結(jié)構(gòu)體</p><p>  //*************************************************

26、****</p><p>  typedef struct PID</p><p><b>  {</b></p><p>  int SetPoint; //設(shè)定目標(biāo) Desired Value</p><p>  double Proportion; //比例常數(shù) Proportional Const</p&g

27、t;<p>  double Integral; //積分常數(shù) Integral Const</p><p>  double Derivative; //微分常數(shù) Derivative Const</p><p>  int LastError; //Error[-1]</p><p>  int PrevError; //Error[-2]<

28、/p><p><b>  } PID;</b></p><p>  //*****************************************************</p><p><b>  //定義相關(guān)宏</b></p><p>  //************************

29、*****************************</p><p>  #define P_DATA 100</p><p>  #define I_DATA 0.6</p><p>  #define D_DATA 1</p><p>  #define HAVE_NEW_VELOCITY 0X01</p><p

30、>  //*****************************************************</p><p><b>  //聲明PID實體</b></p><p>  //*****************************************************</p><p>  static

31、PID sPID;</p><p>  static PID *sptr = &sPID;</p><p>  //*****************************************************</p><p>  //PID參數(shù)初始化</p><p>  //***********************

32、******************************</p><p>  void IncPIDInit(void)</p><p><b>  {</b></p><p>  sptr->LastError = 0; //Error[-1]</p><p>  sptr->PrevError = 0

33、; //Error[-2]</p><p>  sptr->Proportion = P_DATA; //比例常數(shù) Proportional Const</p><p>  sptr->Integral = I_DATA; //積分常數(shù)Integral Const</p><p>  sptr->Derivative = D_DATA; //微分常

34、數(shù) Derivative Const</p><p>  sptr->SetPoint =100; </p><p><b>  目標(biāo)是100</b></p><p><b>  }</b></p><p>  //***************************************

35、**************</p><p>  //增量式PID控制設(shè)計</p><p>  //*****************************************************</p><p>  int IncPIDCalc(int NextPoint)</p><p><b>  {</b&g

36、t;</p><p>  int iError, iIncpid; //當(dāng)前誤差</p><p>  iError = sptr->SetPoint - NextPoint; //增量計算</p><p>  iIncpid = sptr->Proportion * iError //E[k]項</p><p>  - sptr-

37、>Integral * sptr->LastError //E[k-1]項</p><p>  + sptr->Derivative * sptr->PrevError; //E[k-2]項</p><p>  sptr->PrevError = sptr->LastError; </p><p>  sptr->LastE

38、rror = iError; //存儲誤差,用于下次計算</p><p>  return(iIncpid); //返回增量值</p><p><b>  }</b></p><p>  Int g_CurrentVelocity;</p><p>  Int g_Flag;</p><p&g

39、t;  void main(void)</p><p><b>  {</b></p><p>  DisableInterrupt</p><p>  InitMCu();</p><p>  IncPIDInit();</p><p>  g_CurrentVelocity=0; //全局

40、變量也初始化</p><p>  g_Flag=0; //全局變量也初始化</p><p>  EnableInterrupt;</p><p><b>  While(1)</b></p><p><b>  {</b></p><p>  if (

41、g_Flag& HAVE_NEW_VELOCITY)</p><p><b>  {</b></p><p>  PWMOUT+= IncPIDCalc(CurrentVelocity);</p><p>  g_Flag&=~ HAVE_NEW_VELOCITY;</p><p><b>  

42、}</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //****************************************</p><p><b>  //采樣周期T</b></p>

43、;<p>  //****************************************</p><p>  Interrrupt TIME void</p><p><b>  {</b></p><p>  CurrentVelocity =GetCurrentVelocity;</p><p&g

44、t;  g_Flag|= HAVE_NEW_VELOCITY;</p><p><b>  }</b></p><p><b>  5結(jié)論</b></p><p>  沒有一種控制算法比PID調(diào)節(jié)規(guī)律更有效、更方便的了。現(xiàn)在一些時髦點的調(diào)節(jié)器基本源自PID。甚至可以這樣說:PID調(diào)節(jié)器是其它控制調(diào)節(jié)算法的媽。 因為PID解

45、決了自動控制理論所要解決的最基本問題,既系統(tǒng)的穩(wěn)定性、快速性和準(zhǔn)確性。調(diào)節(jié)PID的參數(shù),可實現(xiàn)在系統(tǒng)穩(wěn)定的前提下,兼顧系統(tǒng)的帶載能力和抗擾能力,同時,在PID調(diào)節(jié)器中引入積分項,系統(tǒng)增加了一個零積點,使之成為一階或一階以上的系統(tǒng),這樣系統(tǒng)階躍響應(yīng)的穩(wěn)態(tài)誤差就為零。由于自動控制系統(tǒng)被控對象的千差萬別,PID的參數(shù)也必須隨之變化,以滿足系統(tǒng)的性能要求。它具有原理簡單,易于實現(xiàn),適用面廣,控制參數(shù)相互獨立,參數(shù)的選定比較簡單等優(yōu)點;而且在理論

46、上可以證明,對于過程控制的典型對象──“一階滯后+純滯后”與“二階滯后+純滯后”的控制對象,其調(diào)節(jié)規(guī)律是連續(xù)系統(tǒng)動態(tài)品質(zhì)校正的一種有效方,是一種最優(yōu)控制。</p><p><b>  參考文獻(xiàn)</b></p><p>  Freescale Company.MC9S12XS Family Reference Manual, Rev. 1.09,2009.9</p

47、><p>  卓晴,黃開勝,邵貝貝.學(xué)做智能車.北京-北京航空航天大學(xué)出版社.2007</p><p>  仇慎謙.PID調(diào)節(jié)規(guī)律和過程控制南京-江蘇科學(xué)技術(shù)出版社</p><p>  4. 尹怡欣,陶永華.新型PID控制及其應(yīng)用.北京-機(jī)械工業(yè)出版社.1998 </p><p><b>  2017年7月4日</b>&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論