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.
The default PID settings for 20140630B and above are (source):
Parameter | Value |
---|---|
B | 0 |
P | 4 |
I | 0.02 |
D | 5 |
3utools error during capture 80070001. PID settings for BGE and Offset Rotary Valve (source:
Sep 10, 2010 EVAP SYSTEM MONITOR DRIVE CYCLE INSTRUCTIONS Do not turn off the ignition switch during the test procedure. All Onboard Diagnostic Monitors are cleared when the battery is disconnected or when the Powertrain Control Module (PCM) is cleared with the Scan Tool. This drive cycle can be used to determine if the Readiness code for this Monitor will. This probably would not be ideal for you since you state, 'putting the system in oscillation even as a part of auto-tuning is not acceptable to the users'. Our system would most certainly oscillate and do other horrible things while it was auto-tuning. However, you could run two copies of the PID controller. Jan 17, 2012 There is probably a time limit on the auto tune function, so very slow processes may not tune. Check the PID settings prior to and after tuning. If they do not change, the auto tuning process failed for one reason or another. That’s a good time to get help from the controller’s manufacturer.
Parameter | Value |
---|---|
B | 0 |
P | 2.5 |
I | 0.0035 |
D | 6 |
Min Fan | 10% |
Max Fan | 40% |
Servo | On/Off |
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 |
---|---|---|---|---|---|
P | Decrease | Increase | Small change | Decrease | Degrade |
I | Decrease | Increase | Increase | Eliminate | Degrade |
D | Minor change | Decrease | Decrease | No effect in theory | Improve if D small |
Ziegler-Nichols | |
---|---|
PID Parameter | Value |
P | Ku / 1.7 |
I | Ku / (Pu / 2) |
D | Ku * (Pu / 8) / PD |
Tyreus-Luyblen | |
---|---|
PID Parameter | Value |
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.