DC Motor Control Design
? Maplesoft, a division of Waterloo Maple Inc., 2008
Given a model of a DC motor as a set of differential equations, we want to obtain both the transfer function and the state space model of the system. Then, we want to use the state space model to design a LQR controller and study the effect the R parameter in the LQR control design has on the controlled performance of the system.
System Definition
System Models
LQR Control Design
|
|
A DC motor converts electrical signals (voltage and current) into mechanical motion. The electrical and mechanical characteristics can be illustrated by a circuit diagram and a free body diagram respectively (shown in the diagram above).
|
System Definition
Define the Variables and the Parameters that describe the system.
Parameters
Name
|
Value
|
Units
|
Parameters
|
Moment of inertia of the motor ( )
|
|
|
Damping of the mechanical system ( )
|
|
|
Electromotive force constant ( )
|
|
|
Motor coil resistance ( )
|
|
|
Motor coil inductance ( )
|
|
|
# Retrieve Parameters Defined

Variables
Name
|
Description
|
Input Variables
|
|
Applied Voltage
|
Output Variables
|
|
Motor Shaft Angular Position
|
|
Motor Current
|
System Models
Differential Equation Model
To derive the model of the system, first, we apply Kirchhoff's voltage law around the circuit. The back EMF is proportional to the angular velocity of the motor shaft. Using the
command we get:
)(t))), `*`(R, `*`(i(t)))) = `+`(V(t), `-`(`*`(K, `*`((D(theta))(t)))))], [V(t)], [theta(t)])); -1; DynamicSystems[PrintSystem](sy...](/view.aspx?SI=1458/DCMotorControlDesign_24.gif)
)(t))), `*`(R, `*`(i(t)))) = `+`(V(t), `-`(`*`(K, `*`((D(theta))(t)))))], [V(t)], [theta(t)])); -1; DynamicSystems[PrintSystem](sy...](/view.aspx?SI=1458/DCMotorControlDesign_25.gif)
 |
(2.1.1) |
Second, we model the mechanical component of the motor as a second order differential system with moment of inertia
and damping ratio of
. The torque is proportional to the current
driving the motor.
)(theta))(t))), `*`(b, `*`((D(theta))(t)))) = `*`(K, `*`(i(t)))], [i(t)], [theta(t)])); -1; DynamicSystems[PrintSystem](sys...](/view.aspx?SI=1458/DCMotorControlDesign_31.gif)
 |
(2.1.2) |
The overall differential equation model in terms of the voltage,
, and angular position,
, is:
)(t))), `*`(R, `*`(i(t)))) = `+`(V(t), `-`(`*`(K, `*`((D(theta))(t))))), `+`(`*`(J, `*`(((`@@`(D, 2))(theta))(t))), `*`(b, `*`((D(the...](/view.aspx?SI=1458/DCMotorControlDesign_36.gif)
)(t))), `*`(R, `*`(i(t)))) = `+`(V(t), `-`(`*`(K, `*`((D(theta))(t))))), `+`(`*`(J, `*`(((`@@`(D, 2))(theta))(t))), `*`(b, `*`((D(the...](/view.aspx?SI=1458/DCMotorControlDesign_37.gif)
 |
(2.1.3) |
Transfer Function Model
To obtain the transfer function model of our system, we convert the overall differential equation model (
into a transfer function model using
command.
is the open loop transfer function for the angular position
from the input
and is defined as:
); -1; DynamicSystems[PrintSystem](TFopen)](/view.aspx?SI=1458/DCMotorControlDesign_45.gif)
 |
(2.2.1) |
State Space Model
The state space model of a system is defined as follows:
|
Name
|
Description
|
|
System input signal, p ? 1 vector
|
|
System output signal, m ? 1 vector
|
|
System state vector, n ? 1 vector
|
A
|
System matrix, n ? n matrix
|
B
|
Input matrix, n ? p matrix
|
C
|
Output Matrix, m ? n matrix
|
D
|
Direct through matrix, m ? p matrix
|
|
For the case of the DC motor, the states
,
and
represent current,
, angular position,
, and angular velocity,
, respectively.
To obtain the state space model of our system, we convert the overall differential equation model (
into a state space model using
command.
 |
(2.3.1) |
Model Analysis
The
command can be used to plot the angular position
with parameter set,
, initial conditions,
and input voltage signal,
defined below:
 |
(2.4.1) |
![[theta(0) = 0, (D(theta))(0) = 0, i(0) = 0]](/view.aspx?SI=1458/DCMotorControlDesign_72.gif) |
(2.4.2) |
, output = theta(t), initialconditions = ic, parameters = params, duration = 3, thickness = 2, gridlines = true, title =](/view.aspx?SI=1458/DCMotorControlDesign_73.gif)
, output = theta(t), initialconditions = ic, parameters = params, duration = 3, thickness = 2, gridlines = true, title =](/view.aspx?SI=1458/DCMotorControlDesign_74.gif)
, output = theta(t), initialconditions = ic, parameters = params, duration = 3, thickness = 2, gridlines = true, title =](/view.aspx?SI=1458/DCMotorControlDesign_75.gif)
The system can also be analyzed in the frequency domain. Substituting the parameter values into the open loop transfer function in
results in:
 |
(2.4.3) |
The above transfer function can be plotted as a magnitude plot and a phase plot.
](/view.aspx?SI=1458/DCMotorControlDesign_81.gif)
LQR Control Design
Step Responses
# LQR procedure
Our objective is to be able to rotate the shaft position,
, of the motor to specified desired positions. In control terms, this translates to minimizing the motor shaft position error. As such, we put higher weighting on the position state,
, in the Q matrix in our LQR controller design.
 |
 |
(3.1.1) |
 |
(3.1.2) |
The controller gain for the full state feedback LQR controller is then computed using the custom procedure LQR( ). With the Q matrix defined in
and
the result is the gain vector
given by:
 |
(3.1.3) |
The numeric solution can now be obtained for the step response of the open loop (uncontrolled) and closed loop (controlled) cases.
#Define Open loop and Closed l
Open loop (uncontrolled) response
|
Closed loop (controlled) response
|
Input functions used examine the open loop and closed loop response are defined as:
|
Determine the open loop Differential Equation Model in terms of the State Space variables , and .

 |
(3.1.4) |
|
The open loop response is defined as:

 |
(3.1.6) |
|
The closed loop response is defined as:

 |
(3.1.7) |
|
The plot of the open loop state response is:
|
The plot of the closed loop state response is:
|
The plot of the open loop state response is:
|
The plot of the closed loop angular position step response is:
|
In the controlled case, the shaft position of the DC motor follows the step change in the desired position (defined by the step input) and settles into the desired steady state value as expected.
How varying R affects the System Response
We want to vary the weighting factor R for the LQR controller to see how it affects the system output response.
The R factor is the weighting coefficient for the input signal. By increasing R, we are putting more penalty on the control signal.
As such, the resulting controller will try to minimize the control efforts used to achieve the desired output.
Consider the results obtained earlier for R = 0.1.
#Define Step response and Cont
Step response
|
Control Effort
|
First, recall the system step response output for the case R=0.1 developed previously. This will serve as our benchmark for comparison.
|
For comparison, we define an energy-like quantity (square of the input voltage) to give us an idea of the cost or the control effort required in operating the DC motor. Here, we show the control effort over time for the case R = 0.1.
|
|
|
Next, we generate the controller and the corresponding step time response for each value of R from 0.1 to 2. To compare the performance of each of the controllers, we define the control effort of the controller as the square of the input signal, summed over time. This associated control effort (or energy-like) value for each controller is the total cost in operating the individual controllers.
The following plot illustrates the total cost (integral of the energy like control function) for different values of R.
# Procedure to calculate total
To see the effect of varying R, you can drag the slider to select different values of R and observe the resulting step response and the control effort.
# Procedure controlling slider