Project

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.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.