用微控制器做pid演算法控制問題用微控制器做PID演算法控制問題

2021-05-12 23:54:43 字數 5705 閱讀 4796

1樓:龐泰

1.可以直接套用pid公式,無論增量還是絕對的。pid演算法是根據誤差來控制的演算法,不依賴系統的模型,故不用算系統的傳遞函式。

有的書提到傳遞函式,一般是用於理論建模**,從而直接用matlab一類的**軟體進行pid引數除錯。得到的引數可以為實際應用提供一定參考價值。

2.pid引數整定有一套原則。首先要了解各個引數的作用。

具體的整定方法,隨便找本自控原理的書都會提到,我不太記得了,大致是有一個倍數關係。但實際操作,一般不會是用這個數,是需要根據系統的反應,改變各個引數來試的。盡信書不如無書啊~

另外,不同系統的引數肯定不一樣。就算同一個系統,稍微有一些改變,可能最好的那組引數就會變化。因此衍生了很多先進pid演算法,如神經pid、專家pid、模糊pid等等。

2樓:匿名使用者

我也是新手,**一下。我覺得位置式和增進式本質上並無多大區別,只是表達起來不同吧。雖然我感覺位置式好理解一些,但是好像實際用的時候增進式多一些(記得書上好像是這麼說的)。

我還是學生呢~所以理解的還不是很透徹,只是一點淺見,僅供參考吧。

微控制器pid控制問題

3樓:匿名使用者

首先弄清楚pid是一種控制演算法!!!

1,「如果用微控制器恆溫可以使溫度到達預定值就停止加熱,低了就加熱,用一個溫度感測器反饋,這樣算是一個自動控制嗎」你這是控制系統,但是效果會非常差,尤其是對於溫度控制這種大慣性系統,達到預定值就停止加熱,但是由於慣性,溫度肯定會繼續上升,電爐燒水的時候,水開了,斷電之後水還要沸騰一定時間的(沸騰是很消耗能量的,由此可見如果是加熱的話溫度上升更嚴重,你也可以自己用溫度計試試看);「低了就加熱」是同樣的道理。如果系統對控制精度有要求,你這樣做肯定達不到要求。pid是一種控制演算法,相對於其他控制演算法來說算是最簡單的了。

pid能夠做到在溫度快要達到設定值的時候降低加熱功率,讓溫度上升速度變慢,最終穩定在設定值。如果用你的直接控制,溫度會在設定值上下振盪,永遠不會停在設定值。

2,一般的控制系統都需要加反饋,以構成閉環控制系統,相對的還有開環控制系統。開環控制系統,舉個例子,就是你加熱的時候事先計算好大約需要多少熱量,然後考慮一下環境影響,計算出加熱時間,然後控制加熱系統按照你這個時間加熱。你覺得這樣的系統能夠穩定工作嗎?

環境稍稍有變動就掛了!開環控制系統的特點就是很容易受到環境的影響;閉環控制系統就穩定很多,你用1l水可用,2l水也行,500w電能用,1000w電爐也能用,這就是閉環的優點。

因此,大多數的控制系統都是閉環的,開環很少單獨使用,即使用到了也是有閉環的。開環其實也是有優點的,開環在控制系統裡面叫做前饋(跟反饋對應的),比如你的系統裡面電源電壓上升了,加熱速度肯定會變快,如果你對電源電壓取樣,將取樣的結果輸入到閉環裡面,對閉環做一個輕微的修正,控制的精度會更好,這就是開環的優勢,它是超前的,能夠預知結果(根據地源電壓提高就能知道需要降低輸出功率了)。

說完這些,你應該明白了,反饋是必需的(前饋也可以要,但是不是必需的),pid不能被取代(除非你用其它更復雜的控制演算法)。

4樓:匿名使用者

1.這當然算是自動控制,因為你是根據監測結果與預定值比較之後自動實現加熱的;因為你從發出加熱的訊號到實現加熱到達理想狀態的過程是一個動態的過程,是有一個響應的過程,如果用pid控制,會更快,更平穩的到達這個穩定的狀態,減小對系統的衝擊;你調節的精確程度不僅僅與你的pid環節有關,還與你的感測器精度有關,用pid調節只能讓你更快,更平穩的到達穩定的預想狀態,不能單純的說會讓調節更精確。

2.不能代替,因為感測器反饋只是傳回了實時的檢測結果,更精確的檢測結果只能提高你檢測的靈敏度,而不能決定你的整個過程超調時間和穩態誤差。

補充問題的回答:pid演算法控制pwm:這個其實並不難,我做過溫控專案,大概的意思是,離預設值較大時(比如預設50度,現在0度),可以全速加熱(加熱裝置一直導通),離預設值較近時(預設50度,現在35度),可以加熱六秒,關斷四秒,(佔空比控制用定時器開始計時的暫存器控制),離預設值非常近時(預設50度,現在48度),可以加熱一秒,關斷九秒,這樣會防止你加熱過渡,因為你沒有製冷裝置,所以離預設值較近時,要慢點加熱。

具體的pid演算法控制pwm還要你多實驗,多比較之後才能決定。我也只能提供一個思路。

哎呀,打字太辛苦了,希望你能滿意吧

5樓:

我給你舉個簡單的列子吧,要保持物體勻速行駛!就必需用pid 調速度,不光有反饋訊號,而且還反饋需要加減的量。

6樓:匿名使用者

pid要比其他方法精確的多。用感測器反饋再用微控制器邏輯判斷是很不精確的

微控制器實現pid控制中 pid是一種演算法嗎

7樓:渥美老葵

1.可以直接套用pid公式,無論增量還是絕對的。pid演算法是根據誤差來控制的演算法,不依賴系統的模型,故不用算系統的傳遞函式。

有的書提到傳遞函式,一般是用於理論建模**,從而直接用matlab一類的**軟體進行pid引數除錯。得到的引數可以為實際應用提供一定參考價值。

2.pid引數整定有一套原則。首先要了解各個引數的作用。

具體的整定方法,隨便找本自控原理的書都會提到,我不太記得了,大致是有一個倍數關係。但實際操作,一般不會是用這個數,是需要根據系統的反應,改變各個引數來試的。盡信書不如無書啊~

另外,不同系統的引數肯定不一樣。就算同一個系統,稍微有一些改變,可能最好的那組引數就會變化。因此衍生了很多先進pid演算法,如神經pid、專家pid、模糊pid等等。

怎樣在51微控制器上實現pid演算法的控制

8樓:匿名使用者

步進電機如果負載不大就不需要pid演算法,只需要緩慢改變輸出的脈衝頻率就行了.

微控制器中的pid演算法

9樓:匿名使用者

pid演算法

下面對控制點所採用的pid控制演算法進行說明。

控制點目前包含三種比較簡單的pid控制演算法,分別是:增量式演算法,位置式演算法,微分先行。 這三種pid演算法雖然簡單,但各有特點,基本上能滿足一般控制的大多數要求。

1) pid增量式演算法

離散化公式:

注:各符號含義如下

u(t) 控制器的輸出值。

e(t);;控制器輸入與設定值之間的誤差。

kp;; 比例係數。

ti;;積分時間常數。

td;微分時間常數。

t;;調節週期。

對於增量式演算法,可以選擇的功能有:

(1) 濾波的選擇

可以對輸入加一個前置濾波器,使得進入控制演算法的給定值不突變,而是有一定慣性延遲的緩變數。

(2) 系統的動態過程加速

在增量式演算法中,比例項與積分項的符號有以下關係:如果被控量繼續偏離給定值,則這兩項符號相同,而當被控量向給定值方向變化時,則這兩項的符號相反。

由於這一性質,當被控量接近給定值的時候,反號的比例作用阻礙了積分作用,因而避免了積分超調以及隨之帶來的振盪,這顯然是有利於控制的。但如果被控量遠未接近給定值,僅剛開始向給定值變化時,由於比例和積分反向,將會減慢控制過程。

為了加快開始的動態過程,我們可以設定一個偏差範圍v,當偏差|e(t)|< β時,即被控量接近給定值時,就按正常規律調節,而當|e(t)|>= β時,則不管比例作用為正或為負,都使它向有利於接近給定值的方向調整,即取其值為|e(t)-e(t-1)|,其符號與積分項一致。利用這樣的演算法,可以加快控制的動態過程。

(3) pid增量演算法的飽和作用及其抑制

在pid增量演算法中,由於執行元件本身是機械或物理的積分儲存單元,如果給定值發生突變時,由演算法的比例部分和微分部分計算出的控制增量可能比較大,如果該值超過了執行元件所允許的最大限度,那麼實際上執行的控制增量將時受到限制時的值,多餘的部分將丟失,將使系統的動態過程變長,因此,需要採取一定的措施改善這種情況。

糾正這種缺陷的方法是採用積累補償法,當超出執行機構的執行能力時,將其多餘部分積累起來,而一旦可能時,再補充執行。

2) pid位置演算法

離散公式:

;= 對於位置式演算法,可以選擇的功能有:

a、濾波:同上為一階慣性濾波

b、飽和作用抑制:

(1) 遇限削弱積分法

一旦控制變數進入飽和區,將只執行削弱積分項的運算而停止進行增大積分項的運算。具體地說,在計算ui時,將判斷上一個時刻的控制量ui-1是否已經超出限制範圍,如果已經超出,那麼將根據偏差的符號,判斷系統是否在超調區域,由此決定是否將相應偏差計入積分項。

(2) 積分分離法

在基本pid控制中,當有較大幅度的擾動或大幅度改變給定值時, 由於此時有較大的偏差,以及系統有慣性和滯後,故在積分項的作用下,往往會產生較大的超調量和長時間的波動。特別是對於溫度、成份等變化緩慢的過程,這一現象將更嚴重。為此可以採用積分分離措施,即偏差較大的時,取消積分作用;當偏差較小時才將積分作用投入。

另外積分分離的閾值應視具體物件和要求而定。若閾值太大,達不到積分分離的目的,若太小又有可能因被控量無法跳出積分分離區,只進行pd控制,將會出現殘差。

離散化公式:

δu(t) = q0e(t) + q1e(t-1) + q2e(t-2)

當|e(t)|≤β時

q0 = kp(1+t/ti+td/t)

q1 = -kp(1+2td/t)

q2 = kp td /t

當|e(t)|>β時

q0 = kp(1+td/t)

q1 = -kp(1+2td/t)

q2 = kp td /t

u(t) = u(t-1) + δu(t)

注:各符號含義如下

u(t);;控制器的輸出值。

e(t);控制器輸入與設定值之間的誤差。

kp;;比例係數。

ti;;;積分時間常數。

td;;微分時間常數。

t;;;調節週期。

β;;; 積分分離閾值

(3) 有效偏差法

當根據pid位置演算法算出的控制量超出限制範圍時,控制量實際上只能取邊際值u=umax,或u=umin,有效偏差法是將相應的這一控制量的偏差值作為有效偏差值計入積分累計而不是將實際的偏差計入積分累計。因為按實際偏差計算出的控制量並沒有執行。

如果實際實現的控制量為u=u(上限值或下限值),則有效偏差可以逆推出,即:

= 然後,由該值計算積分項

3) 微分先行pid演算法

當控制系統的給定值發生階躍時,微分作用將導致輸出值大幅度變化,這樣不利於生產的穩定操作。因此在微分項中不考慮給定值,只對被控量(控制器輸入值)進行微分。微分先行pid演算法又叫測量值微分pid演算法。

公式如下:

離散化公式:

引數說明同上

對於純滯後物件的補償

控制點採用了**ith**器,使控制物件與補償環節一起構成一個簡單的慣性環節。

pid引數整定

(1) 比例係數kc對系統效能的影響:

比例係數加大,使系統的動作靈敏,速度加快,穩態誤差減小。kc偏大,振盪次數加多,調節時間加長。kc太大時,系統會趨於不穩定。

kc太小,又會使系統的動作緩慢。kc可以選負數,這主要是由執行機構、感測器以控制物件的特性決定的。如果kc的符號選擇不當物件狀態(pv值)就會離控制目標的狀態(sv值)越來越遠,如果出現這樣的情況kc的符號就一定要取反。

(2) 積分控制ti對系統效能的影響:

積分作用使系統的穩定性下降,ti小(積分作用強)會使系統不穩定,但能消除穩態誤差,提高系統的控制精度。

(3) 微分控制td對系統效能的影響:

微分作用可以改善動態特性,td偏大時,超調量較大,調節時間較短。td偏小時,超調量也較大,調節時間也較長。只有td合適,才能使超調量較小,減短調節時間。

51微控制器實現電動機的PID恆速控制

這是倒立擺系統的pid控制函式的一部分,你看看有沒有思路 定義結構體 struct may pidpid 此處可放結構體變數名 struct may pid pp 定義結構體型別指標 pp malloc sizeof struct may pid 為指標變數分配安全的地址空間 sizeof 其為計算...

怎麼用51微控制器控制多路舵機,一個51微控制器能控制幾個舵機

控制舵機的原理圖很簡單,用51的任何一個io口,連舵機的控制腳就行了。舵機的電源 5v 和地也連好,原理圖就這麼簡單。關鍵在於程式。一個51微控制器能控制幾個舵機 制舵機一般採用pwm訊號,普通的51微控制器甚至都沒有pwm介面,還得軟體模擬輸出內pwm訊號,此外,51微控制器的抗干擾能力容還是很弱...

微控制器控制24V繼電器的問題,微控制器IO口接光耦TLP

上拉電阻選10k,電阻1選2k,電阻2選10k,三極體選8050。但這個電路可能有兩個問題 1 由於io口的初始狀態為1,所以剛上電時,繼電器處於吸合狀態。2 需要在5v和光耦1腳之間串一個1k電阻,否則光耦易燒掉。npn三極體選用bc337或者3904都可以,光藕輸出端用24伏電源,管基極串個10...