本人想做做之前的電賽題--滾球平衡菲嘴,但這涉及到了一些自動控制的東西,比如PID汰翠。
對PID之前只是略有耳聞龄坪,為了復(fù)現(xiàn)滾球平衡,只能來現(xiàn)學(xué)PID了复唤。
本系列內(nèi)容是看了MATLAB的教學(xué)視頻后寫的健田,視頻鏈接點擊閱讀原文
PID的公式在此
看著是不是覺得挺復(fù)雜,不過放心佛纫,讓我們先拋棄公式妓局,從PID是什么以及為什么要有PID開始講起
這里有這么一個我們需要控制的設(shè)備总放,我們需要使用驅(qū)動信號(actuating signal)取控制它,同時好爬,我們可以獲得設(shè)備的當(dāng)前信息局雄,也就是受控變量(controlled variable)
這個驅(qū)動信號由一個控制器產(chǎn)生,控制器的作用是使得系統(tǒng)的error為0存炮,error則是控制變量減去受控變量的值炬搭。控制變量(commanded variable)是我們對這個系統(tǒng)的需求,比如將烙鐵加熱到xx度穆桂;受控變量是從設(shè)備獲得的信息宫盔,比如當(dāng)前烙鐵xx度。
接下來就將這個PID模型具象化享完,以球場上一個人走向半場的過程為例
如圖所示灼芭,假設(shè)這個人離半場的距離有50m,那么控制變量為50m般又,設(shè)定控制器的值為0.1彼绷,那么初始速度為5m/s,人接收到速度的指令后行走茴迁,反饋回路將當(dāng)前位置返回累計器寄悯,從而調(diào)整走路速度,隨著人離中場越近笋熬,人的速度越慢热某,直到走到中場,速度為0
右下角的兩張圖分別是路程/時間胳螟、走路速度/時間的關(guān)系圖昔馋,體現(xiàn)了控制器不同的值時的區(qū)別
看起來似乎一個比例就可以解決控制器的問題了,那還要積分和微分器干嘛糖耸,下面換一個無人機(jī)的例子來說明
如的圖所示秘遏,有這么個無人機(jī),想懸停在50m的空中
無人機(jī)無法像上面人走路一樣簡單的比例就可以完成了嘉竟,因為無人機(jī)會因為重力的作用下墜邦危,如果到了50m的空中電機(jī)就定制轉(zhuǎn)動,無人機(jī)會直接下墜
我們假定無人機(jī)的懸停需要100rpm的電機(jī)速度
通過增加增益舍扰,無人機(jī)電機(jī)轉(zhuǎn)速會增加倦蚪,然后上升,反饋使得誤差減小边苹,轉(zhuǎn)速降低陵且,降到100rpm時保持懸浮。只有繼續(xù)增大增益个束,無人機(jī)才會繼續(xù)上升
但是無論增益怎么增加慕购,都沒辦法懸浮在50m處聊疲,如圖中表格所示,最終會有誤差無法消除沪悲,管這種誤差叫做穩(wěn)態(tài)誤差(steady state error)
為了消除這種穩(wěn)態(tài)誤差获洲,可以請積分器出場了
如圖所示,一個常數(shù)值經(jīng)過積分器后得到一個增大的函數(shù)殿如,會使得轉(zhuǎn)速增加贡珊,從而使得無人機(jī)上升減小誤差
當(dāng)誤差為0時,只有積分器的輸出100rpm握截,而比例輸出為0
但是現(xiàn)實中并不是這么理想的飞崖,當(dāng)誤差E比較小的時候積分器的輸出會大于100rpm烂叔,而比例的輸出大于0谨胞,會使得總輸出大于100rpm,會使得無人機(jī)突然超越50m的高度蒜鸡。這種情況叫做超調(diào)
為了減小這種超調(diào)的問題胯努,就需要使用微分器了
對函數(shù)的求導(dǎo)可以得到它的斜率。誤差函數(shù)由于是下降的趨勢逢防,微分得到的斜率是小于0的叶沛,并且隨著下降的速度增大,誤差函數(shù)斜率的絕對值也增大忘朝,這個負(fù)值的斜率輸出到電機(jī)時會減慢電機(jī)的速度灰署,這樣就可以減小超調(diào)量
比例、微分局嘁、積分組合起來就是我們常說的PID控制器了溉箕,通過調(diào)整Kp Ki Kd權(quán)重因子,還可以只使用PI PD P等等
下一篇會講到積分器的保護(hù)或者說抗飽和積分問題
■ Over?■