久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3053|回復: 0
打印 上一主題 下一主題
收起左側

交流 剛學PID的一點想法

[復制鏈接]
跳轉到指定樓層
樓主
ID:40652 發表于 2013-3-6 21:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
這幾天稍微看了一點點的PID,今天有了小小頭緒,于是,就想把自己的想法寫出來,歡迎拍磚。

     最開始的時候,是先了解什么是PID。PID實指“比例proportional”、“積分integral”、“微分derivative”,如果我們要求被控制的對象最終趨于一個穩定的結果,一般就可以使用PID算法。假設說,有一輛速度為1m/s的小車,我們要求他的速度改變為5m/s,要完成這樣的一件事,我們必須要有,1.小車驅動裝置(用程序控制它輸出多大的電壓,電壓決定驅動的馬力),2.被驅動器控制的部分(即小車),3.檢測當前速度的裝置(當前速度與目標速度的差稱為誤差)。本來,我們可以給小車一個驅動力讓小車加速,直到檢測到小車速度達到5m/s,撤去驅動力。然而,這樣做會帶來幾個問題。1,當小車速度達到5m/s時,從裝置檢測到這個速度,通知控制器,讓控制器改變輸出的電壓,這一個過程需要耗費一定時間,在這個時間里面,小車速度可能增加了不少。2,撤去驅動力后,外界條件如摩擦會讓小車速度進一步改變。PID算法可以在一定誤差內解決這些問題。
   使用PID算法時,大致是這樣的。每一個采樣周期,通過速度檢測裝置獲得當前速度,傳入程序,通過程序計算得到電壓控制小車得到新速度。下一個采樣周期又把新速度傳入,獲得新電壓,再傳入速度,再獲得電壓,如此反復。
   PID算法的關鍵,是如何根據當前得到的速度值,輸出一個“恰當”的電壓,以致小車最終能夠趨于穩定。
      PID算法采用比例,積分,微分三種方法進行控制。三種方法都有自己對應的一個常量(pconst,iconst,dconst)。這三個變量都需要在實驗中多次嘗試得出。
  一般地,先把與算法相關的量放入一個結構體,方便調用。
  srtuct PID
     {
    double   pconst,    //比例控制常量
          iconst,     //積分控制常量
          dconst;    //微分控制常量
    double   ErrorSum;      //誤差累計
    double   iMax,iMin;      //積分上下限
    double   Vnew;         //當前速度
         };
  比例:
    Vnew = GetV();            //獲得當前速度
    error = aim - Vnew;      //誤差=目標速度 - 當前速度
    pTerm = error*pconst;     //比例項的值就是誤差乘上比例常量
    Motor(pTerm);    //讓電機根據得出的值工作
        有時候,我們增大比例常數可以讓小車更快的到達目標速度,但是過大的比例常數又容易產生過沖,即速度超過目標速度5m/s,然后再減速,再加速,在減速。這樣,系統產生振蕩,然而,振蕩的結果不一定能趨于穩定。

  積分:
                Vnew = GetV();            //獲得當前速度
    ErrorSum += (aim - Vnew);      //每一次的誤差累計起來
    if(ErrorSum > iMax)ErrorSum = iMax;
    else if(ErrorSum < iMin)ErrorSum = iMin;
    iTerm = ErrorSum *iconst;     //誤差和乘上積分常量
    Motor(iTerm);    //讓電機根據得出的值工作
  一般我們都讓比例配合積分一起使用,即PI算法,類似上面的程序,得出pTerm和iTerm,然后Motor(pTerm+iTerm)。PI控制一般會比純比例控制花費更少時間使小車到達目標值,但是我們必須避免積分飽和,通常的做法是像上面程序一樣設定iMax和iMin。它們和積分常量的大小相關。
  
  微分:
  我們用比例控制或者PI控制,都不能保證任何系統一定能趨于穩定。比例控制根據現在來控制。積分控制根據過去來控制。而微分能夠根據將來來控制,非常強大,能使被控設備更好地趨于穩定。
    Vnew = GetV();            //獲得當前速度
    dTerm = (Vnew - Vlast)*dconst;     //當前速度 - 上次速度,再乘微分常數
    Vlast = Vnew ;              //保留本次速度,下次當成上次速度使用
    Motor(dTerm);    //讓電機根據得出的值工作
  同樣,微分控制也是與比例,積分一起使用,形成PID算法,Motor(pTerm+iTerm+dTerm)。
  微分控制相當強大,然而也很容易出問題。具體調控和整定我想等到實際應用時再學習。

交流地址:http://bbs.21ic.com/icview-189462-1-1.html
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区三区在线观看 | 久久久噜噜噜www成人网 | 韩日在线观看视频 | 国产精品久久久亚洲 | 亚洲综合婷婷 | 成人av一区二区在线观看 | 综合久久久 | 国产精品久久久久久福利一牛影视 | 国产欧美一区二区三区日本久久久 | 国产资源在线播放 | 欧美精品在欧美一区二区 | 精品伊人久久 | 国产一区999 | 国产精品视频网 | 国产精品免费一区二区三区四区 | 亚洲欧洲精品在线 | 一级片免费视频 | a免费观看| 日韩淫片免费看 | 色婷婷综合久久久中字幕精品久久 | 亚洲国产精品va在线看黑人 | 九九九视频在线观看 | 日韩欧美在线播放 | 欧美极品视频在线观看 | 成人国产精品色哟哟 | 先锋av资源网 | 免费1区2区3区 | 久久久久久久久久久久久9999 | 色婷婷久久久亚洲一区二区三区 | 黄色三级毛片 | 狠狠操天天操 | 黄色av一区 | 午夜影院网站 | 麻豆av网站 | 国产精品观看 | 99热在线观看精品 | 久久国产精品免费一区二区三区 | 欧美成年网站 | 国产精品国产精品国产专区不片 | 国产精品久久久久久久久久久久冷 | 亚洲国产网|