找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 38246|回復(fù): 19
打印 上一主題 下一主題
收起左側(cè)

初次調(diào)試速度PID全過(guò)程(分享PID函數(shù))

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:102668 發(fā)表于 2016-1-16 04:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

所謂PID指的是Proportion-Integral-Differential。翻譯成中文是比例-積分-微分。


記住兩句話:
1、PID是經(jīng)典控制(使用年代久遠(yuǎn)) 2、PID是誤差控制()
對(duì)直流電機(jī)速度進(jìn)行定速控制:
1、L293作為電機(jī)驅(qū)動(dòng);2、光電傳感器-作為輸出反饋;3、PWM做為輸入控制。 PID怎么對(duì)誤差控制,聽(tīng)我細(xì)細(xì)道來(lái):
所謂“誤差”就是命令與輸出的差值。比如你希望控制轉(zhuǎn)速為4轉(zhuǎn)/s(PWM波占空比=80%),而事實(shí)上控制轉(zhuǎn)速只有3.5轉(zhuǎn)/s,則誤差: e=0.5轉(zhuǎn),如果實(shí)際轉(zhuǎn)速為4.5轉(zhuǎn),則誤差e=-0.5轉(zhuǎn)(注意正負(fù)號(hào))。
該誤差值送到PID控制器,作為PID控制器的輸入。PID控制器的輸出為:誤差乘比例系數(shù)Kp+Ki*誤差積分+Kd*誤差微分。
Kp*e + Ki*∫edt + Kd*(de/dt) (式中的t為時(shí)間,即對(duì)時(shí)間積分、微分) 上式為三項(xiàng)求和(希望你能看懂),PID結(jié)果后送入電機(jī)驅(qū)動(dòng)器。 從上式看出,如果沒(méi)有誤差,即e=0,則Kp*e=0;Kd*(de/dt)=0;而Ki*∫edt 不一定為0。三項(xiàng)之和不一定為0。
總之,如果“誤差”存在,PID就會(huì)對(duì)電機(jī)驅(qū)動(dòng)作調(diào)整,直到誤差=0。 評(píng)價(jià)一個(gè)控制系統(tǒng)是否優(yōu)越,有三個(gè)指標(biāo):快、穩(wěn)、準(zhǔn)。
所謂快,就是要使壓力能快速地達(dá)到“命令值”(不知道你的系統(tǒng)要求多少時(shí)間) 所謂穩(wěn),就是要壓力穩(wěn)定不波動(dòng)或波動(dòng)量。ú恢滥愕南到y(tǒng)允許多大波動(dòng)) 所謂準(zhǔn),就是要求“命令值”與“輸出值”之間的誤差e。ú恢滥愕南到y(tǒng)允許多大誤差)
對(duì)于你的系統(tǒng)來(lái)說(shuō),要求“快”的話,可以增大Kp、Ki值 要求“準(zhǔn)”的話,可以增大Ki值
要求“穩(wěn)”的話,可以增大Kd值,可以減少壓力波動(dòng) 仔細(xì)分析可以得知:這三個(gè)指標(biāo)是相互矛盾的。 如果太“快”,可能導(dǎo)致不“穩(wěn)”; 如果太“穩(wěn)”,可能導(dǎo)致不“快”;
只要系統(tǒng)穩(wěn)定且存在積分Ki,該系統(tǒng)在靜態(tài)是沒(méi)有誤差的(會(huì)存在動(dòng)態(tài)誤差); 所謂動(dòng)態(tài)誤差,指當(dāng)“命令值”不為恒值時(shí),“輸出值”跟不上“命令值”而存在的誤差。不管是誰(shuí)設(shè)計(jì)的、再好的系統(tǒng)都存在動(dòng)態(tài)誤差,動(dòng)態(tài)誤差體現(xiàn)的是系統(tǒng)的跟蹤特性,比如說(shuō),有的音響功放對(duì)高頻聲音不敏感,就說(shuō)明功放跟蹤性能不好。 調(diào)整PID參數(shù)有兩種方法:1、仿真法;2、“試湊法” 仿真法我想你是不會(huì)的,介紹一下“試湊法” “試湊法”設(shè)置PID參數(shù)的建議步驟:
1、把Ki與Kd設(shè)為0,不要積分與微分;
2、把Kp值從0開始慢慢增大,觀察壓力的反應(yīng)速度是否在你的要求內(nèi); 3、當(dāng)壓力的反應(yīng)速度達(dá)到你的要求,停止增大Kp值; 4、在該Kp值的基礎(chǔ)上減少10%; 5、把Ki值從0開始慢慢增大;
6、當(dāng)壓力開始波動(dòng),停止增大Ki值;
7、在該Ki值的基礎(chǔ)上減少10%;
8、把Kd值從0開始慢慢增大,觀察壓力的反應(yīng)速度是否在你的要求內(nèi)

P、I、D參數(shù)整定口訣: 參數(shù)整定找最佳,從小到大順序查

先是比例后積分,最后再把微分加;

曲線振蕩很頻繁,比例度盤要放大;

曲線漂浮繞大灣,比例度盤往小扳;

曲線偏離回復(fù)慢,積分時(shí)間往下降;

曲線波動(dòng)周期長(zhǎng),積分時(shí)間再加長(zhǎng)

曲線振蕩頻率快,先把微分降下來(lái);

動(dòng)差大來(lái)波動(dòng)慢微分時(shí)間應(yīng)加長(zhǎng)。

這是我在STM32F103RB上做速度PID的PID函數(shù),當(dāng)然也可以利用ST公司自帶的DSP庫(kù),
//======================================================================
//Adjust these three factor ,to achieve the best control effect
//P:1~10之間 I:0-5之間 D:0.1~1
float P_Coefficient=4.75;
float I_Coefficient=0.55;
float D_Coefficient=0.2;
#define Diff_Order 4 /* Differential order*/
int Temp,DestTemp,HeatPower;
int Set_Distant;
long int Integral=5; // Points accumulated
float Prev_Error[10]; // Record ten times before the error
float P,I,D;
float Ek,E;
unsigned char FirstFlag=1;
/*******************************************************************************
* Funtion name:PID Control
* Time:2013/3/5
* Author:zhuhao
*******************************************************************************/
float PID_Control(float Error)
{
int i;
float Output;
float Ture;
if(FirstFlag)//The first execution
{
FirstFlag=0;
for(i=0;i<10;i++)
Prev_Error=Error;
}
for(i=0;i<10;i++)
Prev_Error[i+1]=Prev_Error;// Buffer queue
Prev_Error[0]=Error;//
Ek=Error-Prev_Error[Diff_Order];//
E=0.8+Ek*0.2;//IIR
P=P_Coefficient*Error;// Calculate the proportional component
I=I_Coefficient*Integral;// Calculate the integral component
D=D_Coefficient*E;//Calculate the derivative component
Output=(P+I+D);
if(Output>0)
{
Ture=Output;
}
if(Output>=100||Output<=0||Error<-40||Error>40)//Saturated or large deviation integral
{
if(Integral>0&&Error<0)
Integral+=Error;
if(Integral<0&&Error>0)
Integral+=Error;
}
else
Integral+=Error;
if(Integral<-10) Integral=-10;
if(Integral>10) Integral=10;
if (Output>=100)
Output=99;
else if(Output<=0)
Output=Ture;
return Output;
}
經(jīng)過(guò)試驗(yàn)發(fā)現(xiàn)通過(guò)PID函數(shù)的調(diào)節(jié),設(shè)定轉(zhuǎn)速與實(shí)際轉(zhuǎn)速相差無(wú)幾,一般在0;01~0.05轉(zhuǎn)左右,抗干擾好

串口數(shù)據(jù)波形分析儀軟件可以到51黑搜索


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏16 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:164569 發(fā)表于 2017-2-14 11:40 | 只看該作者
非常棒的入門介紹。
回復(fù)

使用道具 舉報(bào)

板凳
ID:164250 發(fā)表于 2017-2-15 10:19 來(lái)自手機(jī) | 只看該作者
棒棒的
回復(fù)

使用道具 舉報(bào)

地板
ID:92231 發(fā)表于 2017-2-16 07:47 來(lái)自手機(jī) | 只看該作者
很好的教程,長(zhǎng)知識(shí)了
回復(fù)

使用道具 舉報(bào)

5#
ID:165114 發(fā)表于 2017-3-1 14:44 | 只看該作者
有51的代碼嗎?
回復(fù)

使用道具 舉報(bào)

6#
ID:153706 發(fā)表于 2017-4-5 15:10 | 只看該作者
樓主無(wú)私
回復(fù)

使用道具 舉報(bào)

7#
ID:186620 發(fā)表于 2017-4-6 11:50 來(lái)自手機(jī) | 只看該作者
可以很強(qiáng)勢(shì),可以學(xué)習(xí)
回復(fù)

使用道具 舉報(bào)

8#
ID:206025 發(fā)表于 2017-7-20 17:35 | 只看該作者
厲害啊大神帶帶我
回復(fù)

使用道具 舉報(bào)

9#
ID:144138 發(fā)表于 2017-8-3 10:30 | 只看該作者
樓主可以發(fā)一下波形分析軟件和整個(gè)的工程嗎?
回復(fù)

使用道具 舉報(bào)

10#
ID:205044 發(fā)表于 2017-8-3 17:38 | 只看該作者
很好的教程,長(zhǎng)知識(shí)了
回復(fù)

使用道具 舉報(bào)

11#
ID:209158 發(fā)表于 2017-12-17 11:25 | 只看該作者
bangbangde
回復(fù)

使用道具 舉報(bào)

12#
ID:163950 發(fā)表于 2017-12-18 13:03 | 只看該作者
看著還不錯(cuò),樓主,這是屬于位置式的PID吧?
回復(fù)

使用道具 舉報(bào)

13#
ID:127591 發(fā)表于 2018-8-10 10:38 | 只看該作者
感謝分享!
回復(fù)

使用道具 舉報(bào)

14#
ID:384932 發(fā)表于 2018-8-10 11:56 | 只看該作者
謝謝分享,受用
回復(fù)

使用道具 舉報(bào)

15#
ID:380280 發(fā)表于 2018-8-22 17:35 | 只看該作者
摟住能把串口數(shù)據(jù)波形分析儀軟件這個(gè)軟件共享出來(lái)嗎?萬(wàn)分感謝,一直在找這樣的軟件
回復(fù)

使用道具 舉報(bào)

16#
ID:473730 發(fā)表于 2019-3-13 11:35 | 只看該作者
跪求樓主的串口數(shù)據(jù)波形分析儀
回復(fù)

使用道具 舉報(bào)

17#
ID:605886 發(fā)表于 2019-9-10 14:43 | 只看該作者
很棒啊,謝謝分享
回復(fù)

使用道具 舉報(bào)

18#
ID:730649 發(fā)表于 2020-9-17 20:36 | 只看該作者
真心感謝樓主的分享
回復(fù)

使用道具 舉報(bào)

19#
ID:613705 發(fā)表于 2021-9-22 08:30 | 只看該作者
串口數(shù)據(jù)波形分析儀
回復(fù)

使用道具 舉報(bào)

20#
ID:796915 發(fā)表于 2022-2-7 20:34 | 只看該作者

同志這個(gè)代碼51運(yùn)行不起來(lái)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表