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頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、的質能方程吧,何等的簡單! 簡單的不是原始的,簡單的也不是落后的,簡單到了美的程度。先看看PlD算 法的一般形式:>比例環(huán)節(jié)傳感器Pn)的流程簡單到了不能再簡單的程度,通過誤差信號控制被控暈,而控制器 本身就是比例、積分、微分三個環(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- err()dt+-')理解一下這個公式,主要從下面兒個問題著手,為了便于理解,把控制環(huán)境具 體一下:1. 規(guī)定這個流程是用來為直流電機調速的

3、;2. 輸入量rin(t)為電機轉速預定值;3. 輸出量rout (t)為電機轉速實際值;4. 執(zhí)行器為直流電機;5. 傳感器為光電碼盤,假設碼盤為10線;6. 直流電機釆用PWM調速轉速用單位轉/min表示;不難看出以下結論:1. 輸入量rin (t)為電機轉速預定值(轉min);2. 輸出量rout (t)為電機轉速實際值(轉min);3. 偏差量為預定值和實際值之差(轉min);那么以下兒個問題需要弄清楚:1. 通過PID環(huán)節(jié)之后的U(t)是什么值呢2. 控制執(zhí)行器(直流電機)轉動轉速應該為電壓值(也就是PWM占空比)。3. 那么U(t)與PWM之間存在怎樣的聯(lián)系呢(見附錄1)這篇文章上

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

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

6、從而增加了系統(tǒng)的快速性。好了,關于PlD的基本說明就補充到這里,下面將對PlD連續(xù)系統(tǒng)離散化,從 而方便在處理器上實現(xiàn)。下面把連續(xù)狀態(tài)的公式再貼一下:U(X)= kp(rr(t)+ e(t)dtTDderr (t)' dt J假設采樣間隔為T,則在第KT時刻:偏差 err (K) =rin (K)-rout (K);積分環(huán)節(jié)用加和的形式表示,即err (K)+err (K+1)+;微分環(huán)節(jié)用斜率的形式表示,即err(K)-err (K-I) T;從而形成如下PlD離散表示形式:rrTu(k)=Kp(e廠廠伙)+討工 err(j)÷-(err(<)-err(<-l)

7、則U(K)可表示成為:u(k)=KJe廠廠(k)+Ki5 err(j)Kd(err(k-err(k-l) 至于說Kp、Ki、Kd三個參數(shù)的具體表達式,我想可以輕松的推岀了,這里節(jié)省 時間,不再詳細表示了。其實到這里為止,PID的基本離散表示形式已經(jīng)出來了。U前的這種表述形式 屬于位置型PID,另外一種表述方式為增量式PID,山U上述表達式可以輕易得 到:IU 伙-I)=KP(err(7c-l)+iC err( j)+Kd(err(k-l)-err(k-2)那么:Mfc) = p(error(i) E error(fc-l)÷ kierro(k') + d (error(k)

8、- Ierrk -I)+e rror(k _ 2)這就是離散化PID的增量式表示方式,由公式可以看出,增量式的表達結果和 最近三次的偏差有關,這樣就大大提高了系統(tǒng)的穩(wěn)定性。需要注意的是最終的 輸出結果應該為U (K)+增量調節(jié)值;PlD的離散化過程基本思路就是這樣,下面是將離散化的公式轉換成為C語言,從而實現(xiàn)微控制器的控制作用。PlD控制算法的C語言實現(xiàn)三 位置型PID的C語言實現(xiàn)上一節(jié)中已經(jīng)抽象出了位置性PID和增量型PID的數(shù)學表達式,這一節(jié),重點 講解C語言代碼的實現(xiàn)過程,算法的C語言實現(xiàn)過程具有一般性,通過PlD算 法的C語言實現(xiàn),可以以此類推,設計其它算法的C語言實現(xiàn)。笫一步:定義P

9、ID變量結構體,代碼如下:StrUCt _pid'右曲)+f(Hdf = 2Tfloat SetSpeed;j0例系數(shù)KP的作用是加快系統(tǒng)的響應速度,提高系統(tǒng)的調節(jié)精度。KP越大,系統(tǒng)的響應 速度越快,系統(tǒng)的調節(jié)精度越高,但是容易產(chǎn)生超調,其至會使系統(tǒng)不穩(wěn)定。 KP取值過小,則會降低調節(jié)精度,使響應速度緩慢,從而延長調節(jié)時間,是系 統(tǒng)靜態(tài)、動態(tài)特性變差;2. 積分作用系數(shù)Ki的作用是消除系統(tǒng)的穩(wěn)態(tài)誤差。Ki越大,系統(tǒng)的靜態(tài)誤差 消除的越快,但是Ki過大,在響應過程的初期會產(chǎn)生積分飽和的現(xiàn)象,從而引 起響應過程的較大超調。若Ki過小,將使系統(tǒng)靜態(tài)誤差難以消除,影響系統(tǒng)的 調節(jié)精度;3.

10、微分系數(shù)Kd的作用是改善系統(tǒng)的動態(tài)特性,其作用主要是在響應過程中抑 制偏差向任何方向的變化,對偏差變化進行提前預報。但是kd過大,會使響應 過程提前制動,從而延長調節(jié)時間,而且會降低系統(tǒng)的抗干擾性。反應系統(tǒng)性能的兩個參數(shù)是系統(tǒng)誤差e和誤差變化律ec,這點還是好理解 的:首先我們規(guī)定一個誤差的極限值,假設為Mmdx;規(guī)定一個誤差的比較大的 值,假設為Mmid;規(guī)定一個誤差的較小值,假設為Mmim當3bs (e) >Mx時,說明誤差的絕對值已經(jīng)很大了,不論誤差變化趨勢如 何,都應該考慮控制器的輸入應按最大(或最小)輸出,以達到迅速調整誤差 的效果,使誤差絕對值以最大的速度減小。此時,相當于實

11、施開環(huán)控制。當e*ec>O時,說明誤差在朝向誤差絕對值增大的方向變化,此時,如果 abs(e)>Mmid,說明誤差也較大,可考慮山控制器實施較強的控制作用,以達到 扭轉誤差絕對值向減小的方向變化,并迅速減小誤差的絕對值。此時如果 abs(e)<Mmid,說明盡管誤差是向絕對值增大的方向變化,但是誤差絕對值本身 并不是很大,可以考慮控制器實施一般的控制作用,只需要扭轉誤差的變化趨 勢,使其向誤差絕對值減小的方向變化即可。當e*err<O且e*err(k-l)>O或者e=0時,說明誤差的絕對值向減小的方向變 化,或者已經(jīng)達到平衡狀態(tài),此時保持控制器輸出不變即可。當e*

12、err<0 e*err (k-l) <0時,說明誤差處于極限狀態(tài)。如果此時誤差的絕 對值較大,大于Mmin,可以考慮實施較強控制作用。如果此時誤差絕對值較 小,可以考慮實施較弱控制作用。當abs(e)<Mmin時,說明誤差絕對值很小,此時加入積分,減小靜態(tài)誤差。上面的邏輯判斷過程,實際上就是對于控制系統(tǒng)的一個專家判斷過程。(未完 待續(xù))PlD控制算法的C語言實現(xiàn)十模糊算法簡介在PlD控制算法的C語言實現(xiàn)九中,文章已經(jīng)對模糊PlD的實質做了一個簡要 說明。本來打算等到完成畢業(yè)設計,工作穩(wěn)定了再著力完成剩下的部分。鑒于 網(wǎng)友的要求和信任,抽出時間來,對模糊PID做一個較為詳細的論

13、述,這里我 不打算做岀仿真程序了,但就基本概念和思路進行一下說明,相信有C語言基 礎的朋友可以通過這些介紹性的文字自行實現(xiàn)。這篇文章主要說明一下模糊算 法的含義和原理。實際上模糊算法屬于智能算法,智能算法也可以叫非模型算法,也就是說,當 我們對于系統(tǒng)的模型認識不是很深刻,或者說客觀的原因導致我們無法對系統(tǒng) 的控制模型進行深入研究的時候,智能算法常常能夠起到不小的作用。這點是 方便理解的,如果一個系統(tǒng)的模型可以輕易的獲得,那么就可以根據(jù)系統(tǒng)的模 型進行模型分析,設計出適合系統(tǒng)模型的控制器。但是現(xiàn)實世界中,可以說所 有的系統(tǒng)都是非線性的,是不可預測的。但這并不是說我們就無從建立控制 器,因為,大部

14、分的系統(tǒng)在一定的條件和范圉內是可以抽象成為線性系統(tǒng)的。 問題的關鍵是,當我們系統(tǒng)設計的范圉超岀了線性的范圉,我們乂該如何處 理。顯然,智能算法是一條很不錯的途徑。智能算法包含了專家系統(tǒng)、模糊算 法、遺傳算法、神經(jīng)網(wǎng)絡算法等。其實這其中的任何一種算法都可以跟FID去 做結合,而選擇的關鍵在于,處理的實時性能不能得到滿足。肖我們處理器的 速度足夠快速時,我們可以選擇更為復雜的、精度更加高的算法。但是,控制 器的處理速度限制了我們算法的選擇。當然,成本是限制處理器速度最根本的 原因。這個道理很簡單,51單片機和DSP的成本肯定大不相同。專家PlD和模 糊PID是常用的兩種PID選擇方式。其實,模糊P

15、ID適應一般的控制系統(tǒng)是沒 有問題。文章接下來將說明模糊算法的一些基本常識。模糊算法其實并不模糊。模糊算法其實也是逐次求精的過程。這里舉個例子說 明。我們設計一個倒立擺系統(tǒng),假如擺針偏差5。,我們說它的偏差比較“小”:擺針偏差在5。和10°之間,我們說它的偏差處于“中”的狀態(tài);當 擺針偏差10°的時候,我們說它的偏差有點兒“大” TO對于“小”、“中”、“大”這樣的詞匯來講,他們是精確的表述,可問題是如果擺針偏差 是3。呢,那么這是一種什么樣的狀態(tài)呢。我們可以用“很小”來表述它。如 果是7。呢,可以說它是“中”偏“小”。那么如果到了 80°呢,它的偏差可 以說“非

16、常大” o而我們調節(jié)的過程實際上就是讓系統(tǒng)的偏差山非?!按蟆敝?漸向非?!靶 边^度的過程。當然,我們系統(tǒng)這個調節(jié)過程是快速穩(wěn)定的。通 過上面的說明,可以認識到,其實對于每一種狀態(tài)都可以劃分到大、中、小三 個狀態(tài)當中去,只不過他們隸屬的程度不太一樣,比如6。隸屬于小的程度可 能是,隸屬于中的程度是,隸屬于大的程度是0。這里實際上是有一個問題 的,就是這個隸屬的程度怎么確定這就要求我們去設計一個隸屬函數(shù)。詳細內 容可以查閱相關的資料,這里沒有辦法那么詳細的說明了。(見附錄3)這里 面有些說明。那么,知道了隸屬度的問題,就可以根據(jù)Ll前隸屬的程度來控制 電機以多大的速度和方向轉動了,半然,最終的控制

17、量肯定要落實在控制電圧 上。這點可以很容易的想想,我們控制的IJ的就是讓倒立擺從隸屬“大”的程 度為1的狀態(tài),調節(jié)到隸屬“小”的程度為1的狀態(tài)。當隸屬大多一些的時 候,我們就加快調節(jié)的速度,當隸屬小多一些的時候,我們就減慢調節(jié)的速 度,進行微調。可問題是,大、中、小的狀態(tài)是漢字,怎么用數(shù)字表示,進而 用程序代碼表示呢其實我們可以給大、中、小三個狀態(tài)設定三個數(shù)字來表示, 比如大表示用3表示,中用2表示,小用1表示。那么我們完全可以用 l*÷2*+3*=來表示它,當然這個公式也不一定是這樣的,這個公式的設計是系統(tǒng) 模糊化和精確化的一個過程,讀者也可參見相關文獻理解。但就這個數(shù)字而 言,可

18、以說明,目前6。的角度偏差處于小和中之間,但是更偏向于中。我們 就可以根據(jù)這個數(shù)字來調節(jié)電機的轉動速度和時間了。當然,這個數(shù)字與電機 轉速的對應關系,也需要根據(jù)實際情況進行設計和調節(jié)。前面一個例子已經(jīng)基本上說明了模糊算法的基本原理了。可是實際上,一個系 統(tǒng)的限制因素常常不是一個。上面的例子中,只有偏差角度成為了系統(tǒng)調節(jié)的 參考因素。而實際系統(tǒng)中,比如PlD系統(tǒng),我們需要調節(jié)的是比例、積分、微 分三個環(huán)節(jié),那么這三個環(huán)節(jié)的作用就需要我們認清,也就是說,我們需要根 據(jù)超調量、調節(jié)時間、震蕩情況等信息來考慮對這三個環(huán)節(jié)調節(jié)的比重,輸入 量和輸出量都不是單一的,可是其中必然有某種內在的邏輯聯(lián)系。所以這

19、種邏 輯聯(lián)系就成為我們設計工作的重點了。下一篇文章將詳細分析PlD三個變量和 系統(tǒng)性能參數(shù)之間的聯(lián)系。PlD控制算法的C語言實現(xiàn)計(PID系列完結篇)模糊PlD的參數(shù)整定這兒天一直在考慮如何能夠把這一節(jié)的內容說清楚,對于PlD而言應用并沒有 多大難度,按照基本的算法設訃思路和成熟的參數(shù)整定方法,就算是沒有經(jīng)過 特殊訓練和培訓的人,也能夠在較短的時間內容學會使用PID算法。可問題 是,如何能夠透徹的理解FID算法,從而能夠根據(jù)實際的情況設計岀優(yōu)秀的算 法呢。通過講述公式和基本原理肯定是最能說明問題的,可是這樣的話怕是犯了 “專 家”的錯誤了。對于門檻比較低的技術人員來講,依然不能透徹理解。可是說

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

21、說說PID的規(guī)則該怎么制 定。我們知道,模糊算法的本質是對PID的三個參數(shù)進行智能調節(jié)。那么首先要提 出的問題是如何對PlD的參數(shù)進行調節(jié)這個問題其實是參數(shù)整定的問題,現(xiàn)實 當中有很多整定方法??墒俏覀冃枰獜母旧狭私鉃槭裁催@么整定,才能知道 該如何建立數(shù)學模型進行分析。那么要回答如何整定參數(shù)的問題,就需要先明 白PlD參數(shù)的作用都是什么對系統(tǒng)有什么影響我們從作用和副作用兩個方面說明參數(shù)對系統(tǒng)的影響。1. 比例環(huán)節(jié)Kp,作用是加快系統(tǒng)的響應速度,提高系統(tǒng)的調節(jié)精度,副作用 是會導致超調;2. 積分環(huán)節(jié)Ki,作用是消除穩(wěn)態(tài)誤差,副作用是導致積分飽和現(xiàn)象;3. 微分環(huán)節(jié)Kd,作用是改善系統(tǒng)的動態(tài)性

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

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

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

25、0*10/1024二同時,Ill于采樣精度以及PWM輸出占空比精度控制的問題,將導致輸出電壓和 期望值不是那么線性,所以,我在項內加入了輸出電壓采樣的控制。采樣AD輸入為0-5V,所以,對于輸出0-1OV有一個縮小的比例。輸出IoV則采樣值對應為255輸出5V則采樣之對應127可知,對應AD結果為97采樣輸出電壓值,可以針對性的調整一下占空比輸出,從而得到誤差允許范圍 內的一個控制輸出電壓。同時,經(jīng)過一些加速控制的手段??梢员容^迅速的達到控制的LI的。下文中的UK控制方法是針對增量式PlD控制而來做的。VOid PwMProCeSS(VOid)UintI6 idata temp;UintI6

26、idata UKTemp;temp = O;UKTemP = O;辻(!= O )判斷是否需要改變占空比是否需要改變占空比和你的被控系統(tǒng)特性有關=0;UKTemP = + ;計算UK控制量控制量和訃算值以及一個開關量有關,我這里的開關量是系統(tǒng)需要的時候疊 加在控制量上的一個變量。if(UKTemp>999)UKTenlP = 999;/這里只所以是999封頂而不是1024是因為我的系統(tǒng)PWM的峰值電壓是12V導 致。WhiIe(I)如果輸出電壓和期望電壓相差Delta,則繼續(xù)調整占空比,直到在誤差以內ADChPro (UPwMADeH) ;/測量輸出電壓if( UPWMADCH = UK

27、TenlP)return;if( UPWMADCH > UKTemP)/如果當前電壓大于輸出電壓,減小占空比辻(UPWMADCH - UKTenlP ) > UDELTA )temp = UPWMADCH - UKTemP;/temp = temp / 2;/下降可以加速下降,所以下降參數(shù)加倍if (> temp )=-temp;else=O;elsereturn;else/如果'T前電壓小于輸岀電壓if( ( UKTemP - UPWMADCH ) > UDELTA )temp = UKTemP - UPWMADCH;temp = temp / 4;/上升處理

28、不要超調,所以每次只+半if (> temp )+= (temp2);else=255;elsereturn;DiSPIayVOItage();PwMChangeDUty;/改變占空比DeIay(10, 10);/f 1 j j j I j j 4 1 j j j I j j 4 1 j j j j j 4 1 j j j j j 4 1 j j j j j 4 1 j j j j j 4 1 j j j j 附錄2直流電機PwM調速系統(tǒng)中控制電壓非線性研究引言山于線性放大驅動方式效率和散熱問題嚴重,U詢絕大多數(shù)直流電動機采用開 關驅動方式。開關驅動方式是半導體功率器件工作在開關狀態(tài),通

29、過脈寬調制 P冊控制電動機電樞電壓,實現(xiàn)調速。Ll前已有許多文獻介紹直流電機調速, 宋衛(wèi)國等用89C51單片機實現(xiàn)了直流電機閉環(huán)調速;張立勛等用AVR單片機實 現(xiàn)了直流電機PwM調速;郭崇軍等用C8051實現(xiàn)了無刷直流電機控制;張紅娟 等用PlC單片機實現(xiàn)了直流電機PW調速;王晨陽等用DSP實現(xiàn)了無刷直流電 機控制。上述文獻對實現(xiàn)調速的硬件電路和軟件流程的設計有較詳細的描述, 但沒有說明具體的調壓調速方法,也沒有提及占空比與電機端電壓平均值之間 的關系。在李維軍等基于單片機用軟件實現(xiàn)直流電機PWM調速系統(tǒng)中提到平均 速度與占空比并不是嚴格的線性關系,在一般的應用中,可以將其近似地看作 線性關系

30、。但沒有做深入的研究。本文通過實驗驗證,在不帶電機情況下,PW 波占空比與控制輸出端電壓平均值之間呈線性關系;在帶電機情況下,占空比 與電機端電壓平均值滿足拋物線方程,能取得精確的控制。本文的電機閉環(huán)調 速是運用MatIab擬合的關系式通過PlD控制算法實現(xiàn)。1系統(tǒng)硬件設計本系統(tǒng)是基于TX-IC實驗板上的AT89C52單片機,調速系統(tǒng)的硬件原理圖如圖 1所示,主要III AT89C52單片機、555振蕩電路、L298驅動電路、光電隔離、 霍爾元件測速電路、MAX 232電平轉換電路等組成。圖1閉環(huán)控制系統(tǒng)示意圖2系統(tǒng)軟件設計系統(tǒng)采用模塊化設計,軟件曲1個主程序,3個中斷子程序,即外部中斷0、

31、外部中斷1,定時器0子程序,PID算法子程序,測速子程序及發(fā)送數(shù)據(jù)到串口 顯示子程序組成,主程序流程圖如圖2所示。外部中斷0通過比較直流電平與 鋸齒波信號產(chǎn)生PwM波,外部中斷1用于對傳感器的脈沖計數(shù)。定時器0用于 對計數(shù)脈沖定時。測得的轉速通過串口發(fā)送到上位機顯示,通過PID模塊調整 轉速到設定值。本實驗采用M/T法測速,它是同時測量檢測時間和在此檢測時 間內霍爾傳感器所產(chǎn)生的轉速脈沖信號的個數(shù)來確定轉速。山外部中斷1對霍 爾傳感器脈沖訃數(shù),同時起動定時器0,當計數(shù)個數(shù)到預定值2 000后,關定 時器0,可得到計2 000個脈沖的計數(shù)時間,由式計算出轉速:n=60f / K=60N / (K

32、T) (1)式中:n為直流電機的轉速;K為霍爾傳感器轉盤上磁鋼數(shù);f為脈沖頻率;N 為脈沖個數(shù);T為采樣周期。圖2主程序流程圖3實驗結果及原因分析3. 1端電壓平均值與轉速關系3 L 1實驗結果實驗用的是永磁穩(wěn)速直流電機,型號是EG-530YD-2BH,額定轉速2 OOO4 000 r / min,額定電壓12 V。電機在空載的i況下,測得的數(shù)據(jù)用MatIab做 一次線性擬合,擬合的端電壓平均值與轉速關系曲線如圖3(d)所示。相關系數(shù) R-SqUare: 0. 952 1。擬合曲線方程為:y二0 OOl 852x+0 296 3 (2)由式(2)可知,端電壓平均值與轉速可近似為線性關系,根據(jù)此

33、關系式,在已 測得的轉速的情況下可以計算出當前電壓。為了比較分析,同樣用MatIab做二 次線性擬合,擬合的端電壓平均值與轉速關系曲線如圖3(b)所示。相關系數(shù)R- square: 0 986 IQ(«> "次Jft線性擬含圖(忖二次曲tl圖3端電壓平均值與轉速關系曲線圖3. 1. 2原因分析比較圖3(d)可知,當轉速在O1 500 r/min和4 Ooo5 000 r / mim 端電 壓平均值與轉速間存在的非線性,用二次曲擬合如圖3(b)所示,擬合相關系數(shù) 較高。山圖3(d)可見,當電機轉速為0時電機兩端電壓平均值約為13 VO這 是因為電機處于靜止狀態(tài)時,摩擦力

34、為靜摩擦力,靜摩擦力是非線性的。隨著 外力的增加而增加,最大值發(fā)生在運動前的瞬間。電磁轉矩為負載制動轉矩和 空載制動轉矩之和,山于本系統(tǒng)不帶負載,因此電磁轉矩為空載制動轉矩???載制動轉矩與轉速之間此時是非線性的。電磁轉矩與電流成正比,電流乂與電 壓成正比,因此此時電壓與轉速之間是非線性的。當轉速在2 Ooo4 000 r/min線性關系較好,占空比的微小改變帶來的轉速 改變較大,因此具有較好的調速性能。這是因為隨著運動速度的增加,摩擦力 成線性的增加,此時的摩擦力為粘性摩擦力。粘性摩擦是線性的,與速度成正 比,空載制動轉矩與速度成正比,也即電磁轉矩與電流成正比,電流乂與電壓 成正比,因此此時

35、電壓與轉速之間是線性的。當轉速大于4 000 r/mino由于 超出了額定轉速所以線性度較差且調速性能較差。此時用二次曲線擬合結果較 好,因為當電機高速旋轉時,摩擦阻力小到可以忽略,此時主要受電機風阻型 負荷的影響,當運動部件在氣體或液體中運動時,其受到的摩擦阻力或摩擦阻 力矩被稱為風機型負荷。對同一物體,風阻系數(shù)一般為固定值。阻力大小與速 度的平方成正比。即空載制動轉矩與速度的平方成正比,也即電磁轉矩與速度 的平方成正比,電磁轉矩與電流成正比,電流乂與電壓成正比,因此此時電壓 與轉速之間是非線性的。3. 2占空比與端電壓平均值關系3. 2. 1實驗結果擬合占空比與端電壓平均值關系曲線如圖4所

36、示。相關系數(shù)R-SqUare:0. 998 4o擬合曲線方程為:j/ = 0. 000 645 3081 +5.79(3)圖4占空比與端電壓平均值關系曲線圖如圖4所示,占空比與端電壓平均值滿足拋物線方程。運用積分分離的PlD算 法改變電機端電壓平均值,可以運用此關系式改變占空比,從而實現(xiàn)了 PWM調 速。用示波器分別測岀電壓的頂端值UtOP與底端值Ubase,端電壓平均值Uarg滿 足關系式:S = Ubelr + (g UQ其中:為占空比。正是山于所測得的電機端電丿玉底端值UbaSe不為0,所以得出的占空比與端電 壓平均值之間關系曲線為拋物線。若將電機取下,直接測L298的OUtI與out2 輸岀電壓。所測得的電機端電壓底端值Ubase約為0,所得的占空比與端電壓 平均值滿足線性關系,即令式(4)中UbaSe為0,式(4)變?yōu)椋?S)3. 2. 2原因分析將電機取下后,直接測L298的輸出端之間的電壓,占空比與端電壓平均值滿 足關系式(5),說明整個硬件電路的設計以及軟件編程的正確性。從電機反電勢 角度分析,當直流電機旋轉時,電樞導體切割氣隙磁場,在電樞繞組中產(chǎn)生感 應電動勢。山于感應電動勢方向與電流的方向相反,感應電動勢也即反電勢。 直流電機的等效模型如圖5所示。圖5)表示電機工作在電動機狀態(tài)。圖5(b) 表示電機丄作在發(fā)電機狀態(tài)。(b)發(fā)電機圖5直流電機等效

溫馨提示

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

評論

0/150

提交評論