PID控制算法的C語言實現(xiàn)_第1頁
PID控制算法的C語言實現(xiàn)_第2頁
PID控制算法的C語言實現(xiàn)_第3頁
PID控制算法的C語言實現(xiàn)_第4頁
PID控制算法的C語言實現(xiàn)_第5頁
免費預(yù)覽已結(jié)束,剩余18頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、PID控制算法的C語言實現(xiàn)一 PID算法原理最近兩天在考慮一般控制算法的 C語言實現(xiàn)問題,發(fā)現(xiàn)網(wǎng)絡(luò)上尚沒有一套完整 的比較體系的講解。于是總結(jié)了幾天,整理一套思路分享給大家。在工業(yè)應(yīng)用中PID及其衍生算法是應(yīng)用最廣泛的算法之一, 是當(dāng)之無愧的萬能 算法,如果能夠熟練掌握PID算法的設(shè)計與實現(xiàn)過程,對于一般的研發(fā)人員來講, 應(yīng)該是足夠應(yīng)對一般研發(fā)問題了,而難能可貴的是,在我所接觸的控制算法當(dāng)中, PID控制算法又是最簡單,最能體現(xiàn)反饋思想的控制算法,可謂經(jīng)典中的經(jīng)典。 經(jīng)典的未必是復(fù)雜的,經(jīng)典的東西常常是簡單的,而且是最簡單的,想想牛頓的 力學(xué)三大定律吧,想想愛因斯坦的質(zhì)能方程吧,何等的簡單!簡

2、單的不是原始的, 簡單的也不是落后的,簡單到了美的程度。先看看 PID算法的一般形式:PID的流程簡單到了不能再簡單的程度,通過誤差信號控制被控量,而控制器 本身就是比例、積分、微分三個環(huán)節(jié)的加和。這里我們規(guī)定(在 t時刻):1. 輸入量為rin(t);2輸出量為rout(t);3.偏差量為 err(t)=rin(t)-rout(t);Pid的控制規(guī)律為U(X)=kp(err(t)+y CrTlt:)Cit十TQ理解一下這個公式,主要從下面幾個問題著手,為了便于理解,把控制環(huán)境具體一下:1規(guī)定這個流程是用來為直流電機調(diào)速的;2. 輸入量rin(t)為電機轉(zhuǎn)速預(yù)定值;3. 輸出量rout(t)為

3、電機轉(zhuǎn)速實際值;4執(zhí)行器為直流電機;5傳感器為光電碼盤,假設(shè)碼盤為10線;6.直流電機采用PWM調(diào)速轉(zhuǎn)速用單位轉(zhuǎn)min表示;不難看出以下結(jié)論:1. 輸入量rin ( t)為電機轉(zhuǎn)速預(yù)定值(轉(zhuǎn)min);2. 輸出量rout(t)為電機轉(zhuǎn)速實際值(轉(zhuǎn)min);3. 偏差量為預(yù)定值和實際值之差(轉(zhuǎn)min);那么以下幾個問題需要弄清楚:1. 通過PID環(huán)節(jié)之后的U(t)是什么值呢2. 控制執(zhí)行器(直流電機)轉(zhuǎn)動轉(zhuǎn)速應(yīng)該為電壓值(也就是PWM占空比)。3. 那么U(t)與PWM之間存在怎樣的聯(lián)系呢(見附錄 1)這篇文章上給出了一種方法,即,每個電壓對應(yīng)一個轉(zhuǎn)速,電壓和 轉(zhuǎn)速之間呈現(xiàn)線性關(guān)系。 但是我考慮

4、這種方法的前提是把直流電機的特性理解為 線性了,而實際情況下, 直流電機的特性絕對不是線性的, 或者說在局部上是趨 于線性的,這就是為什么說 PID 調(diào)速有個范圍的問題。具體看一下(見附錄 2) 這篇文章就可以了解了。 所以在正式進行調(diào)速設(shè)計之前, 需要現(xiàn)有開環(huán)系統(tǒng), 測 試電機和轉(zhuǎn)速之間的 特性曲線(或者查閱電機的資料說明) ,然后再進行閉環(huán)參 數(shù)整定 。這篇先寫到這, 下一篇說明連續(xù)系統(tǒng)的離散化問題。 并根據(jù)離散化后的 特點講述位置型 PID 和增量型 PID 的用法和 C 語言實現(xiàn)過程。PID控制算法的C語言實現(xiàn)二PID算法的離散化上一節(jié)中,我論述了 PID算法的基本形式,并對其控制過程

5、的實現(xiàn)有了一個簡 要的說明,通過上一節(jié)的總結(jié),基本已經(jīng)可以明白 PID控制的過程。這一節(jié)中先 繼續(xù)上一節(jié)內(nèi)容補充說明一下。1說明一下反饋控制的原理,通過上一節(jié)的框圖不難看出,PID控制其實是對偏差的控制過程 ;2. 如果偏差為 0,則比例環(huán)節(jié)不起作用,只有存在偏差時,比例環(huán)節(jié)才起作用。3. 積分環(huán)節(jié)主要是用來消除靜差,所謂靜差,就是系統(tǒng)穩(wěn)定后輸出值和設(shè)定值 之間的差值, 積分環(huán)節(jié)實際上就是偏差累計的過程, 把累計的誤差加到原有系統(tǒng) 上以抵消系統(tǒng)造成的靜差。4. 而微分信號則反應(yīng)了偏差信號的變化規(guī)律,或者說是變化趨勢,根據(jù)偏差信 號的變化趨勢來進行超前調(diào)節(jié),從而增加了系統(tǒng)的快速性。好了,關(guān)于PI

6、D的基本說明就補充到這里,下面將對 PID連續(xù)系統(tǒng)離散化,從 而方便在處理器上實現(xiàn)。下面把連續(xù)狀態(tài)的公式再貼一下:假設(shè)采樣間隔為T,則在第K T時刻:偏差 err(K)=rin(K)-rout(K);積分環(huán)節(jié)用加和的形式表示,即err(K)+err(K+1)+微分環(huán)節(jié)用斜率的形式表示,即err(K)-err(K-1)T;從而形成如下PID離散表示形式:則U(K)可表示成為:(fc I二KJo廠廠(k)+K工 err(j) + t7(prrk l-errk-l)至于說Kp、K、Kd三個參數(shù)的具體表達式,我想可以輕松的推出了,這里節(jié)省 時間,不再詳細表示了。其實到這里為止,PID的基本離散表示形式

7、已經(jīng)出來了。目前的這種表述形式屬 于位置型PID,另外一種表述方式為增量式 PID,由U上述表達式可以輕易得到:u(k-l)=Kp(err(k-l)+g 血 j)+KM(err(k-l)G7T(k-2)那么:y() = p(err6Hj) - errork -1) + kieTTOTft) ÷ kA(error(k)2erro< 一 1)+WrOEt-2)這就是離散化PID的增量式表示方式,由公式可以看出,增量式的表達結(jié)果和 最近三次的偏差有關(guān),這樣就大大提高了系統(tǒng)的穩(wěn)定性。需要注意的是最終的輸出結(jié)果應(yīng)該為u(K)+增量調(diào)節(jié)值;PID的離散化過程基本思路就是這樣,下面是將離散化

8、的公式轉(zhuǎn)換成為C語言,從而實現(xiàn)微控制器的控制作用。PID控制算法的C語言實現(xiàn)三 位置型PID的C語言實 現(xiàn)上一節(jié)中已經(jīng)抽象出了位置性 PID和增量型PID的數(shù)學(xué)表達式,這一節(jié),重點 講解C語言代碼的實現(xiàn)過程,算法的C語言實現(xiàn)過程具有一般性,通過PID算法 的C語言實現(xiàn),可以以此類推,設(shè)計其它算法的C語言實現(xiàn)。第一步:定義PID變量結(jié)構(gòu)體,代碼如下:StruCt _pid訕金吟rJO 2float SetSpeed;例系數(shù)KP的作用是加快系統(tǒng)的響應(yīng)速度,提高系統(tǒng)的調(diào)節(jié)精度。KP越大,系統(tǒng)的響應(yīng)速度越快,系統(tǒng)的調(diào)節(jié)精度越高,但是容易產(chǎn)生超調(diào),甚至?xí)瓜到y(tǒng)不穩(wěn)定。KP取值過小,則會降低調(diào)節(jié)精度,使響

9、應(yīng)速度緩慢,從而延長調(diào)節(jié)時間,是系 統(tǒng)靜態(tài)、動態(tài)特性變差;2.積分作用系數(shù)Ki的作用是消除系統(tǒng)的穩(wěn)態(tài)誤差。Ki越大,系統(tǒng)的靜態(tài)誤差消 除的越快,但是Ki過大,在響應(yīng)過程的初期會產(chǎn)生積分飽和的現(xiàn)象,從而引起 響應(yīng)過程的較大超調(diào)。若 Ki過小,將使系統(tǒng)靜態(tài)誤差難以消除,影響系統(tǒng)的調(diào) 節(jié)精度;3微分系數(shù)Kd的作用是改善系統(tǒng)的動態(tài)特性,其作用主要是在響應(yīng)過程中抑 制偏差向任何方向的變化,對偏差變化進行提前預(yù)報。但是kd過大,會使響應(yīng)過程提前制動,從而延長調(diào)節(jié)時間,而且會降低系統(tǒng)的抗干擾性。反應(yīng)系統(tǒng)性能的兩個參數(shù)是系統(tǒng)誤差e和誤差變化律ec,這點還是好理解的:首先我們規(guī)定一個誤差的極限值,假設(shè)為MmaX

10、;規(guī)定一個誤差的比較大的值, 假設(shè)為Mmid ;規(guī)定一個誤差的較小值,假設(shè)為 Mmin ;當(dāng)abs(e) >Mmax時,說明誤差的絕對值已經(jīng)很大了,不論誤差變化趨勢如 何,都應(yīng)該考慮控制器的輸入應(yīng)按最大(或最小)輸出,以達到迅速調(diào)整誤差的 效果,使誤差絕對值以最大的速度減小。此時,相當(dāng)于實施開環(huán)控制。當(dāng) e*ec>0 時,說明誤差在朝向誤差絕對值增大的方向變化,此時,如果 abs(e)>Mmid,說明誤差也較大,可考慮由控制器實施較強的控制作用,以達到 扭轉(zhuǎn)誤差絕對值向減小的方向變化,并迅速減小誤差的絕對值。此時如果 abs(e)<Mmid,說明盡管誤差是向絕對值增大的

11、方向變化,但是誤差絕對值本身 并不是很大,可以考慮控制器實施一般的控制作用, 只需要扭轉(zhuǎn)誤差的變化趨勢, 使其向誤差絕對值減小的方向變化即可。當(dāng) e*err<0 且 e*err(k-1)>0 或者 e=0 時,說明誤差的絕對值向減小的方向變化, 或者已經(jīng)達到平衡狀態(tài),此時保持控制器輸出不變即可。當(dāng) e*err<0 且 e*err(k-1)<0 時,說明誤差處于極限狀態(tài)。如果此時誤差的絕對 值較大,大于Mmin ,可以考慮實施較強控制作用。如果此時誤差絕對值較小, 可以考慮實施較弱控制作用。當(dāng) abs(e)<Mmin 時,說明誤差絕對值很小,此時加入積分,減小靜態(tài)誤

12、差。上面的邏輯判斷過程, 實際上就是對于控制系統(tǒng)的一個專家判斷過程。 (未完待 續(xù))PID控制算法的C語言實現(xiàn)十 模糊算法簡介在PID控制算法的C語言實現(xiàn)九中,文章已經(jīng)對模糊 PID的實質(zhì)做了一個簡要 說明。本來打算等到完成畢業(yè)設(shè)計, 工作穩(wěn)定了再著力完成剩下的部分。 鑒于網(wǎng) 友的要求和信任,抽出時間來,對模糊 PID做一個較為詳細的論述,這里我不打 算做出仿真程序了,但就基本概念和思路進行一下說明,相信有C語言基礎(chǔ)的朋 友可以通過這些介紹性的文字自行實現(xiàn)。 這篇文章主要說明一下模糊算法的含義 和原理。實際上模糊算法屬于智能算法,智能算法也可以叫非模型算法,也就是說,當(dāng) 我們對于系統(tǒng)的模型認識

13、不是很深刻, 或者說客觀的原因?qū)е挛覀儫o法對系統(tǒng)的 控制模型進行深入研究的時候, 智能算法常常能夠起到不小的作用。 這點是方便 理解的,如果一個系統(tǒng)的模型可以輕易的獲得, 那么就可以根據(jù)系統(tǒng)的模型進行 模型分析, 設(shè)計出適合系統(tǒng)模型的控制器。 但是現(xiàn)實世界中, 可以說所有的系統(tǒng) 都是非線性的,是不可預(yù)測的。但這并不是說我們就無從建立控制器,因為,大 部分的系統(tǒng)在一定的條件和范圍內(nèi)是可以抽象成為線性系統(tǒng)的。問題的關(guān)鍵是, 當(dāng)我們系統(tǒng)設(shè)計的范圍超出了線性的范圍, 我們又該如何處理。 顯然,智能算法 是一條很不錯的途徑。智能算法包含了專家系統(tǒng)、模糊算法、遺傳算法、神經(jīng)網(wǎng) 絡(luò)算法等。其實這其中的任何一

14、種算法都可以跟 PID去做結(jié)合,而選擇的關(guān)鍵在 于,處理的實時性能不能得到滿足。 當(dāng)我們處理器的速度足夠快速時, 我們可以 選擇更為復(fù)雜的、 精度更加高的算法。 但是, 控制器的處理速度限制了我們算法 的選擇。當(dāng)然,成本是限制處理器速度最根本的原因。這個道理很簡單, 51 單 片機和DSP的成本肯定大不相同。專家PID和模糊PID是常用的兩種PID選擇方 式。其實,模糊PID適應(yīng)一般的控制系統(tǒng)是沒有問題。文章接下來將說明模糊算 法的一些基本常識。模糊算法其實并不模糊。模糊算法其實也是逐次求精的過程。這里舉個例子說 明。我們設(shè)計一個倒立擺系統(tǒng),假如擺針偏差V 5°我們說它的偏差比較 小

15、”; 擺針偏差在5°和10°之間,我們說它的偏差處于 中”的狀態(tài);當(dāng)擺針偏差 10° 的時候,我們說它的偏差有點兒 “大”了。對于“小”、“中”、“大”這樣的詞匯來講, 他們是精確的表述, 可問題是如果擺針偏差是 3°呢,那么這是一種什么樣的狀態(tài) 呢。我們可以用 “很小”來表述它。如果是 7°呢,可以說它是 “中”偏“小”。那么如 果到了 80°呢,它的偏差可以說 “非常大”。而我們調(diào)節(jié)的過程實際上就是讓系統(tǒng) 的偏差由非常 “大”逐漸向非常 “小”過度的過程。當(dāng)然,我們系統(tǒng)這個調(diào)節(jié)過程是 快速穩(wěn)定的。 通過上面的說明, 可以認識到,

16、其實對于每一種狀態(tài)都可以劃分到 大、中、小三個狀態(tài)當(dāng)中去,只不過他們隸屬的程度不太一樣,比如 6°隸屬于小的程度可能是,隸屬于中的程度是,隸屬于大的程度是 0。這里實際上是有一個 問題的,就是這個隸屬的程度怎么確定這就要求我們?nèi)ピO(shè)計一個隸屬函數(shù)。 詳細 內(nèi)容可以查閱相關(guān)的資料,這里沒有辦法那么詳細的說明了。(見附錄3)這里面有些說明。 那么,知道了隸屬度的問題, 就可以根據(jù)目前隸屬的程度來控制電 機以多大的速度和方向轉(zhuǎn)動了,當(dāng)然,最終的控制量肯定要落實在控制電壓上。 這點可以很容易的想想, 我們控制的目的就是讓倒立擺從隸屬 “大”的程度為 1 的 狀態(tài),調(diào)節(jié)到隸屬 “小”的程度為 1

17、 的狀態(tài)。當(dāng)隸屬大多一些的時候,我們就加快 調(diào)節(jié)的速度,當(dāng)隸屬小多一些的時候,我們就減慢調(diào)節(jié)的速度,進行微調(diào)??蓡?題是,大、中、小的狀態(tài)是漢字,怎么用數(shù)字表示,進而用程序代碼表示呢其實 我們可以給大、中、小三個狀態(tài)設(shè)定三個數(shù)字來表示,比如大表示用 3 表示,中 用 2表示,小用 1 表示。那么我們完全可以用 1*+2*+3*= 來表示它,當(dāng)然這個公 式也不一定是這樣的, 這個公式的設(shè)計是系統(tǒng)模糊化和精確化的一個過程, 讀者 也可參見相關(guān)文獻理解。 但就這個數(shù)字而言, 可以說明, 目前 6°的角度偏差處于 小和中之間,但是更偏向于中。 我們就可以根據(jù)這個數(shù)字來調(diào)節(jié)電機的轉(zhuǎn)動速度 和時

18、間了。 當(dāng)然,這個數(shù)字與電機轉(zhuǎn)速的對應(yīng)關(guān)系, 也需要根據(jù)實際情況進行設(shè) 計和調(diào)節(jié)。前面一個例子已經(jīng)基本上說明了模糊算法的基本原理了。可是實際上,一個 系統(tǒng)的限制因素常常不是一個。 上面的例子中, 只有偏差角度成為了系統(tǒng)調(diào)節(jié)的 參考因素。而實際系統(tǒng)中,比如 PID 系統(tǒng),我們需要調(diào)節(jié)的是比例、積分、微分 三個環(huán)節(jié),那么這三個環(huán)節(jié)的作用就需要我們認清, 也就是說, 我們需要根據(jù)超 調(diào)量、調(diào)節(jié)時間、 震蕩情況等信息來考慮對這三個環(huán)節(jié)調(diào)節(jié)的比重, 輸入量和輸 出量都不是單一的, 可是其中必然有某種內(nèi)在的邏輯聯(lián)系。 所以這種邏輯聯(lián)系就 成為我們設(shè)計工作的重點了。 下一篇文章將詳細分析 PID 三個變量和

19、系統(tǒng)性能參 數(shù)之間的聯(lián)系。PID控制算法的C語言實現(xiàn)一 (PID系列完結(jié)篇)模 糊PID的參數(shù)整定這幾天一直在考慮如何能夠把這一節(jié)的內(nèi)容說清楚,對于 PID 而言應(yīng)用并沒有 多大難度, 按照基本的算法設(shè)計思路和成熟的參數(shù)整定方法, 就算是沒有經(jīng)過特 殊訓(xùn)練和培訓(xùn)的人,也能夠在較短的時間內(nèi)容學(xué)會使用 PID 算法??蓡栴}是,如 何能夠透徹的理解 PID 算法,從而能夠根據(jù)實際的情況設(shè)計出優(yōu)秀的算法呢。通過講述公式和基本原理肯定是最能說明問題的,可是這樣的話怕是犯了 “專 家”的錯誤了。對于門檻比較低的技術(shù)人員來講,依然不能透徹理解。可是說的 入耳了,能不能透徹說明也是一個問題, 所以斟酌了幾天,

20、 整理了一下思路才開 始完成 PID 系列文章的最后一篇。我所說的最后一篇不代表 PID的功能和發(fā)展就止步與此,僅僅是說明,透過這 一些列的文章,基本上已經(jīng)可以涵蓋 PID設(shè)計的要點,至于更深入的研究,就交 給有需要的讀者去做。上一節(jié)中大致講述了一下模糊算法。 實際上模糊算法的很多概念在上一節(jié)中并 沒有深入的解釋。 舉的例子也只是為了說明模糊算法的基本含義, 真正的模糊算 法是不能這么設(shè)計的, 當(dāng)然也不會這么簡單。 模糊算法的核心是模糊規(guī)則, 如果 模糊規(guī)則制定的出色, 那么模糊算法的控制效率就高。 其實這是智能算法的一般 特性,規(guī)則是系統(tǒng)判斷和處理的前提。那么就說說PID的規(guī)則該怎么制定。我

21、們知道,模糊算法的本質(zhì)是對PID的三個參數(shù)進行智能調(diào)節(jié)。那么首先要提 出的問題是如何對PID的參數(shù)進行調(diào)節(jié)這個問題其實是參數(shù)整定的問題,現(xiàn)實當(dāng)中有很多整定方法。 可是我們需要從根本上了解為什么這么整定, 才能知道該如 何建立數(shù)學(xué)模型進行分析。那么要回答如何整定參數(shù)的問題,就需要先明白 PID 參數(shù)的作用都是什么對系統(tǒng)有什么影響我們從作用和副作用兩個方面說明參數(shù)對系統(tǒng)的影響。1比例環(huán)節(jié)Kp,作用是加快系統(tǒng)的響應(yīng)速度,提高系統(tǒng)的調(diào)節(jié)精度,副作用是 會導(dǎo)致超調(diào) ;2.積分環(huán)節(jié)Ki,作用是消除穩(wěn)態(tài)誤差,副作用是導(dǎo)致積分飽和現(xiàn)象 ;3微分環(huán)節(jié)Kd,作用是改善系統(tǒng)的動態(tài)性能,副作用是延長系統(tǒng)的調(diào)節(jié)時間。理

22、解了上述問題,那么就可以 “辯證施治,對癥下藥 ”了。比如說,如果系統(tǒng)響 應(yīng)速度慢,我們就加大KP的取值,如果超調(diào)量過大我們就減小 KP的取值等等。 可是問題這些語言的描述該如何用數(shù)學(xué)形式表達出來呢。 我們所知道的, 反饋系 統(tǒng)的實質(zhì)就是系統(tǒng)的輸出量作為反饋量與系統(tǒng)的輸入量進行作差, 從而得到系統(tǒng) 的誤差e,那么這個誤差e就能夠反應(yīng)目前系統(tǒng)所處的狀態(tài)。誤差 e可以表明目 前系統(tǒng)的輸出狀態(tài)到底偏離要求多少。而誤差 e的變化律ec,表示誤差變化的 速度。這樣,我們可以根據(jù)這兩個量的狀態(tài)來分析三個參數(shù)此時應(yīng)該如何取值, 假如e為負方向比較大,ec也為負方向增大狀態(tài),此時比例環(huán)節(jié)要大一些,從 而加快調(diào)

23、節(jié)速度, 而積分環(huán)節(jié)要小一些, 甚至不加積分環(huán)節(jié), 從而防止負方向上 出現(xiàn)飽和積分的現(xiàn)象。 微分環(huán)節(jié)可以稍加一些, 在不影響調(diào)節(jié)時間的情況下, 起 到改善系統(tǒng)動態(tài)性能的作用。附錄 1看到有不少人問到底如何讓 UK值與PWM占空比值對應(yīng),進而實現(xiàn)占空比輸出 和輸出控制電壓對應(yīng)。(注意,我這里討論的前提是輸出控制的是電壓,不是 PWM 方波。 PWM 輸出 后要經(jīng)過濾波整形再輸出控制。)前提條件:輸出電壓控制電壓范圍是 0-10V。給定、反饋、輸出電壓采樣輸入電壓范圍是 0-5V (經(jīng)過運放)。使用單片機AD為10位AD芯片那么10位AD芯片電壓采集得到的數(shù)據(jù)范圍就是 0-1024。PWM 為 8

24、 位可調(diào)占空比方波, 0 對應(yīng)輸出占空比為 0的方波, 255 對應(yīng)輸出占 空比 100%的方波,127對應(yīng)輸出 50%的方波。比如當(dāng)前給定是,反饋電壓是1V。(KP,KI,KD等系數(shù)略,關(guān)于PID算法的整數(shù)實 現(xiàn)我在前文中有論述如何實現(xiàn))。那么經(jīng)過AD采樣1 、給定對應(yīng)為 5122、反饋1V對應(yīng)為205假定經(jīng)過PID計算得到的UK為400也就意味著輸出電壓應(yīng)當(dāng)為(400*( UPWM峰值電壓)/1024那么UK對應(yīng)的PWM占空比是多少呢我們知道,UK=1024對應(yīng)占空比為100,也就是PWM的占空比系數(shù)為255。可 知, PWM 系數(shù) = UK/4;那么 400 就應(yīng)當(dāng)對應(yīng)系數(shù) 400/4=

25、100。也就是輸出電壓 =400*10/1024=同時,由于采樣精度以及 PWM 輸出占空比精度控制的問題,將導(dǎo)致輸出電壓和 期望值不是那么線性,所以,我在項目內(nèi)加入了輸出電壓采樣的控制。采樣AD輸入為0-5V,所以,對于輸出0-10V有一個縮小的比例。輸出10V則采樣值對應(yīng)為255輸出5V則采樣之對應(yīng)127 可知,對應(yīng) AD 結(jié)果為 97采樣輸出電壓值, 可以針對性的調(diào)整一下占空比輸出, 從而得到誤差允許范圍內(nèi) 的一個控制輸出電壓。同時,經(jīng)過一些加速控制的手段??梢员容^迅速的達到控制的目的。下文中的UK控制方法是針對增量式PID控制而來做的。/*/void PWMProcess(void)u

26、int16 idata temp;uint16 idata UKTemp;temp = 0;UKTemp = 0;if( != 0 )/ 判斷是否需要改變占空比/ 是否需要改變占空比和你的被控系統(tǒng)特性有關(guān)= 0;UKTemp = + ;/計算UK控制量/控制量和計算值以及一個開關(guān)量有關(guān),我這里的開關(guān)量是系統(tǒng)需要的時候疊 加在控制量上的一個變量。if(UKTemp>999)UKTemp = 999;else/這里只所以是 999封頂而不是 1024是因為我的系統(tǒng) PWM 的峰值電壓是 12V 導(dǎo)致。while(1) / 如果輸出電壓和期望電壓相差Delta ,則繼續(xù)調(diào)整占空比,直到在誤差以

27、內(nèi)ADChPro(UPWMADCH);/ 測量輸出電壓if( UPWMADCH = UKTemp)return;if( UPWMADCH > UKTemp) / 如果當(dāng)前電壓大于輸出電壓,減小占空比if( ( UPWMADCH - UKTemp ) > UDELTA )temp = UPWMADCH - UKTemp; /temp = temp / 2;/ 下降可以加速下降,所以下降參數(shù)加倍if( > temp )- temp;= 0;elsereturn;else/ 如果當(dāng)前電壓小于輸出電壓if( ( UKTemp - UPWMADCH ) > UDELTA )tem

28、p = UKTemp - UPWMADCH;temp = temp / 4; / 上升處理不要超調(diào),所以每次只 +一半 if( > temp )+= (temp/2);else= 255;elsereturn;DisPlayVoltage();PWMChangeDuty; / 改變占空比Delay(10,10);/*/附錄 2直流電機PWM調(diào)速系統(tǒng)中控制電壓非線性研究引言由于線性放大驅(qū)動方式效率和散熱問題嚴重,目前絕大多數(shù)直流電動機采用 開關(guān)驅(qū)動方式。開關(guān)驅(qū)動方式是半導(dǎo)體功率器件工作在開關(guān)狀態(tài),通過脈寬調(diào)制PWM控制電動機電樞電壓,實現(xiàn)調(diào)速。目前已有許多文獻介紹直流電機調(diào)速, 宋衛(wèi)國等用

29、89C51單片機實現(xiàn)了直流電機閉環(huán)調(diào)速;張立勛等用 AVR單片機實 現(xiàn)了直流電機PWM調(diào)速;郭崇軍等用C8051實現(xiàn)了無刷直流電機控制;張紅娟 等用PIC單片機實現(xiàn)了直流電機 PWM調(diào)速;王晨陽等用DSP實現(xiàn)了無刷直流電 機控制。上述文獻對實現(xiàn)調(diào)速的硬件電路和軟件流程的設(shè)計有較詳細的描述,但沒有說明具體的調(diào)壓調(diào)速方法,也沒有提及占空比與電機端電壓平均值之間的關(guān) 系。在李維軍等基于單片機用軟件實現(xiàn)直流電機 PWM調(diào)速系統(tǒng)中提到平均速度 與占空比并不是嚴格的線性關(guān)系,在一般的應(yīng)用中,可以將其近似地看作線性關(guān) 系。但沒有做深入的研究。本文通過實驗驗證,在不帶電機情況下,PWM波占空比與控制輸出端電壓

30、平均值之間呈線性關(guān)系;在帶電機情況下,占空比與電機端電壓平均值滿足拋物線方程,能取得精確的控制。本文的電機閉環(huán)調(diào)速是運用 MatIab擬合的關(guān)系式通過PID控制算法實現(xiàn)。1系統(tǒng)硬件設(shè)計本系統(tǒng)是基于TX-1C實驗板上的AT89C52單片機,調(diào)速系統(tǒng)的硬件原理圖如 圖1所示,主要由AT89C52單片機、555振蕩電路、L298驅(qū)動電路、光電隔離、 霍爾元件測速電路、MAX 232電平轉(zhuǎn)換電路等組成。圖1閉環(huán)控制系統(tǒng)示意圖2系統(tǒng)軟件設(shè)計系統(tǒng)采用模塊化設(shè)計,軟件由1個主程序,3個中斷子程序,即外部中斷0、 外部中斷1,定時器0子程序,PID算法子程序,測速子程序及發(fā)送數(shù)據(jù)到串口 顯示子程序組成,主程序

31、流程圖如圖2所示。外部中斷0通過比較直流電平與鋸 齒波信號產(chǎn)生PWM波,外部中斷1用于對傳感器的脈沖計數(shù)。定時器 0用于對 計數(shù)脈沖定時。測得的轉(zhuǎn)速通過串口發(fā)送到上位機顯示, 通過PID模塊調(diào)整轉(zhuǎn)速到設(shè)定值。本實驗采用M/T法測速,它是同時測量檢測時間和在此檢測時間內(nèi) 霍爾傳感器所產(chǎn)生的轉(zhuǎn)速脈沖信號的個數(shù)來確定轉(zhuǎn)速。由外部中斷1對霍爾傳感器脈沖計數(shù),同時起動定時器 0,當(dāng)計數(shù)個數(shù)到預(yù)定值2 000后,關(guān)定時器0, 可得到計2 000個脈沖的計數(shù)時間,由式計算出轉(zhuǎn)速:n=60f / K=60N (KT)式中:n為直流電機的轉(zhuǎn)速;K為霍爾傳感器轉(zhuǎn)盤上磁鋼數(shù);f為脈沖頻率;N 為脈沖個數(shù);T為采樣周

32、期。圖2主程序流程圖3實驗結(jié)果及原因分析3. 1端電壓平均值與轉(zhuǎn)速關(guān)系3. 1. 1實驗結(jié)果實驗用的是永磁穩(wěn)速直流電機,型號是EG-530YD-2BH額定轉(zhuǎn)速2 0004 000 r/min ,額定電壓12 V。電機在空載的情況下,測得的數(shù)據(jù)用MatIab做一次線性擬合,擬合的端電壓平均值與轉(zhuǎn)速關(guān)系曲線如圖3(a)所示。相關(guān)系數(shù)R-Square:0. 952 1。擬合曲線方程為:y=0. 001 852x+0. 296 3 (2)由式(2)可知,端電壓平均值與轉(zhuǎn)速可近似為線性關(guān)系,根椐此關(guān)系式,在已 測得的轉(zhuǎn)速的情況下可以計算出當(dāng)前電壓。為了比較分析,同樣用 Matlab做二 次線性擬合,擬合

33、的端電壓平均值與轉(zhuǎn)速關(guān)系曲線如圖3(b)所示。相關(guān)系數(shù)R-SqUare: 0. 986 7。<)- ft*mflw二族曲樸處摳卉M圖3端電壓平均值與轉(zhuǎn)速關(guān)系曲線圖3. 1. 2原因分析比較圖3(a)可知,當(dāng)轉(zhuǎn)速在 O1 500 r/ min和4 0005 000 r/min ,端電壓 平均值與轉(zhuǎn)速間存在的非線性,用二次曲擬合如圖3(b)所示,擬合相關(guān)系數(shù)較高。 由圖3(a)可見,當(dāng)電機轉(zhuǎn)速為0時電機兩端電壓平均值約為1. 3 V。這是因為電 機處于靜止?fàn)顟B(tài)時,摩擦力為靜摩擦力,靜摩擦力是非線性的。隨著外力的增加 而增加,最大值發(fā)生在運動前的瞬間。電磁轉(zhuǎn)矩為負載制動轉(zhuǎn)矩和空載制動轉(zhuǎn)矩 之和

34、,由于本系統(tǒng)不帶負載,因此電磁轉(zhuǎn)矩為空載制動轉(zhuǎn)矩??蛰d制動轉(zhuǎn)矩與轉(zhuǎn) 速之間此時是非線性的。電磁轉(zhuǎn)矩與電流成正比,電流又與電壓成正比,因此此 時電壓與轉(zhuǎn)速之間是非線性的。當(dāng)轉(zhuǎn)速在2 0004 000 /min線性關(guān)系較好,占空比的微小改變帶來的轉(zhuǎn)速 改變較大,因此具有較好的調(diào)速性能。這是因為隨著運動速度的增加,摩擦力成 線性的增加,此時的摩擦力為粘性摩擦力。粘性摩擦是線性的,與速度成正比, 空載制動轉(zhuǎn)矩與速度成正比,也即電磁轉(zhuǎn)矩與電流成正比,電流又與電壓成正比, 因此此時電壓與轉(zhuǎn)速之間是線性的。當(dāng)轉(zhuǎn)速大于 4 000 r/ min。由于超出了額定 轉(zhuǎn)速所以線性度較差且調(diào)速性能較差。 此時用二次曲

35、線擬合結(jié)果較好,因為當(dāng)電 機高速旋轉(zhuǎn)時,摩擦阻力小到可以忽略,此時主要受電機風(fēng)阻型負荷的影響,當(dāng)運動部件在氣體或液體中運動時,其受到的摩擦阻力或摩擦阻力矩被稱為風(fēng)機型 負荷。對同一物體,風(fēng)阻系數(shù)一般為固定值。阻力大小與速度的平方成正比。即 空載制動轉(zhuǎn)矩與速度的平方成正比, 也即電磁轉(zhuǎn)矩與速度的平方成正比, 電磁轉(zhuǎn) 矩與電流成正比,電流又與電壓成正比,因此此時電壓與轉(zhuǎn)速之間是非線性的。3. 2占空比與端電壓平均值關(guān)系3. 2. 1實驗結(jié)果擬合占空比與端電壓平均值關(guān)系曲線如圖4所示。相關(guān)系數(shù)R-Square 0. 9984。擬合曲線方程為:y = 0.000 645 3xso*1 +5.79(3)

36、圖4占空比與端電壓平均值關(guān)系曲線圖如圖4所示,占空比與端電壓平均值滿足拋物線方程。運用積分分離的 PID 算法改變電機端電壓平均值,可以運用此關(guān)系式改變占空比,從而實現(xiàn)了PWM調(diào)速。用示波器分別測出電壓的頂端值 UtOP與底端值Ubase,端電壓平均值Uarg 滿足關(guān)系式:% =Uhw+ Hl-UQ其中:為占空比。正是由于所測得的電機端電壓底端值 UbaSe不為0,所以得出的占空比與端電 壓平均值之間關(guān)系曲線為拋物線。若將電機取下,直接測 L298的out1與out2 輸出電壓。所測得的電機端電壓底端值 UbaSe約為0,所得的占空比與端電壓平 均值滿足線性關(guān)系,即令式 中UbaSe為0,式(4)變?yōu)椋?QUa>3. 2. 2原因分析將電機取下后,直接測L298的輸出端之間的電壓,占空比與端電壓平均值滿 足關(guān)系式(5),說明整個硬件電路的設(shè)計以及軟件編程的正確性。從電機反電勢 角度分析,當(dāng)直流電機旋轉(zhuǎn)時,電樞導(dǎo)體切割氣隙磁場,在電樞繞組中產(chǎn)生感應(yīng) 電動勢。由于感應(yīng)電動勢方向與電流的方向相反,感應(yīng)電動勢也即反電勢。直流電機的等效模型如圖5所示。圖5(a)表示電機工作在電動機狀態(tài)。圖5(b)表示電 機工作在發(fā)電機狀態(tài)。:I=II _IbT i k¾w -i IUJ業(yè)聊和W WflL圖5直流電機等效電路

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論