2014年3月18日 星期二

PID控制

PID 的概念其實很簡單,裡面三個大部分

  • P: proportional, 比例控制
    • 假設目前四軸姿態是水平於地面,要前傾時,需降低前兩顆馬達轉速並增加後兩顆馬達的轉速,傾斜的速度跟馬達出力差異的對應這邊就是P
    • 假設目標是前傾十度,目前姿態為水平,預計要輸出多少轉速差來達到這10度的變化
  • I: integral, 誤差的積分
    • 誤差:每次預估的結果與實際量測結果的差值,會每個loop一值累加
    • 目標是讓平均誤差接近0
    • 假設前一個loop,使用10%的前後馬達轉速差依照P預計下一個取樣點會從水平變為前傾10 度, 此時真正從sensor量出來的姿態是前傾9 度,那這次誤差就是-1,這部分可以當作這次控制訊號輸出時的參考因素
  • D: derivative, 微分,基本上就是預測之後趨勢
    • 對誤差的部分作微分,基本上就是找出斜率,推故下個時間點的誤差,這部分可以當作這次控制訊號輸出時的參考因素



https://www.google.com.tw/search?q=PID&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjQ3MDb8K_OAhWFjZQKHcEICzkQ_AUICCgB&biw=1280&bih=614#imgrc=IoZD3kF8eZVYsM%3A
隨著時間一次次把實際量測的值算出P/I/D後,依各自的權重加總,算出這次控制真正的輸出,一次次這樣做便能趨近預計目標值且穩定不震盪
這個演算法只需儲存少數的資料,用少數的運算量,即可達到不錯的效果,不過需要人工調出PID 的參數
PID調參數也是一門學問,目前有些四軸飛控板有自動調PID參數功能,這部分也是可以研究的領域





===================================================
很不錯的影片表示PID 間的關係


超淺顯易懂的教學
http://bbs.5imx.com/forum.php?mod=viewthread&tid=891184&fromuid=241202


http://4rdp.blogspot.tw/2008/05/pid-speed-control.html
http://4rdp.blogspot.tw/2008/12/apply-pid-to-control-lego-nxts-speed.html
http://4rdp.blogspot.tw/2013/11/pid-control-1.html
http://4rdp.blogspot.tw/2013/11/pid-control-2.html
http://4rdp.blogspot.tw/2013/12/pid-control-3.html


https://en.wikipedia.org/wiki/PID_controller
http://www.expertune.com/tutor.aspx

沒有留言:

張貼留言