初始轴采用Ualpha,对于极对数为2的电机,在机械角旋转周期0-pi内,其所在电角度控制的电源周期为2*pi,其电角度正弦变化如图1所示。从图中来看,红色曲线横坐标从0开始所对应的电角度超过45度(0.785rad)时,同一高度也可以在不同横轴表示,离峰值越近,纵轴分辨率越弱。
图1
图2
从图1来看,由于相位差为120度的关系,也无法用其他相来表示唯一的横轴,也不如Ualpha相表示来的便捷,另外对于这极对数为2的电机,单次变化的最小控制电角度必须小于45度(0.785rad),否则控制过程失效。图2代码段表示的是帕克逆变换和克拉克逆变换的过程,Ualpha是sin正弦变化加偏移,偏移是防止输出小于0,加一个偏移量的原因是因为PWM设置值需大于0。
用来表示图1的代码如下
clear
clc
angle = 0:0.001:pi;
voltage_power_supply=50;
Uq = voltage_power_supply/3;
a = mod(angle*2, 2*pi);% angle*2的2表示极对数2
if a>=0%归一化到0到2*pi之间
angle_el = a;
else
angle_el = a + 2*pi;
end
% 帕克逆变换
Ualpha = -Uq*sin(angle_el);
Ubeta = Uq*cos(angle_el);
% 克拉克逆变换
Ua = Ualpha + voltage_power_supply/2;
Ub = (sqrt(3)*Ubeta-Ualpha)/2 + voltage_power_supply/2;
Uc = (-Ualpha-sqrt(3)*Ubeta)/2 + voltage_power_supply/2;
figure
plot(angle_el,Ua,'r')
grid on
hold on
plot(angle_el,Ub,'g')
hold on
plot(angle_el,Uc,'b')
图3表示的是机械角度为0.4rad,即电角度为0.8rad一个向量图,红色是Ualpha相。
图3
用来表示图3的代码如下
clear
clc
angle = 0.4;%机械角度
Uq=50;
a = mod(angle*2, 2*pi);% angle*2的2表示极对数2
if a>=0 %归一化到0到2*pi之间
angle_el = a;
else
angle_el = a + 2*pi;
end
%帕克逆变换
Ualpha = -Uq*sin(angle_el);
Ubeta = Uq*cos(angle_el);
% 克拉克逆变换
Ua = Ualpha;
Ub = (sqrt(3)*Ubeta-Ualpha)/2;
Uc = (-Ualpha-sqrt(3)*Ubeta)/2;
VA=Ua;VB=Ub*exp(1i*240/360*pi);VC=Uc*exp(1i*480/360*pi);
V=VA+VB+VC;
compass(V,'k');
xlim([-180, 180]);
ylim([-180, 180]);
hold on
compass(VA,'r');
hold on
compass(VB,'g');
hold on
compass(VC,'b');