Sei sulla pagina 1di 9

HOME PRODUCTS QODE SHARE SHOP 0

08
CHAPTER

INTRODUCTION TO CONTROL THEORY &


PID CONTROLLERS

PID controller, proportional–integral–derivative controller, is a control loop feedback mechanism widely


used in industrial control systems and a variety of other applications requiring continuously modulated
control. A PID controller continuously calculates an error value as the difference between a desired
setpoint and a measured process variable and applies a correction based on proportional, integral, and
derivative terms (denoted P, I, and D respectively) which give the controller its name. When working with
Nova, we will be using PID controllers in our sketch in order to achieve smooth movements in a variety of
different applications.

The basic idea behind a PID controller is to read a sensor, then compute the desired actuator output by
calculating proportional, integral, and derivative responses and summing those three components to
compute the output. Before we start to define the parameters of a PID controller, we shall see a simple
example explaining what a closed loop system is and some of the terminologies associated with it.

First of all, the setpoint (SP) is the value that we want the process to be. For example, the temperature
control system in a house may have a SP of 22°C. This means that the heating and cooling process in this

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
house is expected to achieve a steady temperature of as close to 22°C as possible. The PID controller
looks at the setpoint and compares it with the actual value of the Process Variable (PV). Back in the house,
the box of electronics that is the PID controller in the Heating and Cooling system looks at the value of the
temperature sensor in the room and sees how close it is to 22°C.
 
If the SP and the PV are the same – this the ideal case for the controller. It doesn’t have to do anything, it
will set its output to zero.

However, if there is a difference between the SP and the PV we have an error and corrective action is
needed. In the house, this will either be cooling or heating depending on whether the PV is higher or
lower than the SP respectively.

Let’s imagine the temperature PV in the house is higher than the SP. It is too hot. The air-con is switched
on and the temperature drops. The sensor picks up the lower temperature, feeds that back to the
controller, the controller sees that the “temperature error” is not as great because the PV (temperature)
has dropped and the air con is turned down a little. This process is repeated until the house has cooled
down to 22°C and there is no error. Then a disturbance hits the system and the controller has to kick in
again. In this example, the disturbance may be the sun beating down on the roof, raising the temperature
of the air inside. This is a simple feedback control system.

Another everyday example is the cruise control system on a road vehicle; where external influences such
as gradients would cause speed changes, and the driver has the ability to alter the desired set speed. The
PID algorithm restores the actual speed to the desired speed in the optimum way, without delay or
overshoot, by controlling the power output of the vehicle's engine.

Below is the classic block diagram of a process under PID control:

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
To understand this block diagram better, let's use another example, an analogy of changing lanes on a
freeway on a windy day. We are the driver, and therefore the controller of the process of changing the car’s
position. Below is the block diagram we used above, with the labels changed to represent the car-on-
windy-freeway control loop.

Notice how important closing the feedback loop is. If we removed the feedback loop we would have to

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
control the car’s position with our eyes closed, as there would not be any feedback coming from the
outcome of the process. In this example, our eyes are the sensors which measures the position of the car
(PV) continuously and feeds the data back to the input, which is the steering wheel in order to keep the car
in the desired position (SP).

As we saw in the house-temperature example and the car changing lanes analogy, the controller takes
both the PV and SP signals, which it then puts through a black box to calculate a controller output. That
controller output is sent to an actuator which moves to actually control the process.

We are interested here in what the black box actually does, which is that it applies 1, 2 or 3 calculations to
the SP and Measured PV signals. These calculations, called the “Modes of Control” include:

- Proportional (P)
- Integral (I)
- Derivative (D)

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
The block diagram of the PID Controller might look complex but actually it is a simple operation. The PV
is subtracted from the SP to create the Error. The error is simply multiplied by one, two or all of the
calculated P, I and D actions (depending which ones are turned on). Then the resulting “error x control
actions” are added together and sent to the controller output.

These 3 modes are used in different combinations:

- P | Sometimes used
- PI | Most often used
- PID | Sometimes used

Term "P" is proportional to the current value of the SP − PV error e(t). For example, if the error is large and
positive, the control output will be proportionately large and positive, taking into account the gain factor
"K". Using proportional control alone in a process with compensation such as temperature control, will
result in an error between the setpoint and the actual process value, because it requires an error to
generate the proportional response. If there is no error, there is no corrective response.

Term "I" accounts for past values of the SP − PV error and integrates them over time to produce the I term.
For example, if there is a residual SP − PV error after the application of proportional control, the integral
term seeks to eliminate the residual error by adding a control effect due to the historic cumulative value of
the error. When the error is eliminated, the integral term will cease to grow. This will result in the
proportional effect diminishing as the error decreases, but this is compensated for by the growing integral
effect.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Term "D" is a best estimate of the future trend of the SP − PV error, based on its current rate of change. It
is sometimes called "anticipatory control", as it is effectively seeking to reduce the effect of the SP − PV
error by exerting a control influence generated by the rate of error change. The more rapid the change,
the greater the controlling or dampening effect.

Tuning: The balance of these effects is achieved by "loop tuning" to produce the optimal control
function. The tuning constants are shown below as "Kp, Ki and Kd" and must be derived for each control
application, as they depend on the response characteristics of the complete loop external to the
controller. These are dependent on the behaviour of the measuring sensor, the final control element, any
control signal delays and the process itself. Approximate values of constants can usually be initially
entered knowing the type of application, but they are normally tuned, by testing the process in practice by
such as introducing a setpoint change and observing the system response. We will go over these Kp, Ki
and Kd constants and the tuning process later when we would be creating a PID controller for Nova on
Arduino Software (IDE).

After a brief look on what control theory is, let's see why would we need it for Nova in a couple of
examples before getting into coding.

For example, let's assume we are programming Nova to track an object with a specific colour, a red ball as
an example. The main purpose of tracking for this example is to keep the object always in the center of
the frame by moving the camera. If the resolution of the video frame that we are using to track the red ball
is 320 x 240 pixels, the exact central position of the red ball should be 160 pixels horizontal and 120 pixels
vertical, ideally. These coordinates (160, 120) are your setpoint, the target values you want Nova to
achieve. Imagine you move the ball to the left relative to the camera, let's say 40 pixels far away. We
would have an error of 40 pixels in the x axis. This error should be feedback to the motors in such a way
that Nova moves and gets back to the setpoint as quick as possible without overshooting the target value.
Without a PID controller, it is very challenging to achieve a smooth tracking in computer vision
applications.

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
Another application of PID controller with Nova will be covered in the next chapters with ultrasonic sound
sensors to measure and keep a specific distance between the sensor and an object. We will be providing a
setpoint such as 15 cm, as the target distance we want Nova to keep between with an object. PV will be
the current value that the ultrasonic sound sensor measures. The difference between them, the error, will
be feedback to the motors in order for Nova to keep the same distance even if the object moves. We will
see the details in the next chapters.

Now, let's open Arduino Software (IDE) and we can start getting familiar with PID library and functions.   

PID CONTROLLER WITH ARDUINO SOFTWARE (IDE)


 
Just as we discussed before, PID library in Arduino Software(IDE) has PV, SP and output generated.
Process Value, PV, is referred as "Input" in PID library as it is the data we are getting from sensors. PID
controller requires 3 variables:

- What to measure, referred as the "Input",


- Where you want that measurement to be, referred as the "Setpoint",
- The variable to adjust that can make that happen, referred as the "Output".

The PID then adjusts the output trying to make the input equal the setpoint.

Let's start by downloading the PID library through the link below:
 
https://github.com/br3ttb/Arduino-PID-Library/

Unzip the folder and make sure the name of the folder is PID_v1. Then, copy this folder to the Libraries
folder under Arduino folder on your PC. Then, restart the Arduino Software (IDE). If you have done it
correctly, you should see the PID library appear under File > Examples.

The black magic of PID comes in when we talk about how it adjusts the Output to drive the Input towards
Setpoint. There are 3 tuning parameters: Kp, Ki and Kd. Adjusting these values will change the way the
Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
output is adjusted. All of these can be achieved depending on the values of Kp, Ki, and Kd.

There isn't one right answer for the right tuning values to use. The values that work for one application
may not work for another, just as the driving style that works for a truck may not work for a race car. With
each new application you will need to try several tuning values until you find a set that gives you what you
want.
 
Let's start by investigating the functions that are provided with PID library:

PID(): Creates a PID controller linked to the specified Input, Output, and Setpoint. The PID algorithm is in
parallel form. Syntax of the function is as shown below.

PID(&Input, &Output, &Setpoint, Kp, Ki, Kd, Direction)

Input: The variable we're trying to control (double).


Output: The variable that will be adjusted by the PID (double).
Setpoint: The value we want to Input to maintain (double).
Kp, Ki, Kd: These tuning parameters affect how the PID will change the output(double>=0).
Direction: Either DIRECT or REVERSE. This determines which direction the output will move when faced
with a given error. DIRECT is most common.
Compute(): Contains the pid algorithm. it should be called once every loop(). Most of the time it will just
return without doing anything. At a frequency specified by SetSampleTime() it will calculate a new Output.
SetOutputLimits(): The PID controller is designed to vary its output within a given range. By default this
range is 0-255: the arduino PWM range. There's no use sending 300, 400, or 500 to the PWM. Depending
on the application though, a different range may be desired. Syntax is as following: SetOutputLimits(min,
max).
SetSampleTime(): Determines how often the PID algorithm evaluates. The default is 200mS. For robotics
applications this may need to be faster, but for the most part 200mS is plenty fast. Syntax is as following:
SetSampleTime(SampleTime).

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD
We will understand these functions and the programming structure better in the next chapter when we will
be working with the Ultrasonic Sound Sensor.

PREVIOUS CHAPTER MAIN MENU NEXT CHAPTER

CONTACT US
ABOUT CREOQODE
CREOQODE ON PRESS
TERMS & CONDITIONS
 Email Address SUBSCRIBE NOW
SHIPPING POLICY

DESIGNED & ENGINEERED IN LONDON, UK


© 2019 Creoqode

Create PDF in your applications with the Pdfcrowd HTML to PDF API PDFCROWD

Potrebbero piacerti anche