PID Settles 1.5 degrees F too Hot

Discussion in 'General Brewing Discussions' started by Nosybear, Jun 17, 2020.

  1. Nosybear

    Nosybear Well-Known Member

    Joined:
    Jul 16, 2012
    Messages:
    9,378
    Likes Received:
    6,608
    Trophy Points:
    113
    Location:
    Aurora, CO, USA
    Okay, question for all you control experts: I've run the autotune cycle on my PID twice over the last couple days after finally getting the temperature on the controller to read what I measure in the tun with my ThermoWorks Chef Alarm. Each time, one run with water and the other with a "junk" mash, the final temperature settles about 1.5 degrees above the set point. I could simply set the temperature lower to compensate but somehow think there must be a way to adjust the unit to have it settle at or very near the set point rather than 1.5 degrees above.

    The PID is a Mypin TA4. The documentation is spectacularly unhelpful, as is most I can find on the Web. So my question to you control system experts out there: What setting or settings do I need to change and in which direction to get the system to settle at (or within a half degree or so) of the set point?

    Thanks in advance!
     
  2. Hawkbox

    Hawkbox Well-Known Member

    Joined:
    Jul 27, 2017
    Messages:
    3,727
    Likes Received:
    2,967
    Trophy Points:
    113
    Gender:
    Male
    Occupation:
    IT Manager
    Location:
    Edmonton
    He's a witch! Get him!
     
  3. Nosybear

    Nosybear Well-Known Member

    Joined:
    Jul 16, 2012
    Messages:
    9,378
    Likes Received:
    6,608
    Trophy Points:
    113
    Location:
    Aurora, CO, USA
    A good witch, or a bad witch?
     
  4. HighVoltageMan!

    HighVoltageMan! Well-Known Member

    Joined:
    Feb 2, 2015
    Messages:
    830
    Likes Received:
    806
    Trophy Points:
    93
    Location:
    Big Lake MN
    So the temperature is reading correctly but the output settles at +1.5 degrees above set point?

    Your right about the info out there, the manual is pretty bad. The only thing I could see that might make a difference is the control hysteresis setting. If it can be set to zero, then set it at zero. This is the window where temp is allowed to “float”. I don’t remember seeing it on mine (Watlow), but it’s been a while.

    Your proportional, integral and derivative values should change after auto tuning, that’s how you know it saved the settings after auto tuning. I remember mine took about 30-45 minutes to tune. After it tuned, the temperature just climbed, so I put back into operation mode and it worked a lot better then before tuning. The other thing that the Watlow did, was to tune around a set point. I set mine to 150F as a center temperature for tuning.

    If it can’t control to the set point temperature, it may be a bad unit. There is not a lot of settings in a PID, it shouldn’t be too hard to figure out. Good luck!
     
  5. Nosybear

    Nosybear Well-Known Member

    Joined:
    Jul 16, 2012
    Messages:
    9,378
    Likes Received:
    6,608
    Trophy Points:
    113
    Location:
    Aurora, CO, USA
    Working on it - I found a bunch of engineering sites that explain P, I and D much better than the documentation. Lowering I should reduce the steady-state error, the difference I'm seeing.
     
  6. Bubba Wade

    Bubba Wade Well-Known Member

    Joined:
    Sep 17, 2017
    Messages:
    604
    Likes Received:
    884
    Trophy Points:
    93
    Gender:
    Male
    Occupation:
    Controls & Instrumentation Engineer
    Location:
    Monroe, Louisiana
    Home Page:
    Okay, there are a couple of things to consider if your temperature reading is accurate.

    First, is the temperature that you are controlling a vat or vessel temperature or is it a temperature of wort/water flowing through a line?

    Here's how the P, I, and D work.

    P responds proportionally to the amount of error between the setpoint and the measured value. If the MV changes, the output changes by a proportional amount. If the MV does not change, the P doesn't do anything. If P is set too high, you could cause temperature swings.

    I responds based on the collective accumulated error. By increasing I, the controller will respond to a steady state error and gradually change the output until the MV is at setpoint. If you set I too high, oscillation can occur. When I is set "just right", the MV will gradually go to the setpoint. If I is set to zero, the MV will never hit the SP.

    D responds to the derivative of the MV. D should not be used on noisy variables or those that change a lot.

    If the temperature being controller is in a vat or large vessel, you have a fair amount of thermal mass. This is helped by using the "D" in PID. "D" is for Derivative and is looking at the change in temperature. For large vessels, the derivative sees the temperature increasing and starts cooling before the temperature is too far away from setpoint.

    If the temperature being controller is flowing in a pipe, you do not want to use derivative. Period.

    In short, I would try bumping up the I if everything is working well other than the offset from setpoint. You'll need to check the units on I. Some controllers use repeats per minutes and others use seconds per repeat. If in repeats/minute, increase the value to have more integral action, if in seconds per repeat, decrease the value to have more integral action.

    This is probably more than you want to know, but I can explain further if needed. I have only been doing controls work for the last 37 years.
     
    thunderwagn and Megary like this.
  7. Nosybear

    Nosybear Well-Known Member

    Joined:
    Jul 16, 2012
    Messages:
    9,378
    Likes Received:
    6,608
    Trophy Points:
    113
    Location:
    Aurora, CO, USA
    Thanks, Bubba Wade, for the explanation. I got it set, at least for a mash tun full of water. By reducing the integral setting, the mash temp came down to the set point. I'll work on it next brew, now that I know what to set.
     
    Bubba Wade likes this.

Share This Page

arrow_white