PID引數調節過程

2021-07-08 15:59:41 字數 1792 閱讀 7564

stm32控制電機到一定位置,位置值用碼盤讀取
下面pid_ctrl_daily1函式是pid調整的程式,然後在主程式中呼叫
//  電機碼盤 pid運算 ,用pid引數來實際控制角度,角度值為angle   ///

double pid_ctrl_daily1(double *array)

else

pwm_out += pwm_var; //調整pwm輸出

if(pwm_out > pmax_season)pwm_out = pmax_season; //輸出值限幅

if(pwm_out < pmin_season)pwm_out = pmin_season; //輸出值限幅

if(pwm_out < 0) //正轉

else //反轉

feb = g_encodermotor / ratio_degtodecode_daily; //電機碼盤反饋角度

ref = g_angle*-1.0; //???????

e = (feb - ref); //差值運算 printf("feb: %f,誤差e:%f\r\n",feb,e);

}motorcontrol(0,0); //電機停止return e;}

pid三個引數用試湊發來做 

1:一開始先調p:設定為double arraypid[3]=;  結果發現電機上公升的太慢,速度基本只有7%,就上不去了;:

開始調節到20.000000度

feb: 0.000000,誤差e:20.000000

此次的e,e_last,e_two_last分別為20.000000,0.000000,0.000000

uo: 7.398680

電機右轉,速度:7

feb: -0.005385,誤差e:19.994615

此次的e,e_last,e_two_last分別為19.994615,20.000000,0.000000

uo: -0.001992

電機右轉,速度:7

feb: -0.070769,誤差e:19.929231

此次的e,e_last,e_two_last分別為19.929231,19.994615,20.000000

uo: -0.024188

電機右轉,速度:7

2:將p調大,設定為double arraypid[3]=; 速度也沒有上去,速度值有27%

3:繼續將p調大,arraypid[3]=;  結果速度是上去了,但速度下來的太快,衝擊太大

4:然後加i:積分環節:arraypid[3]=  不夠好,最後速度還挺大的,突然停止,都抖動

arraypid[3]=積分換個大的試試:最後速度更大,把積分變小

13 arraypid[3]= 積分變小:速度還是比較快,把積分再變大點

14 arraypid[3]= 積分變大:還可以效果,最後速度還可以小點,板子還有點點抖動

15 arraypid[3]=:調整時間有點長,最後速度比較平穩

積分越小,調整的時間越長,最後到達目標點時越平穩

16 arraypid[3]=:加個微分試試:感覺跟15差不多.在11基礎上加微分試試。這簡單系統下微分貌似不是很有用

最後把中間輸出的printf去掉,結果更原來的效果又不一樣了,所以以後要用定時器,定時來呼叫,這就是取樣週期,下次加上試試,還可以把pid封裝起來

這次調節pid總算有點心得了,還得看看書籍

如何 調節 PID 增益

pid 控制器的 p 增益將設定整個系統的響應。在第一次調節控制器時,i 增益和d 增益都應該設定為零。然後可以增加p 增益,直到系統能夠很好地響應設定點的變 化,且沒有出現過多的過衝或振盪。使用較低的 p增益值會較 松 地控制系統,而較高的值則會較 緊 地控制系統。目前,系統可能不會達到設定點。在...

PID調節原理 方法

在工程實際中,應用最為廣泛的調節器控制規律為比例 積分 微分控制,簡稱 pid控制,又稱 pid 調節。pid 控制器問世至今已有近 70 年歷史,它以其結構簡單 穩定性好 工作可靠 調整方便而成為工業控制的主要技術之一。當被控物件的結構和引數不能完全掌握,或得不到精確的數學模型時,控制理論的其它技...

PID引數整定快速入門(調節器引數整定方法)

pid調節器 引數整定方法很多,常見的工程整定方法有臨界比例度法 衰減曲線法和經驗法。雲潤儀表以 形式分別介紹調節器引數整定方法。臨界比例度法 乙個調節系統,在階躍干擾作用下,出現既不發散也不衰減的等幅 過程,此過程成為等幅振盪過程,如下圖所示。此時調節器的比例度為臨界比例度 k 被調引數的工作週期...