EE443: MATLAB DC MOTOR SIMULATION

This example shows how MATLAB commands can be used to reduce the block diagram of a dc motor and then simulate its response for a 12V step input.

Matlab m-file example1.m:
```%
% Filename:  example1.m
%
% Description:  This m-file demonstrates how matlab can be
%               used to reduce the block diagram of a DC motor
%               with gearing and then simulate the motors
%               response to a 12V step input.

clear; clf;

% Motor parameters:
Jm = 0.01; bm = 0.3; Km = 0.8;
Kb = 0.8; R = 1.4; L = 0.004;

% Gear paramters:
N1 = 10; N2 = 61;

% Load parameters:
Jl = 11; bl = 27;

% Equivalent load seen by motor:
Jt = Jm + (N1/N2)^2*Jl;
bt = bm + (N1/N2)^2*bl;

% Determine Motor Transfer Function Omegal(s)/V_a(s):
nume = [1]; dene = [L R];
disp('Ia(s)/(Va(s)-Vb(s)) = '); printsys(nume,dene,'s');

numm = [Km]; denm = [Jt bt];
disp('Omega(s)/Ia(s) = '); printsys(numm,denm,'s');

numg = [N1]; deng = [N2];
disp('Omegal(s)/Omegam(s) = '); printsys(numg,deng,'s');

numf = [Kb]; denf = [1];
disp('Vb(s)/Omegam(s) = '); printsys(numf,denf,'s');

[numser,denser] = series(nume,dene,numm,denm);
[numfdbk,denfdbk] = feedback(numser,denser,numf,denf,-1);
[numdtf,dendtf] = series(numfdbk,denfdbk,numg,deng);

disp('Omegal(s)/Va(s) = '); printsys(numdtf,dendtf,'s');

% Determine and plot poles and zeros of speed system:
subplot(2,2,1); pzmap(numdtf,dendtf);
disp('zeros = '); roots(numdtf)
disp('poles = '); roots(dendtf)

% Plot speed response of system to a 12V step input:
t = 0:0.01:4;
omegal = 12*step(numdtf, dendtf, t);
subplot(2,2,2); plot(t,omegal);
xlabel('t '); ylabel('load speed ');
title('Geared DC Motor Step Response');

% Determine Motor Transfer Function Thetal(s)/V_a(s):
[numtf,dentf] = series(numdtf,dendtf,[1],[1 0]);

% Determine and plot poles and zeros of position system:
subplot(2,2,3); pzmap(numtf,dentf);
disp('zeros = '); roots(numtf)
disp('poles = '); roots(dentf)

% Plot position response of system to a 12V step input:
thetal = 12*step(numtf, dentf, t);
subplot(2,2,4); plot(t,thetal);
xlabel('t '); ylabel('load position ');
title('Geared DC Motor Step Response');

```
Results shown in Matlab window:
```
Ia(s)/(Va(s)-Vb(s)) =

num/den =

1
-------------
0.004 s + 1.4
Omega(s)/Ia(s) =

num/den =

0.8
------------------
0.30562 s + 1.0256
Omegal(s)/Omegam(s) =

num/den =

10
--
61
Vb(s)/Omegam(s) =

num/den =

0.8
---
1
Omegal(s)/Va(s) =

num/den =

8
-----------------------------------
0.074571 s^2 + 26.3502 s + 126.6272
zeros =

ans =

Empty matrix: 0-by-1

poles =

ans =

-348.4831
-4.8728

zeros =

ans =

Empty matrix: 0-by-1

poles =

ans =

0
-348.4831
-4.8728

```
MATLAB Plot Generated: