專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

PID參數(shù)的確定及實(shí)際應(yīng)用

作者:liuyydp   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年08月28日   【字體:

對(duì)于PID 參數(shù)的確定前輩們?cè)缇驼f(shuō)了

先把 I 和D =0 搞好P在說(shuō)

我們接下來(lái)就先搞P

 

首先定義一個(gè)PID 結(jié)構(gòu)體的變量

       struct pid_unit unit;        // 生成一個(gè)PID控制模塊
     然后初始化PID

   pid_init(&unit, 1, 0,0);    // 對(duì)該模塊進(jìn)行初始化

為什么用1呢?我采樣的是一個(gè)0-1024的  給的控制信號(hào)是一個(gè) 0-10 000 000 的延時(shí)值

這個(gè)和1有什么關(guān)系呢?

我也不清楚 反正先用1搞吧看看效果

不過(guò)明眼人一看 就知道如果是1的話 系統(tǒng) 設(shè)定采樣值是512   初始狀態(tài)是0

 那么輸出 會(huì)從0開(kāi)始增加(采樣值 和控制信號(hào)) 大致趨勢(shì)為(YZ 代表示采樣狀態(tài)可能正可能負(fù))

 (0  0) (0  1*512)(YZ0   512+YZ0) 。。

我們可以這么理解 我給了512的控制信號(hào) 看看情況。。系統(tǒng)輸出小于512的話 那么我在給一個(gè)512的信號(hào) 加上 系統(tǒng)輸出增加量(應(yīng)為上一次是0 所以這次就是YZ0) 如果系統(tǒng)輸出大于512 那么 加的這個(gè)YZ0自然就是負(fù)值

也就是說(shuō) 系統(tǒng)給的控制信號(hào)會(huì)小于512

這就是 直觀的P 控制效果

先拿去用用在說(shuō)

時(shí)間常數(shù)選為 1 這個(gè)我覺(jué)得可以隨便選,,應(yīng)為我不是真實(shí)的 采樣時(shí)間 這個(gè)1表示的只是一個(gè)采樣 間隔單位

具體影響還是*  P  I  D 去調(diào)整

函數(shù)調(diào)用 pid_control(&unit, (conv-redvad),1);

繼昨天的P 程序,,

反正亂七八糟的,,今天程序總算正常運(yùn)行了

(沒(méi)有良好的編程習(xí)慣是不行的)

記得昨天P取得是1哈。。。

效果不錯(cuò)。。燈泡 在最亮 到最暗 之間 迅速變化著

可以得出以下結(jié)論:

1我的P調(diào)節(jié)正常工作了

2:P的系數(shù) 取得太大太大,,,整個(gè)系統(tǒng)震蕩,,而且劇烈的嚴(yán)重

基于此現(xiàn)修改P=0.25  為什么是0.25 呢? 應(yīng)為是0.25=1/4

為什么是1/4呢?因?yàn)?我的是單片機(jī)   算完后 左移2位就完成了

 

不過(guò)有個(gè)問(wèn)題哦,,,就是我的PID 子函數(shù) 為了通用性 不方便修改

而我不希望 將0.25 作為P的比例系數(shù)傳進(jìn)去,,

不管了 反正現(xiàn)在 I  和D都是0  先這樣搞

dpid=pid_control(&unit, (convad-redvad),1)>>2;

未完待續(xù)


 

關(guān)閉窗口

相關(guān)文章