In: Electrical Engineering
Use matlab to solve the following:
A field-controlled DC motor can be described by the following differential equation:
ay3(t)+by2(t)+cy1(t) = dx(t)
Where y(t) is the angle displacement of the motor’s load and x(t) is the applied voltage to the motor. The applied voltage is DC that turns on at t = 0, which is a step function. The values for a,b,c and d are derived from the model of the field controlled DC motor. This is a concept that is slightly advanced from this class. For now, go with this:
% Motor Parameters
J = .01; % Gain (positive)
f = .10; % Friction (0
Rf = 10;
Lf = .01;
kt = 10;
% System coefficients
a = J;
b = f+ J*Rf/Lf;
c = f*Rf/Lf;
d = kt/Lf;
(1) Plot the impulse response and the step response of the system.
(2) Analyze the plots by answering these questions:
(a)If an impulse is applied, how many degrees does the motor turn? And how long does it take to turn those degrees?
(b)After 1 minute of applying a step voltage (1 volt DC), how many revolutions of the motor ? How many revolutions if the DC voltage applied is 12 volts ?
(c)The only parameters we can control in the motor are J, f, and the input voltage x(t). Play with these to evaluate the motor. In other words try a few different sets of values for J, f, and the input voltage x(t) and explain what happens.
Hello,
Please find
the answer attached as under. Please give a thumbs up
rating if you find the answer useful! Have a rocking day
ahead!
******* Matlab Code *******
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% dc motor characteristics
% Motor Parameters
J = .01; % Gain (positive)
f = .10; % Friction
Rf = 10;
Lf = .01;
kt = 10;
% System coefficients
a = J;
b = f+ J*Rf/Lf;
c = f*Rf/Lf;
d = kt/Lf;
G = tf(d,[a b c 0]);
subplot(2,1,1);
impulse(G);
grid;
subplot(2,1,2);
step(G,60);
grid;
%%%%%%%%%% Study of effect of parameters %%%%%%%%%
J1 = 0.03; J2 =0.07;
a1 = J1;
b1 = f+ J1*Rf/Lf;
G = tf(d,[a b c]);
G1 = tf(d,[a1 b1 c]);
a2 = J2;
b2 = f+ J2*Rf/Lf;
G2 = tf(d,[a2 b2 c]);
fprintf('=========== System response characteristics for J =
0.01======\n')
stepinfo(G)
fprintf('=========== System response characteristics for J =
0.03======\n')
stepinfo(G1)
fprintf('=========== System response characteristics for J =
0.07======\n')
stepinfo(G2)
f1 = 0.40; f2 = 0.8;
b1 = f1+ J*Rf/Lf;
c1 = f1*Rf/Lf;
G1 = tf(d,[a b1 c1]);
b2 = f2+ J*Rf/Lf;
c2 = f2*Rf/Lf;
G2 = tf(d,[a b2 c2]);
fprintf('=========== System response characteristics for f =
0.1======\n')
stepinfo(G)
fprintf('=========== System response characteristics for f =
0.4======\n')
stepinfo(G1)
fprintf('=========== System response characteristics for f =
0.6======\n')
stepinfo(G2)
****** Output *****
The output as seen above is in radians.
(a) For an impulse, the motor will turn 10 radians (572 degrees), in approximately 0.5 seconds.
(b) After 1 minute = 60 secs, the motor turns 600 radians = 95 rotations in 1 minute.
For 12 volts, rpm = 12 * 95 = 1140
(c) When you run the above matlab code, you will get the impulse response characteristics for various values of J and f. The input voltage has not been simulated because all it does is amplify the magnitude of the response, the dynamic characteristics remain the same:
=========== System response characteristics for J = 0.01======
ans =
struct with fields:
RiseTime:
0.2197
SettlingTime: 0.3922
SettlingMin: 9.0354
SettlingMax: 9.9997
Overshoot: 0
Undershoot: 0
Peak: 9.9997
PeakTime: 1.0546
=========== System response characteristics for J = 0.03======
ans =
struct with fields:
RiseTime:
0.6591
SettlingTime: 1.1746
SettlingMin: 9.0418
SettlingMax: 9.9997
Overshoot: 0
Undershoot: 0
Peak: 9.9997
PeakTime: 3.1638
=========== System response characteristics for J = 0.07======
ans =
struct with fields:
RiseTime:
1.5379
SettlingTime: 2.7394
SettlingMin: 9.0436
SettlingMax: 9.9997
Overshoot: 0
Undershoot: 0
Peak: 9.9997
PeakTime: 7.3821
=========== System response characteristics for f = 0.1======
ans =
struct with fields:
RiseTime:
0.2197
SettlingTime: 0.3922
SettlingMin: 9.0354
SettlingMax: 9.9997
Overshoot: 0
Undershoot: 0
Peak: 9.9997
PeakTime: 1.0546
=========== System response characteristics for f = 0.4======
ans =
struct with fields:
RiseTime:
0.0550
SettlingTime: 0.0988
SettlingMin: 2.2513
SettlingMax: 2.4983
Overshoot: 0
Undershoot: 0
Peak: 2.4983
PeakTime: 0.1831
=========== System response characteristics for f = 0.6======
ans =
struct with fields:
RiseTime:
0.0276
SettlingTime: 0.0499
SettlingMin: 1.1261
SettlingMax: 1.2491
Overshoot: 0
Undershoot: 0
Peak: 1.2491
PeakTime: 0.0915
Thus, if you increase J you can see that the response becomes slow. The reverse happens if we increase f.