Monthly Archives: April 2011

PID Q&A Group

Over the past week I’ve had several great conversations regarding the new PID Library, and regarding PID in general. Of course those are all in my email, so you can’t see them. This highlights another problem with the previous version … Continue reading

Posted in PID | Tagged , | Comments Off on PID Q&A Group

How Fast is the Arduino PID Library?

A couple people have asked me about speed since v1 was released. Since I had no idea, I decided I should do a little benchmarking. (Tests were done on a Duemilanove with the ATMega168.) The Test The code above is … Continue reading

Posted in PID | Tagged , | 2 Comments

Improving the Beginner’s PID: Direction

(This is the last modification in a larger series on writing a solid PID algorithm) The Problem The processes the PID will be connected to fall into two groups: direct acting and reverse acting. All the examples I’ve shown so … Continue reading

Posted in Coding, PID | Tagged , , | 92 Comments

Improving the Beginner’s PID: Initialization

(This is Modification #6 in a larger series on writing a solid PID algorithm) The Problem In the last section we implemented the ability to turn the PID off and on. We turned it off, but now let’s look at … Continue reading

Posted in Coding, PID | Tagged , , | 7 Comments

Improving the Beginner’s PID: On/Off

(This is Modification #5 in a larger series on writing a solid PID algorithm) The Problem As nice as it is to have a PID controller, sometimes you don’t care what it has to say. Let’s say at some point … Continue reading

Posted in Coding, PID | Tagged , , | 10 Comments

Improving the Beginner’s PID: Reset Windup

(This is Modification #4 in a larger series on writing a solid PID algorithm) The Problem Reset windup is a trap that probably claims more beginners than any other. It occurs when the PID thinks it can do something that … Continue reading

Posted in Coding, PID | Tagged , , | 13 Comments

Improving the Beginner’s PID: Tuning Changes

(This is Modification #3 in a larger series on writing a solid PID algorithm) The Problem The ability to change tuning parameters while the system is running is a must for any respectable PID algorithm. The Beginner’s PID acts a … Continue reading

Posted in Coding, PID | Tagged , , | 6 Comments

Improving the Beginner’s PID – Derivative Kick

(This is Modification #2 in a larger series on writing a solid PID algorithm) The Problem This modification is going to tweak the derivative term a bit. The goal is to eliminate a phenomenon known as “Derivative Kick”. The image … Continue reading

Posted in Coding, PID | Tagged , , | 9 Comments

Improving the Beginner’s PID – Sample Time

(This is Modification #1 in a larger series on writing a solid PID algorithm) The Problem The Beginner’s PID is designed to be called irregularly. This causes 2 issues: You don’t get consistent behavior from the PID, since sometimes it’s … Continue reading

Posted in Coding, PID | Tagged , , | 23 Comments

Improving the Beginner’s PID – Introduction

In conjunction with the release of the new Arduino PID Library I’ve decided to release this series of posts. The last library, while solid, didn’t really come with any code explanation. This time around the plan is to explain in … Continue reading

Posted in Coding, PID | Tagged , , | 59 Comments