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 被調引數的工作週期...