Beer Constant Mode - Temperature Out of Tolerance

I went to check on my Festbier and found that it was 2 degrees and change higher than what I was expecting. My past brew temperatures have always been dead on target. Could this be caused by the recent update? A bad connection to the powerswitch tail that my heating element is connected to (it clicks off and on in short one or two second bursts)? I’m at a loss. I’m afraid to set my lagers anywhere near 31 degrees Fahrenheit in fear of dipping below freezing. Where should I look? Here’s a picture of my web interface.

Please go to the maintenance panel and copy what’s on the ‘control variables’ tab.

Please post it like this (surrounded with 3 backticks):

```
<paste here>
```

My guess:
You have a very low beer-to-fridge Kp. Because of this, all the work is done by the integrator. The integrator is very slow to respond and should only correct steady state errors.

I would set beer-to-fridge Kp to 10 in the integrator time constant Ti to 15000 in your case. Also set the maxi difference between fridge and beer to 10 degrees Fahrenheit.

You don’t need to change anything in the cooler and heater pid, because the fridge temp is spot on.

{
  "kind": "Control",
  "pids": [
    {
      "kind": "Pid",
      "name": "heater1",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "value": -0.5547
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "fridge",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": -0.3125,
          "connected": false,
          "address": "2855C7350700001B",
          "calibrationOffset": 0
        }
      },
      "inputError": 0.2031,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": -2.0313,
      "i": 5.2695,
      "d": -2.8125,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0.4258,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "lastActiveTime": 1018697233
          },
          "target": {
            "kind": "ActuatorPin",
            "state": false,
            "pin": 16,
            "invert": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "heater2",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "value": null
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer2",
        "sensor": {
          "kind": "TempSensorDisconnected",
          "value": null,
          "connected": false
        }
      },
      "inputError": 0,
      "Kp": 10,
      "Ti": 600,
      "Td": 60,
      "p": 0,
      "i": 0,
      "d": 0,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 0,
        "period": 4,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "lastActiveTime": 1018697233
          },
          "target": {
            "kind": "ActuatorNop",
            "state": false
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "cooler",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "value": -0.5547
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "fridge",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": -0.3125,
          "connected": false,
          "address": "2855C7350700001B",
          "calibrationOffset": 0
        }
      },
      "inputError": 0.2031,
      "Kp": 10,
      "Ti": 1800,
      "Td": 200,
      "p": -2.0313,
      "i": -0.2344,
      "d": -9.4531,
      "actuatorIsNegative": true,
      "outputActuator": {
        "kind": "ActuatorPwm",
        "value": 11.7188,
        "period": 1200,
        "minVal": 0,
        "maxVal": 100,
        "target": {
          "kind": "ActuatorMutexDriver",
          "mutexGroup": {
            "kind": "ActuatorMutexGroup",
            "deadTime": 1800000,
            "lastActiveTime": 1018697233
          },
          "target": {
            "kind": "ActuatorTimeLimited",
            "minOnTime": 0,
            "minOffTime": 180,
            "maxOnTime": 65535,
            "active": false,
            "target": {
              "kind": "ActuatorPin",
              "state": false,
              "pin": 17,
              "invert": false
            }
          }
        }
      }
    },
    {
      "kind": "Pid",
      "name": "beer2fridge",
      "enabled": true,
      "setPoint": {
        "kind": "SetPointSimple",
        "value": 1.1094
      },
      "inputSensor": {
        "kind": "TempSensor",
        "name": "beer1",
        "sensor": {
          "kind": "OneWireTempSensor",
          "value": 1.3125,
          "connected": false,
          "address": "283DF035070000AC",
          "calibrationOffset": 0
        }
      },
      "inputError": 0.1953,
      "Kp": 5.5547,
      "Ti": 15000,
      "Td": 1200,
      "p": -1.0859,
      "i": -1.3555,
      "d": 0.7773,
      "actuatorIsNegative": false,
      "outputActuator": {
        "kind": "ActuatorSetPoint",
        "targetSetPoint": {
          "kind": "SetPointSimple",
          "value": -0.5547
        },
        "targetSensor": {
          "kind": "TempSensor",
          "name": "fridge",
          "sensor": {
            "kind": "OneWireTempSensor",
            "value": -0.3125,
            "connected": false,
            "address": "2855C7350700001B",
            "calibrationOffset": 0
          }
        },
        "referenceSetPoint": {
          "kind": "SetPointSimple",
          "value": 1.1094
        },
        "output": -1.6641,
        "achieved": -1.4219,
        "minimum": -5.5547,
        "maximum": 5.5547
      }
    }
  ],
  "sensors": [
    {
      "kind": "TempSensor",
      "name": "fridge",
      "sensor": {
        "kind": "OneWireTempSensor",
        "value": -0.3125,
        "connected": false,
        "address": "2855C7350700001B",
        "calibrationOffset": 0
      }
    },
    {
      "kind": "TempSensor",
      "name": "beer1",
      "sensor": {
        "kind": "OneWireTempSensor",
        "value": 1.3125,
        "connected": false,
        "address": "283DF035070000AC",
        "calibrationOffset": 0
      }
    },
    {
      "kind": "TempSensor",
      "name": "beer2",
      "sensor": {
        "kind": "TempSensorDisconnected",
        "value": null,
        "connected": false
      }
    }
  ],
  "actuators": [
    {
      "kind": "ActuatorPwm",
      "value": 11.7188,
      "period": 1200,
      "minVal": 0,
      "maxVal": 100,
      "target": {
        "kind": "ActuatorMutexDriver",
        "mutexGroup": {
          "kind": "ActuatorMutexGroup",
          "deadTime": 1800000,
          "lastActiveTime": 1018697233
        },
        "target": {
          "kind": "ActuatorTimeLimited",
          "minOnTime": 0,
          "minOffTime": 180,
          "maxOnTime": 65535,
          "active": false,
          "target": {
            "kind": "ActuatorPin",
            "state": false,
            "pin": 17,
            "invert": false
          }
        }
      }
    },
    {
      "kind": "ActuatorPwm",
      "value": 0.4258,
      "period": 4,
      "minVal": 0,
      "maxVal": 100,
      "target": {
        "kind": "ActuatorMutexDriver",
        "mutexGroup": {
          "kind": "ActuatorMutexGroup",
          "deadTime": 1800000,
          "lastActiveTime": 1018697233
        },
        "target": {
          "kind": "ActuatorPin",
          "state": false,
          "pin": 16,
          "invert": false
        }
      }
    },
    {
      "kind": "ActuatorPwm",
      "value": 0,
      "period": 4,
      "minVal": 0,
      "maxVal": 100,
      "target": {
        "kind": "ActuatorMutexDriver",
        "mutexGroup": {
          "kind": "ActuatorMutexGroup",
          "deadTime": 1800000,
          "lastActiveTime": 1018697233
        },
        "target": {
          "kind": "ActuatorNop",
          "state": false
        }
      }
    }
  ],
  "setpoints": [
    {
      "kind": "SetPointNamed",
      "name": "beer1set",
      "setPoint": {
        "kind": "SetPointSimple",
        "value": 1.1094
      }
    },
    {
      "kind": "SetPointNamed",
      "name": "beer2set",
      "setPoint": {
        "kind": "SetPointSimple",
        "value": null
      }
    },
    {
      "kind": "SetPointNamed",
      "name": "fridgeset",
      "setPoint": {
        "kind": "SetPointSimple",
        "value": -0.5547
      }
    }
  ]
}

I should have mentioned that I would be away on business. Thanks for all your help so far Elco.

I think the high Td for your beer-to-fridge PID is not helping you. It is causing overcompensation and oscillation. I would lower Td and set it to for example 120.