The default PID coefficients work well for a large Big Green Egg with the standard 6.7CFM in the cardboard mounting bracket in a Florida climate with the top vent only slightly open. You may have noted the amount of detail in that statement, which is my way of saying that they probably won't work for everyone. Depending on your cooker, fan size, mounting solution and even weather, the coefficients may need to be adjusted.
First things first, the HeaterMeter can only control the temperature if:
For my egg, the happy medium for 225F is to have the bottom vent closed all the way onto the fan mount and having the top dial vent only open wide enough to be able to insert a toothpick though one of the holes. For higher temperatures, the top vent is opened more and the bottom is always left closed. Once you've found your sweet spot you can move on to tuning the PID parameters.
Stolen from Wikipedia
Effects of increasing a parameter independently
|Parameter||Rise time||Overshoot||Settling time||Steady-state error||Stability|
|D||Minor change||Decrease||Decrease||No effect in theory||Improve if D small|
|P||Ku / 1.7|
|I||Ku / (Pu / 2)|
|D||Ku * (Pu / 8) / PD|
|P||Ku / 2.2|
|I||Ku / (2.2 * Pu)|
|D||Ku * (Pu / 6.3) / PD|
While logged in to LinkMeter and on the Home screen, press 'P' on your keyboard to open the "PID Debug" information screen. Here you'll see up-to-the-second information on what factors are driving the output. This data can be used to tune your PID constants.
P Here's the easiest place to start. Think about what the acceptable temperature range is for operation. At what point of the pit temperature dropping do you want BWOOP BWOOP giver 'er all she's got, Captain! Divide 100 by that number. That's going to set the lower limit on the P value. For a setpoint 225F with a lower temperature limit of 215, P = 100/(225-215) = 10. That's your ballpark. The faster your grill can change temperatures by changing the output value, the smaller this number should be. In my graph the P was 3 because the blower can really turn things around quickly in there. With just the servo, if I opened it fully it would still take a long time before anything actually happened. Fast response, low P. Slow response, high P.
I This is where the PID status window on the home screen can really help. Subtract your setpoint from the current temperature, multiply by that by your I constant and that is added to the I value on the pid status window every second. If you have a I of 1 and the temperature is off by 5 degrees, it will add 5% output every second. Because this can compound so fast, you want a pretty small number. The value again depends on the response time of your grill, faster response, lower I (I think, not 100% sure on this one). The easiest thing to do is watch the I value in the PID status as the temperature swings back and forth across the setpoint. It shouldn't have wild swings from like -25% to 25%. The I term's job is to figure out exactly how much output it takes to maintain your setpoint. The value should roughly be the same as the yellow "average blower speed" pip on the blower speed bar on the home screen. Your P value needs to be set at least close before you can tune this, and the value I think should be 0.1 or less always.
D Again the PID status will help here. Your D constant is multiplied by the value dT shows on the status window. dT is the change in temperature over the last minute or so. You want to set your D high enough that you can see the output reversing as your temperature is changing. If you're at the bottom of a temperature swing and the temperature is starting to rise, you should see dT getting larger and the D status subtracting % from the output trying to prevent overshoot. If you set it too high you'll see the output stop before it gets to the setpoint, or the fan turn too early and prevent the grill from cooling to the setpoint. The way to logically think of a good value for this is to ask "If I'm at 223F, setpoint 225F, ad the temperature has come up 1 degree in the past minute, how much do I want to throttle back the output to prevent overshoot?". Like the I constant, this number is proportional to the P constant. Probably best to keep this under 20 unless you're having serious overshoot problems, and that's probably created by the P or I constants being too high.