Putting the 'I' in 'PID'
- From: Rick Armstrong <bogus@xxxxxxxxx>
- Date: Thu, 16 Apr 2009 23:40:17 -0700
I have a question about the implementation of PID control. First, some
I'm building a (hopefully) self-leveling quad-rotor rc helicopter,
with the intent of learning a bit about control systems while building
something for entertainment's sake. I'm starting off by implementing a
PID control on a PC tethered to the craft, which sits in a fixture in
my basement that allows single-axis rotational movement. The tilt
sensor is one of these: http://www.microstrain.com/3dm-gx1.aspx
I've implemented the 'P' term and the 'D' term and after some
trial-and-error, it's now somewhat stable, settling to level after a
Now, I've decided to add the 'I' term, and realize now that there's
something that I don't understand: does the integrator sum the error
for _all_ time (i.e. as long as the controller has been running), or
just for the "recent past"?
If it's for all time, then I don't see how the accumulated error ever
gets 'zeroed-out' without overshoot.
If the sum is produced from recent past history, then how does one
pick the length of the interval?
I'm just getting started here, so please speak slowly as though you
were explaining this to a donkey.
Any advice is greatly appreciated,
Portland, OR, USA