PID參數(shù)的確定及實際應(yīng)用
對于PID 參數(shù)的確定前輩們早就說了
先把 I 和D =0 搞好P在說
我們接下來就先搞P
首先定義一個PID 結(jié)構(gòu)體的變量
struct pid_unit unit; // 生成一個PID控制模塊
然后初始化PID
pid_init(unit, 1, 0,0); // 對該模塊進行初始化
為什么用1呢?我采樣的是一個0-1024的 給的控制信號是一個 0-10 000 000 的延時值
這個和1有什么關(guān)系呢?
我也不清楚 反正先用1搞吧看看效果
不過明眼人一看 就知道如果是1的話 系統(tǒng) 設(shè)定采樣值是512 初始狀態(tài)是0
那么輸出 會從0開始增加(采樣值 和控制信號) 大致趨勢為(YZ 代表示采樣狀態(tài)可能正可能負)
(0 0) (0 1*512)(YZ0 512+YZ0) 。。
我們可以這么理解 我給了512的控制信號 看看情況。。系統(tǒng)輸出小于512的話 那么我在給一個512的信號 加上 系統(tǒng)輸出增加量(應(yīng)為上一次是0 所以這次就是YZ0) 如果系統(tǒng)輸出大于512 那么 加的這個YZ0自然就是負值
也就是說 系統(tǒng)給的控制信號會小于512
這就是 直觀的P 控制效果
先拿去用用在說
時間常數(shù)選為 1 這個我覺得可以隨便選,,應(yīng)為我不是真實的 采樣時間 這個1表示的只是一個采樣 間隔單位
具體影響還是* P I D 去調(diào)整
函數(shù)調(diào)用 pid_control(unit, (conv-redvad),1);
繼昨天的P 程序,,
反正亂七八糟的,,今天程序總算正常運行了
(沒有良好的編程習(xí)慣是不行的)
記得昨天P取得是1哈。。。
效果不錯。。燈泡 在最亮 到最暗 之間 迅速變化著
可以得出以下結(jié)論:
1我的P調(diào)節(jié)正常工作了
2:P的系數(shù) 取得太大太大,,,整個系統(tǒng)震蕩,,而且劇烈的嚴(yán)重
基于此現(xiàn)修改P=0.25 為什么是0.25 呢? 應(yīng)為是0.25=1/4
為什么是1/4呢?因為 我的是單片機 算完后 左移2位就完成了
不過有個問題哦,,,就是我的PID 子函數(shù) 為了通用性 不方便修改
而我不希望 將0.25 作為P的比例系數(shù)傳進去,,
不管了 反正現(xiàn)在 I 和D都是0 先這樣搞
dpid=pid_control(unit, (convad-redvad),1)>>2;
未完待續(xù)
評論