Hey, @Elco. I just finished my first brew with version 0.5.5, and I noticed something strange happening with the Fridge Setting. On occasion the fridge setpoint would drop really low… into single digit F! This is definitely strange for a number of reasons, but especially considering I had max temp difference set to 10F. Also, not sure if this is related but I would notice that sometimes when I’d log in my settings would be blank and I’d have to hit “Receive from Script” to bring them back.
It sounds like a communication error more than an actual setting being wrong.
I recommend upgrading to 0.5.9.
Also decrease Td and set filtering for derivative to maximum to get a smoother fridge setpoint.
Made the upgrade to 0.5.9 last night and will see how it goes.
Also, thanks for the loop tuning tips!
Hey @Elco, I ran a test run with the new setting and the new software update (0.5.9) and noticed some overshoot when cooling… any additional tips?
"kind": "Control",
"pids": [
{
"kind": "Pid",
"name": "heater1pid",
"enabled": true,
"input": {
"kind": "SensorSetPointPair",
"sensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensorDelegate",
"name": "fridge",
"delegate": {
"kind": "OneWireTempSensor",
"value": 18.0625,
"connected": true,
"address": "280B5CC10700009E",
"settings.calibrationOffset": 0
}
}
},
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 18.0117
}
},
"output": {
"kind": "ActuatorPwm",
"dutySetting": 26.3633,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"waitTime": 1797973
},
"target": {
"kind": "ActuatorDigitalDelegate",
"name": "heater1",
"delegate": {
"state": 0,
"kind": "ActuatorPin",
"pin": 16,
"invert": false
}
}
}
},
"inputError": 0.0352,
"Kp": 10,
"Ti": 600,
"Td": 100,
"p": -0.3516,
"i": 27.6914,
"d": -0.9766,
"actuatorIsNegative": false
},
{
"kind": "Pid",
"name": "heater2pid",
"enabled": true,
"input": {
"kind": "SensorSetPointPair",
"sensor": {
"kind": "TempSensorDelegate",
"name": "beer2",
"delegate": {
"kind": "TempSensorDisconnected",
"value": null,
"connected": false
}
},
"setPoint": {
"kind": "SetPointSimple",
"name": "beer2set",
"value": null
}
},
"output": {
"kind": "ActuatorPwm",
"dutySetting": 0,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"waitTime": 1797970
},
"target": {
"kind": "ActuatorDigitalDelegate",
"name": "heater2",
"delegate": {
"kind": "ActuatorNop",
"state": 0
}
}
}
},
"inputError": null,
"Kp": 30,
"Ti": 1800,
"Td": 60,
"p": 0,
"i": 0,
"d": 0,
"actuatorIsNegative": false
},
{
"kind": "Pid",
"name": "coolerpid",
"enabled": true,
"input": {
"kind": "SensorSetPointPair",
"sensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensorDelegate",
"name": "fridge",
"delegate": {
"kind": "OneWireTempSensor",
"value": 18.0625,
"connected": true,
"address": "280B5CC10700009E",
"settings.calibrationOffset": 0
}
}
},
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 18.0117
}
},
"output": {
"kind": "ActuatorPwm",
"dutySetting": 5.0898,
"period": 2400,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"waitTime": 1797966
},
"target": {
"kind": "ActuatorTimeLimited",
"minOnTime": 180,
"minOffTime": 600,
"maxOnTime": 65535,
"state": 0,
"target": {
"kind": "ActuatorDigitalDelegate",
"name": "cooler",
"delegate": {
"state": 0,
"kind": "ActuatorPin",
"pin": 17,
"invert": false
}
}
}
}
},
"inputError": -0.7695,
"Kp": 10,
"Ti": 7200,
"Td": 20,
"p": 7.6953,
"i": -12.3164,
"d": -0.4688,
"actuatorIsNegative": true
},
{
"kind": "Pid",
"name": "beer2fridgepid",
"enabled": true,
"input": {
"kind": "SensorSetPointPair",
"sensor": {
"kind": "TempSensorDelegate",
"name": "beer1",
"delegate": {
"kind": "OneWireTempSensor",
"value": 15.25,
"connected": true,
"address": "288269C00700003B",
"settings.calibrationOffset": 0
}
},
"setPoint": {
"kind": "SetPointSimple",
"name": "beer1set",
"value": 15.5547
}
},
"output": {
"kind": "ActuatorOffset",
"target": {
"kind": "SensorSetPointPair",
"sensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensorDelegate",
"name": "fridge",
"delegate": {
"kind": "OneWireTempSensor",
"value": 18.0625,
"connected": true,
"address": "280B5CC10700009E",
"settings.calibrationOffset": 0
}
}
},
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 18.0117
}
},
"reference": {
"kind": "SensorSetPointPair",
"sensor": {
"kind": "TempSensorDelegate",
"name": "beer1",
"delegate": {
"kind": "OneWireTempSensor",
"value": 15.25,
"connected": true,
"address": "288269C00700003B",
"settings.calibrationOffset": 0
}
},
"setPoint": {
"kind": "SetPointSimple",
"name": "beer1set",
"value": 15.5547
}
},
"useReferenceValue": false,
"setting": 2.457,
"achieved": 2.5078,
"minimum": -4.4453,
"maximum": 4.4453
},
"inputError": -0.2891,
"Kp": 10,
"Ti": 14400,
"Td": 0,
"p": 2.8906,
"i": -0.4336,
"d": 0,
"actuatorIsNegative": false
}
]
}
Just posting an update for future reference…
I increased fridge Kp to 20 (from 10) and reduce cooler input filter and it looks pretty good now. Going to roll with this for the time being and see how it goes:
As a final adjustment, increase dead time so it account alternate quickly between heating and cooling.
Alright, final adjustments made.
Settled on fridge Kp of 15.
Originally set dead time to 45 mins, but after fermentation started dying down I noticed it started swinging a bit. Set dead time to 1 hour and now it looks pretty good. Thanks!