INDUCTION MOTOR PERFORMANCE CALCULATOR
The Matlab script takes the NO LOAD & BLOCKED ROTOR TEST data and calculates the relevant parameters and plots the torque-speed curve of the induction motor.
%% Equivalent circuit analysis of an induction motor
% Computation of Induction parameters and Torque vs speed performance from locked rotor and no load test data
% Rahul Ramakrishnan
clear all
close all
clc
%% Input Parameters
disp('Input Fundamental Parameters Of the Motor')
disp(' ')
R_stator = input('Stator resistance of Motor(Ohms) = '); % Resistance in Ohms
F = input('Operating frequency of Motor(Hz) = '); % frequency in HZ
Poles = input('number of poles of the Motor = '); % number of poles
%% No load test Data
disp(' ')
disp('Input No load Test Data')
%No load currents
Ia = input('Line current of Phase "a" at no load = ');
Ib = Ia; %line current of phase b at no load
Ic = Ia; %line current of phase b at no load
I_1 = (Ia+Ib+Ic)/3; %Average per phase current
% No load applied Voltage
V_ab = input('Line Voltage @ No load = ');
V_bc = V_ab;
V_ca = V_ab;
VL_n1 = (V_ab+V_bc+V_ca)/3;
% No load input power
P_in_NL = input('Wattmeter reading @ No load = ') ;
%% Blocked Rotor Test data
disp(' ')
disp('Input Blocked Rotor test data')
%Full load current
Ia_fl = input('Full load line current = ');
Ib_fl = Ia_fl;
Ic_fl = Ia_fl;
I_2 = (Ia_fl+Ib_fl+Ic_fl)/3;
% Full load applied voltage
Vab_fl = input('Full load line voltage = ');
Vbc_fl = Vab_fl;
Vca_fl = Vab_fl;
V_L_FL = (Vab_fl+Vbc_fl+Vca_fl)/3 ; %Average Line to Line Voltage
% Full load input power
P_in_FL = input('Wattmeter reading @ Full load = ');
%% Calculating Using No load test Data
V_phase = VL_n1/sqrt(3); % Phase voltage
Z_NL = V_phase/I_1; % No load impedence = X1+Xm
P_scl = 3*I_1^2*R_stator; % Stator copper losses.
P_rot = P_in_NL - P_scl; % Mech losses
PF_NL = P_in_NL/(sqrt(3)*VL_n1*I_1); % No load Power factor
Theta_NL = acos(PF_NL)*180/pi; % PF angle in deg
Theta_NL_rad = acos(PF_NL); % Pf angle in Rads
V_m = V_phase-I_1*R_stator; % Magnetizing voltage
I_m = I_1*sin(Theta_NL_rad); % Current throught X_m
I_c = I_1*PF_NL; % Current through R_c
R_c = V_m/I_c; % Core resistance
X_m = V_m/I_m; % Magnetizing branch reactance
Z_m = (1i*X_m*R_c)/(1i*X_m+R_c); % Magnetizing branch impedence
R_NL = Z_NL*PF_NL; % No load resistance
X_NL = Z_NL*sin(Theta_NL_rad); % No load reactance
Z_NL_complex = R_NL+1i*X_NL; % No load impedence complex part
X_1a = X_NL-imag(Z_m); % Calculating Xm using the imaginary part of Zm
X_stator = Z_NL-X_m; % Calculating X1 using approximation Z = X1+Xm
% Result display
disp(' ')
disp('No load calculation for Transformer equivalent circuit')
disp('--------------------------------------------------------')
disp(['Stator resistance = R_stator = ' num2str(R_stator) 'Ohm'])
disp(['Line to line voltage = V_1 = ' num2str(VL_n1) ' Volts'])
disp(['No load current = I_1 = ' num2str(I_1) ' A'])
disp(['No load Power input = P_in = ' num2str(P_in_NL) ' Watts'])
disp(['Phase voltage at No load = Vp = ' num2str(V_phase) ' Volts'])
disp(['No load impedance = Z_NL = ' num2str(Z_NL) ' Ohm'])
disp(['No load power factor = PF_NL = ' num2str(PF_NL)])
disp(['Power factor angle = phi = ' num2str(Theta_NL) ' degrees'])
disp(['Magnetizing branch voltage = V_m = ' num2str(V_m) ' Volts'])
disp(['Current through X_m = I_m = ' num2str(I_m) ' Amps'])
disp(['current through R_c = R_c = ' num2str(I_c) ' Amps'])
disp(['Magnetizing reactance = X_m = ' num2str(X_m) ' Ohms'])
disp(['Core resistance = R_c = ' num2str(R_c) ' Ohms'])
disp(['Magnetizing impedance = Z_m = ' num2str(Z_m) ' Ohms'])
disp(['Approximate reactance = X_1 = ' num2str(X_stator) ' Ohms'])
disp(['Stator copper loss = P_scl = ' num2str(P_scl) ' Watts'])
disp(['Rotational losses = P_rot = ' num2str(P_rot) ' Watts'])
%% Calculation from Blocked rotor test
V_P_FL = V_L_FL/sqrt(3); % full load phase voltage
R_rotor = (P_in_FL-3*I_2^2*R_stator)/(3*I_2^2); % Rotor resistance
Z_FL = V_P_FL/I_2; % Full load equivalent impedance
PF_FL = P_in_FL/(sqrt(3)*V_L_FL*I_2); % Full load power factor
Theta_FL = acos(PF_FL)*180/pi; % Full load power factor angle
R_FL = Z_FL*PF_FL; % Full load equivalent resistance
X_FL = Z_FL*sin(acos(PF_FL)); % Full load equivalent reactance
Z_FL_complex = R_FL+X_FL*1i; % Full load impedance in complex form
X_rotor = sqrt(Z_FL^2-(R_stator+R_rotor)^2)-X_stator; % Rotor reactance
% Result display
disp(' ');
disp('Full load calculation for Transformer equivalent circuit')
disp('--------------------------------------------------------')
disp(['Full load line voltage = V_L_FL = ' num2str(V_L_FL) ' Volts'])
disp(['Full load phase voltage = V_P_FL = ' num2str(V_P_FL) ' Volts'])
disp(['Full load current = I_2 = ' num2str(I_2) ' A'])
disp(['Full load impedance = Z_FL = ' num2str(Z_FL) ' Ohms'])
disp(['Full load power = P_FL = ' num2str(P_in_FL) ' watts'])
disp(['Full load power factor = PF_FL = ' num2str(PF_FL) ' ' ])
disp(['Power Factor angle = phi = ' num2str(Theta_FL) ' degree'])
disp(['Full load impedance = Z_FL_complex = ' num2str(Z_FL_complex) ' Ohms'])
disp(['Rotor resistance = R_2 = ' num2str(R_rotor) ' Ohms'])
disp(['Approximate Rotor reactance = X_2 = ' num2str(X_rotor) ' Ohms'])
%% Calculation of Thevenin equivalent circuit parameters
V_th = (X_m/(X_stator+X_m))*V_phase; %Equivalent voltage
R_th = (X_m/(X_stator+X_m))^2*R_stator; %Equivalent resistance
X_th = X_stator; %Thevenin equivalent reactance
N_s = 120*F/Poles; % Sync speed
Omega_s = N_s*pi/30; % Sync speed in rad/sec
T_start = (3*V_th^2*R_rotor)/(Omega_s*((R_th+R_rotor)^2 ...
+(X_th+X_rotor)^2)); % Starting torque at slip = 0
S_maxT = R_rotor/sqrt(R_th^2+(X_th+X_rotor)^2); %Slip at max torque
T_max = (3*V_th^2)/(2*Omega_s*(R_th+sqrt(R_th^2+(X_th+X_rotor)^2))); %Max torque
%Result display
disp(' ');
disp('Thevenin Calculation from Induction motor equivalent cicuit')
disp('-----------------------------------------------------------')
disp(['Thevenin Voltage = Vth = ' num2str(V_th) ' V'])
disp(['Thevenin Resistance = Rth = ' num2str(R_th) ' ohms'])
disp(['Thevenin Reactance = Xth = ' num2str(X_th) ' ohms'])
%% Torque vs speed characteriscits
Slip = 1:-0.001:0;
Slip(1001) = 0.001;
T_induced = zeros(1,1000);
N_motor = zeros(1,1000);
for n = 1:length(Slip)
T_induced(n) = (3*V_th^2*R_rotor/Slip(n))/(Omega_s*((R_th+R_rotor/Slip(n))^2+(X_th+X_rotor)^2));
N_motor(n) = (1-Slip(n))*N_s;
end
%% Torque vs Speed plot
plot(N_motor,T_induced)
xlabel('Rotor speed(RPM)')
ylabel('Motor Torque(N-m)')
title('Torque vs Speed characteristics')
N_max = (1-S_maxT)*N_s;
x = [N_max,N_max];
y = [0,T_max];
hold on
% plotting Slip @ Pull out torque
line(x,y,'Color','r','Linestyle','-.','Linewidth',0.5)
text(N_max,T_max+0.35,'Pull out torque')
plot(N_max,T_max,'marker','o')
text(N_max+10,0.5,'Slip@Max torque')
%Plotting Starting torque
text(0+20,T_start-0.15,'Starting torque')
plot(0,T_start,'Marker','diamond')
%Plotting Sync Speed
plot(N_s,0,'Marker','o')
text(N_s-80,.35,'Sync speed')
The following values can be experimentally obtained by doing the Blocked Rotor and No-Load test
Using these set of values the following is the output from the code.
The code will also plot the torque speed curve.