Objectives
1) Study DC motors
2) Study open-loop and closed-loop control
3) Control methods
I) Proportional feedback control
II) PID (proportional-integral-derivative) con
trol
CEG2400 Ch16: feedback control V3b
1) DC motors
For robots
CEG2400 Ch16: feedback control V3b
Motors
DC motors: Direct cur
rent motor, easy to c
ontrol and use. For m
aking wheeled robots
Servo motors for mak
ing robot legs http://
www.lynxmotion.com
/
CEG2400 Ch16: feedback control V3b
Small Direct Current D.C.
motors
Speed (~ 1200-2000 rpm).
Operates on a 3~5Volt, Ca
n use gear box (e.g. ratio 5
8:1) to increase torque
Use H-bridge circuit to bo
ost up current from the TL
L level to motor driving le
vel.
15351 PRO ,
picture from http://item.taobao.com/item.htm?
id=1606576457&tracelog=newcardfavirate
CEG2400 Ch16: feedback control V3b
Motor control chip
H-bridge Chips
2 (1A)
LEN
1(EN1/2)
LDIR
7(2A)
REN
RDIR
1Y(3)
(2Y)6
Left-motor
10(3A)
(3Y)11
9(EN3/4)
15(4A)
(4Y)14
Right-motor
L293D: H-bridge ci
rcuit, up 2A
LDIR: left motor di
rection; RDIR: righ
t motor direction
LEN : left motor e
nable; REN : right
motor enable
CEG2400 Ch16: feedback control V3b
2) open-loop and closed-loop
control
Feedback control
PID theory and
implementation
CEG2400 Ch16: feedback control V3b
Open-loop motor control and its prob
lems
Change motor supply power change speed
Problem: How much power is right?
Ans: dont know , depends on internal/external frictio
ns of individual motors.
Problem: How to make the robot move straigh
t?
How to control power (Ton) by ISR & an MCU?
Solution: Use feedback control to read actual wheel:
Slower, increase power (+ Ton)
Faster, reduce power (- Ton)
CEG2400 Ch16: feedback control V3b
Exercise
When using the open-loop control metho
d with a constant PWM signal for both wh
eels, explain why the robot would slow do
wn when climbing up hill.
Ans: When climbing up hill, energy is used to
act against gravity, hence the robot is running
slower.
CEG2400 Ch16: feedback control V3b
Feedback control
The real solution to real speed control is f
eedback control
Require speed encoder to read back the r
eal speed of the wheel at real time.
CEG2400 Ch16: feedback control V3b
First you need to have speed encoders
Read wheel speed.
Use photo interrupter
Use reflective disk to save space
Based on interrupts
CEG2400 Ch16: feedback control V3b
10
Wheel encoder
Our motor and
speed encoder
Each wheel rotation=
88 on/off changes
IR receiver
Darkened
part
blocks light
IR light source
CEG2400 Ch16: feedback control V3b
11
CEG2400 Ch16: feedback control V3b
12
New speed encoder
15351 PRO
,
picture from
http://item.taobao.com/item.htm?
id=1606576457&tracelog=newcardfavir
ate
Demo
movie
CEG2400 Ch16: feedback control V3b
13
Student ID: ___________,Date:_____________
Name: _______________CENG2400 , Ch 16 PID
Exercise 1: (Fill in ?__)
The Gear ratio =48, and the DC motor is rotati
66mm
ng at 200 Rotation/Second
So the wheel is rotating at
200/48 ?___ rotations per second
If the disk has 1 hole, the pulse frequency is ?_
_Hz.
If the disk has 4 holes, the pulse frequency is
200x4=?_____Hz.
Wheel radius is r=0.033m, perimeter is 2*pi*0.
033 m
The car is moving at 4 rotations per second=?
__________ meters per second (at full speed, qui
te fast)
The speed encoder gives out ?_______Hz pulses
This is when the disk has 1 hole,
The waveform is 200 Hz
Data. comes from
http://item.taobao.com/item.htm?spm=2013.1.0.116.KbMxbr&id=15172908917
CEG2400 Ch16: feedback control V3b
14
3) Control methods
I) Proportional feedback control
II) PID (proportional-integralderivative) control
CEG2400 Ch16: feedback control V3b
15
I) Proportional closed-loop feed back
control system
Show the left motor control only
if (leftErr >deadband)
leftPWM increase by (Pgain * leftErr)
Required speed
=leftRPMset
leftErr
+
-
Alter PWM
for driver
L293
leftPWM
Motor
leftRPM
CEG2400 Ch16: feedback control V3b
16
II) PID (proportional-integral-derivative) c
ontrol
A more formal and precise method
Used in most modern machines
CEG2400 Ch16: feedback control V3b
17
control method:
PID (proportional-integral-derivative) control
Required speed=
leftRPMset
leftErr
Motor
integral control
leftPWM
Igain* leftErr dt
Proportional control
Pgain*leftErr
sum
generates
PWM
for driver
L293
Derivative control
Dgain*[d(leftErr)/dt]
leftPWM
LeftRPM
leftRPM
CEG2400 Ch16: feedback control V3b
18
IR wheel
Speed
encoder
Introduction
Control for better performance
Use PID, choose whatever response you
want
Motor speed (w)
Too much overshoot/undershoot, not stable
Good performance
Criteria depends
on users and
applications
required
Response too slow
time
CEG2400 Ch16: feedback control V3b
19
Values to evaluate a control system
Exercise 2: Describe the terms n the follo
wing diagrams
Steady
state
error
overshoot
Target
value
Typically
value=10%
Depends
on application
undershoot
Rise time
time
Settling time
CEG2400 Ch16: feedback control V3b
20
Use of PID
control terms are intertwined
http://en.wikipedia.org/wiki/PID_controller
Kp (Pgain): Proportional Gain - Larger Kp typically
means faster response since the larger the error, t
he larger the Proportional term compensation. An
excessively
large proportional gain will lead to proc
ess instability and oscillation.
Ki (Igain): Integral Gain - Larger Ki implies steady s
tate errors are eliminated quicker. The trade-off is l
arger overshoot: any negative error integrated duri
ng transient response must be integrated away by
positive error before we reach steady state.
Kd (Dgain): Derivative Gain - Larger Kd decreases
overshoot, but slows down transient response and
may lead to instability due to signal noise amplifica
tion in the differentiation of the error.
CEG2400 Ch16: feedback control V3b
21
Effects of increasing parameters
http://en.wikipedia.org/wiki/PID_controller
Parameter
Rise Time
Overshoot
Settling
Time
Steady
state error
Kp (Pgain) Decrease
step1
Increase
Small
Change
Decrease
Ki (Igain)
Increase
Increase
Eliminate
step3
Decrease
step2
Decrease
Small
Change
Decrease
Kd (Dgain) Small
Change
CEG2400 Ch16: feedback control V3b
22
Software
PIDrobotdemo.c
(at course webpage)
http://www.cse.cuhk.edu.hk/khwong/ceg2400/PIDRobotDemo.c
CEG2400 Ch16: feedback control V3b
23
IR receiver
Speed Encoder
sensor
interrupts
1000 interrupts per second
PID control algorithm using interrupt
Main( )
{
Setup( );
:
:
}
_IRQ( )//1000Hz
{
:
read wheel speed
PID
:
}
CEG2400 Ch16: feedback control V3b
24
time
Overview
//////////////main //////////////////////////////////////
Main()
{ setup()
forward (Lstep, Rstep, Lspeed, Rspeed)..
}
////////////subroutine //////////////////////////////////////////
forward (Lstep, Rstep, Lspeed, Rspeed)
{ lcount=0
if (lcount>=Lstep)
Stop left motor
same for right motor
.}
//////////timer triggered , interrupt service routine, 1000Hz///////
__irq exception// Interrupt() running at 1000HZ
{ lcount++
read wheel speeds
PID control to achieve L/Rspeed
.same for right motor.
}
CEG2400 Ch16: feedback control V3b
25
Interrupt
rate 1000Hz
_IRQ
see next slide
Speed encoder interfacing
(show left motor only)
Block diagram
ARM7-microcontroller
LPC2131
1000Hz timer
interrupt
/int0
IR
transmitter
In our robot
88 pattern changes
in one rotation
GPIO
Parallel
interface
CPU
IR receiver
(speed
encoder
sensor)
CEG2400 Ch16: feedback control V3b
26
Exercise 3
_irq interrupt programming method for the
main PID loop, using a counter (intcount)
__irq() exception //timer interrupt 1000HZ,
{ intcount++; //intcount
//increases at 1000 times/sec
//read motor speed:
//update the motor speed in every 1/4 seconds
if(intcount==250) // happens at every seconds
{
PID CORE
read wheel speed
Control the PWM using PID
intcount=0;
}
}
Question: If if(intcount==250) is changed to if(intcount==500)
What happens?
CEG2400 Ch16: feedback control V3b
27
The interrupt service routine enables the
loop to run 4 times in a second
Loop once in seconds
CEG2400 Ch16: feedback control V3b
28
Speed control interrupt core _irq()
part 1: Find motor speed, leftRPM
lefttimeval
Speed
encoder
sensor
void __irq IRQ_Exception()
{ms++; intcount++;
//get the current wheel sensor values
Part1
lcur=IO0PIN & LWheelSen;rcur=IO0PIN & RWheelSen;
Read
lcount++;lold=lcur;lefttimeval++;}
time
Wheel if(lcur!=lold) {
:
Interrupts 1000 Hz
speeds
//update motor speed by PID feed back control in every Seconds
if(intcount==250) { //calculate the speed of left motor in RPM
leftRPM=lefttimeval;
:
PID core : See following slides
Part 2
PID
control
intcount=0;
lefttimeval=0;
}
CEG2400 Ch16: feedback control V3b
lcount :steps of wheel
lcur : sensor read 1 or 0
lefttimeval: time lapsed
since sensor last change of
29
state
Part 2 :Algorithm for PID core
For every seconds
Set_point
Find error=(desired value - measured value)
{If (error>dead band )
{ find
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
Error,
Accumulated error (add up all previous errors)
Derivative error (current error previous error)
PWM+=Kp* Error+
Ka*(Accumulated error)+
Kd* Derivative error ;
}
Else
Error <= dead_band, error too small do nothing
CEG2400 Ch16: feedback control V3b
30
part 2: PID core
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
PID core
if(intcount==250) {//for every seconds
//caculate the speed of left motor in RPM
leftRPM=lefttimeval;
P=Proportional
leftErr = leftRPMset - leftRPM; //caculate left error
I Integral
if((leftErr<DeadBand*(-1))||(leftErr>DeadBand)) //see next slide
{ //if |left error| > deadband
leftP = Pgain * leftErr;
//calculate P Proportional term
leftI = Igain * leftaccErr; //calculate I Integral term
leftD = Dgain * (leftErr - leftlastErr);//calculate D Derivative term
leftPWM += (leftP + leftI + leftD);//update left motor PWM using PID
if(leftPWM>PWM_FREQ)
leftPWM=PWM_FREQ;//prevent over range (max.=PWM_FREQ)
if(leftPWM<0) leftPWM = 0; // (min. = 0)
leftaccErr += leftErr; // accumulate error
leftlastErr = leftErr; //update left last error
D Derivative
:
: // handle right motor similarly.
current_leftRPM = leftRPM*240/88;
current_leftPWM = leftPWM;//
Pgain, Igain, Dgain are
lefttimeval = 0;
constants found by a trial and
}
because each rotation has 88 counts, the ISR loop is
in seconds, each minutes 60 seconds. see line 18
CEG2400 Ch16: feedback control
error method, here we have
Pgain = 8000;
Igain = 6000;
Dgain = 31
5000;
V3b
control method:
PID (proportional-integral-derivative) control
Required speed=
leftRPMset
leftErr
Motor
integral control
leftPWM
Igain* leftErr dt
Proportional control
Pgain*leftErr
sum
generates
PWM
for driver
L293
Derivative control
Dgain*[d(leftErr)/dt]
leftPWM
LeftRPM
leftRPM
CEG2400 Ch16: feedback control V3b
32
IR wheel
Speed
encoder
Inside the PID core, we will study these li
nes
5) if((leftErr<DeadBand*(-1))||(leftErr>DeadBand))
:
:
7) leftP = Pgain * leftErr;
//calculate P Proportional term
8) leftI = Igain * leftaccErr;
//calculate I Integral term
9) leftD = Dgain * (leftErr - leftlastErr);//calculate D Derivative ter
m
10) leftPWM += (leftP + leftI + leftD);//update motorPWM by PID
:
:
14) leftaccErr += leftErr;
// accumulate error
CEG2400 Ch16: feedback control V3b
33
Dead band
line5) if((leftErr<DeadBand*(-1))||(leftErr>DeadBand))
Dead-band : A Dead-band (sometimes called a
neutral zone) is an area of a signal range or ba
nd where no action occurs :
leftErr = leftRPM - leftRPMset; //calculate left error
if(leftErr>DeadBand )
{ activate motor}
only enable motor when leftErr> a small value (deadban
d, ie =1 in our robot )
Otherwise may oscillate when leftErr is small
Dead-band
CEG2400 Ch16: feedback control V3b
34
Exercise 4:
Discuss what will happen if dead-band is changed, say (a) 0.5 or (b) 2.
Example of a dead band ;do nothing if 10-1<leftPRM <10
+1
Dead band
overshoot
+/- 1
In our experiment
leftPWM=276000 at the beginning and
192800 at steady state
Steady
state
error
Target speed=
leftRPMset =10
undershoot
Typically
value=10%
Depends
on application
time
Settling time
0
Rise time
When leftRMPset=10, the real RPM is RPM*240/88=27.3., because each
rotation has 88 counts, the ISR loop is in seconds, each minutes 60 seconds.
CEG2400 Ch16: feedback control V3b
35
see line 18
Parameters for evaluating a control syste
m
near steady state
See next slide
Steady
state
error
overshoot
Target
value
Typically
value=10%
Depends
on application
undershoot
Rise time
time
Settling time
CEG2400 Ch16: feedback control V3b
36
(line 7) Effects of increasing Kp(P)
http://en.wikipedia.org/wiki/PID_controller
Parameter
Rise Time
Overshoot
Settling
Time
Steady
state error
(1) Kp
(Pgain)
Decrease
step1
Increase
Small
Change
Decrease
Ki (Igain)
Decrease
Increase
Increase
Eliminate
step3
Decrease
step2
Decrease
Small
Change
Kd (Dgain) Small
Change
CEG2400 Ch16: feedback control V3b
37
Example: t0t1, The proportional term
when the measurement is below the set point (leftRPMse
t), proportional P term is +ve
(leftErr = leftRPMset-leftRPM )
overshoot
Usage of the P proportional term
Each seconds a new
left RPM (speed of wheel) is measured
Target speed=
leftRPMset =10
8
6
leftErr=
leftRPMset
leftPRM
=10-6=4
undershoot
P is
+ve
P is
+ve
t1 t2 t3 t4
Rise time
leftP = Pgain * leftErr;
leftP= 8000* (10-6)= 8000*4 is positive
This term pushing up leftPWM
(more energy delivered to the wheel).
leftErr=
leftRPMset
leftPRM
=30-28=2
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
time
leftP = Pgain * leftErr;
leftP= 8000* (0-8)= 8000*2 is positive
This term pushing up leftPWM
(more energy delivered to the wheel).
CEG2400 Ch16: feedback control V3b
38
Exercise 5: Fill in ?__: t0t1, The proportional term
when the measurement is below the set point (leftRPMse
t), proportional P term is +ve
overshoot
Usage of the P proportional term
Each seconds a new
left RPM (speed of wheel) is measured
Target speed=
leftRPMset =10
8
6
leftErr=
leftRPMset
leftPRM
=10-6=4
undershoot
P is
+ve
P is
+ve
t1 t2 t3 t4
Rise time
leftP = Pgain * leftErr;
leftP= 8000* (10-6)= 8000*4 is positive
This term pushing up leftPWM
(more energy delivered to the wheel).
0
leftErr=
leftRPMset
leftPRM
=10-8=2
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
time
leftP = Pgain * leftErr;
leftP=?___________ ,is +ve or -ve?
leftPWM is increasedor decreased?__
more/less energy delivered to wheel?__
CEG2400 Ch16: feedback control V3b
39
Example: t1t3,The proportional term
when the measurement is below the set point (leftRPMset)
, the proportional P term is +ve
Target speed=
leftRPMset =10
leftErr=
leftRPMset
leftPRM
=10-13= -3
P is
-ve
overshoot
13
Usage of the P proportional term
Each seconds a new
left RPM (speed of wheel) is measured
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
undershoot
P is
+ve
0
t1 t2 t3
Rise time
t4
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
time
leftP = Pgain * leftErr;
leftP= 8000* (10-13)= 8000*(-3) is negative
This term lowering down leftPWM (less energy delivered to the wheel).
CEG2400 Ch16: feedback control V3b
40
Understanding PID a little summary for
the P proportional term
When the measurement is below the set point (leftRPM
set)
The motor is slow
The P proportional term is +ve, pushing the speed higher
When the measurement is above the set point (leftRPM
set)
The motor is running too fast
The P proportional term is -ve, lowering down the speed.
Increase in Pgain (Kp) will decrease rise time (meaning
faster to reach set point) , decrease steady state error
(study it later)
But increase overshoot
CEG2400 Ch16: feedback control V3b
41
(line 9 ) Effects of increasing Kd (D) dx/dt
http://en.wikipedia.org/wiki/PID_controller
Parameter
dx/dt
Rise Time
Overshoot
Settling
Time
Steady
state error
Kp (Pgain) Decrease
Igain
step1
Increase
Small
Change
Decrease
Ki (Igain)
gainI
Increase
Increase
Eliminate
step3
Decrease
Kd (Dgain) Small
Change
Decrease Decrease
step2
CEG2400 Ch16: feedback control V3b
42
Small
Change
Derivative term
Derivative control
Dgain*[d(leftErr)/dt]
d(leftErr)/dt =
=Derivative term
=current_Err - last_Err
=leftErr leftlastErr ; in our program
CEG2400 Ch16: feedback control V3b
43
Example: time 0 t1, the Derivative term (=current-previous) When the m
easurement is rising, the Derivative term is -ve
Target
Value=
seconds
overshoot
leftRPMset
=10
leftRPMset =10
leftErr=
leftRPMset
7
leftPRM
=10-7=3
leftlastErr= 3
leftRPMset
eftlastPRM
=10-3=7
0
Usage of the D Derivative term
Each seconds a new
left RPM (speed of wheel) is
measured
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
undershoot
D is
-ve
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
t1 t2 t3 t4
time
Rise time
leftD = Dgain * (leftErr leftlastErr);
leftD= 5000* (3-7)= 5000*( -4) is negative
This term lowering down leftPWM (less energy delivered to the wheel).
CEG2400 Ch16: feedback control V3b
44
Example: time t1t2, the Derivative term
When the measurement is rising, the Derivative term is -ve
leftErr=
leftRPMset -leftPRM
=10-15= -5
leftPRM
15
12
leftRPMset =10
seconds
overshoot
leftlastErr=
leftRPMset -leftlastPRM
=10-12= -2
D is D is
-ve -ve
t1 t2
Rise time
Usage of the D Derivative term
Each seconds a new
left RPM (speed of wheel) is
measured
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
undershoot
t3
t4
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
time
leftD = Dgain * (leftErr leftlastErr);
leftD= 5000* (-5- (-2))= 5000*(-3) is negative
This term lowering down
CEG2400 Ch16: feedback control
leftPWM (less energy delivered to the wheel).
V3b
45
Little Summary: Negative D Derivative term
When the measurement (leftRPM) is rising, the change
(change= current-previous) of error (error = setpoint-lef
tRPM ) is -ve = d(Err/dt)=-ve
D Derivative term= Kd*d(Err/dt) is VE
Decrease energy to motor decrease overshoot
overshoot
Setpoint
undershoot
D is D is
-ve -ve
t1 t2 t3 t4
time
Rise time
CEG2400 Ch16: feedback control V3b
46
Example: time t2t3, the Derivative term
When the measurement is falling, the Derivative term is +ve
leftRPMset =10
seconds
leftPRM
14
11
leftlastErr=
leftRPMset -leftlastPRM
=10-14= -4
overshoot
Usage of the D Derivative term
Each seconds a new
left RPM (speed of wheel) is
measured
undershoot
D is D is
D is -ve +ve
-ve
t1 t2 t3
0
Rise time
t4
leftD = Dgain * (leftErr leftlastErr);
leftD= 5000* (-1- (-4))= 5000*3 is positive
This term pushing up
CEG2400 Ch16: feedback control
leftPWM (more energy delivered to the wheel).
leftErr=
leftRPMset -leftPRM
=10-11= -1
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
time
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
V3b
47
Exercise 6:Fill in ?_ time t2t3, the Derivative t
erm
When the measurement is falling,
theofDerivative
termterm
is +ve
Usage
the D Derivative
seconds
leftPRM
overshoot
Each seconds a new
left RPM (speed of wheel) is
measured
leftRPMset =10 9
7
undershoot
D is
leftlastErr=
D is D is +ve
+ve
leftRPMset -leftlastPRM
D is -ve
=10-9= 1
-ve
t1 t2 t3 t4
0
Rise time
leftD = Dgain * (leftErr leftlastErr);
leftD= ?___________, which is +ve or ve?____
leftPWM increased or decreased?____
More/less energy delivered to the wheel?___
leftErr=
leftRPMset -leftPRM
=10-7= 3
e.g.
Pgain = 8000;
Igain = 6000;
time
Dgain = 5000;
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
48
CEG2400 Ch16: feedback control V3b
Little Summary: Positive D Derivative term
When the measurement (leftRPM) is falling, the change
(change= current-previous) of error (error = setpoint-lef
tRPM ) is +ve
D Derivative term= Kd*d(Err/dt) is +VE
Increase energy to motor decrease undershoot
overshoot
Setpoint
undershoot
D is D is
+ve +ve
0
t1 t2 t3 t4
time
Rise time
CEG2400 Ch16: feedback control V3b
49
Understanding PID a little summary for
the D derivative term
When the measurement (leftRPM) is rising,
The motor is gaining speed
The D derivative term is ve, so lowering the motor speed decrease
overshoot
When the measurement (leftRPM) is falling,
The motor is reducing speed
The Derivative term is +ve, so pushing the motor speed higher decre
ase undershoot
In conclusion, the gradient of the error (Err) determines t
he adjustment. Depends on whether d(Err)/dt is +ve or v
e.
Increase in Dgain (Kd) will decrease overshoot/undershoot
and settling time (system more stable)
CEG2400 Ch16: feedback control V3b
50
(line 8)Effects of increasing Ki (I) http://en.wiki
pedia.org/wiki/PID_controller
Parameter
Rise Time
Overshoot
Settling
Time
Steady
state error
Kp (Pgain) Decrease
step1
Increase
Small
Change
Decrease
Ki (Igain)
Increase
Increase
Eliminate
step3
Decrease
step2
Decrease
Small
Change
Decrease
Kd (Dgain) Small
Change
CEG2400 Ch16: feedback control V3b
51
control method:
PID (proportional-integral-derivative) control
Required speed=
leftRPMset
leftErr
Motor
integral control
leftPWM
Igain* leftErr dt
Proportional control
Pgain*leftErr
sum
generates
PWM
for driver
L293
Derivative control
Dgain*[d(leftErr)/dt]
At steady state, leftErr0, so
So, Pgain*leftErr=0
leftRPM
leftPWM
LeftRPM
also Dgain*[d(leftErr)/dt] =0
And if no Integral { Igain* leftErr dt} term, left PWM 0
It is a problem.
CEG2400 Ch16: feedback control V3b
52
IR wheel
Speed
encoder
Time near steady state
leftRPMset=leftRPM
hence leftErr =0, leftlastErr=0 leftP=0, leftD=0
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
e.g.
leftErr = leftRPMset leftRPM=0
Pgain = 8000;
So as leftlastErr = 0
Igain = 6000;
Therefore
Dgain = 5000;
Steps
7) leftP = Pgain * leftErr//=0
//calculate P Proportional term
8) leftI = Igain * leftaccErr; //calculate I Integral term
9) leftD = Dgain * (leftErr - leftlastErr)//=0
//calculate D Derivative term
10) leftPWM += (leftP + leftI + leftD);//update left motor PWM using PID
near steady state : leftP=0
leftD=0
The only valid term is the integral term leftI
) leftPWM += leftI
) The main idea is to create a small term (left
I) to maintain the leftPWM value
CEG2400 Ch16: feedback control V3b
53
The integral term is found by adding all p
revious errors
same as leftaccErr=sum{leftErr(t=0)+leftErr(t=1)+..
+leftErr(t=now)}
14) leftaccErr += leftErr;//LeftaccErr is the summation of all previous
8) leftI=Igain*leftaccErr// integral term,
errors
:
10) leftPWM += leftI // near steady state, only leftI is valid
Dont worry it will not become infinitive, one measure to safeguar
d this is:
e.g.
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
11) if(leftPWM>PWM_FREQ);// PWM_FREQ=maximum PWM allowed
12) leftPWM=PWM_FREQ;//prevent over range
(max.=PWM_FREQ)
Also, because near steady state , leftaccErr will adjust itself auto
matically, see next slide
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
CEG2400 Ch16: feedback control V3b
54
How the integral term adjusts itself auto
matically near steady state
Pgain = 8000;
Igain = 6000;
Dgain = 5000;
Near steady state
8) leftI=Igain*leftacceErr
10) leftPWM += leftI
If measured speed (leftRPM) > set point
leftErr is -ve
leftaccErr (Acculumation) decreases,
hence reducing leftaccErr at a suitab
le value to maintain leftPWM
If measured speed (leftRPM) < set point
leftErr is +ve
leftaccErr (Acculumation) increases,
hence increasing leftaccErr at a suit
able value to maintain leftPWM
CEG2400 Ch16: feedback control V3b
In our experiment
leftPWM=276000 at the
beginning and
192800 at steady state
55
Understanding PID a little summary for
the I Integral term
When the measurement is below the set point (leftRPMset)
The motor is slow
The I Intergral term is +ve, pushing the speed higher
When the measurement is above the set point (leftRPMset)
The motor is running too fast
The I intergral term is -ve, lowering down the speed.
Increase in Igain (Ki) will result in
It is similar to the P term (see above two points)
So increase overshoot, settling time
and decrease rise time
Note: the main function of Integral control is to reduce steady state err
or
CEG2400 Ch16: feedback control V3b
56
PID Tuning
(usually done by
trail and error)
Tune (adjust manually)
Motor speed
Accepted
performance
V1
(V1)/2
step1) Pgain proportional_gain (Kp),
step2) Dgain derivative_gain (Kd),
step3) Igain integral_gain (Ki)
T1
unstable
Set constant speed V1 for a while (5 seconds) and reduc
ed to (V1)/2 at T1
Record the speed by the computer after T1 and see if the pe
rformance is ok or not
Yes (accept Kp,Ki,Kd)
No (tune Kp,Ki,Kd again)
done
CEG2400 Ch16: feedback control V3b
57
time
Application of
PID
CEG2400 Ch16: feedback control V3b
58
Robot Turning
(for smooth circular turns around 90-degree corn
ers)
http://micromouse.cannock.ac.uk/dynamics/smoothcorners.htm
Required speed V (meters per minute)
Turning radius R (meters), from a point to robot center
Wheel diameter = a (meters)
Use similar triangle
V1 V V2
V1/(R+D/2)=V/R
V1=V+(VD)/2R
V2/(R-D/2)=V/R
a
V2=V-(VD)/2R
D/2 D/2
R
wi=rotations per
minute of wheel i
D
Result
w1=V1/(2a/2)=(2RV+VD)/(2Ra)
w2=V2/(2a/2)=(2RV-VD)/(2Ra)
smooth circular turn
CEG2400 Ch16: feedback control V3b
59
Summary
Studies PID control theory and implement
ation
CEG2400 Ch16: feedback control V3b
60
Appendix:
New robot drive circuit ver13.3
CEG2400 Ch16: feedback control
V3b
61