425 views

# P Control vs full PID

1. 4 months ago

### Joshua_L

Mar 13 Virginia

Is it worth it to use full PID or just keep it at P (or PI or PD or something) for simplicity?

2. ### mattynmax

Mar 13 Mars

A well tuned P loop can be extremely effective for something lighter like a chain bar, but I personally always use either a PI or a full PID. Though I have heard of success using PD, the "step" of the vex sensors is too great for it to be reasonable.

The D in PID is a a derivative or the slope of a point in relation to infinitely close points. In computer science/programming a heuristic of picking a really small number is used instead due to the lower computation time. Since you are restricted to only 20 ms refresh rates (its probably higher, I am just factoring in the rate of change in the motor controller) the D term is not very useful on its own.

3. ### NyQuil

Mar 13 Ashburn, VA 80508X

We used PI for our long skills runs, (didn't get to run it) it worked well but it was slow. For match auton I would recommend just P or gyro for drive straights. For skills auton I would use gyro and PI for greater accuracy.

4. ### Mystellianne

Mar 13 Miami, Florida 4411S

I would only use PID for mechanisms that will be constantly using it, like a chainbar or a lift. For driving forward/turning in auton, it’s reslly not necessary. I have a consistent 84 point programming skill and I use neither PID turning nor PID driving. Granted what I do instead isn’t as simple as straight “move forward until this point”, but it just goes to show that PID is not as necessary as people say it is for long runs (not to mention how slow it is).

5. ### nenik

Mar 13 V5 Beta Tester

Actually, D is very helpful for any arm/lift movement. Potentiometers have great resolution, about 16 ticks for an angular degree. Do the math, at 100rpm, even geared 1:5 like a typical lift, it's still about 40 ticks every 20ms when going full speed (100 / 5[gear] / 60[seconds in minute] * 360[degres per turn] * 16[ticks per degree] * 0.02[seconds/iteration] = 38.4[ticks/iteration]). That's plenty of precision for nice slow-down on the approach to the target value. Just don't forget to filter the input - pots are sometimes a little jittery.