Hi Elco,
Sorry to be a thorn but I would appreciate some feedback if you can…
I applied the settings as you suggested,
"kind": "Control",
"pids": [
{
"kind": "Pid",
"name": "heater1",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 20.582
},
"inputSensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "OneWireTempSensor",
"value": 20.5625,
"connected": true,
"address": "28FF510CA515018C",
"calibrationOffset": 0
}
}
},
"inputError": -0.0195,
"Kp": 2,
"Ti": 600,
"Td": 600,
"p": 0.0391,
"i": -0.0195,
"d": 1.2344,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 1.2539,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 3600000,
"waitTime": 1816240
},
"target": {
"kind": "ActuatorOneWire",
"state": false,
"pio": 0,
"invert": false
}
}
}
},
{
"kind": "Pid",
"name": "heater2",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "beer2set",
"value": null
},
"inputSensor": {
"kind": "TempSensor",
"name": "beer2",
"sensor": {
"kind": "OneWireTempSensor",
"value": 20.125,
"connected": true,
"address": "2869863607000027",
"calibrationOffset": 0
}
},
"inputError": null,
"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": 3600000,
"waitTime": 1816169
},
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
},
{
"kind": "Pid",
"name": "cooler",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 20.582
},
"inputSensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "OneWireTempSensor",
"value": 20.5625,
"connected": true,
"address": "28FF510CA515018C",
"calibrationOffset": 0
}
}
},
"inputError": -0.0195,
"Kp": 10,
"Ti": 1800,
"Td": 200,
"p": 0.1953,
"i": -4.875,
"d": 2.0703,
"actuatorIsNegative": true,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 2.6094,
"period": 1200,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 3600000,
"waitTime": 1816093
},
"target": {
"kind": "ActuatorTimeLimited",
"minOnTime": 120,
"minOffTime": 180,
"maxOnTime": 65535,
"state": false,
"target": {
"kind": "ActuatorOneWire",
"state": false,
"pio": 1,
"invert": false
}
}
}
}
},
{
"kind": "Pid",
"name": "beer2fridge",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "beer1set",
"value": 21
},
"inputSensor": {
"kind": "TempSensor",
"name": "beer1",
"sensor": {
"kind": "OneWireTempSensor",
"value": 20.9375,
"connected": true,
"address": "28FFF0F3A4150132",
"calibrationOffset": 0
}
},
"inputError": -0.1094,
"Kp": 2,
"Ti": 7200,
"Td": 1200,
"p": 0.2188,
"i": -0.8945,
"d": 0.2578,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorSetPoint",
"targetSetPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 20.582
},
"targetSensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "OneWireTempSensor",
"value": 20.5625,
"connected": true,
"address": "28FF510CA515018C",
"calibrationOffset": 0
}
},
"referenceSetPoint": {
"kind": "SetPointSimple",
"name": "beer1set",
"value": 21
},
"output": -0.418,
"achieved": -0.4375,
"minimum": -10,
"maximum": 10
}
}
But there is a bit of an overshoot and undershoot when adjusting the “beer” temperature.
It also appears to want to still heat during the overshoot and vice versa.
I have attached the overall graph to date with three enlarged periods.
Cheers
Dave.