本系列是轉載。。。。。。。。。。。。。
全部的程序有一個共同點:就是我沒認真去調pid的參數
在工業應用中PID及其衍生算法是應用最廣泛的算法之一,是當之無愧的萬能算法,如果能夠熟練掌握PID算法的設計與實現過程,對於一般的研發人員來講,應該是足夠應對一般研發問題了,而難能可貴的是,在我所接觸的控制算法當中,PID控制算法又是最簡單,最能體現反饋思想的控制算法,可謂經典中的經典。經典的未必是復雜的,經典的東西常常是簡單的,而且是最簡單的,想想牛頓的力學三大定律吧,想想愛因斯坦的質能方程吧,何等的簡單!簡單的不是原始的,簡單的也不是落后的,簡單到了美的程度。先看看PID算法的一般形式:
通過誤差信號控制被控量
2.輸入量rin(t)為電機轉速預定值;
3.輸出量rout(t)為電機轉速實際值;
4.執行器為直流電機;
5.傳感器為光電碼盤,假設碼盤為10線;
6.直流電機采用PWM調速 轉速用單位 轉/min 表示;
不難看出以下結論:
1.輸入量rin(t)為電機轉速預定值(轉/min);
2 輸出量rout(t)為電機轉速實際值(轉/min);
3.偏差量為預定值和實際值之差(轉/min);
那么以下幾個問題需要弄清楚:
1.通過PID環節之后的U(t)是什么值呢?
2.控制執行器(直流電機)轉動轉速應該為電壓值(也就是PWM占空比)。
3.那么U(t)與PWM之間存在怎樣的聯系呢?
http://blog.21ic.com/user1/3407/archives/2006/33541.html(見附錄1)這篇文章上給出了一種方法,即,每個電壓對應一個轉速,電壓和轉速之間呈現線性關系。但是我考慮這種方法的前提是把直流電機的特性理解為線性了,而實際情況下,直流電機的特性絕對不是線性的,或者說在局部上是趨於線性的,這就是為什么說PID調速有個范圍的問題。具體看一下