Contents
P5.1 DC Motor
clear variables
syms V ia th om R L J b kt kb k real
syms s
eq1=R*ia+kb*om-V;
eq2=(J*s+b)*om-kt*ia;
eq2=subs(eq2,ia,solve(eq1,ia));
eq3=s*th-om;
[A1,B1]=equationsToMatrix([eq2,eq3],[om,th]);
A2=subs(A1,[R,J,b,kt,kb,s],[1,.01,.05,.1,.1,0]);
B2=subs(B1,[R,kt,V],[1,.05,1]);
A=-double(A2);
B=double(B2);
G=ss(A,B,[1 0],0);
disp('Characteristic polynomials:')
[num,den]=tfdata(G,'v');
p=k*num+den;
vpa(p,2)
K=tf([1 10],1);
[num,den]=tfdata(K*G,'v');
p=k*num+den;
vpa(p,2)
K=tf([5 1],[1 0]);
[num,den]=tfdata(K*G,'v');
p=k*num+den;
vpa(p,2)
K=tf([1 5 1],[1 0]);
[num,den]=tfdata(K*G,'v');
p=k*num+den;
vpa(p,2)
K=tf([1 10],[1 1]);
[num,den]=tfdata(K*G,'v');
p=k*num+den;
vpa(p,2)
K=tf([1 1],[1 10]);
[num,den]=tfdata(K*G,'v');
p=k*num+den;
vpa(p,2)
Characteristic polynomials:
ans =
[ 1.0, 0.05*k + 0.06]
ans =
[ 0.05*k + 1.0, 0.5*k + 0.06]
ans =
[ 1.0, 0.25*k + 0.06, 0.05*k]
ans =
[ 0.05*k + 1.0, 0.25*k + 0.06, 0.05*k]
ans =
[ 1.0, 0.05*k + 1.1, 0.5*k + 0.06]
ans =
[ 1.0, 0.05*k + 10.0, 0.05*k + 0.6]
P 5.2 PID controller
disp('PID controller:')
K0=pid(1,1,1,.01);
K=pidtune(G,K0)
T=feedback(K*G,1);
disp('Step response:')
step(T)
PID controller:
K =
1 s
Kp + Ki * --- + Kd * --------
s Tf*s+1
with Kp = 1.61, Ki = 0.192, Kd = -0.972, Tf = 4.41
Continuous-time PIDF controller in parallel form.
Step response: