怎麼用c語言使用規則取樣法生成SPWM?

時間 2021-08-12 00:42:21

1樓:Longson

假設直流母線電壓為 , 選取相電壓基準值為 ,定義調制度為相電壓幅值與基準值的比值:

三相調製波為:

其中 為 a 相電壓相位, 分別為基波角頻率,頻率,週期。

定義載波頻率為 ,載波週期為 。

對稱規則取樣是以每個三角載波的對稱軸(波峰或波谷)所對應的時間作為取樣時刻。假設在三角波的波谷時刻對調製波進行取樣,此時三角波與調製波的交點時刻為 ,過該點作平行於時間軸的直線,在本載波週期內該直線與波谷兩側三角波的交點時刻作為 SPWM 脈衝的「開」和「關」時刻。對稱規則取樣的原理,如下圖所示:

圖 1:對稱規則取樣原理圖

根據三角形相似:

我們可以計算出在本載波週期內,占空比為:

占空比(On duration duty cycle)為逆變器相橋臂上開關管導通的時間佔載波週期的比例。

在上圖的載波週期 時間內,規定當調製波大於三角波時,逆變器上開關管導通,下開關管關閉。當我們選擇在三角波的波峰處對調製波取樣時,也規定當調製波大於三角波時,逆變器上開關管導通,下開關管關閉,那麼我們可以得到相同的占空比。

為了根據計算出的占空比生成 PWM 脈衝,我們需要引入如下概念:

設數字訊號處理器 PWM 生成模組的基本時鐘週期為 TBCLK, 單位是 s ;

定義二分之一載波週期與 TBCLK 的比值為週期值,記為 TBPRD,取整數,單位為 1,不能超過 65535 (16 位無符號整數的最大值,若超過限幅,需要修改基本時鐘分頻);

將數字訊號處理器 PWM 生成模組的計數器設定為增減計數,計數器的範圍是 [0 TBPRD],這樣就可以產生乙個三角載波;

在生成脈衝時,計數器的值碰到某一值時,改變電平的極性,我們稱該值為比較值;

定義三角載波減計數時使用的比較值為 A,在增計數時使用的比較值為 B,可以根據占空比計算出:

有了比較值之後,我們再將 PWM 生成模組配置成,計數器增計數時,碰到比較值 B,置低電平;計數器在減計數時,碰到比較值 A,置高電平;當計數器等於 0 或週期值時,不動作。

這樣就能夠生成基於規則取樣的 SPWM 脈衝了。

怎麼用C語言來編這個程式?

nullptr include printf scanf include qsort void printArray const int a,size t size const char info printf n intcheckIfExist const int a,size t size in...

用c語言程式設計還是用Python好?

浪跡天涯學python 以為的經驗來說,取決你長期的目的,如果非程式設計師,只是解決一些工作的問題用python是最好的,簡單容易上手。而c語言更適合專業的程式設計師 愛吃花椒的小龍 看你用它幹嘛了,如果相對程式設計有完完全全的了解,就是c了,本科多年課程始終是它,學完之後雖然幹不了大專案 非精力 ...

學習c語言用什麼軟體?

WangKX visual studio 2019 community,跟上步伐學這個最新的。不懂看 c 新經典 裡面有詳細安裝步驟 除錯方法介紹。 cpp程式設計 這些都是比較常用的 1 visual c 6.0 win8系統下不好用,C C Mi crosoft Visual C 這個編譯器已經...