What is a PID Controller? | DigiKey
Vložit
- čas přidán 6. 06. 2024
- PID controllers are popular control mechanisms found in many systems used to help drive the main process’s output to achieve some desired set point. PID stands for “proportional, integral, derivative.” The controller compares the output of the process to some set point to create an error term. That error term is used in three separate calculations to produce a control signal for the process or plant.
The written description for PID controllers can be found here: www.digikey.com/en/maker/proj...
In the video, we use an example of a cruise control system in a car. We want to design a mechanism that can maintain a constant speed by controlling the position of the accelerator (gas pedal). PID controllers are a perfect fit for such a system. In fact, most modern cars use PID controllers for cruise control.
A simple, naive approach to designing such a controller is to adjust the process’s input signal based on the set point alone with no feedback. This is known as an “open-loop control system.” This may work in some cases, but most of the time, the output is dependent on other factors (such as road conditions and hill climbs for our cruise control system). As a result, we need to incorporate feedback into our controller.
A “closed-loop control system” measures the actual output of the process and compares it to the set point. The error is the difference between these two values, and it’s used as the input to the controller. The controller looks at that error and makes adjustments as needed to the process’s input.
The proportional (P) part of the PID controller simply multiplies the error term by a constant, Kp. The further away the process’s output is from the set point, the higher the magnitude of the input value. This works in some cases, but it can result in “steady-state error” where the desired output can never be achieved. In our cruise control example, if we are at our cruising speed, the error is 0, which means that we should completely release the gas pedal. Obviously, this is not a desired behavior, so we add additional terms to our controller.
The integral (I) term sums the error term over time and multiplies this sum by a constant, Ki. This process solves the issue of steady-state error found in the P controller. As the steady-state error accumulates, the I term causes the process input signal to increase, thus closing the gap found in that steady-state error. It essentially looks at the past performance of the system and adjusts as needed.
Sometimes, a PI controller is sufficient. However, you often face a tradeoff when tuning such a system. You can either have an “overdamped response” where the error slowly (but surely) approaches 0, or you can have an “underdamped response” in which the output quickly approaches the set point but oscillates for some time. If you want a “critically damped” system that quickly approaches the set point and settles with little or no oscillation, you need to add a third term.
The derivative (D) term counteracts the effects of the proportional and integral terms. It attempts to predict where the response is headed by solving for the slope of the error curve and multiplying that value by the constant Kd. If the magnitude of the slope is too high, such that the system is approaching 0 error too quickly, it will add a negative value to the sum of the P and I terms, thus “pulling back” on the input.
With properly tuned Kp, Ki, and Kd values, systems should ideally become critically damped where the output quickly approaches the set point without any overshoot. Tuning a PID controller can be quite involved, and we will cover it in a future video.
Note that most modern PID controllers are implemented in software to run on computers or microcontrollers. We provide a snippet of pseudocode to help you get started implementing your own PID controllers in, say, Arduino.
Product Links:
STMicroelectronics Inverted Pendulum Kit - www.digikey.com/en/products/d...
Related Articles:
STMicroelectronics Inverted Pendulum Kit Curriculum - www.st.com/content/st_com/en/...
Learn more:
Maker.io - www.digikey.com/en/maker
DigiKey’s Blog - TheCircuit www.digikey.com/en/blog
Connect with DigiKey on Facebook / digikey.electronics
And follow us on Twitter / digikey
00:00 - Intro
00:57 - Control Theory Overview
02:53 - Open-loop System
03:59 - Closed-loop System
05:06 - Proportional Controller - Distance
07:37 - Proportional Controller - Cruise Control
10:04 - Proportional and Integral Controller
14:05 - Over, Under, and Critically Damped Responses
15:04 - Proportional, Integral, and Derivative Controller
18:12 - PID Controller Tuning
19:43 - Code Example
21:09 - Use Cases
21:44 - Conclusion - Věda a technologie
I have watched many videos on PID control, but this is the one where it finally clicked.
This is honestly the BEST explanation of PID. I’ve watched many videos on it and read articles. I’ve just hear that it’s an “art” or that it’s something debated about, but nothing like this. This just straight into the facts and math.
Glad you liked it! Tuning them can be a bit of an art, which I only briefly covered here :)
Same here, even some of the "better" articles would neglect or leave out one element or another. He covered each mode and key aspects so well- it was like I could "see" each mode in action just from his explanations. TYVM, Shawn! I plan to share this with my class and possibly an instructor from a previous class.
@@JL-to9vg Thank you! I hope that your students find the explanation useful!
The best PID control explanation.
I have watched many videos on PID , but this is the one from which I understand, Thanks
Brilliant! I love that the PID controller applies to so many widely varying systems... massive boilers operating on hour time scales, or as fast as modern motor controllers in the millisecond range.
Best ever pid explanation
Honestly, this is the BEST explanation of PID, although the SUM column is summed wrong.
Beautifully explained PID
Shawn, you are such an excellent presenter! Looking forward to more. I really loved your KiCad tutorial series also.
I still refer back to that series when I work on my boards
Been looking to get deeper into PID controllers. Perfect timing on the video.
Thank you Shawn for diving into PID controllers. This is extremely helpful.
One of the best video that actually help you to understand how a PID controller works.
Great video Shawn, out of all the courses I've taken about PID loops you've really explained the principles and terms spot on!
Probably the BEST video on PID controllers.
Shawn, another fantastic video. Thank you DigiKey!!
Shawn, this is one of the best explanation on PID, thanks a lot.
Would have been amazing if my Control Systems professor had just played this video for us
Same!!
I love you bro. thanks for filling in the gaps of my knowledge. I have been using the STM32 nucleo family to build a UAV controller. definately perfect timing for me too.
I was trying to understand this as an programmer for almost a year now finally I get it.
This is an amazing explanation of PID THANK YOU!
the best explanation on the PID controller I've ever seen on CZcams. thanks
There was such clarity and continuity in the explanations...
Really liked and understood the concept clearly ....
This was really helpful ....
That is an excellent presentation. Best one I've seen that describes in detail actually what the P, I & D do.
Shawn this was so good I wish my controls profs were this clear 😭😭😭😭
Amazing video - clear, visually understandble, with a nice host.
Best explanation of PID EVER!
Excellent presentation as always!
This is the best video on PID!
Excellent description!
Awesome video. I have never come across such cleanly explained example.
What a great demonstration! Thanks a lot
Props! College level stuff here AND its accessible, even to beginners.
Very useful video, thanks.
You're awesome! Wonderfully well-explained!
loved it . simple and easy to understand .
absolutely brilliant. Thank you shawn.
This was great! Thanks for the informative lecture!
Nice explanation, Shawn! I liked that there was a bit of math and a bit of code. PS: nice meeting you last week :)
Thanks Shawn, good example to follow with coding. Will try a desktop example with Arduino code.
Thanks for the explanation.. we need another video illustrate PID using Arduino
The beginning 60 seconds demystify the block diagram so much
Hello
Just my own comment to your fine explanation.
I have a hydraulic project where I have to control the force from a cylinder through a load cell.
What makes hydraulics special is the response time.
The used servo valves have a 0-50% opening time of 6 msec (common in servovalves). That's why I must use a PID regulator with a cycle time of 1 - 2 ms.
There is only an expensive servo controller that can do that, or an analog PID controller, that I used.
Another part you easily skip over is the partial feedforward. It is frequently used in hydraulics.
Now we need a new method AIPID, or PIDAI. Where we slap AI to the PID for it to figure out the prefect values for us.
You read my mind 😁 There are automated methods of finding PID constants, which have been in use for a while. I’m currently experimenting with using RL to figure out a generic controller (including swing-up). My hope is that this will be the next video.
Great explanation
This is so good!
Great video, very informative thank you. However can someone please say why the integral term Ki value was set to 0,01 in the example?
i wish PID in universities were as simple as this :)
I'm guessing that they give you the transfer function of the plant and have you solve the differential equation analytically. If so, yeah...that sounds rough 😅
@@ShawnHymel Exactly. Just to know in the next subject that everything of that has no real application because real world 'behaviour formulas' are complex and computers don't process feedback in real time.
NICE one..Thanks!
Awesome video
my fav man on ytb🤩
thank you ❤
Excellent ❤
20:18 setpoint was not defined, what is setpoint? Is that the set value we need?
Also error_prev should be set equal to error at the end of the loop right
Nvm I just wasn’t there yet lol
do you mean s=s0 + vt + ½at^2 balancer (position, speed, acceleration controller)
A car wouldn't have any overshoot if you just kept it floored until your set speed, would it? So wouldn't you only use the PID after you got up to speed? Maybe that will be part of the next episode.
Anyway, thanks for the video, it helped explain PIDs nicely, looking forward to the next one.
You’d have to precisely let off the pedal at the right moment. The car has inertia and there is a time constant associated with the moment the pedal position changes to the moment the engine changes the torque applied to the wheels. All of that results in you having to letting off the pedal BEFORE the speed set point is achieved. Otherwise there would definitely be overshoot.
@@dwang085 My question was meant to be more about initial values, starting/stopping point for the PID and maybe when to use/swap out the PID. Sorry if I come across as nitpicking the model.
But using it as an example:
As soon as you stop adding power, it would stop going faster (well unless you are going downhill etc. but that sort of thing should be outside the model) And the amount of inertia needed to be overcome to move the pedal position would be small enough I don't think it would matter, probably even happen before the next piston power stroke. Especially with fuel injection etc. And even if it would take a very small amount of time for the accelerator to move, you could still hand over at 99.9km/h. (Although I guess whatever you are using to automatically move the pedal could be quite slow (erm, do they even move the pedal nowadays?))
As for the car, engine, flywheel etc. inertia would help keep the current speed. It can't add speed, or you would have a perpetual motion machine.
So you shouldn't need the PID until you are up to speed?
Anyway, my point being that in similar cases wouldn't it be better to hand over to the PID after a certain point, maybe with initial values taken from a table etc?
teaching genius :)
How do you define interval? Like if I'm reading sensor value at every 1msec then interval =1msec????
Now…. How do you make the tuning automatic/dynamic/inteligent 😜
I’d like to hit the like button a thousand times
How is e(t) a wave curvy functions it should be linear
Don't guess or use ancient tuning method.