Symbolic Math Toolbox

Deriving a Closed Form Solution for DC Motor Velocity

Introduction

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.

image

Define System Equations

We derive the system equations by applying Kirchhoff's voltage law and Newton's 2nd Law.  We know math is proportional to math, therefore can be expressed asmath.  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);

math
math

Derive Transfer Function

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

math
math

We substitute initial conditions mathand math into our Laplace transform equations.

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

math
math

We solve the equations to get expressions for math and math.

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

math

We extract the individual expressions from the result, and define the transfer function as the ratio of math to math.  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)

math

Calculate Closed Form Solution for Angular Velocity

Constant Voltage Input

We evaluate angular velocity for a constant voltage input,
math.

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

math

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 math, which we plot using specified motor parameters.

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

math

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

MuPAD graphics

Sinusoidal Voltage Input

We now evaluate angular velocity for a sinusoidal voltage input,
math.

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

math

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)

math

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

MuPAD graphics