Accelerating the pace of engineering and science

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

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

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

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)

### Calculate Closed Form Solution 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 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)

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)

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