By
Waleed Ahmed Mohammed Hussein Ahmed
(B.Sc.(HONOUR) in Telecommunication,
University of Khartoum 2003)
Supervisor:
Professor Sharief Fadul Babikir
March 2014
ABSTRACT
The objective of this project is to design a discrete PID controller for DCMotors
by using embedded systems techniques. To design a discrete PID controller a
microcontroller "ATMEGA 32A" was used accompanied with an electronic circuit.
The design tries to achieve technical objectives like small settling time value . A
performance evaluation study was done using the "ISIS Professional" simulator
and "MATLAB" for the designed discrete PID controller. The discrete PID
controller during this study successfully maintained the DCmotor speed at a
constant value on the event of mechanicalload changes . The discrete PID
controller also correctly responded to the speed changes requests. The discrete
PID controller also showed small settling time when controlling medium size
DCmotors and it is anticipated to have smaller settling time when controlling
small size DCmotors.
i
اﻟﻤﺴﺘﺨﻠﺺ
ﻣﻮﺗﻮرات اﻟﺘﯿﺎر اﻟﻤﺴﺘﻤﺮ ﻋﺎدة ﻣﺎ ﺗﺴﺘﻌﻤﻞ ﻓﻲ اﻟﺘﻄﺒﯿﻘﺎت اﻟﺘﻲ ﯾﺤﺘﺎج ﻓﯿﮭﺎ ﻟﻠﻤﺤﺎﻓﻈﺔ ﻋﻠﻰ ﺳﺮﻋﺔ اﻟﻤﻮﺗﻮر ﻋﻠﻰ
ﻗﯿﻤﺔ ﺛﺎﺑﺘﺔ .ﻣﺘﺤﻜﻤﺎت ال PIDﺗﺴﺘﻌﻤﻞ ﻓﻲ اﻟﺘﺤﻜﻢ ﻋﻠﻰ ﺳﺮﻋﺔ ﻣﻮﺗﻮرات اﻟﺘﯿﺎر اﻟﻤﺴﺘﻤﺮ ﻟﺠﻌﻞ اﻟﺴﺮﻋﺔ ﺗﺴﺘﻘﺮ
ﻋﻠﻰ ﻗﯿﻤﺔ ﻣﻌﯿﻨﺔ ھﺬه اﻟﻘﯿﻤﺔ ﯾﺨﺘﺎرھﺎ اﻟﻤﺴﺘﺨﺪم .ھﻨﺎك ﻋﺪة اﻧﻮاع ﻣﻦ ﻣﺘﺤﻜﻤﺎت ال PIDﺗﺴﺘﻌﻤﻞ ﻓﻲ ﻣﺨﺘﻠﻒ
ﺣﻘﻮل اﻟﺼﻨﺎﻋﺔ .ﯾﮭﺪف ھﺬا اﻟﻤﺸﺮوع اﻟﺒﺤﺜﻲ اﻟﻰ ﺗﺼﻤﯿﻢ ﻣﺘﺤﻜﻢ PIDﻣﺘﻘﻄﻊ ﯾﺘﺤﻜﻢ ﻓﻲ ﺳﺮﻋﺔ ﻣﻮﺗﻮرات
اﻟﺘﯿﺎر اﻟﻤﺴﺘﻤﺮ ,ﺗﻢ ﺗﺼﻤﯿﻢ اﻟﻤﺘﺤﻜﻢ ﺑﺎﺳﺘﻌﻤﺎل ﺗﻘﻨﯿﺎت ال " ." embedded systemﺗﻢ ﺗﺼﻤﯿﻢ اﻟﻤﺘﺤﻜﻢ
ﺑﺎﺳﺘﻌﻤﺎل اﻟ ﻤﺘﺤﻜﻢ اﻟﺪﻗﯿﻖ" "ATMEGA 32A microcontrollerوﻣﻌﮫ داﺋﺮة اﻟﻜﺘﺮوﻧﯿﺔ ﻣﺼﺎﺣﺒﺔ.
اﻟﺘﺼﻤﯿﻢ ﯾﺤﺎول ان ﯾﺤﻘﻖ ﺟﻤﯿﻊ اﻻھﺪاف اﻟﺘﻘﻨﯿﺔ اﻟﻤﺮﻏﻮﺑﺔ ﻣﺜﻞ ﺗﻘﻠﯿﺺ زﻣﻦ اﻻﺳﺘﻘﺮار) (settling timeﻻﻗﻞ
ﺣﺪ ﻣﻤﻜﻦ .ﺗﻢ ﻋﻤﻞ دراﺳﺔ ﻟﺘﻘﯿﯿﻢ اﻻداء ﻟﻠﺘﺼﻤﯿﻢ ﺑﺎﺳﺘﻌﻤﺎل ال" "ISIS Professional simulatorو
" "MATLABو ﺗﺤﺎول اﻟﺪراﺳﺔ اﻟﺒﺤﺚ ﻋﻦ اﻟﻤﺸﺎﻛﻞ اﻟﻤﻮﺟﻮدة ﻓﻲ اﻟﺘﺼﻤﯿﻢ و ﻛﯿﻔﯿﺔ ﺣﻠﮭﺎ .ﻣﻦ اﻟﺪراﺳﺔ
ﻣﺘﺤﻜﻢ ال PIDاﻟﻤﺼﻤﻢ ﺣﺎﻓﻆ ﻋﻠﻰ ﺳﺮﻋﺔ ﻣﻮﺗﻮرات اﻟﺘﯿﺎر اﻟﻤﺴﺘﻤﺮ ﻋﻠﻰ ﻗﯿﻤﺔ ﺛﺎﺑﺘﺔ ﻓﻲ ﺣﺎﻟﺔ ﺗﻐﯿﺮ اﻟﺤﻤﻞ
اﻟﻤﯿﻜﺎﻧﯿﻜﻲ .ﻣﻦ اﻟﺪراﺳﺔ اﯾﻀﺎ ﻣﺘﺤﻜﻢ ال PIDاﻟﻤﺼﻤﻢ اﺳﺘﺠﺎب ﻻواﻣﺮ ﺗﻐﯿﺮ اﻟﺴﺮﻋﺔ ﺟﯿﺪا .ﻣﻦ اﻟﺪراﺳﺔ
اﯾﻀﺎ ﻣﺘﺤ ﻜﻢ ال PIDاﻟﻤﺼﻤﻢ أظﮭﺮ زﻣﻦ اﺳﺘﻘﺮار ﺑﺴﯿﻂ ﻋﻨﺪﻣﺎ ﯾﺘﺤﻜﻢ ﺑﻤﻮﺗﻮرات اﻟﺘﯿﺎر اﻟﻤﺴﺘﻤﺮ اﻟﻤﺘﻮﺳﻄﺔ
اﻟﺤﺠﻢ وﻣﻦ اﻟﻤﺘﻮﻗﻊ ان ﯾﻈﮭﺮ زﻣﻦ اﺳﺘﻘﺮار اﻗﻞ ﻋﻨﺪﻣﺎ ﯾﺘﺤﻜﻢ ﺑﻤﻮﺗﻮرات اﻟﺘﯿﺎر اﻟﻤﺴﺘﻤﺮ ﺻﻐﯿﺮة اﻟﺤﺠﻢ.
ii
ACKNOWLEDGEMENT
First of all I would like to express my intense gratitude and appreciation
to respectworthy Professor Sharief Fadul Babikir for all his assistances,
supervision , and advices during the course of the project research.
Second I would like also to express my great appreciation to Engineer
Yasir Adam the chief of the electronics laboratory of the university of
khartoum. For his great help in the technical issues.
iii
Dedication
This thesis is dedicated to my Mother and Father and to all who have
supported me during the period of the project research.
iv
Table of Contents
ABSTRACT i
اﻟﻤﺴﺘﺨﻠﺺ ii
ACKNOWLEDGEMENT iii
DEDICATION iv
TABLE OF CONTENTS v
LIST OF FIGURES viii
LIST OF TABLES x
ABBREVIATIONS x
CHAPTER 1: INTRODUCTION 1
1.1 Motivation 1
v
2.4.2 ZieglerNichols Method 12
2.4.2.1 ZieglerNichols Open Loop Method 12
2.4.2.2 ZieglerNichols Close Loop Method 14
4.5 Conclusion 43
vi
5.4 The Microprocessor and The Analogue to Digital Converter(ADC) 48
REFERENCES 58
vii
LIST OF FIGURES
Figure 2.1 PMode Scheme. 4
viii
Figure 4.2 Discrete PIDcontrolling of DCMotor2. 35
Figure 5.6 Discrete PID controlling with setting point value of 5 rad/sec. 52
Figure 5.7 Discrete PID controlling with setting point value of 15 rad/sec. 53
Figure 5.8 Discrete PID controlling with setting point value of 22.5 rad/sec . 54
ix
LIST OF TABLES
Table 2.1 ZieglerNichols recommendations for Open loop test. 14
ABBREVIATIONS
ADC Analogue to Digital Converter.
PV Process Variable.
SP Setting Point.
x
Chapter One
Introduction
1. Introduction
Nowa days , most feedback control systems deploy PIDcontrollers. PIDcontrollers are the
most essential elements in early control systems and became the standard tool when process
control commenced in the 1940s. In recent process control, more than 95% of the control
systems are PID type. PID controller is an important component of a distributed control
system. . PID controllers are also combined with logical, and sequential function blocks to build
up sophisticated automation systems . PID control is used at the lowest level of complicated
multivariable controlling systems. Thus PID controllers are said to be the “bread and butter’ of
control engineering. It is an important ingredient in every control engineer’s tool box.
This ResearchProject discusses the use of PIDControllers in stabilizing the speed of DC
Motors at a selected value. PID controllers for DCmotors were subjected to many changes in
technology, from mechanics and pneumatics , to vacuum tubes, to transistors, and to
microprocessor integrated circuits (Embedded systems). The microprocessor has an intense
influence on the PID controllers for DCMotors. Practically all the PID controllers for DC
Motors are based today on microprocessors. This provides additional features to the controller
like automatic tuning, and continuous adaptation.
1.1 Motivation
PID controlling is widely used in DCMotors systems in stabilizing the angular velocity of
DCmotors at a constant value. This kind of application is widely found in many areas of recent
industry. PIDcontrolling of DCMotors is used in drilling machines , where the drilling speed
must be maintained at a specified value during digging through the ground layers. PID
controlling of DCMotors is used in packing industry to stabilize the Packing machines to a
constant speed during the packing process. It is also used in Water Pumpers in applications
where it is desired the pumper to work at a constant speed. It is also used in Liquid
Centrifuges in maintaining the liquid speed to a constant value during the rotation. PID
controlling of DCMotors is used also in various applications in the industry and there are
different PIDController designs used by manufacturers. Since the importance of this kind of
motor controlling this ResearchProject discusses the mechanisms, theorems , and schemes of
PID controlling of DCMotors.
The need of maintaining the angular speed of DCMotors during operation at a specified
value becomes recently one of the major concerns of ControlEngineers. Since this type of
application is increasingly needed in recent industry. PIDControllers are one of the techniques
that are used to control the angular speed of DCMotors. This ResearchProject shows how
PID Controllers are very powerful in stabilizing DCMotors speed at a specified value.
There are different types of PIDControllers. Different PIDControllers adopt different PID
algorithms and schemes to implement their functions. Now discrete PIDcontrollers that use
1
Embedded system techniques are commonly used for controlling DCMotors. The main aim of
this ResearchProject is to design and implement a discrete PIDController capable to control
the speed of DCMotors and to stabilize the speed at a selected value.
. To show using MATLAB as a simulating aid that PIDControllers which use continuous
PIDalgorithms are very powerful in stabilizing DCMotors angular speed at a specified value.
. To also show using MATLAB as a simulating aid that discrete PIDControllers which use
discrete PIDalgorithms are very powerful in stabilizing DCMotors angular speed at a
specified value.
The research was split to two parts. The first part tries to prove the efficiency of continuous and
discrete PIDControllers in stabilizing the speed of DCMotors at a selected value. Continuous
PIDControllers use continuous PID algorithms, and discrete PIDControllers use discrete PID
algorithms. The second part of the research tries to design and implement a discrete PID
Controller capable to stabilize DCMotors speed at a selected value. A performance
evaluation study was also made for the designed discrete controller to know the problems in
the design and to find the solutions.
In this thesis "Chapter 2 " discusses PID controlling mechanisms and schemes ,and how to
tune up the PIDcontroller parameters. In " Chapter 3", modeling and simulating of a PID 
Controller controlling the speed of a DCMotor using a continuous (not discrete) PID
algorithm. In " Chapter 4", modeling and simulating of a PID Controller controlling the
speed of a DCMotor using a discrete PID algorithm. " Chapter 5" introduces a total PID
controller(for DcMotors) design ,the design adopts a discrete PID algorithm to implement the
controller function. " Chapter 6" is a performance evaluation study for the designed
controller . The evaluation considers the results obtained from simulations made.
2
Chapter Two
PID Control Mechanisms
2PID Control Mechanisms
First starting by mentioning the main features of the PID controllers. The known
“textbook” version of the PID process is described in 2 equations[3],[4]:
( )= ( )− ( ) (2.1)
( )= ( )+ ∫ ( ) + (2.2)
Where PV is the Process variable to be controlled ,SP is the setting point the process must
output, e is the error desirable to be small. u is the PID control signal(used to drive the Process
directly). The control signal is the sum of three terms: the Pterm which is proportional to the
error e, the Iterm which is proportional to the integral of the error e, and the Dterm which is
proportional to the derivative of the error 'e'. The KP ,KI , and Kd are the parameters of the PID
controller system that must be selected carefully to minimize the observed error e. The Pterm,
Iterm ,and Dterm are connected to present , future ,and past respectively .
There are 4 basic behavior or types of PID controllers found in Industry and Processes :the P
Controller(proportional),PI Controller(proportional integrative),PID Controller(proportional
integrative derivative), and PD(proportional derivative) Controller. Each type has its own
characteristics and applications where it found. The prevalent scheme in industry is PID although
PI is wide found in industry where timing is no longer considered as a main factor.
The relation here between the control signal u (used to drive the Process directly) and the error e
is depicted in Eq.(2.3) and Eq. (2.4) [3],[4] .
( )= ( ) (2.3)
( )= ( ); (2.4)
Fig. (2.1) depicts the PControl scheme[4]. Where e is the error between the setting point SP
and the Process Output variable(PV). As noted before that this error e is desirable to be
eliminated. But the Palgorithm rather produces an amount of error in the steady state time
known as the' steady state error'[4], This Error drew smaller as the KP the proportional gain
became bigger and bigger.
The disturbance effects to the Process output also desirable to be eliminated by the Control
System .
3
1 Simplicity in control design. And simple to tune up(selecting of the Kp gain).
2 Simplicity in Algorithm of implementation when using microcontrollers(Embedded
system).
3 But lack in performance .Since the disturbance effects to the Process output will not be
omitted completely.
4 The controlled system produces Steady state error that can be mitigated by increasing the
proportional gain KP .
5 Large selections of the K P will cause the system to oscillate and become unstable. This
issue doesn't exist if the Process is a first order process.
6 Choosing Kp as large as possible will make the system more responsive and dynamic to
changes in the Process Output. But will produce large overshoot at the start point.
 +
Disturbance
The PController is used in systems that can tolerate constant small steady state error (large
proportional gain KP). Such systems must be first order processes. Example of such system is
Controlling of liquid level in tanks[4].
The relation here between the control signal u and the error e is depicted in Eq. (2.5) and
Eq.(2.6) [3],[4] ( Where u is the control signal to the Process, e is the error . Kp and KI are the
proportional ,and integrative gains. s is the Laplace variable) .
4
( )= ( ) + ∫ ( ) (2.5)
( )
( )= ( )+ (2.6)
Fig.(2.2) depicts the PIcontroller system[4]. The Integrative action of the PIController makes a
refinement to the PController, since it eliminates the steady state error. As the coefficient KI
increases the system response increases, the settling time decreases(time from the start until the
error is 0) ,but the overshoot at start point increases[1].
.
+ e +
u + PV
∑ ∑ PROCESS
∑
SP
 +
+
KP
Disturbance
1The integrative action will eliminate also the disturbance effects to the Process output.
2More complex in control design than Pcontroller and require complex tuning(selecting of the
Kp and K I gain).
4Increasing the KI coefficient makes the system more responsive and hence increasing
performance. Though increasing the KI to high values may cause the system to oscillate and
become unstable.
5
5The integrative action has a negative effect on the speed of the response .
PI controllers are very often used in industry, especially when speed of the response is not an
important issue.
The relation here between the control signal u and the error e is depicted in Eq. (2.7) and
Eq.(2.8) [3],[4] ( Where u is the control signal to the Process, e is the error .Kp and Kd are the
proportional ,and derivative gains. s is the Laplace variable. e(0) is the error at the start point ) .
( )= ( ) + (2.7)
( )= ( )+ ∗ ( )− ∗ (0) (2.8)
+ + u + PV
e ∑ PROCESS
∑ ∑
 + +
KP
Disturbance
SP
The derivative action makes the system more responsive to the Process output changes and thus
powerful in mitigation of the Process disturbances . It also decreases the settling time of the
system. Though these advantages for PDControllers for adopting derivative ,it resembles the P
controller in the existence of steady state error and disturbances in the Process output . The PD
controller doesn't eliminate the disturbances in the Process output, but it rather reduces it
according to the K p , and Kd gains selected. Choosing KP ,and Kd at high values reduces more
the disturbance effects in the Process output.
6
For Thermal processes with large inertia, since dynamics is slow, PDcontrol is required
for control of such processes. PI control would slow the dynamics of the system.
PDcontroller is often deployed in control of moving objects such as flying and
underwater vehicles, ships, and rockets . The reason is to make the system more responsive to
the speed(Process output variable) changes and to stabilize it.
The relation here between the control signal u and the error e is depicted in Eq. (2.9) and
Eq.(2.10) [3],[4] ( Where u is the control signal to the Process, e is the error .Kp , KI ,and Kd are
the proportional ,Integrative and derivative gains. s is the Laplace variable. e(0) is the error at
the start point ) .
( )= ( ) + + ∫ ( ) (2.9)
( )
( )= ( )+ ∗ ( ) + − ∗ (0) (2.10)
1The algorithm will eliminate the steady state error and the disturbance in the Process output.
2More complex in control design than Pcontroller and PIcontroller, and requires complex
tuning(selection of Kp , KI ,and Kd ) .
5The derivative action makes the system fast and responsive to changes in the Process
Variable output.
6Increasing the gains Kp , KI ,and Kd will decrease the settling time(time from start point until
the error become 0). Though increasing these coefficients to high values would cause the
system to oscillate and become unstable.
7 PID controller is used when dealing with high order processes(other than first order
processes).
PID controller is often used in industry, and also used in the control of mobile objects .
Conventional autopilots are PID type controllers[4].
7
Figure 2.4 PIDController .
8
Control signal u . This is called “derivative kick” and desirable by manufacturers to be
removed.
An alternative implementation of Parallel PID controllers is to remove the derivative from the
error signal e and to remain it to the Process Output . This topology is called "PID Form
Parallel Topology". Eq.(2.11), Eq.(2.12)[4], and Fig.(2.5)[4] show this method(Where u is the
control signal to the Process, e is the error , and PV is the Process Variable output. Kp , KI ,and
Kd are the proportional ,Integrative and derivative gains. s is the Laplace variable. PV(0) is the
Process Output at the start point.).
( )= ( ) − + ∫ ( ) (2.11)
( )
( )= ( )− ∗ ( ) + + ∗ (0) (2.12)
.
+
+ u
Process PV
∑ +
e ∑


KP
SP
The Pterm (Proportional term) in the PIDForm and PID Form can cause damage to the
process if the set point signal consists of some discontinuities . If the Process transfer function
have a derivative behavior or composes of a derivative action, the discontinuity will produce a
high value at the process output , that will cause damage to the Process components. It is wise
to remove also the Pterm from the error signal e and to remain it to the Process Output. This
Topology is called "IPD Form Parallel Topology[4]".
( )= ∫ ( ) − ( ) − (2.13)
( )
( )= + ∗ (0)− ( )− ∗ ( ) + (2.14)
9
Eq.(2.13), Eq.(2.14)[4], and Fig.(2.6)[4] show this method(Where u is the control signal to the
Process, e is the error , and PV is the Process Variable output. Kp , KI ,and Kd are the
proportional ,Integrative and derivative gains. s is the Laplace variable. PV(0) is the Process
Output at the start point.).
u
+ e +
∑ . ∑ PROCESS
  PV

KP
SP
PID parallel form usually used by manufacturers ,though IPD also used in such application
where Process protection from setting point (SP) discontinuities is an essential issue.
In this topology the PID Controller comprises of two cascaded transfer functions as shown in
Eq.(2.15), Eq.(2.16) ,Eq.(2.17)[4] and Fig.(2.7)[4].(Where u is the control signal to the Process, e
is the error , and PV is the Process Variable output. Kp , KI ,and Kd are the proportional
,Integrative and derivative gains. s is the Laplace variable . e(0) is the error at the start point.).
From Eq.(2.16) the Pterm(proportional) ,Iterm(Integrative), and Dterm(derivative ) have
relations with each other .That is deemed to the relations between their Coefficients. So this
scheme is said to be "Interactive".
( )= ( + 1) ( ∫. + ) ∗ ( ) (2.15)
( )= + ∫ +( + ) ( ) − (0) (2.16)
( ) ( )
( )=( + ) ( )+ ∗ ( ) + − − (0) (2.17)
10
.
+ + + u PV
∑ e ∑ ∑ PROCESS
 + +
SP
A very important issue in a noisy environment , is the Setting point (SP) input value would be
provided with noise. Usually such noise exhibits high frequency. The pure derivative action for
high frequency noise will produce large signals in the output of the controller to the' Process'.
That will impair the 'Process' Components. Usually in such cases the derivative function would
be designed with a noise filtering transfer function[1],[4] (Low pass filter)as shown in Eq.(2.18) ,
Eq.(2.18) and Eq.(2.19)[1], u is the control signal to the Process, and e is the error . Kp ,and KI
are the proportional , and Integrative gains. s is the Laplace variable .Td is the derivative time.
N is the filter coefficient.)
= (2.18)
( )
( )= ( )+ + ( ) (2.19)
Eq.(2.19) manifests the PIDController transfer function in the Laplace domain with adopting
the new derivative function. Typical values of N(filter coefficient) used by manufacturers are 8
to 20.
Tuning a PID controller loop is the adjustment of its (proportional gain, integral gain,
derivative gain) to the optimum values so as the desired control response be achieved.
PID tuning is a hard issue, because the tuning must satisfy complex criteria , constraints, and
objectives. There are many methods for tuning , this section describes some methods found in
literature and industry.
11
2.4.1 Manual tuning
This method for setting the parameters of a PIDmode controller manually[9]. First a PID
Controlling loop for the targeted Process is constructed. Then the KI, and Kd values are set to
zero. Then increasing the KP value until the output of the loop oscillates, then the KP value is
set to approximately half of this value . Then increasing KI until the steady state error is
eliminated in sufficient time(the time must be as small as possible). Finally, increasing Kd
until a small settling time(time from the start point until the error e is 0 in the loop) is
observed.
Many of the Processes in industry are stable and have a monotonous transfer function with
transport delay. The transfer function of such Processes can be fitted to the First Order
Process Model With Transport Delay(FOPMTD) shown in Eq.(2.20).Where FP is the
transfer function of (FOPMTD),KP is the Process gain, TP is the time constant., and τ is the
transport delay.
= ( . )
+
The open loop method [4],[5] is to apply directly a step signal to the targeted Process input. And
then monitoring the open system response through time. Then fitting the Process to (FOPMTD:
First Order Process Model With Transport Delay). Then obtaining the parameters of the model
shown in Eq.(2.20). A way of obtaining the parameters graphically is shown in Fig.(2.8) . Where
y(t) is the response of the targeted Process when applying a unit step of magnitude A to the
targeted Process input. KP can be obtained from Eq.(2.21). TP ,and τ can be obtained
graphically as in Fig.(2.8) .
( ( ))
= ( . )
12
Figure 2.8 Step response of ZieglerNichols Open loop method.
= μ, μ= ( . )
After obtaining KP,TP, and τ, the constant a is obtained by the Eq.(2.22). Defining the P, PI,
and PID parameters as:{K for Proportional term ; for Integrative term ; K*Td for Derivative
term}. The recommended values of the parameters K,TI ,and Td for the Controllers types of
P, PI, PID respectively can be obtained from table 2.1 after computing the constant a , and τ.
Here first a Ptype Controlling loop for the targeted Process is constructed [4],[5]. Next , the
gain of the Pcontroller (Ku) is set to a small value. Then increasing the gain Ku of the Closed
loop system until a constant oscillations at the Process output is observed. This gain Ku that
causes the system to oscillate constantly is named the "ultimate gain" and the time of
oscillations is denoted by Tu. Defining the P, PI, and PID parameters as:{K for Proportional
term ; for Integrative term; K*Td for Derivative term}. And considering the values Ku(ultimate
gain) and Tu(time of oscillations at the ultimate gain) the recommended values of the
parameters K,TI, and Td for each controller type (P,PI, and PID) can be obtained from table 2.2.
13
Table 2.1 ZieglerNichols recommendations for Open loop test.
14
Table 2.3 CHR tuning formulae for setpoint regulation.
P 0.3/a 0.7/a
15
Table 2.5 Controller parameters of Cohen–Coon method.
Controller KP TI Td
type
P .
( + )
−
. . 3.3 − 3
PI ( + )
− 1 + 1.2
PID .
( +
.
)
2.5 − 2 0.37 − 0.37
−
1 − 0.39 1 − 0.81
16
Chapter Three
PID Control of DCMotors
3PID Control of DCMotors
In this section discusses and examine how powerful the PID scheme in controlling the speed of
DCmotors. The PID controller was examined when controlling DC motors in these situations:
1 Fixing the Setting point and observing the steady state angular velocity of the DCmotor, and
observing the steady state error(error between the selected Settingpoint value and the motor
angular velocity), and observing the Settling time( time from the start point until the Motor
rotates with the Settingpoint value as angular velocity).
2 Examining the PIDcontrolling scheme when changing the Mechanical load of the DCMotor
during the operation of the controlled motor with fixed Setting point value. Here the steady
state angular velocity, the steady state error , and the Settling time all are observed prior and
after the load variation.
3Examining the PIDcontrolling scheme when changing the Setting point value during the
Motor operation with fixed Mechanical load. Here the steady state angular velocity, the steady
state error , and the Settling time all are observed prior and after the Settingpoint variation.
The PID algorithm that is used here and controls the DCmotors is continuous through the
time (not discrete as in Chapter 4) . This algorithm is discussed in details in section (2.1.4
Chapter 2).
Since the examinations were done using simulation aid and practical examination can be
very hard in such situations , first the DCMotor and the PIDcontroller must be modeled in the
time and Laplace domains. The examinations were done using MATLAB, since it is very
powerful in simulation of control systems.
The examination were performed to 2 types of DCmotors according to size . Small size and
Medium size DCMotors. The reason is to monitor the performance of the PID controlling
algorithm in different sizes of DCMotors. And how the efficiency of the algorithm can be
affected by the size of the motor.
2 PMDC Motor Model TM110 200W ,200 volt ,1.2 Ampere, 2000 RPM(No load speed) serial
Number TC040807.Diameter 60.5mm. Denoted in the study by DCMotor2. This motor
represents medium size Motor type(Figure 3.2). {We note this motor resides in the Lab of power
and machinery of University of Khartoum}
17
Figure 3.1 Pittman Part Number 6312S001R1 (DCMotor 1).
DCMotor2
18
3.1 DCMotor Modeling
Modeling of DCMotors for all sizes can be split to 2 parts. Mechanical Part ,and Electrical
Part(Fig(3.3))[7].
( )
( )= ( )+ ( )+ { } (3.1)
( )
= ( )− ( )− ( ) { ℎ } (3.2)
( )= ( )+ ( )+ ( )− (0) { ℎ } (3.3)
( )= ( )− ( )− ( ) { ℎ ℎ } (3.4)
Eq. ( 3.1), Eq. ( 3.2) , Eq. ( 3.3) , and Eq. ( 3.4)[7],[8] show the electrical and mechanical parts in
the time and Laplace domains for any DCMotor type. Where V is the applied voltage in volt,
W is the motor angular velocity in rad/sec , i is the current flowing in amps , R is the armature
resistance in ohm, L is the Motor inductance in hennery , KE is the BackEMF constant, KI is
the torque constant, J is the Motor armature inertia (=0.5*mass(in Kg)*r2(radius in meter)), TL is
the applied mechanical load , B is the Viscous friction constant , i(0) is the flowing current
through the armature coils at the start point, and s is the Laplace variable.
Joining Eq. ( 3.3) and Eq. ( 3.4) the overall transfer function of DCMotors can be obtained.
Eq. ( 3.5) [7],[8] shows the overall Motor transfer function (MO(s)). Eq. ( 3.6) [7],[8] gives the
angular velocity W response in term of the input entities {input voltage response V(s),
Mechanical Load TL(s)}. Eq. ( 3.6) can be derived easily from Eq. ( 3.3), and Eq. ( 3.4). The
term { ( + ) ( )∗ ( )} represents the contribution of the Mechanical load to the
resultant angular velocity W . Whereas the term { (0) ∗ ( ) } represents the transient of
the angular velocity W . . ( )= (3.5)
19
3.2 Modeling A PIDController Controlling a DCMotor
The PIDController and the DCMotor can be modeled in the Laplace domain using the
theorem of PID controllers in section (2.1.4 Chapter 2), and the Motor model in section (3.1).
Here a continuous PID algorithm through the time is used to control the DCmotors(not
discrete as in Chapter 4) . This algorithm was discussed in details in section (2.1.4 Chapter
2). Using Eq. ( 2.10) , Eq. ( 3.5) and Eq. ( 3.6) the overall controlling system can be modeled
in the Laplace domain. Then the model shown in Fig.(3.4) [5] can be constructed. Where the
parameters of the model were discussed previously. KP ,KI, and K d are the PIDController
Proportional, Integrative ,and Derivative gains respectively. MO(s) is the DCMotor transfer
function mentioned in section (3.1). u is the motor control signal(input voltage). e is the error
signal for the PIDcontroller(mentioned in Chapter 2). e(0) is the error value at the start point
(mentioned in Chapter 2). SP(s) is the setting point for the controller given in the Laplace
domain. The MechanicalLoad Term(denoted by ML), and the Motor Transient Term(denoted
by MT) were discussed in section (3.1).The PIDController Transient term was mentioned in
section (2.1.4 Chapter 2). W(s) is the response in the Laplace domain of the angular velocity of
the motor.
( + ) ( )∗ ( )
KP
e + 
+ + ucontrol DCMOTOR W(s)
∑ ∑ ∑
Transfer Function: MO(S)
+  + +

(0) ∗ ( )
∗ (0)
SP(s)
Figure 3.4 Model of a PIDController controlling a DCMotor
20
If the DCMotor parameters mentioned in section(3.1) was known and the PID controller gains
was selected , the overall control system can be simulated using the model in Fig.(3.4) and
MATLAB.
The disturbance to this system is a Mechanical load to the DCmotor . So the disturbance is
included to the term TL in Eq. ( 3.6), and Fig.(3.4). So TL stands for the Motor Mechanical
load plus the disturbance.
Going forward and from Fig.(3.4 ) the total response of the angular velocity of the motor W(s)
can be obtained .Deploying the theorem of the Feed Back Control System W(s) is found by
the Eq. ( 3.8)[5] . PID(s) is the transfer function of the PIDController as shown in Eq. ( 3.7)[5].
( )= + + (3.7)
( )∗ ( ) ( ) ( ) ( ) ( )∗ ( )
( )= − + − (3.8)
( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
Eq. ( 3.8) and Fig.(3.4) are very valuable in simulating the total control system.
This section examines a PIDController driving DCMotors with fixed Setting point value .
First consider a PIDController controlling the speed of Motor1(small size) in Fig.(3.1). The
PID controller is stabilizing the DCMotor speed at a fixed value(setting point) . The previous
controlled Motor system was simulated using MATLAB , the model in Fig.(3.4), and Eq. (
3.8) . Motor 1 parameters used in the simulation were known from the manufacturer. The
measured item that was desired to obtain from the simulation is Motor1 angular Velocity
W(t) versus time. The simulation time was taken from the start point of the control system until
Motor1 angular velocity is stable. The control system was simulated using MATLAB program
code shown in Appendix( A). Firstly , the simulation was done with PIDcontroller
parameters{KP= 70, K I=1,K d=1}, and fixed setting point value 380 rad/sec and Motor 1
Mechanical Load equals 40% of the maximum torque. Then Motor1 angular velocity was
monitored versus time and Fig.(3.5) was achieved. From Fig.(3.5) the steady state value of
the velocity is 380 rad/sec with error 0 from the setting point value. The settling time is 133
msec. Secondly the previous simulation was repeated but now fixing the Setting point value at
750rad/sec and Motor1 mechanical load equals 80% of the maximum torque, and using the
same PID parameters Values. Then Fig.(3.6) of Motor 1 Angular velocity versus time was
achieved . From Fig.(3.6) the steady state value of the velocity is 750 rad/sec with error 0 from
the setting point value. The settling time is 149 msec.
It is concluded from the first experiment that the PIDControllers are very powerful in
21
X: 0.1327
400 Y: 380
350
Motor 1 Velocity rad/sec VS Time Sec,
at SP=380 rad/sec;
300 Load=40% Maximum Torque;
Pr=70;Dif=1;Int=1.
Steady state Velocity 380 rad/sec
Motor 1 Angular Velocity in rad/sec
200
150
100
50
50
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35
Time in sec
Figure 3.5 PIDControlling of Motor1 Speed results.
X: 0.1494
800
Y: 750
700
600
Motor1 Angular Velocity rad/sec
500
200
100
100
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35
Time sec.
Figure 3.6 PIDControlling of Motor1 Speed
22
controlling the speed of small size DCMotors. The selected Setting Point value was realized
at the Motor Angular velocity at a very small time (settling time). Even though the settling time
can be reduced more by increasing the values of the PID parameters{KP, KI , Kd}(this point
mentioned in section 2.1.4 Chapter 2).
The experiment was repeated but now PIDcontrolling of Motor(2) that represents medium
size DCMotors(Fig 3.2). The PID controller is stabilizing the DCMotor speed at a fixed
value(setting point) . The controlled system was simulated using MATLAB , the model in
Fig.(3.4), and Eq. ( 3.8) . Motor 2 parameters used in the simulation were known from the
manufacturer. The measured item that was desired to obtain from the simulation is also here
the Motor2 angular Velocity W(t) versus time. The simulation time was taken from the start
point of the controlled system until the Motor2 angular velocity is stable. The controlled
system was simulated using MATLAB programcode shown in Appendix(A ). Firstly the
simulation was done with PIDcontroller parameters{KP= 500, KI=1,Kd=900}, and fixed setting
point value 40.02 rad/sec and Motor Mechanical Load equals 30% of the maximum torque.
Then Motor2 angular velocity was monitored versus time and Fig.(3.7). was achieved . From
Fig.(3.7) the steady state value of the velocity is 40.02 rad/sec with error 0 from the setting
point value. The settling time is 23.3 sec. Secondly the previous simulation was repeated but
now fixing the Setting point value at 150.1 rad/sec and Motor mechanical load equals the
maximum torque, and using the same PID parameters Values. Then Fig.( 3.8) of Motor 2
Angular velocity versus time was achieved . From Fig.( 3.8) the steady state value of the
velocity is 150.1 rad/sec with error 0 from the setting point value. The settling time is 14.87 sec.
It can be observed from the experiment that the PIDalgorithm eliminates the error between the
Setting point value and Motor2 angular velocity in a quite small time(less than half minute ).
This time when compared to the high inertia of the motor it appears small. Even more the
settling time can be decreased by increasing the values of the PID parameters{KP, KI , Kd}(this
point is mentioned in section 2.1.4 Chapter 2).
This section demonstrates how powerful the PID algorithm in controlling the speed of DC
Motors irrespective of their size.
This section examines the effect of the variation of the Mechanical load of a DCMotor
controlled by a PIDController , meanwhile the setting point value is fixed during the operation
of the system. Commonly the disturbance to Motor systems is a variable Mechanical Load to the
Motor. The role of the PIDcontroller is to stabilize the Motor speed at a fixed value irrespective
to the exerted disturbance . The disturbance will vary the motor speed, if the PID doesn't act
adaptively to the speed. This section manifests how the PID controller can eliminate the
disturbance effects on the Motor speed.
23
45
X: 23.3
Y: 40.01
40
30 Pr=500;Dif=900;Int=1.
Steady state angular Velocity 40.02 rad/sec
Settling time 23.3 sec.
25
20
15
10
0
0 10 20 30 40 50 60 70 80 90 100
Time sec
Figure 3.7 PIDControlling of Motor2 Speed
results.
160 X: 14.87
Y: 150.1
140
Motor 2 Angular Velocity rad/sec Vs Time sec
Sp=150.1 rad/sec;
Load=100% of Maximum Torque;
120
Pr=500;Dif=900;Int=1.
Steady state angular Velocity 150.1 rad/sec
Motor 2 Angular Velocity rad/sec
80
60
40
20
0
0 10 20 30 40 50 60 70 80 90 100
Time sec.
Figure 3.8 PIDControlling of Motor2
Speed results. 24
The examination was done to Motor 1(small size) , and Motor2(medium size) as to monitor
the effects of the size on the control system.
First consider a PIDController controlling the speed of Motor1(small size) in Fig.( 3.1). The
PID controller is stabilizing the DCMotor speed at a fixed value(setting point). The previous
controlled Motor system was simulated using MATLAB , the model in Fig.(3.4), and Eq. (
3.8 ). Motor 1 parameters used in the simulation were known from the manufacturer. The
measured item that was desired to obtain from the simulation is Motor1 angular Velocity
W(t) versus time. The simulation time was taken from the start point of the controlled system
until the Motor angular velocity is stable after changing the DCMotor mechanical load. The
controlled system was simulated using MATLAB programcode shown in Appendix(A ).
Firstly , the simulation was done with PIDcontroller parameters{KP= 700, KI=580,Kd=5}, and
fixed setting point value 800 rad/sec and Motor Mechanical Load changes as in Eq. ( 3.9)
.That comprises of a sudden mechanical load Increase at 7 sec from the start of the operation.
= 70 . ; ≥ 7 (3.9)
Then from the simulation Motor1 angular velocity was monitored versus time and Fig.(
3.9) was achieved. From Fig.(3.9) the steady state value of the velocity before and after
the load changing is 800 rad/sec with error 0 from the setting point value. The settling time
is 4.166 sec before the load change, and 7.21 sec after the change. Secondly, the previous
simulation was repeated but now with PIDcontroller parameters{KP= 700, KI=900,Kd=5}, and
fixing the Setting point value at 800 rad/sec, and Motor mechanical load as in Eq. ( 3.10).
That comprises of a sudden mechanical load decrease at 7 sec from the start of the operation.
= −950 . ; ≥ 7 (3.10)
Then Fig.(3.10) of Motor 1 Angular velocity versus time was achieved. From Fig.( 3.10) the
steady state value of the velocity before and after the load changing is 800 rad/sec with
error 0 from the setting point value. The settling time is 4.227 sec before the load changing,
and 6.68 sec after the changing.
From the two simulations the Motor angular velocity will stabilize first at the setting point
value at a small settling time, and then changes its value at the same time the Mechanicalload
changes. The motor speed will increase if the mechanical load decreases and will decrease if
vice versa. And the motor speed no longer stabilizes again at the setting point value after
changing. The 2nd settling time for the motor after Mechanicalload changing in the 2 cases is
less than 8 sec. It is desirable from design point to minimize this time as we could . That is
achievable by increasing the PIDcontroller parameters values{KP, KI, Kd}.
25
900
X: 4.166
Y: 800.1
800
700
600 Sudden Load 70 N.M at Setting point Velocity=800 rad /sec,7 sec
Pr=700;Dif=5;Int=580.
Settling time before load 4.166 sec.
500 Settling time after load 7.21 sec.
400
300
200
100
0
0 2 4 6 8 10 12 14 16
Time sec.
Figure 3.9 PIDControlling of Motor1 Speed
results.
1800
1600
1400
Motor1 Angular Velocity rad/sec
1200
1000
X: 13.68
Y: 800.1
800
Motor 1 Angular velocity VS Time sec
Load at [0,7)sec 50N.M
600 Load at[7,16]sec 950N.M
Setting point 800 rad/sec;
Pr=700;Dif=5;Int=900
400 Settling time before load variation 4.227sec
Settling time after load variation 6.68sec
200
0
0 2 4 6 8 10 12 14 16
Time sec.
Figure 3.10 PIDControlling of Motor1 Speed
results.
26
The experiment was repeated but now PIDcontrolling of Motor(2) (medium size) in Fig.(3.2).
The PID controller is stabilizing the DCMotor speed at a fixed value(setting point). The
previous controlled Motor system was simulated using MATLAB , the model in Fig.( 3.4),
and Eq. ( 3.8) . Motor 2 parameters used in the simulation was known from the manufacturer.
The measured item that was desired to obtain from the simulation is Motor2 angular Velocity
W(t) versus time. The simulation time was taken from the start point of the controlled system
until the Motor angular velocity is stable after changing the DCmotor mechanical load. The
controlled system was simulated using MATLAB programcode shown in Appendix(A). Firstly
, the simulation was done with PIDcontroller parameters{KP= 50, KI=20,Kd=2}, and fixed
setting point value 45 rad/sec, and Motor Mechanical Load changes as in Eq. ( 3.11) .That
comprises of a sudden mechanical load Increase at 20 sec from the start of the operation.
= 4.5836 . ; ≥ 20 (3.11)
Then from the simulation Motor2 angular velocity was monitored versus time and
Fig.(3.11) was achieved. From Fig.(3.11) the steady state value of the velocity before and
after the load changing is 45 rad/sec with error 0 from the setting point value. The settling
time is 8.078 sec before the load changing, and 14.47 sec after the changing. Secondly , the
previous simulation was repeated but now with PIDcontroller parameters{KP= 50,
KI=20,K d=5}, and fixing the Setting point value at 45 rad/sec, and Motor mechanical load as
in Eq. ( 3.12). That comprises of a sudden mechanical load decrease at 20 sec from the start
of the operation.
=0 . ; ≥ 20 (3.12)
Then Fig.(3.12) of Motor 2 Angular velocity versus time was achieved . From Fig.(3.12)
the steady state value of the velocity before and after the load changing is 45 rad/sec with
error 0 from the setting point value. The settling time is 13.24 sec before the load changing,
and 14.18 sec after the changing.
The last two simulations show that the Motor angular velocity will stabilize first at the setting
point value at a small settling time, and then changes its value at the same time the Mechanical
load changes. The motor speed will increase if the mechanical load decreases and will decrease
if vice versa. And the motor speed no longer stabilizes again at the setting point value after
changing. The 2nd settling time for the motor after changing in the 2 cases is less than 15 sec. It
is also desirable here from design point to minimize this time as we could . That can be made
by increasing the PIDcontroller parameters values{KP, KI, Kd}.
27
50
X: 34.47
Y: 44.99
20
10
10
0 10 20 30 40 50 60 70 80 90 100
Time sec.
Figure 3.11 PIDControlling of Motor2 Speed
results.
50
X: 34.18
Y: 45.01
45
25
20
15
10
0
0 10 20 30 40 50 60 70 80 90 100
Time sec
Figure 3.12 PIDControlling of Motor2 Speed
28
It can be concluded from this examination that the PIDcontroller stabilizes the speed of DC
Motors at a the selected Setting point value irrespective to the Mechanicalload applied , and
the size of the machine.
This section examines the effect of changing the Setting Point value during the operation of a
DCMotor controlled by a PIDController .The examination was done to different sizes of
motors to observe the effect of size .
First consider a PIDController controlling the speed of Motor1(small size) in Fig.(3.1). The
PID controller is stabilizing the DCMotor speed at a fixed value(setting point The previous
controlled Motor system was simulated using MATLAB , the model in Fig.( 3.4), and Eq.
(3.8) . Motor 1 parameters used in the simulation was known from the manufacturer. The
measured item that was desired to obtain from the simulation is Motor1 angular Velocity
W(t) versus time. The simulation time was taken from the start point of the controlled system
until the Motor angular velocity is stable after changing the Setting Point value .T he controlled
system was simulated using MATLAB programcode shown in Appendix(A). The simulation
was done with PIDcontroller parameters{KP= 150, KI=1,Kd=1}, and Motor Mechanical Load
of 80% of maximum torque, and the Setting Point value as Eq. ( 3.13).
Then from the simulation Motor1 angular velocity was monitored versus time and
Fig.(3.13) was achieved. From Fig.(3.13 the steady state value of the velocity before and
after the Setting Point changing is 750 rad/sec and 150 rad/sec respectively with error 0
from the setting point value. The settling time is 61 msec before the Setting Point changing,
and 13 msec after the changing.
Secondly , the previous simulation was repeated but now with PIDcontrolling of
Motor2(medium size ).PIDcontroller parameters{KP= 500, KI=1,Kd=900}, and Motor
mechanical load equals the maximum allowed torque to Motor2, and the Setting Point value
as Eq. ( 3.14).
= 155.1 / ; ≥ 20 (3.14)
Then Fig.(3.14) of Motor 2 Angular velocity versus time was achieved . From Fig.( 3.14) the
steady state value of the velocity before and after the Setting Point changing is 50.1
rad/sec , and 155.1 rad/sec respectively with error 0 from the setting point value.
29
X: 0.0609
800
Y: 749.9
700
600
Motor 1 Angular Velocity rad/sec
500
400
300
200
160
140
60 X: 20
Y: 49.91
40
20
0
0 10 20 30 40 50 60 70 80 90 100
Time sec
Figure 3.14 PIDControlling of Motor2 Speed results.
30
The settling time is 14.61 sec before the Setting Point changing, and 470 msec after the
changing.
From the results of the examination that changing the Setting Point value will not affect the
controlled system and the PIDController will always stabilize the DCMotor speed at the
selected Setting Point value irrespective to the machine size. The settling time can also be
minimized by increasing the PIDcontroller parameters values{KP, K I, Kd}.
31
Chapter Four
Computer Implementation of
PIDControl
4Computer Implementation of PIDControl
This chapter discusses the implementation of PIDControllers using computer systems. The
controlled device in this chapter is also a DCMotor (as in Chapter 3). Computer systems
means microprocessor Embedded systems usually accompanied by sensors , Analogue to
Digital Converters(ADC), Digital to Analogue Converter (DAC), and amplifiers. The
microprocessor implements the PIDmode(section 2.1.4 Chapter 2) algorithm in a discrete
fashion . And outputs the control signal to the controlled device(The Process) through a DAC (
and Amplifiers if necessary). The discrete PID algorithms use samples of the error to
implement the proportional, integrative, and derivative terms(error between the setting point
value and the controlled Process output variable , discussed in details in Chapter 2). There are
different PID discrete algorithms and all use the error signal , and the controlled Process
output variable. The PID discrete algorithms can be described in the following sequence:
2. Read analog input through ADC{analogue inputs are the error , and the controlledProcess
output variable}
4. Output the control signal to the Process through DAC , and Amplifiers
5. Return to (1.)
All the above steps are done by the microprocessor . The microprocessor ,ADC, DAC, and
amplifiers all collectively form a discrete PID controller.
The subject of study in this chapter is to observe the performance of Discrete PIDControllers
in controlling DCmotors. This chapter discusses the following points:
Considering the PIDmode controlling scheme mentioned in section 2.1.4(Chapter 2). The PID
algorithm used there is a continuous PIDalgorithm . This section introduces number of
32
discrete algorithms capable to implement the same PID mechanism. All textbooks and authors
gave us 3 types of PID discrete algorithms:
Type A: often called "textbook discrete PID algorithm". It uses the same scheme as Ideal
Parallel PID mode discussed in section 2.2.1(Chapter 2) and Eq.( 2.9) , and Eq.(2.10) and
Fig.(2.4). It starts by differentiating Eq.(2.9) in time(t), and approximating the first and the 2nd
derivatives terms in the differential equation to difference terms as shown in Eq.(4.1).
( ) ( ) ( )
( ) = ( − 1) + ( ) − ( − 1) + ( )+ (4.1)
Where u is the control signal driving the Process. e is the error signal between the Setting
Point(SP) value and the Process output variable(PV). T is the sampling period. The difference
equation shown in Eq.(4.1) is called type A discrete PID algorithm[1].
Type B: often used in the industry. It uses the same scheme as Parallel PID mode discussed
in section 2.2.1(Chapter 2) and Eq.(2.11) , and Eq.(2.12) and Fig.(2.5). It starts by
differentiating Eq.(2.11) in time(t), and approximating the first and the 2nd derivatives terms in
the differential equation to difference terms as shown in Eq.(4.2).
( ) ( ) ( )
( ) = ( − 1) + ( ) − ( − 1) + ( )− (4.2)
∫.
+ 'e' + 'PV'
+ 'u' control signal PROCESS
∑
∑
 (DC_MOTOR)
+
e= Error signal
'SP'
Figure 4.1 PIDControlling Scheme
33
The difference equation shown in Eq.(4.2) is called type B discrete PID algorithm[1]. It removed
the derivative term from the Setting Point value to eliminate the Derivative Kick (mentioned in
section 2.2.1 Chapter 2).
Type C: also often used in the industry. It uses the same scheme as Parallel IPD mode
discussed in section 2.2.1(Chapter 2) and Eq.(2.13) , and Eq.(2.14) and Fig.(2.6). It starts by
differentiating Eq.(2.13) in time(t), and approximating the first and the 2nd derivatives terms in
the differential equation to difference terms as shown in Eq.(4.3).
( ) ( ) ( )
( ) = ( − 1) − ( )− ( − 1) + ( )− (4.3)
T is the sampling period. PV is the Process output variable . The difference equation shown in
Eq.(4.3) is called type C discrete PID algorithm[1] .It removed the proportional term from the
Setting Point value to eliminate the effects of the Setting Point discontinuities on the Process
components (mentioned in section 2.2.1 Chapter 2).
( ) ( )
( )= ( )+ + (4.4)
Where u is the control signal driving the Process. e is the error signal between the Setting
Point(SP) value and the Process output variable(PV). T is the sampling period. The difference
equation shown in Eq.(4.4) is the Fast Ideal Parallel Discrete PIDalgorithm. This algorithm
( ) ( )
uses the most near approximation for the integrative term({ }) . Where KP,KI, and Kd
are the PIDcontroller proportional, integrative, and derivative parameters respectively .
The aim of this section is to study the performance of a discrete PID controller controlling
DCMotor 2(the motor is shown in Fig.(3.2)). The discrete controller adopts the Fast Ideal
Parallel Discrete PIDalgorithm discussed in the previous section. The control signal u will
drive Motor 2 . A problem would arise is that Motor 2 has constraints in the input voltage
applied to. More than 224.4 volts and negative voltages are prohibited. So the control signal u
generated by the discrete controller will be passed to a voltage limiter as shown in Fig.(4.2).
34
Voltage Limiter
'Vi' Input Voltage
=0 ; <0 DCMOTOR 2
= ; 0≤ ≤ 224.4
Angular Velocity 'W'
= 224.4 ; > 224.4
2Compute the control signal u using Eq.(4.4) where e is the error between the Setting Point
value (SP) and Motor2 angular velocity(W){e=SPW}. e(n) is the present error, e(n1) is the
error in the previous sample.
3Generate the computed control signal u in voltage format, and output the voltage signal to
the DCMotor2 for T seconds(sampling time) through the voltage limiter.
4Return to step 1.
The overall system shown in Fig.(4.2) was simulated using MATLAB ,since MATLAB is very
powerful in simulating control systems . The MATLAB program code simulating the system is
shown in appendix(B). It was desired to monitor from the simulation the angular velocity of
DCMotor 2 .
DCMotor 2 parameters used in the simulations were known from the manufacturer. The
discrete PIDcontroller parameters {KP, KI,Kd} must be selected as large as possible to reduce the
system settling time(time from the start point until the Motor angular speed stabilizes at the
35
selected Settingpoint value , mentioned in Chapter 2 and 3). Practically the parameters must
satisfy Eq.(4.5)[5] for the control system stability.
≫4 (4.5)
The discrete controller parameters were selected as {KP=7e15,KI=100, Kd=100}, and the
Setting Point value was fixed to 50 rad/sec, and the sampling frequency to 20 hertz. Then
the simulation was done using MATLAB program code shown in appendix(B) for the control
system shown in Fig.(4.2). From the simulation results the relation between the DCMotor 2
angular velocity and time was obtained . The relation is shown in Fig.(4.3). From the figure it
can be observed that the speed values fluctuate around the selected Setting Point value after
460msec . The speed values after 460 msec can be given as {50 rad/sec + Fluctuation Offset
}. The Fluctuation Offset can be positive or negative according to the results. From Fig.(4.3)
the maximum Fluctuation Offset is small when compared to the Setting Point value 50
rad/sec, it can be said that the settling time is 460msec .
The simulation was repeated (with MATLAB program code shown in appendix(B)) using the
same discrete controller parameters{KP=7e15,KI=100, Kd=100}. And also fixing the Setting
Point value to 50 rad/sec but increasing the sampling frequency to 70 hertz. From the
simulation results the relation between the DCMotor 2 angular velocity and time was obtained.
The relation is shown in Fig.(4.4). From the figure it can be observed that the speed values
also fluctuate around the selected Setting Point value after 455 msec . After 455 msec the
speed values can also be given as {50 rad/sec + Fluctuation Offset }. The Fluctuation Offset
can also be positive or negative according to the results. The Fluctuation Offset in this time is
very small when compared to the previous one, that is shown in Fig.(4.4). The maximum
Fluctuation Offset is very small when compared to the Setting Point value 50 rad/sec, it can
also be said that the settling time is 455 msec .
The simulation was repeated (with MATLAB program code shown in appendix(B)) using the
same discrete controller parameters{KP=7e15,KI=100, Kd=100}. And also fixing the Setting
Point value to 50 rad/sec but increasing the sampling frequency t0 250 hertz. From the
simulation results the relation between the DCMotor 2 angular velocity and time was
obtained. The relation is shown in Fig.(4.5). From the figure it can be observe that the speed
values also fluctuate around the selected Setting Point value after 456 msec . After 456 msec
the speed values can be given as {50 rad/sec + Fluctuation Offset }. The Fluctuation Offset
can also be positive or negative according to the results. The Fluctuation Offset this time is
very small when compared to the previous one, that is shown in Fig.(4.5). The maximum
Fluctuation Offset is very very small when compared to the Setting Point value 50 rad/sec, it
can also be said that the settling time is 456 msec .
For the discrete PID controller it is desirable from a design perspective to eliminate the The '
fluctuation offset'.
36
60
50
30
20
10
0
0 0.5 1 1.5 2 2.5 3
Time sec
Figure 4.3 Discrete PIDControlling of Motor2 Speed
results 1.
60
50
Motor2 Angular Velocity rad/sec
40
Motor 2Velocity rad/sec Vs time sec.
Setting Point=50 rad/sec;
Pr=7e15;Dif=1e2;Int=1e2;
frequency of sample=70hz.
30 Settle down time =0.4549 sec
20
10
0
0 0.5 1 1.5 2 2.5 3
Time sec
Figure 4.4 Discrete PIDControlling of Motor2 Speed
37
60
50
30
20
10
1 That the settling time is approximately the same in the 3 sampling frequency situations.
2 The Fluctuation Offset will decrease as the sampling frequency increases until it becomes
negligible at sampling frequency 250 Hz.
Various simulations was done as the 3 previous simulations and the same previous 2 points
was realized. It can be concluded that discrete PID controllers must be designed with large
sampling frequencies (to eliminate the Fluctuation Offset) and large PID parameters {KP,
KI,Kd} (to reduce the settling time).
38
ℎ =0 . 0≤ < 1.5
= ≥ 1.5 (4.6)
From the simulation results the relation between the DCMotor 2 angular velocity and time was
obtained. The relation is shown in Fig.(4.6). From Fig.(4.6) the speed first stabilizes at the
Setting point value with small Fluctuation Offset , that is before the load variation. At the
sudden large increase in the motor mechanical load it is anticipated that Motor 2 speed to
decrease by a large value. But the discrete controller compensates the effects of the load
variation and the speed only first decreases by a small value and then stabilizes at a value very
close to the Setting point value (shown in Fig.(4.6)).
Then the simulation was repeated but using PID parameters{KP=7e15,KI=100 , Kd=100},
and fixed Setting Point value of 50rad/sec, and sampling frequency 70HZ, and mechanical
load as Eq.(4.7). DCMotor 2 parameters used in the simulation were known from the
manufacturer.
ℎ = 0≤ < 1.5
=0 . ≥ 1.5 (4.7)
From the simulation results the relation between the DCMotor 2 angular velocity and time
was obtained. The relation is shown in Fig.(4.7). From Fig.(4.7) the speed first stabilizes at the
Setting point value with small Fluctuation Offset , that is before the load variation. At the
sudden large decrease in the motor mechanical load it is anticipated that Motor 2 speed to
increase by a large value. But the discrete controller compensates the effects of the load
variation and the speed only first increases by a small value and then stabilizes at a value very
close to the Setting point value (shown in Fig.(4.7)).
From the 2 simulations and other various simulations that was done for the same control
system with different PID parameters , different sampling frequencies , and different Motor2
mechanical load changing conditions(increasing or decreasing) . It can be concluded that the
discrete PID controller always stabilizes DC Motor 2 angular speed to the selected Setting
Point value irrespective to motor 2 mechanical load changes. The problem of the settling time
(time from the start point until the Motor angular speed stabilizes at the selected Settingpoint
value , mentioned in Chapter 2 and 3) can be solved by increasing the PID parameters {KP,
KI,Kd}.
39
120.5
120
119
118.5
118
117.5
1 1.5 2 2.5 3 3.5
Time sec
50
Motor 2 Angular Velocity rad/sec
40
20
10
0
0 0.5 1 1.5 2 2.5 3
Time sec
Figure 4.7 Discrete PIDControlling of Motor2 Speed
40
4.4 The Effect of Changing the Setting Point Value
= 40 / 0≤ < 1.5
From the simulation results the relation between the DCMotor 2 angular velocity and time was
obtained. The relation is shown in Fig.(4.8). From Fig.(4.8) the speed first stabilizes at the first
Setting point value with settling time(time from the start point until the Motor angular speed
stabilizes at the selected Settingpoint value , mentioned in Chapter 2 and 3) 350 msec. And
after changing the Setting Point value at 1.5 sec the discrete controller causes the DCMotor 2
angular velocity to stabilize at the 2nd Setting Point value with settling time 1.16 sec.
= 40 / ≥ 1.5 (4.9)
From the simulation results the relation between the DCMotor 2 angular velocity and time was
obtained. The relation is shown in Fig.(4.9). From Fig.(4.9) the speed first stabilizes at the
first Setting point value with settling time 1.12 sec. And after changing the Setting Point value
at 1.5 sec the discrete controller causes the DCMotor 2 angular velocity to stabilize at the 2nd
Setting Point value with settling time 733 msec.
From the previous two simulations and various simulations that were done ,the discrete PID
controller always stabilize the motor speed at the selected Setting Point value. The settling time
parameter can be decreased by increasing the PID parameters {KP, KI,Kd}.
41
140
Motor 2 Velocity rad/sed Vs TIme sec
in[0,1.5]sec Setting Point=40 rad/sec
X: 2.657
in[1.5,4]sec Setting Point=120 rad/sec
Y: 120
Mechanical load=60 %of maximum torque
120 Pr=7e15;Dif=100;Int=100;
first Settling time 350 msec
2nd Settling time 1.16 sec
100
Motor 2 Angular Velocity rad/sec
80
60
40
20
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Time sec
figure 4.8 Discrete PIDControlling of Motor2 Speed results 6.
120
Motor 2 Velocity rad/sed Vs TIme sec
in[0,1.5]sec Setting Point=100 rad/sec
in[1.5,4]sec Setting Point=40 rad/sec
Mechanical load=60 %of maximum torque
Pr=7e15;Dif=100;Int=100;
100
first Settling time 1.12 sec
2nd Settling time 733 msec
Motor 2 Angular Velocity rad/sec
80
60
X: 2.233
Y: 40
40
20
0
0 0.5 1 1.5 2 2.5 3 3.5 4
Time sec
Figure 4.9 Discrete PIDControlling of Motor2 Speed
42
4.5 Conclusion
It can be concluded from the study in this section and various simulations that the discrete PID
controllers are very influential in controlling the angular speed of DCMotors. This study was
chosen to be made on medium DCmotors(DCmotor 2) since these motors exhibit slow
dynamics when controlled by discrete PIDcontrollers. So if discrete PIDcontrollers perform
well in medium motors , it will perform more when controlling small size motors. The two
parameters that affect the performance of discrete PIDcontrollers are:
1Sampling Frequency.
From design perspective these parameters must be as high as possible to achieve high
performance.
43
Chapter Five
Implementation of a Discrete
PIDController for DC
Motors
32
5 Implementation of a Discrete PID Controller for DCMotors
As said practically all the PID controllers for DCMotors or different processes are
designed today with embedded systems and microprocessors. Embedded systems and
microprocessors are used to implement discrete PID algorithms. This chapter introduces a
complete design of a discrete PID controller used to control DCmotors.
First the designed discrete PID controller will be introduced in functional blocks and then
each functional block will be described in details.
Then the performance of the designed discrete PID controller will be monitored when it is
controlling DCMotor 2(medium size motor shown in Fig.( 3.2)). We chose DC motor 2 since
medium size motors exhibit slow dynamics when controlled by discrete PIDcontrollers. So if
the designed discrete PIDcontroller performs well in medium motors , it will perform more
when controlling small size motors.
Data Bus
Motor 2 speed
Analogue to Digital tachometer voltage
Microprocessor
output
Converter
(Microcontroller)
(ADC)
The total design components of the discrete PID controller are shown in Fig.( 5.1). The designed
discrete PID controller function can be summarized in the following steps:
1The microprocessor reads Motor 2 speed tachometer voltage value through the
ADC(Analogue to Digital Converter).
2 And then depending on the tachometer reading and the selected Setting Point value the
microprocessor computes the control signal u that is used to drive DCMotor 2 shaft. The
44
microprocessor adopts any of the discrete PID algorithms to evaluate the control signal u
(discrete PID algorithms are discussed in Chapter 4).
3 The microprocessor outputs the computed control signal u to Motor 2 as shown in Fig.( 5.1)
through the DAC(Digital to Analogue Converter) and the High Voltage amplifier.
Each component of the designed discrete PID controller will be described in the following
sections.
The DAC(shown in Fig.( 5.2)) and the High volt Amplifier are the most crucial components in
our design. As said the microprocessor is used to compute the control signal u . The DAC and
the High volt Amplifier generate the control signal u in an electrical format and output it
directly to DCMotor 2 . The DAC receives the computed control signal u in digital
format(shown in Fig.( 5.1)) from the microprocessor through the data bus . The DAC then
converts the computed control signal u from digital format to electricalvoltage format. Usually
DACs are implemented with small analogue output voltages. The DAC was designed as
shown in Fig.( 5.2) to generate an analogue output range of {0~12.47}volts and digital input
range of{0 volt for logic 0, 5 volt for logic 1}. The computed control signal u range is
{0~224.4}. So the DAC alone can't generate this signal in electricalvoltage format. So the DAC
outputvoltages after buffering are passed to the High Voltage Amplifier to generate the required
voltage range{0~224.4}volts. The DAC was designed using R/2R resistor ladder network
(R=1 M ohm) and UA741CN OPAMP as shown in Fig.( 5.2)(OPAMP means operational
amplifier). The designed DAC is 8bit that accepts 8 digital input signals and outputs a single
analogue signal at range{0~12.47}volts depending on the digital inputs. The DAC 8digital
inputs are connected to the microprocessor data ports.
1Usually High Voltage Amplifiers possess low input resistance , they can 't be connected
directly to DACs. Because the DACs can 't work with small output load resistors. The output
load resistor for the DAC must be as large as possible to achieve normal results. Thus it is
necessary of a sort of buffering between the designed DAC and the High Voltage Amplifier.
45
15 v
2
8
In p u t 1
In p u t
In p u t
In p u t
In p u t
In p u t
In p u t
In p u t
15 v
R6
R2 R4 2M R8 R10 R12 R14 R16 U1
2M 2M 2M 2M 2M 2M 2M
7
3
6
R1 R3 R5 R7 R9 R11 R13 R15 2
2M 1M 1M 1M 1M 1M 1M 1M
4
1
5
R17 741
2.5M
1 5 v
R means Resistor.
U1 is UA741CN OPAMP.
15 v
2Usually DACs generate negative voltages in their output . The designed DAC generates
electrical analogue signal with negative range{0~ 12.47}volts. This analogue signal can't be
input directly to the High Volt Amplifier ,since the amplifier will amplify only positive signals.
The solution is to insert a negative buffer between the DAC and the amplifier. The negative
buffer role is to reverse the DAC output voltage polarity and pass the resultant positive voltage
to the High Volt Amplifier.
The negative buffer was designed as shown in Fig.( 5.3). First a simple negative buffer named
"BufferNeg" was designed in Fig.( 5.3). As shown in Fig.( 5.3) "BufferNeg" uses LM324
OPAMP with 2 power supplies{+15dc volts,15dc volts}, and the OPAMP was configured to
be negative amplifier with unity gain. Then 12 blocks of "BufferNeg" were connected in
parallel to form a low output resistor Negative Buffer. The inputs of the blocks were connected
together and the outputs of the blocks were connected together as in Fig.( 5.3). Since the LM324
chip contains 4 OPAMPs within its body ,3chips will be needed to form the 12 blocks connected
network in Fig.( 5.3). This scheme for negative buffers manifests a very low output resistor
46
15 volt
3
1 Output BufferNeg BufferNeg BufferNeg
Input
R30 2
10K
11
LM324
15 volt
BufferNeg BufferNeg
BufferNeg
R31
10K
buffer. So as to connect the "High Voltage Amplifier" to the DAC we need a high input resistor
and low output resistor Negative Buffer in between. The Negative Buffer in this situation act
sa s a transparent link. So in the design we tried to minimize the Negative Buffer output
impedance, and to maximize the buffer input resistor as we could.
"High Voltage Amplifier" is an amplifier capable to amplify low voltage electrical signals to
high voltage electrical signals. As said that the computed control signal u evaluated by the
microprocessor is in the range between{0~224.4}(the signal u is used to drive the motor shaft
as in Fig.( 5.1)). The DAC can only generate a signal with voltage in range(0~12.47)volts. So in
order to generate the control signal u in electrical analogue format with range(0~224.4) volts,
the DAC generated signal must be amplified by a High Voltage Amplifier.
The High Voltage Amplifier was designed as shown in Fig.( 5.4). First a simple amplifier was
designed named "AmpH" in Fig.( 5.4). "AmpH" uses a bipolar power transistor 2N3773 , 225
volts dc power supply, and 5 volts dc biasing voltage. The configuration of "AmpH" is shown in
Fig.( 5.4). The amplifier "AmpH" possesses a large output impedance of 224 ohm. The problem
is when connecting this amplifier to DC motors ,the driving current will be very small to drive
the motor s to high speed. Six blocks of " AmpH " were connected in parallel to form a low
output resistor amplifier. The inputs of the blocks were connected together and the outputs of
the blocks were connected together as in Fig.( 5.4). The network configuration of " AmpH"
blocks depicted in Fig.( 5.4) is a voltage amplifier with low output impedance of 37.3 ohm. This
amplifier is used as a High Voltage Amplifier with range of voltage {0~224.4} volts.
47
225 dc volt
R24
5 dc volt biasing 224 AmpH AmpH
R25
Output
2.5K
Q8 AmpH AmpH
2N3773
Input
R26
240
AmpH AmpH
" AmpH"
Input Signal
Input Output Amplified Signal
AmpH
The Microprocessor and the ADC function is in the following repeated steps:
1The microprocessor reads Motor 2 speed tachometer voltage value through the ADC.
2 Relying on the tachometer reading and the selected Setting Point value the microprocessor
evaluates the control signal u that will be used to drive Motor 2 shaft. The microprocessor
uses any of the different discrete PID algorithms to compute the control signal u (discussed in
Chapter 4).
3 The microprocessor outputs the computed control signal u to Motor 2 as shown in Fig.( 5.1)
through the DAC ,Negative Amplifier, and the High Volt amplifier.
4 The microprocessor waits for T seconds(sampling time).And then goes to step1 again.
The ADC role is to convert the motor speed tachometer reading from electrical voltage format to
digital format and dispatch the digital value to the microprocessor. Usually recent
microcontrollers are provided with ADCs enclosed within the same package. Hence
microcontrollers can perpetrate the microprocessor and the ADC roles at the same time. The
microcontroller ATMEGA 32A was used to implement the Microprocessor and the ADC
function mentioned previously. The microcontroller ATMEGA 32A is depicted in Fig.( 5.5).
The microcontroller ATMEGA 32A has 4 data ports to exchange data with other external
peripheral devices{PORT A,PORT B,PORTC,PORTD}. Each data port constitutes of 8 external
pins. Port D of the microcontroller is connected with the designed 8bit DAC(Fig.( 5.2)) via
48
Figure 5.5 Microcontroller ATMEGA 32A
an 8wires data bus. The microcontroller ATMEGA 32A computes the control signal u and then
dispatch it in digital format to the designed 8bitDAC through Port D and the data bus.
The microcontroller ATMEGA 32A adopts the Fast Ideal Parallel Discrete PIDalgorithm
(discussed in Chapter 4) and uses Eq.( 4.4) to compute the value of the control signal u and uses
PID parameters as {KP=7e24,K d=1e16,KI=3e1}.Where KP,Kd ,and KI are the proportional,
derivative, and integrative parameters respectively.
The microcontroller ATMEGA 32A has a 10 bit ADC with maximum input voltage of 5volt,
and reads Motor 2 speedtachometer voltage value through its 10bitADC .
A program code was constructed in 'C' language for the microcontroller ATMEGA 32A to
implement the Microprocessor and the ADC function mentioned previously. The program is
shown in appendix(C) .
49
2 Wait for the timer interrupt. The timer interrupt activates 125000 time per second.
3The microcontroller reads Motor 2 speed tachometer voltage value through its 10bitADC.
4 Relying on the tachometer reading and the selected Setting Point value the microcontroller
evaluates the control signal u that will be used to drive Motor 2 shaft. The microcontroller
uses the Fast Ideal Parallel Discrete PIDalgorithm (discussed in Chapter 4) and uses Eq.(4.4)
to compute the value of the control signal u and uses PID parameters as
{KP=7e24,Kd=1e16,KI=3e1}.Where KP,Kd ,and K I are the proportional, derivative, and
integrative parameters respectively.
5 The microprocessor outputs the computed control signal u to Motor 2 as shown in Fig.( 5.1)
through the DAC ,Negative Amplifier, and the High Volt amplifier.
This section monitors the performance of the designed discrete PIDcontroller when it is
controlling DCmotor 2(medium size motor shown in Fig.( 3.2)). As said we chose DC
motor 2 because medium size motors show slow dynamics when controlled by discrete PID
controllers. If the designed discrete PIDcontroller functions well in medium motors , it will
function more when controlling small size motors.
90% of the designed discrete PIDcontroller was constructed practically . That was
constructed:
2 The 8bitDAC.
Unfortunately the High Voltage Amplifier wasn't constructed completely, due to the lack of
some electronic pieces in this country. So the performance of the designed controller when it is
controlling the DCmotor 2(in Fig.( 3.2)) was examined using an electronic simulation program
"ISIS Professional" was used to simulate the designed controller when it is controlling DC
Motor 2 as in Fig.( 5.1) . The "ISIS Professional" simulator is capable to simulate sophisticated
electrical/mechanical system in a real time fashion. Various electronic/electrical/mechanical
companies deploy this simulator for designing their products. It is very powerful in simulating
electromechanical systems.
Typically all the electrical/mechanical system depicted in Fig.( 5.1) was simulated by the "ISIS
Professional" . First in the simulation the PID parameters was set in the microcontroller
ATMEGA 32A program code to {KP=7e24,Kd=1e16,KI=3e1}. Where KP, Kd, and KI are the
50
PID proportional, derivative, and integrative parameters respectively .The DCmotor 2
parameters used in the simulation were known from the manufacturer. The DCmotor 2
mechanical load was set in the simulation to variable value in the range {0~2.203N.M}. The
Setting Point value in the microcontroller ATMEGA 32A program code was set to5 rad/sec .
From the simulation results the relation between motor 2 angular velocity and time was obtained
as in Fig.( 5.6). From Fig.( 5.6) it can be observed that motor 2 angular speed stabilizes at the
Setting Point value with small Fluctuation Offset and with settling time of 60 msec (the
Fluctuation Offset is described in Chapter 4) . The settling time is the time elapsed between the
start point and until the motor angular speed stabilizes at the "Setting Point" value.
Then the simulation was repeated with the same previous parameters but with setting the
Setting Point value in the microcontroller ATMEGA 32A program code to 15 rad/sec . Then
from the simulation results the relation between motor 2 angular velocity and time was obtained
as in Fig.( 5.7). From Fig.( 5.7) it can be observed that motor 2 angular speed stabilizes at the
Setting Point value with small Fluctuation Offset and with settling time of 240 msec.
Then the simulation was repeated with the same previous parameters but with setting the
Setting Point value in the microcontroller ATMEGA 32A program code to 22.5 rad/sec . From
the simulation results the relation between motor 2 speed velocity and time was obtained as in
Fig.( 5.8). From Fig.( 5.8) it can be observed that motor 2 angular velocity stabilizes at the
Setting Point value with small Fluctuation Offset and with settling time of 680 msec.
From the simulations it could be seen obviously that the designed discrete PID controller always
stabilizes the motor speed at the selected Setting Point value with small settling time
irrespective to the variable motor mechanical load.
In the next chapter we will evaluate more the performance of the designed discrete PID
controller.
51
Figure 5.6 Discrete PID controlling with setting point value of 5 rad/sec.
52
Figure 5.7 Discrete PID controlling with setting point value of 15 rad/sec.
53
Figure 5.8 Discrete PID controlling with setting point value of 22.5 rad/sec.
54
Chapter Six
Performance Evaluation and
Conclusion
6Performance Evaluation and Conclusion
This chapter tries to do a performance evaluation study to the discrete PID controller that was
designed in chapter 5. As known from the previous chapters that the most crucial parameter
which affects the performance of a PID controller controlling a DCMotor is the settling time.
The settling time is the time elapsed between the start point and until the motor angular speed
stabilizes at the "Setting Point" value. Consider a PIDController controlling a DCMotor ,the
settling time of the system changes according to the selected "Setting Point" value and the DC
motor mechanicalload. Thus each pair of {"Setting Point" value and DCmotor mechanical
load} have a corresponding settling time. The small the " mean settling time " of a PID
controller controlling the speed of a DCmotor the more performance can be achieved from
such controller.
A statistical approach will be used to evaluate the "mean settling time" of the designed discrete
PID controller (in Chapter 5) when it is controlling DCmotor 2(figure 3.2).
First various simulations were done using the "ISIS Professional" simulator and "MATLAB"
for the designed discrete PID controller(discussed in Chapter 5) when it is controlling DCmotor
2 (medium size motor shown in figure 3.2). In each simulation different "Setting point" value
and different motor mechanical load were used, and in each simulation from its results the
"settling time" was obtained. Thus there is a "settling time" value for each pair of{"Setting
point" value ,motor mechanical load}. Then the sampling table depicted in table 6.1 was
constructed. The table gives a sample for the settling time of size of 24 elements. DC motor2
(medium size motor shown in figure 3.2) was chosen for this study because medium size
motors exhibit slow dynamics when controlled by discrete PIDcontrollers. If the designed
discrete PIDcontroller performs well in medium motors , it will perform more when
controlling small size motors.
From sampling theorem prospective the average of the sample gets closer to the population
mean as the sample size increases. From the study we have a sample for the settling time of size
of 24 elements. Presume that the sample size of 24 is large enough ,the mean of the population
of settling times can be estimated by the average of the 24size sample (table 6.1). The sample
average from table 6.1 is 6.7120 sec. The mean settling time can be estimated by 6.7120 sec.
Other point that confirms the correctness of our estimate is the sample taken in table 6.1
distributes along the possible values of the "Setting point" and the motor mechanical load. The
sample taken in table 6.1 is not concentrating in a specific values of the "Setting point" and the
motor mechanical load.
55
Table 6.1 Sample of the settling time.
Setting point value Motor2 Mechanical Load Settling time in sec
rad/sec in N.M
8 0.8118 0.1307
68 0.4968 1.1286
126 0.1614 2.137
185 0.4335 7.9218
58 0.6461 1.0217
118 0.144 1.9094
176 0.6 12.5519
234 0 13.6397
69 0.1051 0.915
136 0.4883 3.2005
196 0.3111 7.7472
225 0.1 15.6451
28 0.3893 0.3813
88 0.3423 1.4265
146 0.9204 12.6647
205 0.2901 11.31
35 1.0633 0.7611
98 1.0693 3.3516
156 0.7756 8.7812
215 0.0513 6.8046
98 0.6228 2.0432
158 0 .7528 8.7216
216 0.1976 19.4561
230 0.05 17.4379
The key elements in the design of discrete PID controllers as grasped from chapter 4 are:
2 The PID parameters{ KP, Kd, and KI }. Where KP, Kd, and KI are the PID proportional,
derivative, and integrative parameters respectively .
Choosing the sampling frequency as large as possible will reduce the "Fluctuation offset"
(discussed in Chapter 4). And increasing the PID parameters will reduce also the "Settling
time"(discussed in the previous Chapters). In the design of the discrete PID controller in
chapter 5 we tried to maximize the sampling frequency and the PID parameters as we could . But
the designed controller has mean settling time of 6.7120 sec when controlling DCmotor
2(medium size motor shown in figure 3.2) as known from the previous study. The mean settling
time is large though we used very large PID parameters . That is deemed to 2 points:
56
1 The large inertia of DCmotor 2. The motor shows slow dynamics when speedcontrolled.
2The motor can't accept voltage level in its input more than 224.4 volt(discussed in Chapter 4).
The previous 2 points cause the mean settling time to increase and are hard to be solved. Mean
settling time of 6.7120 sec is large but can be observed small when compared to the very small
dynamic of DCmotor 2. In the other hand the deigned discrete PID controller (in Chapter 5)
from the simulations reduces the "Fluctuation Offset" (discussed in Chapter 4) to a subtle value.
When considering small size motors the designed discrete PID controller will have a small mean
settling time less than 6.7120 sec, since small size motors exhibit fast dynamics when speed
controlled. If the designed controller has mean settling time of 6.7120 sec when controlling DC
motor 2(medium motor with slow dynamics), it will have a mean settling time very lower than
this value when controlling small motors( that have smaller inertia and fast dynamics).
The PIDControl methods were examined and discussed in this ResearchProject when the
methods are used in controlling the speed of DCMotors. The methods were used in the
ResearchProject to stabilize the speed of DCMotors at a user selected value(Setting Point).
The PIDControl methods can also used to stabilize the speed of ACSynchronous Motors,
and ACInduction Motors at a user selected value(Setting Point). PIDControl methods can
also be implemented using embedded systems and microcontrollers and used to control the
angular velocity of ACMotors, the previous controlling method resembles the Direct Torque
Control(DTC)[11] method which is used to control the torque and speed of 3Phase AC motors.
As a future work it can be recommended to monitor ,examine, and evaluate the performance
of various PID methods(Continuous and discrete methods) when the method are used to
control the speed of ACMotors.
57
REFERENCES
[2] Araki M. , "PID Control", in Encyclopedia of Life Support Systems (EOLSS), 2011.
[4] Zoran Vukic, Lectures on PID Controllers , The University of Texas Automation and
[5] Dingyu Xue, YangQuan Chen, and Derek P.Atherton , Linear Feedback Control,The
[6] John A.Shaw, The PID Control Algorithm how it works how to tune it and how to use it ,
[7] Tajrin Ishrat, Hasib Bin Liakat, "DC Motor Position Control Drive StateSpace Design", in
[8] Edward Hughes, John Hiley, Keith Brown, Ian McKenzieSmith, Electrical and
[Accessed:2014].
http://www.atmel.com/Images/doc2503.pdf, [Accessed:2014].
[Accessed:2014].
58
APPENDIX A
MATLAB CODE 1
MATLAB Code simulating a PIDController controlling a DCMotor . The PID
Controller uses a continuous PID Algorithm.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%%%%%DC Motor Parameters %%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%_____________%%%%%%%%%%%%%%%%%%%
Ra= 7.75;% ohm:Armature (rotor) resistance.
La=4.05e3 ;%H:Armature inductance.
KT= 0.013 ;%Torque constant.
KE=0.013;%(emf constant).
J=5.2E07;%DC Motor inertia.
BV =4.9E7;%Viscous friction.
TL=0.0057*1.0;%Motor load.
TL1=0;% Sudden load
TL2=0;%005.7*0.5;% Sudden load
TL3=0;%005.7*0.4;% Sudden load
Vin=12;%Input Voltage;'
VSTR=0;%Start Spead.
%%%%%%%%%%%%%%% Motor DC Transfer Function Parameters and load
characteristics%%%%%%%%%%%%%%
b=[La*J/KT, Ra*J/KT+La*BV/KT, Ra*BV/KT+KE];
a1=1;%Vin;
a2=Ra*TL/KT;C1=Ra*TL1/KT;C2=Ra*TL2/KT;C3=Ra*TL3/KT;
s = tf('s'); % Create Laplace variable
W = tf(a1,b); w=tf(b,1);
LO=tf(a2,b)/s+tf(TL*La/KT,b);
CS1=tf(C1,b)/s+tf(TL1*La/KT,b);CS2=tf(C2,b)/s+tf(
TL2*La/KT,b);CS3=tf(C3,b)/s+tf(TL3*La/KT,b);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%PID%%%%%%%%%%%%%%%%%%
SP=750;
SP2=0;
Pr=150;
Dif=1;
Int=1;
PID=Pr+Dif*s+Int/s;
WPID=(SP*PID*W/sSP*Dif*W)/(1+PID*W)+LO/(1+PID*W);
WP2=SP2*PID*W/s/(1+PID*W);
CS1=CS1/(1+PID*W);CS2=CS2/(1+PID*W);CS3=CS3/(1+PID*W);%CS1=C1/(PID*s+w*s);
WO=W*Vin/s+LO+b(2)*VSTR*W;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P=pole(WO);%W*Vin/s+LO);
display('poles=');
display(P);
[num,den] = tfdata(WO,'v');%W*Vin/s+LO,'v');
[numC1,denC1]=tfdata(CS1,'v');
[numC2,denC2]=tfdata(CS2,'v');
[numC3,denC3]=tfdata(WP2,'v');
display('num=');
A1
display(num);
display('den=');
display(den);
[A,PP] = residue(num,den);
%*****************************
[AC1,PPC1]=residue(numC1,denC1);
[AC2,PPC2]=residue(numC2,denC2);
[AC3,PPC3]=residue(numC3,denC3);
%******************************
display('A=');
display(A);
display('P=');
display(PP);tt=1:35000;Value=1:35000;LOD=1:35000;
for jj=1:35000,
tt(jj)=(jj1)*1e4;
Value(jj)=0;LOD(jj)=TL;
for i=1:length(PP),
Value(jj)=1*(Value(jj)+A(i)*exp(PP(i)*tt(jj)));
end
%************************************
if tt(jj)>=7 ,
for i=1:length(PPC1),
Value(jj)=1*(Value(jj)+0*AC1(i)*exp(PPC1(i)*(tt(jj)7)));
end
LOD(jj)=LOD(jj)+TL1;
end
if tt(jj)>=1 ,
for i=1:length(PPC2),
Value(jj)=1*(Value(jj)+AC2(i)*exp(PPC2(i)*(tt(jj)1)));
end
LOD(jj)=LOD(jj)+TL2;
end
if tt(jj)>=1.5 ,
for i=1:length(PPC3),
Value(jj)=1*(Value(jj)+AC3(i)*exp(PPC3(i)*(tt(jj)1.5)));
end
LOD(jj)=LOD(jj)+TL3;
end
%**************************************
end
plot(tt,Value)
A2
APPENDIX B
MATLAB CODE 2
MATLAB Code simulating a PIDController controlling a DCMotor . The PID
Controller uses a discrete PID Algorithm.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
%%%%%DC Motor Parameters %%%%%%%%%%%%%%%%%%%%
Ra=87.2564;% ohm:Armature (rotor) resistance.
La=0;%4.05e3 ;%H:Armature inductance.
KT= 0.9549;%0.013 ;%Torque constant.
KE=0.9549;%0.013;%(emf constant).
J=0.0261;%5.2E07;%DC Motor inertia.
BV =0;% 4.9E7;%Viscous friction.
TL=0.05;% 3.8197*0.4*0.6;%392;%0.01034;%0.0057*0.00;%Motor load.
TL1=1000;% Sudden load
TL2=0;%005.7*0.5;% Sudden load
freqS=125e3;
SimulET=25;%sec
Vin=0;%Volt
SP=230;
Pr=7e24;
Dif=1e16;
Int=3e1;
%%%%%%Motor Transfer%%%%%%%%%%%%%%%%%
s = tf('s');
b=[La*J/KT, Ra*J/KT+La*BV/KT, Ra*BV/KT+KE];
W = tf(1,b);
[num,den] = tfdata(W/s,'v');
[A1,PP1] = residue(num,den);
[num,den] = tfdata(W,'v');
[A2,PP2] = residue(num,den);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
EEE=ceil(SimulET*freqS)+1;
tt=1:EEE;%ceil(SimulET*freqS)+1;
Value=1:EEE;%ceil(SimulET*freqS)+1;
Err=1:EEE;%ceil(SimulET*freqS)+1;
MM=1:EEE;%ceil(SimulET*freqS)+1;
Err(1)=SP;IntS=0; Value(1)=0;
for ii=1:1:EEE,%ceil(SimulET/freqS)+1,
tt(ii)=(ii1)/freqS;
% if(tt(ii)>=1.5), TL=3.8197*0.4*0;end
% if(tt(ii)>=1.5), SP=40;end
if ii==1,
MM(ii)=200;
end
if(ii>1),
Err(ii)=SPValue(ii);
B1
IntS=IntS+(Err(ii)+Err(ii1))/freqS*Int*0.5;
MM(ii)=(Err(ii)Err(ii1))*freqS*Dif+Pr*Err(ii)+IntS;
if(MM(ii)>224.4) MM(ii)=224.4;end
if(MM(ii)<0) MM(ii)=0;end
end
if (ii<EEE),
Value(ii+1)=0;
a1=Ra*TL/KT;
%VALTR=(MM(ii)/s+a1/s+b(2)* Value(ii))*W;
OK=MM(ii)+a1;%[num,den] = tfdata(VALTR,'v');
%[A,PP] = residue(num,den);
for j=1:length(PP1),
Value(ii+1)=Value(ii+1)+OK*A1(j)*exp(PP1(j)/freqS);
end
for j=1:length(PP2),
Value(ii+1)=Value(ii+1)+b(2)* Value(ii)*A2(j)*exp(PP2(j)/freqS);
end
end
end
plot(tt,Value)
B2
APPENDIX C
The ATMEGA32A Code
The program of the microcontroller ATMEGA32A which is used in the designed discrete
PIDcontroller in chapter 5. The program is written in C language.
#include <mega32a.h>
#include <delay.h>
#include <math.h>
float yy=0;
if(VAL<0.2904) PV=0 ;
if((VAL>=0.2904)&&(VAL<14.35)) PV=(016)/(0.290414.35)*(VAL14.35)+16;
if((VAL>=14.35)&&(VAL<28.41)) PV=(1632)/(14.3528.41)*(VAL28.41)+32;
if((VAL>=28.41)&&(VAL<42.47)) PV=(3248)/(28.4142.47)*(VAL42.47)+48;
if((VAL>=42.47)&&(VAL<56.54)) PV=(4864)/(42.4756.54)*(VAL56.54)+64;
if((VAL>=56.54)&&(VAL<70.60)) PV=(6480)/(56.5470.60)*(VAL70.60)+80;
if((VAL>=70.60)&&(VAL<84.66)) PV=(8096)/(70.6084.66)*(VAL84.66)+96;
if((VAL>=84.66)&&(VAL<98.72)) PV=(96112)/(84.6698.72)*(VAL98.72)+112;
if((VAL>=98.72)&&(VAL<112.8)) PV=(112128)/(98.72112.8)*(VAL112.8)+128;
if((VAL>=112.8)&&(VAL<126.8)) PV=(128144)/(112.8126.8)*(VAL126.8)+144;
if((VAL>=126.8)&&(VAL<140.98)) PV=(144160)/(126.8140.9)*(VAL140.9)+160;
if((VAL>=140.98)&&(VAL<155)) PV=(160176)/(140.98155)*(VAL155)+176;
if((VAL>=155)&&(VAL<169)) PV=(176192)/(155169)*(VAL169)+192;
if((VAL>=169)&&(VAL<183.1)) PV=(192208)/(169183.1)*(VAL183.1)+208;
if((VAL>=183.19)&&(VAL<197.1)) PV=(208224)/(183.1197.1)*(VAL197.1)+224;
if((VAL>=197.1)&&(VAL<211.2)) PV=(224240)/(197.1211.2)*(VAL211.2)+240;
C1
if((VAL>=211.2)&&(VAL<=224.4)) PV=(240255)/(211.2224.4)*(VAL224.4)+255;
if(VAL>224.4) PV=255;
else OO=floor(PV);
return OO;
delay_us(10);
ADCSRA=0x40;
ADCSRA=0x10;
return ADCW;
C2
// Declare your global variables here
double SP=5,Mot=220;
double Pr=7e24,Dif=1e16,Int=3e1;
double Er1=0,Er2=0,Ints=0;
double aaa=0;
if(yy==0){
if(Strt==0){
PORTD=getportv(Mot);
Er1=SP;
Strt=1;
else {
aaa= read_adc(1);aaa=aaa*5/1024*5;
Er2=SPaaa;
Ints=Ints+0.5*(Er1+Er2)/125000*freqs*Int;
Mot=Ints+(Er2Er1)*125000/freqs*Dif+Pr*Er2;
if(Mot>224.4) Mot=224.4;
if(Mot<0) Mot=0;
Er1=Er2;
PORTD=getportv(Mot);
yy=yy+1 ;
C3
if(yy>=freqs) yy=0;
void main(void)
// Port A initialization
PORTA=0x00;
DDRA=0x00;
// Port B initialization
PORTB=0x00;
DDRB=0x00;
// Port C initialization
PORTC=0x00;
DDRC=0x00;
// Port D initialization
C4
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
TCCR0=0x03;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
TCCR1A=0x00;
TCCR1B=0x00;
C5
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
C6
TIMSK=0x01;
// USART initialization
// USART disabled
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
ADCSRA=0x83;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
C7
#asm("sei")
delay_ms(10);
while (1)
C8