SVPWM
這個調變技術通常是馬達控制中的第一個難關,但是這個技術通常會先幫你寫好了,所以只要大概了解它的原理,然後就可以用MTALAB模擬他的工作狀態,以下分兩部分(第一)了解調變的命令如何製造(第二)如何製造調變訊號。
(一)了解調變的命令如何製造
1. 決定要開那些開關:
SVPWM打開書看其實都會有類似index的東西,而這個index就是決定目前三相inverter要開那些開關,其中決定的因素是.....線電壓是線電壓,不要搞混了唷!呵呵。
2. 決定開關時間:
既然已經知道要開哪幾個開關,當然就是要決定要開多久關多久拉,那如何決定呢?這就是那個書中常常看到的數學式子,並且這邊開關時間的比例是上面的線電壓的線性組合,通常會改名X、Y、Z的樣子(但是會改正負號唷注意一下),然後就會看到Ta Tb Tc也就是ABC各軸所需要開的時間,然而我們偉大的前輩已經建好表了,所以只要直接帶進去確認就行啦。
以下是MATLAB Function的寫法
function [Ta,Tb,Tc,sector] = SVPWM(U_alpha,U_beta)
%#codegen
Ta=0;
Tb=0;
Tc=0;
sector=0;
pulse_cnt=450;
%======Inverse Clarke transformation to line voltage /sqrt(3)=======
U_bc = U_beta;
U_ab = (U_alpha*sqrt(3) - U_beta)/2;
U_ca = (-U_alpha*sqrt(3) - U_beta)/2;
%======60 degree Sector determination ======
if (U_bc>0) sector=1;
end
if (U_ab>0) sector=sector+2;
end
if (U_ca>0) sector=sector+4;
end
%==============================================
X=U_beta; %==(X=Vbc)===
Y=(U_alpha*sqrt(3)+U_beta)/2; %==(Y=-Vca)===
Z=(-U_alpha*sqrt(3)+U_beta)/2; %==(Z=-Vab)===
%==============================================
switch sector
case 0
Ta=0;
Tb=0;
Tc=0;
case 1 %=== sector contained by U60 and U120 =====
t1=Z; t2=Y;
Tb=(pulse_cnt-t1-t2)/2;
Ta=Tb+t1;
Tc=Ta+t2;
case 2 %=== sector contained by U300 and U0 =====
t1=Y; t2=-X;
Ta=(pulse_cnt-t1-t2)/2;
Tc=Ta+t1;
Tb=Tc+t2;
case 3 %=== sector contained by U0 and U60 =====
t1=-Z; t2=X;
Ta=(pulse_cnt-t1-t2)/2;
Tb=Ta+t1;
Tc=Tb+t2;
case 4 %=== sector contained by U180 and U240 =====
t1=-X; t2=Z;
Tc=(pulse_cnt-t1-t2)/2;
Tb=Tc+t1;
Ta=Tb+t2;
case 5 %=== sector contained by U120 and U180 =====
t1=X; t2=-Y;
Tb=(pulse_cnt-t1-t2)/2;
Tc=Tb+t1;
Ta=Tc+t2;
case 6 %=== sector contained by U240 and U300 =====
t1=-Y; t2=-Z;
Tc=(pulse_cnt-t1-t2)/2;
Ta=Tc+t1;
Tb=Ta+t2;
end
Ta=(Ta)*2;
Tb=(Tb)*2;
Tc=(Tc)*2; %%這邊要說明一下*2是因為算出來只有開上半部
end
====================================
然後問題又來了
1. MATLAB function 怎用:
在這邊點進去,把他複製到自己的模擬裡面,聰明的你應該就會了巴O_<
2. 這個function怎麼用?以及怎樣算正確
上面有一個 pulse_cnt=450 這個東西要先設定,那450是怎麼決定的,
那就要看目前三角波的對大值是多少;如果是900那這邊就要設定450。
然後要是Ta Tb Tc輸出的波形是三個相差120度的麥當勞波形的話就對
啦。你說…為什麼麥當勞就對了,為什麼不是正常的弦波?痾...通常應該
會上一些PWM切換方法的課去上應該就懂了@_@。Ta Tb Tc大概長這樣
(二)如何製造調變訊號
三角波比較及dead_time內部架構如下
這邊只顯示其中一臂,Ta輸入和U、U'輸出
1. 決定三角波:
這裡的三角波是依照MCU內部想要的數值所決定的(0~900~0)
還要決定時間(40k:選定[0 1/40000/2 1/40000])
這裡的三角波是依照MCU內部想要的數值所決定的(0~900~0)
還要決定時間(40k:選定[0 1/40000/2 1/40000])
2. 決定dead_time:
這裡的dead time 是上面的Delay並且都選用ON Delay上臂跟下臂,
在三角波上數階段會先關下臂在開上臂,而三角波下數階段會先關
上臂在開下臂。如下圖,紅色是上臂、綠色是下臂、藍色是三角波。

這裡的dead time 是上面的Delay並且都選用ON Delay上臂跟下臂,
在三角波上數階段會先關下臂在開上臂,而三角波下數階段會先關
上臂在開下臂。如下圖,紅色是上臂、綠色是下臂、藍色是三角波。
3. 比較器:
這邊的比較器是Relay,其中裡面有個遲滯我是設定0.025,意思是誤
差超過此數值才會有high 或 low 的變化。
這邊的比較器是Relay,其中裡面有個遲滯我是設定0.025,意思是誤
差超過此數值才會有high 或 low 的變化。
Example.
假如三角波是數到900所以輸入給我自己寫的SVPWM就要是0~900/2的數
字,那這禮為什麼要是900/2呢?這裡的寫法(大多數的寫法)會把輸入的
量轉化成MOS所要開關的時間,通常SVPWM是用等腰三角形的計數方式,所
以會先分配上數開關的時間(三角波從0到900),再來才是下數開關的時間
(三角波從900到0)。
============================================================
最後只要接成下面這張圖就行啦
連接方法是 inverse Park→SVPWM_REF製造程式→調變器(比較器)
小弟第一次寫,不太會用此排版,有任何問題歡迎留言
沒有留言:
張貼留言