% Filename: example5.m % % Description: This m-file computes and plots the exact step response of % a dc motor as well as the recursive step response found % from the differene equation approximation. % figure(1) % put plots in figure 1 clf; % clear figure 1 and memory clear; % Plot continuous time response of motor to Va(t)=15u(t) tmax = 0.03; % amount of time to run simulation KT = 4.07; % motor torque constant L = 0.00156; % motor inductance J = 0.0618; % motor rotor inertia R = 1.89; % motor resistance B = 6.68; % motor friction Kb = 3.01; % motor back emf constant num = [KT]; % numerator of motor TF den = [L*J R*J+B*L B*R+KT*Kb]; % denominator of motor TF printsys(num,den,'s'); % display H(s) t = 0:0.00005:0.03; % plot response to Va=15u(t) y = step(num*15,den,t); plot(t,y); hold on; grid; % Plot discrete-time response of motor to Va[n]=15u[n] w/T=0.0005 T = 0.0005; % sample interval wprev1 = 0; % w[1] = wdot(0)*T + w(0) wprev2 = 0; % w[0] = w(0) = 0 for n=2:tmax/T, % loop over n if n>=2, % va[n]=15u[n] => va[n-2]=15u[n-2] vaprev2 = 15; else vaprev2 = 0; end w = (2-(R*J+B*L)*T/(L*J))*wprev1 + ... ((R*J+B*L)*T/(L*J) - 1 - (B*R+KT*Kb)*T*T/(L*J))*wprev2 + ... KT*T*T/(L*J)*vaprev2; % DC motor difference eqn wprev2 = wprev1; % store values for next iteration wprev1 = w; nTvec(n-1) = n*T; % store nT,w into vectors for plotting wvec(n-1) = w; end nTvec = [0*T 1*T nTvec]; % put IC's into nT,w vectors wvec = [0 0 wvec]; plot(nTvec, wvec, 'o') % plot discrete-time approximation legend('w(t) vs. t', 'w[n] vs. nT w/T=0.0005'); xlabel('time (sec)'); ylabel('angular velocity (krpm)'); title('Motor Step Response for 15V step input'); hold off;MATLAB Plots Generated from Three Separate Runs: