當前位置:首頁 » 操作系統 » pwm控制演算法

pwm控制演算法

發布時間: 2022-06-14 17:58:20

⑴ PWM裡面單邊沿和雙邊沿有什麼區別他們用單片機實現步驟是什麼

PWM裡面單邊沿和雙邊沿的提法,只是LPC176X處理器中的兩個PWM控制模式。單邊沿模式的起始狀態總是高電平。單邊沿模式只需要設置兩個寄存器,一個決定PWM周期,另一個決定周期中間由高電平翻轉到低電平的時間。在一個PWM周期中間只有一個下降沿,所以稱為單邊沿模式。雙邊沿模式則需要設置3個寄存器,一個決定PWM周期,另兩個寄存器決定在周期中間電平狀態翻轉的兩個時間點。這樣在一個PWM周期中間就會出現兩個邊沿,所以稱為雙邊沿模式。在實現控制演算法的時候,雙邊沿模式有一定的靈活性。
一般用單片機實現PWM並不一定需要考慮這兩種模式。

⑵ PWM脈寬調制器原理是什麼

脈寬調制(PWM)基本原理:控制方式就是對逆變電路開關器件的通斷進行控制,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來代替正弦波或所需要的波形。也就是在輸出波形的半個周期中產生多個脈沖,使各脈沖的等值電壓為正弦波形,所獲得的輸出平滑且低次諧波少。按一定的規則對各脈沖的寬度進行調制,即可改變逆變電路輸出電壓的大小,也可改變輸出頻率。

各脈沖寬度是按正弦規律變化的。根據沖量相等效果相同的原理,PWM波形和正弦半波是等效的。對於正弦的負半周,也可以用同樣的方法得到PWM波形。

在PWM波形中,各脈沖的幅值是相等的,要改變等效輸出正弦波的幅值時,只要按同一比例系數改變各脈沖的寬度即可,因此在交-直-交變頻器中,PWM逆變電路輸出的脈沖電壓就是直流側電壓的幅值。

根據上述原理,在給出了正弦波頻率,幅值和半個周期內的脈沖數後,PWM波形各脈沖的寬度和間隔就可以准確計算出來。按照計算結果控制電路中各開關器件的通斷,就可以得到所需要的PWM波形。

⑶ PWM波如何產生並控制

控制方法
采樣控制理論中有一個重要結論:沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同.PWM控制技術就是以該結論為理論基礎,對半導體開關器件的導通和關斷進行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來代替正弦波或其他所需要的波形.按一定的規則對各脈沖的寬度進行調制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率. PWM控制的基本原理很早就已經提出,但是受電力電子器件發展水平的制約,在上世紀80年代以前一直未能實現.直到進入上世紀80年代,隨著全控型電力電子器件的出現和迅速發展,PWM控制技術才真正得到應用.隨著電力電子技術,微電子技術和自動控制技術的發展以及各種新的理論方法,如現代控制理論,非線性系統控制思想的應用,PWM控制技術獲得了空前的發展.到目前為止,已出現了多種PWM控制技術,根據PWM控制技術的特點,到目前為止主要有以下8類方法.
等脈寬PWM法
VVVF(Variable Voltage Variable Frequency)裝置在早期是採用PAM(Pulse Amplitude Molation)控制技術來實現的,其逆變器部分只能輸出頻率可調的方波電壓而不能調壓.等脈寬PWM法正是為了克服PAM法的這個缺點發展而來的,是PWM法中最為簡單的一種.它是把每一脈沖的寬度均相等的脈沖列作為PWM波,通過改變脈沖列的周期可以調頻,改變脈沖的寬度或占空比可以調壓,採用適當控制方法即可使電壓與頻率協調變化.相對於PAM法,該方法的優點是簡化了電路結構,提高了輸入端的功率因數,但同時也存在輸出電壓中除基波外,還包含較大的諧波分量.
隨機PWM
在上世紀70年代開始至上世紀80年代初,由於當時大功率晶體管主要為雙極性達林頓三極體,載波頻率一般不超過5kHz,電機繞組的電磁噪音及諧波造成的振動引起了人們的關注.為求得改善,隨機PWM方法應運而生.其原理是隨機改變開關頻率使電機電磁噪音近似為限帶白雜訊(在線性頻率坐標系中,各頻率能量分布是均勻的),盡管噪音的總分貝數未變,但以固定開關頻率為特徵的有色噪音強度大大削弱.正因為如此,即使在IGBT已被廣泛應用的今天,對於載波頻率必須限制在較低頻率的場合,隨機PWM仍然有其特殊的價值;另一方面則說明了消除機械和電磁噪音的最佳方法不是盲目地提高工作頻率,隨機PWM技術正是提供了一個分析,解決這種問題的全新思路.
SPWM法
SPWM(Sinusoidal PWM)法是一種比較成熟的,目前使用較廣泛的PWM法.前面提到的采樣控制理論中的一個重要結論:沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同.SPWM法就是以該結論為理論基礎,用脈沖寬度按正弦規律變化而和正弦波等效的PWM波形即SPWM波形控制逆變電路中開關器件的通斷,使其輸出的脈沖電壓的面積與所希望輸出的正弦波在相應區間內的面積相等,通過改變調制波的頻率和幅值則可調節逆變電路輸出電壓的頻率和幅值.該方法的實現有以下幾種方案.
等面積法
該方案實際上就是SPWM法原理的直接闡釋,用同樣數量的等幅而不等寬的矩形脈沖序列代替正弦波,然後計算各脈沖的寬度和間隔,並把這些數據存於微機中,通過查表的方式生成PWM信號控制開關器件的通斷,以達到預期的目的.由於此方法是以SPWM控制的基本原理為出發點,可以准確地計算出各開關器件的通斷時刻,其所得的的波形很接近正弦波,但其存在計算繁瑣,數據佔用內存大,不能實時控制的缺點.
硬體調製法
硬體調製法是為解決等面積法計算繁瑣的缺點而提出的,其原理就是把所希望的波形作為調制信號,把接受調制的信號作為載波,通過對載波的調製得到所期望的PWM波形.通常採用等腰三角波作為載波,當調制信號波為正弦波時,所得到的就是SPWM波形.其實現方法簡單,可以用模擬電路構成三角波載波和正弦調制波發生電路,用比較器來確定它們的交點,在交點時刻對開關器件的通斷進行控制,就可以生成SPWM波.但是,這種模擬電路結構復雜,難以實現精確的控制.
軟體生成法
由於微機技術的發展使得用軟體生成SPWM波形變得比較容易,因此,軟體生成法也就應運而生.軟體生成法其實就是用軟體來實現調制的方法,其有兩種基本演算法,即自然采樣法和規則采樣法.
自然采樣法
以正弦波為調制波,等腰三角波為載波進行比較,在兩個波形的自然交點時刻控制開關器件的通斷,這就是自然采樣法.其優點是所得SPWM波形最接近正弦波,但由於三角波與正弦波交點有任意性,脈沖中心在一個周期內不等距,從而脈寬表達式是一個超越方程,計算繁瑣,難以實時控制.
規則采樣法
規則采樣法是一種應用較廣的工程實用方法,一般採用三角波作為載波.其原理就是用三角波對正弦波進行采樣得到階梯波,再以階梯波與三角波的交點時刻控制開關器件的通斷,從而實現SPWM法.當三角波只在其頂點(或底點)位置對正弦波進行采樣時,由階梯波與三角波的交點所確定的脈寬,在一個載波周期(即采樣周期)內的位置是對稱的,這種方法稱為對稱規則采樣.當三角波既在其頂點又在底點時刻對正弦波進行采樣時,由階梯波與三角波的交點所確定的脈寬,在一個載波周期(此時為采樣周期的兩倍)內的位置一般並不對稱,這種方法稱為非對稱規則采樣. 規則采樣法是對自然采樣法的改進,其主要優點就是是計算簡單,便於在線實時運算,其中非對稱規則采樣法因階數多而更接近正弦.其缺點是直流電壓利用率較低,線性控制范圍較小. 以上兩種方法均只適用於同步調制方式中.
低次諧波消去法
低次諧波消去法是以消去PWM波形中某些主要的低次諧波為目的的方法.其原理是對輸出電壓波形按傅氏級數展開,表示為u(ωt)=ansinnωt,首先確定基波分量a1的值,再令兩個不同的an=0,就可以建立三個方程,聯立求解得a1,a2及a3,這樣就可以消去兩個頻率的諧波. 該方法雖然可以很好地消除所指定的低次諧波,但是,剩餘未消去的較低次諧波的幅值可能會相當大,而且同樣存在計算復雜的缺點.該方法同樣只適用於同步調制方式中.
梯形波與三角波比較法
前面所介紹的各種方法主要是以輸出波形盡量接近正弦波為目的,從而忽視了直流電壓的利用率,如SPWM法,其直流電壓利用率僅為86.6%.因此,為了提高直流電壓利用率,提出了一種新的方法--梯形波與三角波比較法.該方法是採用梯形波作為調制信號,三角波為載波,且使兩波幅值相等,以兩波的交點時刻控制開關器件的通斷實現PWM控制. 由於當梯形波幅值和三角波幅值相等時,其所含的基波分量幅值已超過了三角波幅值,從而可以有效地提高直流電壓利用率.但由於梯形波本身含有低次諧波,所以輸出波形中含有5次,7次等低次諧波.
線電壓控制PWM
前面所介紹的各種PWM控制方法用於三相逆變電路時,都是對三相輸出相電壓分別進行控制的,使其輸出接近正弦波,但是,對於像三相非同步電動機這樣的三相無中線對稱負載,逆變器輸出不必追求相電壓接近正弦,而可著眼於使線電壓趨於正弦.因此,提出了線電壓控制PWM,主要有以下兩種方法.
馬鞍形波與三角波比較法
馬鞍形波與三角波比較法也就是諧波注入PWM方式(HIPWM),其原理是在正弦波中加入一定比例的三次諧波,調制信號便呈現出馬鞍形,而且幅值明顯降低,於是在調制信號的幅值不超過載波幅值的情況下,可以使基波幅值超過三角波幅值,提高了直流電壓利用率.在三相無中線系統中,由於三次諧波電流無通路,所以三個線電壓和線電流中均不含三次諧波[4]. 除了可以注入三次諧波以外,還可以注入其他3倍頻於正弦波信號的其他波形,這些信號都不會影響線 電壓.這是因為,經過PWM調制後逆變電路輸出的相電壓也必然包含相應的3倍頻於正弦波信號的諧波,但在合成線電壓時,各相電壓中的這些諧波將互相抵消,從而使線電壓仍為正弦波.
單元脈寬調製法
因為,三相對稱線電壓有Uuv+Uvw+Uwu=0的關系,所以,某一線電壓任何時刻都等於另外兩個線電壓負值之和.現在把一個周期等分為6個區間,每區間60°,對於某一線電壓例如Uuv,半個周期兩邊60°區間用Uuv本身表示,中間60°區間用-(Uvw+Uwu)表示,當將Uvw和Uwu作同樣處理時,就可以得到三相線電壓波形只有半周內兩邊60°區間的兩種波形形狀,並且有正有負.把這樣的電壓波形作為脈寬調制的參考信號,載波仍用三角波,並把各區間的曲線用直線近似(實踐表明,這樣做引起的誤差不大,完全可行),就可以得到線電壓的脈沖波形,該波形是完全對稱,且規律性很強,負半周是正半周相應脈沖列的反相,因此,只要半個周期兩邊60°區間的脈沖列一經確定,線電壓的調制脈沖波形就唯一地確定了.這個脈沖並不是開關器件的驅動脈沖信號,但由於已知三相線電壓的脈沖工作模式,就可以確定開關器件的驅動脈沖信號了. 該方法不僅能抑制較多的低次諧波,還可減小開關損耗和加寬線性控制區,同時還能帶來用微機控制的方便,但該方法只適用於非同步電動機,應用范圍較小.
電流控制PWM
電流控制PWM的基本思想是把希望輸出的電流波形作為指令信號,把實際的電流波形作為反饋信號,通過兩者瞬時值的比較來決定各開關器件的通斷,使實際輸出隨指令信號的改變而改變.其實現方案主要有以下3種.
滯環比較法
這是一種帶反饋的PWM控制方式,即每相電流反饋回來與電流給定值經滯環比較器,得出相應橋臂開關器件的開關狀態,使得實際電流跟蹤給定電流的變化.該方法的優點是電路簡單,動態性能好,輸出電壓不含特定頻率的諧波分量.其缺點是開關頻率不固定造成較為嚴重的噪音,和其他方法相比,在同一開關頻率下輸出電流中所含的諧波較多.
三角波比較法
該方法與SPWM法中的三角波比較方式不同,這里是把指令電流與實際輸出電流進行比較,求出偏差電流,通過放大器放大後再和三角波進行比較,產生PWM波.此時開關頻率一定,因而克服了滯環比較法頻率不固定的缺點.但是,這種方式電流響應不如滯環比較法快.
預測電流控製法
預測電流控制是在每個調節周期開始時,根據實際電流誤差,負載參數及其它負載變數,來預測電流誤差矢量趨勢,因此,下一個調節周期由PWM產生的電壓矢量必將減小所預測的誤差.該方法的優點是,若給調節器除誤差外更多的信息,則可獲得比較快速,准確的響應.目前,這類調節器的局限性是響應速度及過程模型系數參數的准確性.
空間電壓矢量控制PWM
空間電壓矢量控制PWM(SVPWM)也叫磁通正弦PWM法.它以三相波形整體生成效果為前提,以逼近電機氣隙的理想圓形旋轉磁場軌跡為目的,用逆變器不同的開關模式所產生的實際磁通去逼近基準圓磁通,由它們的比較結果決定逆變器的開關,形成PWM波形.此法從電動機的角度出發,把逆變器和電機看作一個整體,以內切多邊形逼近圓的方式進行控制,使電機獲得幅值恆定的圓形磁場(正弦磁通). 具體方法又分為磁通開環式和磁通閉環式.磁通開環法用兩個非零矢量和一個零矢量合成一個等效的電壓矢量,若采樣時間足夠小,可合成任意電壓矢量.此法輸出電壓比正弦波調制時提高15%,諧波電流有效值之和接近最小.磁通閉環式引 入磁通反饋,控制磁通的大小和變化的速度.在比較估算磁通和給定磁通後,根據誤差決定產生下一個電壓矢量,形成PWM波形.這種方法克服了磁通開環法的不足,解決了電機低速時,定子電阻影響大的問題,減小了電機的脈動和噪音.但由於未引入轉矩的調節,系統性能沒有得到根本性的改善.
矢量控制PWM
矢量控制也稱磁場定向控制,其原理是將非同步電動機在三相坐標系下的定子電流Ia,Ib及Ic,通過三相/二相變換,等效成兩相靜止坐標系下的交流電流Ia1及Ib1,再通過按轉子磁場定向旋轉變換,等效成同步旋轉坐標系下的直流電流Im1及It1(Im1相當於直流電動機的勵磁電流;It1相當於與轉矩成正比的電樞電流),然後模仿對直流電動機的控制方法,實現對交流電動機的控制.其實質是將交流電動機等效為直流電動機,分別對速度,磁場兩個分量進行獨立控制.通過控制轉子磁鏈,然後分解定子電流而獲得轉矩和磁場兩個分量,經坐標變換,實現正交或解耦控制. 但是,由於轉子磁鏈難以准確觀測,以及矢量變換的復雜性,使得實際控制效果往往難以達到理論分析的效果,這是矢量控制技術在實踐上的不足.此外.它必須直接或間接地得到轉子磁鏈在空間上的位置才能實現定子電流解耦控制,在這種矢量控制系統中需要配置轉子位置或速度感測器,這顯然給許多應用場合帶來不便.
直接轉矩控制PWM
1985年德國魯爾大學Depenbrock教授首先提出直接轉矩控制理論(Direct Torque Control簡稱DTC).直接轉矩控制與矢量控制不同,它不是通過控制電流,磁鏈等量來間接控制轉矩,而是把轉矩直接作為被控量來控制,它也不需要解耦電機模型,而是在靜止的坐標系中計算電機磁通和轉矩的實際值,然後,經磁鏈和轉矩的Band-Band控制產生PWM信號對逆變器的開關狀態進行最佳控制,從而在很大程度上解決了上述矢量控制的不足,能方便地實現無速度感測器化,有很快的轉矩響應速度和很高的速度及轉矩控制精度,並以新穎的控制思想,簡潔明了的系統結構,優良的動靜態性能得到了迅速發展. 但直接轉矩控制也存在缺點,如逆變器開關頻率的提高有限制.
非線性控制PWM
單周控製法[7]又稱積分復位控制(Integration Reset Control,簡稱IRC),是一種新型非線性控制技術,其基本思想是控制開關占空比,在每個周期使開關變數的平均值與控制參考電壓相等或成一定比例.該技術同時具有調制和控制的雙重性,通過復位開關,積分器,觸發電路,比較器達到跟蹤指令信號的目的.單周控制器由控制器,比較器,積分器及時鍾組成,其中控制器可以是RS觸發器,其控制原理如圖1所示.圖中K可以是任何物理開關,也可是其它可轉化為開關變數形式的抽象信號. 單周控制在控制電路中不需要誤差綜合,它能在一個周期內自動消除穩態,瞬態誤差,使前一周期的誤差不會帶到下一周期.雖然硬體電路較復雜,但其克服了傳統的PWM控制方法的不足,適用於各種脈寬調制軟開關逆變器,具有反應快,開關頻率恆定,魯棒性強等優點,此外,單周控制還能優化系統響應,減小畸變和抑制電源干擾,是一種很有前途的控制方法.
諧振軟開關PWM
傳統的PWM逆變電路中,電力電子開關器件硬開關的工作方式,大的開關電壓電流應力以及高的/dt和di/dt限制了開關器件工作頻率的提高,而高頻化是電力電子主要發展趨勢之一,它能使變換器體積減小,重量減輕,成本下降,性能提高,特別當開關頻率在18kHz以上時,雜訊將已超過人類聽覺范圍,使無雜訊傳動系統成為可能. 諧振軟開關PWM的基本思想是在常規PWM變換器拓撲的基礎上,附加一個諧振網路,諧振網路一般由諧振電感,諧振電容和功率開關組成.開關轉換時,諧振網路工作使電力電子器件在開關點上實現軟開關過程,諧振過程極短,基本不影響PWM技術的實現.從而既保持了PWM技術的特點,又實現了軟開關技術.但由於諧振網路在電路中的存在必然會產生諧振損耗,並使電路受固有問題的影響,從而限制了該方法的應用。

⑷ PWM技術的幾種PWM控制方法

采樣控制理論中有一個重要結論:沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同.PWM控制技術就是以該結論為理論基礎,對半導體開關器件的導通和關斷進行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來代替正弦波或其他所需要的波形.按一定的規則對各脈沖的寬度進行調制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率。
PWM控制的基本原理很早就已經提出,但是受電力電子器件發展水平的制約,在上世紀80年代以前一直未能實現.直到進入上世紀80年代,隨著全控型電力電子器件的出現和迅速發展,PWM控制技術才真正得到應用.隨著電力電子技術,微電子技術和自動控制技術的發展以及各種新的理論方法,如現代控制理論,非線性系統控制思想的應用,PWM控制技術獲得了空前的發展.到目前為止,已出現了多種PWM控制技術,根據PWM控制技術的特點,到目前為止主要有以下方法。 在上世紀70年代開始至上世紀80年代初,由於當時大功率晶體管主要為雙極性達林頓三極體,載波頻率一般不超過5kHz,電機繞組的電磁噪音及諧波造成的振動引起了人們的關注。為求得改善,隨機PWM方法應運而生。
其原理是隨機改變開關頻率使電機電磁噪音近似為限帶白雜訊(在線性頻率坐標系中,各頻率能量分布是均勻的),盡管噪音的總分貝數未變,但以固定開關頻率為特徵的有色噪音強度大大削弱。
正因為如此,即使在IGBT已被廣泛應用的今天,對於載波頻率必須限制在較低頻率的場合,隨機PWM仍然有其特殊的價值;另一方面則說明了消除機械和電磁噪音的最佳方法不是盲目地提高工作頻率,隨機PWM技術正是提供了一個分析,解決這種問題的全新思路。 SPWM(Sinusoidal PWM)法是一種比較成熟的,目前使用較廣泛的PWM法。
前面提到的采樣控制理論中的一個重要結論:沖量相等而形狀不同的窄脈沖加在具有慣性的環節上時,其效果基本相同。SPWM法就是以該結論為理論基礎,用脈沖寬度按正弦規律變化而和正弦波等效的PWM波形即SPWM波形控制逆變電路中開關器件的通斷,使其輸出的脈沖電壓的面積與所希望輸出的正弦波在相應區間內的面積相等,通過改變調制波的頻率和幅值則可調節逆變電路輸出電壓的頻率和幅值。該方法的實現有以下幾種方案。 等面積法
該方案實際上就是SPWM法原理的直接闡釋,用同樣數量的等幅而不等寬的矩形脈沖序列代替正弦波,然後計算各脈沖的寬度和間隔,並把這些數據存於微機中,通過查表的方式生成PWM信號控制開關器件的通斷,以達到預期的目的。由於此方法是以SPWM控制的基本原理為出發點,可以准確地計算出各開關器件的通斷時刻,其所得的的波形很接近正弦波,但其存在計算繁瑣,數據佔用內存大,不能實時控制的缺點。 硬體調製法
硬體調製法是為解決等面積法計算繁瑣的缺點而提出的,其原理就是把所希望的波形作為調制信號,把接受調制的信號作為載波,通過對載波的調製得到所期望的PWM波形.通常採用等腰三角波作為載波,當調制信號波為正弦波時,所得到的就是SPWM波形.其實現方法簡單,可以用模擬電路構成三角波載波和正弦調制波發生電路,用比較器來確定它們的交點,在交點時刻對開關器件的通斷進行控制,就可以生成SPWM波.但是,這種模擬電路結構復雜,難以實現精確的控制。 軟體生成法
由於微機技術的發展使得用軟體生成SPWM波形變得比較容易,因此,軟體生成法也就應運而生.軟體生成法其實就是用軟體來實現調制的方法,其有兩種基本演算法,即自然采樣法和規則采樣法。 自然采樣法
以正弦波為調制波,等腰三角波為載波進行比較,在兩個波形的自然交點時刻控制開關器件的通斷,這就是自然采樣法。其優點是所得SPWM波形最接近正弦波,但由於三角波與正弦波交點有任意性,脈沖中心在一個周期內不等距,從而脈寬表達式是一個超越方程,計算繁瑣,難以實時控制。 規則采樣法
規則采樣法是一種應用較廣的工程實用方法,一般採用三角波作為載波。其原理就是用三角波對正弦波進行采樣得到階梯波,再以階梯波與三角波的交點時刻控制開關器件的通斷,從而實現SPWM法。 當三角波只在其頂點(或底點)位置對正弦波進行采樣時,由階梯波與三角波的交點所確定的脈寬,在一個載波周期(即采樣周期)內的位置是對稱的,這種方法稱為對稱規則采樣。 當三角波既在其頂點又在底點時刻對正弦波進行采樣時,由階梯波與三角波的交點所確定的脈寬,在一個載波周期(此時為采樣周期的兩倍)內的位置一般並不對稱,這種方法稱為非對稱規則采樣。
規則采樣法是對自然采樣法的改進,其主要優點就是是計算簡單,便於在線實時運算,其中非對稱規則采樣法因階數多而更接近正弦.其缺點是直流電壓利用率較低,線性控制范圍較小。
以上兩種方法均只適用於同步調制方式中。 低次諧波消去法是以消去PWM波形中某些主要的低次諧波為目的的方法。其原理是對輸出電壓波形按傅氏級數展開,表示為u(ωt)=ansinnωt,首先確定基波分量a1的值,再令兩個不同的an=0,就可以建立三個方程,聯立求解得a1、a2及a3,這樣就可以消去兩個頻率的諧波。
該方法雖然可以很好地消除所指定的低次諧波,但是,剩餘未消去的較低次諧波的幅值可能會相當大,而且同樣存在計算復雜的缺點。該方法同樣只適用於同步調制方式中。 前面所介紹的各種方法主要是以輸出波形盡量接近正弦波為目的,從而忽視了直流電壓的利用率,如SPWM法,其直流電壓利用率僅為86.6%。因此,為了提高直流電壓利用率,提出了一種新的方法——梯形波與三角波比較法。該方法是採用梯形波作為調制信號,三角波為載波,且使兩波幅值相等,以兩波的交點時刻控制開關器件的通斷實現PWM控制。
由於當梯形波幅值和三角波幅值相等時,其所含的基波分量幅值已超過了三角波幅值,從而可以有效地提高直流電壓利用率.但由於梯形波本身含有低次諧波,所以輸出波形中含有5次,7次等低次諧波。 前面所介紹的各種PWM控制方法用於三相逆變電路時,都是對三相輸出相電壓分別進行控制的,使其輸出接近正弦波,但是,對於像三相非同步電動機這樣的三相無中線對稱負載,逆變器輸出不必追求相電壓接近正弦,而可著眼於使線電壓趨於正弦。因此,提出了線電壓控制PWM,主要有以下兩種方法: 馬鞍形波與三角波比較法
馬鞍形波與三角波比較法也就是諧波注入PWM方式(HIPWM),其原理是在正弦波中加入一定比例的三次諧波,調制信號便呈現出馬鞍形,而且幅值明顯降低,於是在調制信號的幅值不超過載波幅值的情況下,可以使基波幅值超過三角波幅值,提高了直流電壓利用率。在三相無中線系統中,由於三次諧波電流無通路,所以三個線電壓和線電流中均不含三次諧波[4]。
除了可以注入三次諧波以外,還可以注入其他3倍頻於正弦波信號的其他波形,這些信號都不會影響線
電壓.這是因為,經過PWM調制後逆變電路輸出的相電壓也必然包含相應的3倍頻於正弦波信號的諧波,但在合成線電壓時,各相電壓中的這些諧波將互相抵消,從而使線電壓仍為正弦波。 單元脈寬調製法
因為,三相對稱線電壓有Uuv+Uvw+Uwu=0的關系,所以,某一線電壓任何時刻都等於另外兩個線電壓負值之和。現在把一個周期等分為6個區間,每區間60°,對於某一線電壓例如Uuv,半個周期兩邊60°區間用Uuv本身表示,中間60°區間用-(Uvw+Uwu)表示,當將Uvw和Uwu作同樣處理時,就可以得到三相線電壓波形只有半周內兩邊60°區間的兩種波形形狀,並且有正有負.把這樣的電壓波形作為脈寬調制的參考信號,載波仍用三角波,並把各區間的曲線用直線近似(實踐表明,這樣做引起的誤差不大,完全可行),就可以得到線電壓的脈沖波形,該波形是完全對稱,且規律性很強,負半周是正半周相應脈沖列的反相,因此,只要半個周期兩邊60°區間的脈沖列一經確定,線電壓的調制脈沖波形就唯一地確定了.這個脈沖並不是開關器件的驅動脈沖信號,但由於已知三相線電壓的脈沖工作模式,就可以確定開關器件的驅動脈沖信號了。
該方法不僅能抑制較多的低次諧波,還可減小開關損耗和加寬線性控制區,同時還能帶來用微機控制的方便,但該方法只適用於非同步電動機,應用范圍較小。 電流控制PWM的基本思想是把希望輸出的電流波形作為指令信號,把實際的電流波形作為反饋信號,通過兩者瞬時值的比較來決定各開關器件的通斷,使實際輸出隨指令信號的改變而改變。其實現方案主要有以下3種。 滯環比較法
這是一種帶反饋的PWM控制方式,即每相電流反饋回來與電流給定值經滯環比較器,得出相應橋臂開關器件的開關狀態,使得實際電流跟蹤給定電流的變化。該方法的優點是電路簡單,動態性能好,輸出電壓不含特定頻率的諧波分量。其缺點是開關頻率不固定造成較為嚴重的噪音,和其他方法相比,在同一開關頻率下輸出電流中所含的諧波較多。 三角波比較法
該方法與SPWM中的三角波比較方式不同,這里是把指令電流與實際輸出電流進行比較,求出偏差電流,通過放大器放大後再和三角波進行比較,產生PWM波。此時開關頻率一定,因而克服了滯環比較法頻率不固定的缺點。但是,這種方式電流響應不如滯環比較法快。 預測電流控製法
預測電流控制是在每個調節周期開始時,根據實際電流誤差、負載參數及其它負載變數,來預測電流誤差矢量趨勢,因此,下一個調節周期由PWM產生的電壓矢量必將減小所預測的誤差。該方法的優點是,若給調節器除誤差外更多的信息,則可獲得比較快速、准確的響應。這類調節器的局限性在於響應速度及過程模型系數參數的准確性。 空間電壓矢量控制PWM(SVPWM)也叫磁通正弦PWM。它以三相波形整體生成效果為前提,以逼近電機氣隙的理想圓形旋轉磁場軌跡為目的,用逆變器不同的開關模式所產生的實際磁通去逼近基準圓磁通,由它們的比較結果決定逆變器的開關,形成PWM波形。此法從電動機的角度出發,把逆變器和電機看作一個整體,以內切多邊形逼近圓的方式進行控制,使電機獲得幅值恆定的圓形磁場(正弦磁通)。
具體方法又分為磁通開環式和磁通閉環式。 磁通開環法用兩個非零矢量和一個零矢量合成一個等效的電壓矢量,若采樣時間足夠小,可合成任意電壓矢量。此法輸出電壓比正弦波調制時提高15%,諧波電流有效值之和接近最小。 磁通閉環式引入磁通反饋,控制磁通的大小和變化的速度。在比較估算磁通和給定磁通後,根據誤差決定產生下一個電壓矢量,形成PWM波形。這種方法克服了磁通開環法的不足,解決了電機低速時,定子電阻影響大的問題,減小了電機的脈動和噪音。但由於未引入轉矩的調節,系統性能沒有得到根本性的改善。 矢量控制也稱磁場定向控制,其原理是將非同步電動機在三相坐標系下的定子電流Ia、Ib及Ic,通過三相/二相變換,等效成兩相靜止坐標系下的交流電流Ia1及Ib1,再通過按轉子磁場定向旋轉變換,等效成同步旋轉坐標系下的直流電流Im1及It1(Im1相當於直流電動機的勵磁電流;It1相當於與轉矩成正比的電樞電流),然後模仿對直流電動機的控制方法,實現對交流電動機的控制。其實質是將交流電動機等效為直流電動機,分別對速度、磁場兩個分量進行獨立控制。通過控制轉子磁鏈,然後分解定子電流而獲得轉矩和磁場兩個分量,經坐標變換,實現正交或解耦控制。
但是,由於轉子磁鏈難以准確觀測,以及矢量變換的復雜性,使得實際控制效果往往難以達到理論分析的效果,這是矢量控制技術在實踐上的不足。此外,它必須直接或間接地得到轉子磁鏈在空間上的位置才能實現定子電流解耦控制,在這種矢量控制系統中需要配置轉子位置或速度感測器,這顯然給許多應用場合帶來不便。 1985年德國魯爾大學Depenbrock教授首先提出直接轉矩控制理論(Direct Torque Control,簡稱DTC)。直接轉矩控制與矢量控制不同,它不是通過控制電流、磁鏈等量來間接控制轉矩,而是把轉矩直接作為被控量來控制,它也不需要解耦電機模型,而是在靜止的坐標系中計算電機磁通和轉矩的實際值,然後,經磁鏈和轉矩的Band-Band控制產生PWM信號對逆變器的開關狀態進行最佳控制,從而在很大程度上解決了上述矢量控制的不足,能方便地實現無速度感測器化,有很快的轉矩響應速度和很高的速度及轉矩控制精度,並以新穎的控制思想,簡潔明了的系統結構,優良的動靜態性能得到了迅速發展。
但直接轉矩控制也存在缺點,如逆變器開關頻率的提高有限制。 單周控製法[7]又稱積分復位控制(Integration Reset Control,簡稱IRC),是一種新型非線性控制技術,其基本思想是控制開關占空比,在每個周期使開關變數的平均值與控制參考電壓相等或成一定比例。該技術同時具有調制和控制的雙重性,通過復位開關、積分器、觸發電路、比較器達到跟蹤指令信號的目的。單周控制器由控制器、比較器、積分器及時鍾組成,其中控制器可以是RS觸發器,開關是任何物理開關,也可是其它可轉化為開關變數形式的抽象信號。
單周控制在控制電路中不需要誤差綜合,它能在一個周期內自動消除穩態、瞬態誤差,使前一周期的誤差不會帶到下一周期。雖然硬體電路較復雜,但其克服了傳統的PWM控制方法的不足,適用於各種脈寬調制軟開關逆變器,具有反應快、開關頻率恆定、魯棒性強等優點。此外,單周控制還能優化系統響應、減小畸變和抑制電源干擾。 傳統的PWM逆變電路中,電力電子開關器件硬開關的工作方式,大的開關電壓電流應力以及高的/dt和di/dt限制了開關器件工作頻率的提高,而高頻化是電力電子主要發展趨勢之一,它能使變換器體積減小,重量減輕,成本下降,性能提高,特別當開關頻率在18kHz以上時,雜訊將已超過人類聽覺范圍,使無雜訊傳動系統成為可能。
諧振軟開關PWM的基本思想是在常規PWM變換器拓撲的基礎上,附加一個諧振網路,諧振網路一般由諧振電感、諧振電容和功率開關組成。開關轉換時,諧振網路工作使電力電子器件在開關點上實現軟開關過程,諧振過程極短,基本不影響PWM技術的實現。從而既保持了PWM技術的特點,又實現了軟開關技術。但由於諧振網路在電路中的存在必然會產生諧振損耗,並使電路受固有問題的影響,從而限制了該方法的應用。

⑸ CCS軟體C語言編程輸出SPWM脈寬調制波控制感應電機轉速程序演算法解讀

1、PWM波是控制直流電機的
通俗的說,5V直流電機在5V的情況下肯定速度最快,在0V的情況下肯定不轉了
這樣電源0~5V就對應了不同的速度
問題是怎麼才能實現0~5V的變化呢?
於是就用PWM波控制mos管來給直流電機供電。PWM就是一個矩形波,通過控制高電平和低電平的時間來控制MOS管導通的時間。MOS管在高電平的時候導通,就相當於5V電源直接加到電機上;MOS管在低電平的時候截止,就相當於0V電源加到電機上。
PWM又叫脈寬調制,就是控制高電平佔一個周期的比例。而這個PWM波就是控制5V電源加到電機上的時間,從而控制了電機。

2、常式:
#include <reg52.h>
sbit KEY1 = P3^4;
sbit PWM = P1^5;
unsigned char CYCLE; //定義周期 該數字X基準定時時間 如果是10 則周期是10 x 0.1ms
unsigned char PWM_ON ;//定義高電平時間
void delay(unsigned int cnt)
{
while(--cnt);
}

main()
{
unsigned char PWM_Num;//定義檔位
TMOD |=0x01;//定時器設置 1ms in 12M crystal
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定時1mS
IE= 0x82; //打開中斷
TR0=1;

CYCLE = 10;// 時間可以調整 這個是10步調整 周期10ms 8位PWM就是256步
while(1)
{
if(!KEY1)
{
delay(10000);
if(!KEY1)
{
PWM_Num++;
if(PWM_Num==4)PWM_Num=0;
switch(PWM_Num){
case 0:P0=0x06;PWM_ON=0;break;//高電平時長
case 1:P0=0x5B;PWM_ON=4;break;
case 2:P0=0x4F;PWM_ON=6;break;
case 3:P0=0x66;PWM_ON=8;break;
default:break;
}
}

}
}

}
/********************************/
/* 定時中斷 */
/********************************/
void tim(void) interrupt 1 using 1
{
static unsigned char count; //
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;//定時1mS

if (count==PWM_ON)
{
PWM = 1; //燈滅
}
count++;
if(count == CYCLE)
{
count=0;
if(PWM_ON!=0) //如果左右時間是0 保持原來狀態
PWM = 0;//燈亮

}

⑹ 步進電機的控制演算法是否和伺服差不多,給到控制器的都是pwm信號

步進電機
的控制演算法和
伺服電機
差不多,只不過伺服電機有反饋信號。給到控制器不是
pwm信號
,而是符合
相序

脈沖信號
。也就是說,pwm信號通過調整
占空比
,改變
總能量
供應控制普通電機轉速,而步進電機和伺服電機靠調整相位角控制轉速。

⑺ 怎麼用單片機產生PWM波形

單片機產生PWM波形波形的方法:
主要是採用軟體控制,控制2個時間。
具體就是由單片機的引腳輸出PWM波形;單片機引腳
如P1.7
控制其輸出高電平的時間T1
和輸出低電平的時間T2。
PWM波形的周期T=T1+T2
PWM波形的占空比=(100T1/T)%
PWM波形實現的演算法:
1
根據PWM波形的頻率f,計算出PWM波形的周期T=1/f;
2
根據PWM波形的占空比
計算出高電平時間
T1=占空比×T
3
計算出低電平時間
T2=T-T1
4
按上述時間去控制
單片機引腳高低電平的時間就可以了。
呵呵
趕快自己寫程序吧
別忘了給俺加分呀

⑻ 51單片機pwm輸出頻率演算法,誰有公式,怎麼算的

單片機是獨立 pwm硬體產生,還是靠定時器中斷產生
普通51單片機沒有硬體pwm功能,只能靠 定時器中斷來產生,而多數增強型 51單 片機是有硬體pwm功能,一般PWM頻率是晶振頻率/分頻系數/256
如晶振頻率12M,分頻系數設為2,則PWM頻率為12000000/2/256=23.4 KHZ

⑼ 8位單片機PID控制PWM的演算法如何實現,C語言計算

PID控制在8位單片機中仍然有廣泛的應用,比如溫度控制,利用比例、積分、微分補償來做恆溫補償控制,當然由於有這些數學處理,用C語言相對方便一些,以下是一個具體的實例。

#include<reg51.h>

#include<intrins.h>

#include<math.h>

#include<string.h>

struct PID {

unsigned int SetPoint; // 設定目標 Desired Value

unsigned int Proportion; // 比例常數 Proportional Const

unsigned int Integral; // 積分常數 Integral Const

unsigned int Derivative; // 微分常數 Derivative Const

unsigned int LastError; // Error[-1]

unsigned int PrevError; // Error[-2]

unsigned int SumError; // Sums of Errors

};

struct PID spid; // PID Control Structure

unsigned int rout; // PID Response (Output)

unsigned int rin; // PID Feedback (Input)

sbit data1=P1^0;

sbit clk=P1^1;

sbit plus=P2^0;

sbit subs=P2^1;

sbit stop=P2^2;

sbit output=P3^4;

sbit DQ=P3^3;

unsigned char flag,flag_1=0;

unsigned char high_time,low_time,count=0;//占空比調節參數

unsigned char set_temper=35;

unsigned char temper;

unsigned char i;

unsigned char j=0;

unsigned int s;

/***********************************************************

延時子程序,延時時間以12M晶振為准,延時時間為30us×time

***********************************************************/

void delay(unsigned char time)

{

unsigned char m,n;

for(n=0;n<time;n++)

for(m=0;m<2;m++){}

}

/***********************************************************

寫一位數據子程序

***********************************************************/

void write_bit(unsigned char bitval)

{

EA=0;

DQ=0; /*拉低DQ以開始一個寫時序*/

if(bitval==1)

{

_nop_();

DQ=1; /*如要寫1,則將匯流排置高*/

}

delay(5); /*延時90us供DA18B20采樣*/

DQ=1; /*釋放DQ匯流排*/

_nop_();

_nop_();

EA=1;

}

/***********************************************************

寫一位元組數據子程序

***********************************************************/

void write_byte(unsigned char val)

{

unsigned char i;

unsigned char temp;

EA=0;

TR0=0;

for(i=0;i<8;i++) /*寫一位元組數據,一次寫一位*/

{

temp=val>>i; /*移位操作,將本次要寫的位移到最低位*/

temp=temp&1;

write_bit(temp); /*向匯流排寫該位*/

}

delay(7); /*延時120us後*/

// TR0=1;

EA=1;

}

/***********************************************************

讀一位數據子程序

***********************************************************/

unsigned char read_bit()

{

unsigned char i,value_bit;

EA=0;

DQ=0; /*拉低DQ,開始讀時序*/

_nop_();

_nop_();

DQ=1; /*釋放匯流排*/

for(i=0;i<2;i++){}

value_bit=DQ;

EA=1;

return(value_bit);

}

/***********************************************************

讀一位元組數據子程序

***********************************************************/

unsigned char read_byte()

{

unsigned char i,value=0;

EA=0;

for(i=0;i<8;i++)

{

if(read_bit()) /*讀一位元組數據,一個時序中讀一次,並作移位處理*/

value|=0x01<<i;

delay(4); /*延時80us以完成此次都時序,之後再讀下一數據*/

}

EA=1;

return(value);

}

/***********************************************************

復位子程序

***********************************************************/

unsigned char reset()

{

unsigned char presence;

EA=0;

DQ=0; /*拉低DQ匯流排開始復位*/

delay(30); /*保持低電平480us*/

DQ=1; /*釋放匯流排*/

delay(3);

presence=DQ; /*獲取應答信號*/

delay(28); /*延時以完成整個時序*/

EA=1;

return(presence); /*返回應答信號,有晶元應答返回0,無晶元則返回1*/

}

/***********************************************************

獲取溫度子程序

***********************************************************/

void get_temper()

{

unsigned char i,j;

do

{

i=reset(); /*復位*/

} while(i!=0); /*1為無反饋信號*/

i=0xcc; /*發送設備定位命令*/

write_byte(i);

i=0x44; /*發送開始轉換命令*/

write_byte(i);

delay(180); /*延時*/

do

{

i=reset(); /*復位*/

} while(i!=0);

i=0xcc; /*設備定位*/

write_byte(i);

i=0xbe; /*讀出緩沖區內容*/

write_byte(i);

j=read_byte();

i=read_byte();

i=(i<<4)&0x7f;

s=(unsigned int)(j&0x0f); //得到小數部分

s=(s*100)/16;

j=j>>4;

temper=i|j; /*獲取的溫度放在temper中*/

}

/*====================================================================================================

Initialize PID Structure

=====================================================================================================*/

void PIDInit (struct PID *pp)

{

memset ( pp,0,sizeof(struct PID)); //全部初始化為0

}

/*====================================================================================================

PID計算部分

=====================================================================================================*/

unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )

{

unsigned int dError,Error;

Error = pp->SetPoint - NextPoint; // 偏差

pp->SumError += Error; // 積分

dError = pp->LastError - pp->PrevError; // 當前微分

pp->PrevError = pp->LastError;

pp->LastError = Error;

return (pp->Proportion * Error // 比例項

+ pp->Integral * pp->SumError // 積分項

+ pp->Derivative * dError); // 微分項

}

/***********************************************************

溫度比較處理子程序

***********************************************************/

void compare_temper()

{

unsigned char i;

if(set_temper>temper) //是否設置的溫度大於實際溫度

{

if(set_temper-temper>1) //設置的溫度比實際的溫度是否是大於1度

{

high_time=100; //如果是,則全速加熱

low_time=0;

}

else //如果是在1度范圍內,則運行PID計算

{

for(i=0;i<10;i++)

{

get_temper(); //獲取溫度

rin = s; // Read Input

rout = PIDCalc ( &spid,rin ); // Perform PID Interation

}

if (high_time<=100)

high_time=(unsigned char)(rout/800);

else

high_time=100;

low_time= (100-high_time);

}

}

else if(set_temper<=temper)

{

if(temper-set_temper>0)

{

high_time=0;

low_time=100;

}

else

{

for(i=0;i<10;i++)

{

get_temper();

rin = s; // Read Input

rout = PIDCalc ( &spid,rin ); // Perform PID Interation

}

if (high_time<100)

high_time=(unsigned char)(rout/10000);

else

high_time=0;

low_time= (100-high_time);

}

}

// else

// {}

}

/*****************************************************

T0中斷服務子程序,用於控制電平的翻轉 ,40us*100=4ms周期

******************************************************/

void serve_T0() interrupt 1 using 1

{

if(++count<=(high_time))

output=1;

else if(count<=100)

{

output=0;

}

else

count=0;

TH0=0x2f;

TL0=0xe0;

}

/*****************************************************

串列口中斷服務程序,用於上位機通訊

******************************************************/

void serve_sio() interrupt 4 using 2

{

/* EA=0;

RI=0;

i=SBUF;

if(i==2)

{

while(RI==0){}

RI=0;

set_temper=SBUF;

SBUF=0x02;

while(TI==0){}

TI=0;

}

else if(i==3)

{

TI=0;

SBUF=temper;

while(TI==0){}

TI=0;

}

EA=1; */

}

void disp_1(unsigned char disp_num1[6])

{

unsigned char n,a,m;

for(n=0;n<6;n++)

{

// k=disp_num1[n];

for(a=0;a<8;a++)

{

clk=0;

m=(disp_num1[n]&1);

disp_num1[n]=disp_num1[n]>>1;

if(m==1)

data1=1;

else

data1=0;

_nop_();

clk=1;

_nop_();

}

}

}

/*****************************************************

顯示子程序

功能:將占空比溫度轉化為單個字元,顯示占空比和測得到的溫度

******************************************************/

void display()

{

unsigned char code number[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};

unsigned char disp_num[6];

unsigned int k,k1;


k=high_time;

k=k%1000;

k1=k/100;

if(k1==0)

disp_num[0]=0;

else

disp_num[0]=0x60;

k=k%100;

disp_num[1]=number[k/10];

disp_num[2]=number[k%10];

k=temper;

k=k%100;

disp_num[3]=number[k/10];

disp_num[4]=number[k%10]+1;

disp_num[5]=number[s/10];

disp_1(disp_num);

}

/***********************************************************

主程序

***********************************************************/

void main()

{

unsigned char z;

unsigned char a,b,flag_2=1,count1=0;

unsigned char phil[]={2,0xce,0x6e,0x60,0x1c,2};

TMOD=0x21;

TH0=0x2f;

TL0=0x40;

SCON=0x50;

PCON=0x00;

TH1=0xfd;

TL1=0xfd;

PS=1;

EA=1;

EX1=0;

ET0=1;

ES=1;

TR0=1;

TR1=1;

high_time=50;

low_time=50;

PIDInit ( &spid ); // Initialize Structure

spid.Proportion = 10; // Set PID Coefficients 比例常數 Proportional Const

spid.Integral = 8; //積分常數 Integral Const

spid.Derivative =6; //微分常數 Derivative Const

spid.SetPoint = 100; // Set PID Setpoint 設定目標 Desired Value

while(1)

{

if(plus==0)

{

EA=0;

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(plus==0)

{

set_temper++;

flag=0;

}

}

else if(subs==0)

{

for(a=0;a<5;a++)

for(b=0;a<102;b++){}

if(subs==0)

{

set_temper--;

flag=0;

}

}

else if(stop==0)

{

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(stop==0)

{

flag=0;

break;

}

EA=1;

}

get_temper();

b=temper;

if(flag_2==1)

a=b;

if((abs(a-b))>5)

temper=a;

else

temper=b;

a=temper;

flag_2=0;

if(++count1>30)

{

display();

count1=0;

}

compare_temper();

}

TR0=0;

z=1;

while(1)

{

EA=0;

if(stop==0)

{

for(a=0;a<5;a++)

for(b=0;b<102;b++){}

if(stop==0)

disp_1(phil);

// break;

}

EA=1;

}

}

⑽ pid_PWM 溫控pwm 利用pid演算法

PID演算法本身是很簡單的,你隨便找本講PID的書,大膽的把公式抄上,肯定就能用。

至於好用不好用的問題,在於另外兩點,
第一是你用的參數的精度問題,如果你全部用浮點數來計算,當然不會出錯,但程序可能會很大,可能大到你無法接受(看你用的什麼晶元了),如果你用短整,或者長整來做,那麼小數點後面的精度會被丟棄,嚴重的時候,你有演算法無法正常運行。一般是用定點數來做,說白了就是用整數做,但整數1不要代表1度,而是代表0.1度,0.01度,或者16分之一度,具體的你自己來約定。
第二,是關於PID的幾個參數的整定問題,這個需要經驗,網上可以找到一些口訣,但具體操作還是要經驗的。整定好的PID才是能用的PID,整定不好,溫度就會失控。

回到你的問題,你需要先決定你的輸出的精度,比如你的PWM輸出是幾位精度的,可能是8位,也可能是10位,假設是10位,那麼輸出是大值就是1023,最小值是0。你套上公式計算,像這樣,以浮點數為例
EK_1 = EK;
Ek = settemp - runtemp;
Up = Ek * KP; // KP 是設定的比例系數,需要整定
Ui = Ui + Ek * Ki;
Ud = ( EK - EK_1 ) * Kd;
Upid = Uk + Ui + Ud;
整定KP, Ki, Kd,使Upid 的范圍在+/-1.0范圍,
最後
PWM_Out( Upid * 1024 );

熱點內容
可以上傳球球的照片 發布:2024-11-05 15:42:59 瀏覽:738
拉箱怎麼改密碼 發布:2024-11-05 15:38:02 瀏覽:862
http怎麼配置 發布:2024-11-05 15:02:45 瀏覽:461
12級緩存 發布:2024-11-05 14:52:09 瀏覽:578
神武4腳本 發布:2024-11-05 14:48:50 瀏覽:702
王者榮耀反復解壓 發布:2024-11-05 14:31:58 瀏覽:853
存儲引擎有哪些品牌 發布:2024-11-05 14:25:59 瀏覽:39
紅薯的存儲方法 發布:2024-11-05 14:17:32 瀏覽:757
腳本錯誤彈窗口在哪裡 發布:2024-11-05 14:01:16 瀏覽:967
java微信demo 發布:2024-11-05 13:50:31 瀏覽:238