stm32控制器下經(jīng)常會用到對溫度控制,適度控制,轉(zhuǎn)速控制等需要自動控制相關(guān)的操作,因此在使用中需要不斷提高對自動控制 原理部分的學(xué)習(xí),一個好的自動控制系統(tǒng)包含三個 主要因素:穩(wěn),快,準(zhǔn)。穩(wěn)即系統(tǒng)的穩(wěn)定性,快即系統(tǒng)的快速性,準(zhǔn)即控制的準(zhǔn)確性。
在自動控制中比例增益,積分時間,微分時間三個主要變量。下面就這三個變量進行動態(tài)展示。
![動圖](https://pic1.zhimg.com/v2-0ff112de05bf76ca5ba7f087875b8428_b.webp)
如上圖所示,假設(shè)在單位階躍響應(yīng)下,比例控制幅值,kp越大值越高相關(guān)的,積分時間控制精確度,數(shù)值越大波形超調(diào)量越大,微分時間控制波形的平緩程度。
下面貼出增量式PID算法在c代碼部分的實現(xiàn)過程。
//實現(xiàn)增量式PID算法
#include "stdio.h"
void pid_init();//PID參數(shù)初始化
float pid_realise(float speed);//實現(xiàn)PID算法
struct {
float set_speed;//設(shè)定速度
float actual_speed;//實際速度
float error;//偏差
float error_next;//上一個偏差
float error_last;//上上一個偏差
float kp,ki,kd;//定義比例,積分,微分參數(shù)
}pid;
int main()
{
pid_init();
int count = 0;
while(count<400)//進行400次 PID 運算,使初始值從0開始接近200.0
{
float speed = pid_realise(200.0);//設(shè)定值設(shè)定為200.0
printf("%f\n",speed);//輸出每一次PID 運算后的結(jié)果
count++;
}
}
void pid_init()
{
pid.set_speed = 0.0;
pid.actual_speed = 0.0;
pid.error = 0.0;
pid.error_next = 0.0;
pid.error_last = 0.0;
//可調(diào)節(jié)PID 參數(shù)。使跟蹤曲線慢慢接近階躍函數(shù)200.0 //
pid.kp = 0.2;
pid.ki = 0.01;
pid.kd = 0.2;
}
float pid_realise(float speed)//實現(xiàn)pid
{
pid.set_speed = speed;//設(shè)置目標(biāo)速度
pid.error = pid.set_speed - pid.actual_speed;
float increment_speed;//增量
increment_speed = pid.kp*(pid.error-pid.error_next)+pid.ki*pid.error+\
pid.kd*(pid.error-2*pid.error_next+pid.error_last);//增量計算公式
pid.actual_speed+= increment_speed;
pid.error_last = pid.error_next;//下一次迭代
pid.error_next = pid.error;
return pid.actual_speed;
}
運行數(shù)據(jù)得到圖標(biāo)如下 :
![poYBAGKqov2ALrgkAABTRApyEyM634.png](https://file.elecfans.com/web2/M00/4B/2C/poYBAGKqov2ALrgkAABTRApyEyM634.png)
審核編輯:湯梓紅
-
控制器
+關(guān)注
關(guān)注
112文章
16467瀏覽量
179623 -
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357772 -
PID
+關(guān)注
關(guān)注
35文章
1473瀏覽量
85876
發(fā)布評論請先 登錄
相關(guān)推薦
淺析位置式PID與增量式PID算法
教你用C語言實現(xiàn)位置式PID和增量式PID
收藏干貨 PID算法實現(xiàn)
在STM32如何去實現(xiàn)增量式PID算法
PID算法增量式算法
如何實現(xiàn)增量式PID
如何去實現(xiàn)基于stm32的PID算法增量式程序呢
位置型PID的C語言代碼的實現(xiàn)過程詳細資料概述
在三菱FX2NPLC上實現(xiàn)了增量式PID算法的控制
![在三菱FX2NPLC上<b class='flag-5'>實現(xiàn)</b>了<b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>的控制](https://file.elecfans.com/web1/M00/62/B0/pIYBAFuLQhCAKk-YAAAsckhPuT0316.jpg)
如何使用免疫粒子群優(yōu)化算法實現(xiàn)增量式的PID控制
![如何使用免疫粒子群優(yōu)化<b class='flag-5'>算法</b><b class='flag-5'>實現(xiàn)</b><b class='flag-5'>增量</b><b class='flag-5'>式</b>的<b class='flag-5'>PID</b>控制](https://file.elecfans.com/web1/M00/AB/C2/o4YBAF27422AG_BcAAEGbma5BXQ382.png)
使用單片機和Arduino實現(xiàn)增量式PID位置式PID算法和PID庫免費下載
![使用單片機和Arduino<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b>位置<b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>和<b class='flag-5'>PID</b>庫免費下載](https://file.elecfans.com/web1/M00/BD/44/o4YBAF7PdrSAAzF0AADyssdYXMw792.png)
評論