Symbolic Math Toolbox

Dynamic Analysis of a DC Motor


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

Define System Equations

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);

Derive Transfer Function

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

laplace::addpattern(omega(t), t, s, omega(s)):
laplace::addpattern(ia(t), t, s, Ia(s)):
laplace::addpattern(Va(t), t, s, Va(s)):
LT1 := laplace(armatureCircuit, t, s);
LT2 := laplace(torqueEqn, t, s);

We substitute initial conditions


into our Laplace transform equations.

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

We solve the equations to get expressions for



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


. 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)

Calculate Analytical Expression for Angular Velocity

Constant Voltage Input

We evaluate angular velocity for a constant voltage input,


Va(s) := 1/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 an analytical expression for

, which we plot using specified motor parameters.

omegaSTEP := ilaplace(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)

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 := ilaplace(omega(s), s, t):
omegaSIN := simplify(omegaSIN)
plotfunc2d(omegaSIN | [Ra=0.2,b=0.04,J=0.0044,K=0.00006,Kb=0.055], t=0..2)