## Symbolic Math Toolbox |

We will analyze the dynamic behavior of a DC servomotor (schematic below). We will derive the system equations and derive closed form solutions for angular velocity for various input voltages.

We derive the system equations by applying Kirchhoff's voltage law and Newton's 2nd Law. We know is proportional to , therefore can be expressed as. We use this relationship in defining the first equation below.

omega := Symbol::omega:

armatureCircuit := Va(t) = La*ia'(t) + Ra*ia(t) + Kb*omega(t);

torqueEqn := J*omega'(t) + b*omega(t) = K*ia(t);

armatureCircuit := Va(t) = La*ia'(t) + Ra*ia(t) + Kb*omega(t);

torqueEqn := J*omega'(t) + b*omega(t) = K*ia(t);

To determine the relationship between angular velocity and input voltage, we start by taking the Laplace transforms of our equations.

transform::laplace::addpattern(omega(t),t,s, omega(s)):

transform::laplace::addpattern(ia(t),t,s,Ia(s)):

transform::laplace::addpattern(Va(t),t,s,Va(s)):

LT1 := transform::laplace(armatureCircuit, t, s);

LT2 := transform::laplace(torqueEqn, t, s);

transform::laplace::addpattern(ia(t),t,s,Ia(s)):

transform::laplace::addpattern(Va(t),t,s,Va(s)):

LT1 := transform::laplace(armatureCircuit, t, s);

LT2 := transform::laplace(torqueEqn, t, s);

We substitute initial conditions and into our Laplace transform equations.

LT1 := subs(LT1,ia(0)=0);

LT2 := subs(LT2,omega(0)=0);

LT2 := subs(LT2,omega(0)=0);

We solve the equations to get expressions for and .

G := solve([LT1, LT2],[Va(s),omega(s)],VectorFormat,IgnoreSpecialCases)

We extract the individual expressions from the result, and define the transfer function as the ratio of to . The inductance in the armature circuit is generally very small, so we assume La = 0.

Va(s) := G[1][1]:

omega(s) := G[1][2]:

TF := simplify(omega(s)/Va(s) | La = 0)

omega(s) := G[1][2]:

TF := simplify(omega(s)/Va(s) | La = 0)

__Constant Voltage Input__

We evaluate angular velocity for a constant voltage input,

.

Va(s) := 1/s:

omega(s) := TF*Va(s)

omega(s) := TF*Va(s)

We convert our angular velocity expression from the frequency domain back to the time domain by taking the inverse Laplace Transform. This gives us a closed form solution for , which we plot using specified motor parameters.

omegaSTEP := transform::invlaplace(omega(s), s, t)

plotfunc2d(omegaSTEP |Ra=0.2|b=0.04|J=0.0044|K=0.00006|Kb=0.055, t=0..2)

__Sinusoidal Voltage Input__

We now evaluate angular velocity for a sinusoidal voltage input,

.

Va(s) := 4/(s^2 + 16):

omega(s) := TF*Va(s)

omega(s) := TF*Va(s)

As we did with the constant input, we convert the angular velocity expression to the time domain by taking the inverse Laplace Transform. We then plot angular velocity using the same motor parameters as we used previously.

omegaSIN := transform::invlaplace(omega(s), s, t):

omegaSIN := simplify(omegaSIN)

omegaSIN := simplify(omegaSIN)

plotfunc2d(omegaSIN |Ra=0.2|b=0.04|J=0.0044|K=0.00006|Kb=0.055, t=0..2)