Just a quick update
my control settings are now
{
"kind": "Control",
"pids": [
{
"kind": "Pid",
"name": "heater1",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 17.9453
},
"inputSensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "OneWireTempSensor",
"value": 17.75,
"connected": true,
"address": "285C83B504000046",
"calibrationOffset": 0
}
}
},
"inputError": -0.1953,
"Kp": 10,
"Ti": 600,
"Td": 60,
"p": 1.9531,
"i": 0.0547,
"d": -0.1172,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 1.8906,
"period": 4,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"waitTime": 1797431
},
"target": {
"kind": "ActuatorPin",
"state": false,
"pin": 10,
"invert": false
}
}
}
},
{
"kind": "Pid",
"name": "heater2",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "beer2set",
"value": null
},
"inputSensor": {
"kind": "TempSensor",
"name": "beer2",
"sensor": {
"kind": "OneWireTempSensor",
"value": 14.375,
"connected": true,
"address": "28AA4C830400008A",
"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": 1800000,
"waitTime": 1797429
},
"target": {
"kind": "ActuatorNop",
"state": false
}
}
}
},
{
"kind": "Pid",
"name": "cooler",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 17.9453
},
"inputSensor": {
"kind": "TempSensorFallback",
"onBackupSensor": false,
"sensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "OneWireTempSensor",
"value": 17.75,
"connected": true,
"address": "285C83B504000046",
"calibrationOffset": 0
}
}
},
"inputError": -0.1953,
"Kp": 10,
"Ti": 1800,
"Td": 200,
"p": 1.9531,
"i": -0.0078,
"d": -0.4688,
"actuatorIsNegative": true,
"outputActuator": {
"kind": "ActuatorPwm",
"value": 0,
"period": 1200,
"minVal": 0,
"maxVal": 100,
"target": {
"kind": "ActuatorMutexDriver",
"mutexGroup": {
"kind": "ActuatorMutexGroup",
"deadTime": 1800000,
"waitTime": 1797426
},
"target": {
"kind": "ActuatorTimeLimited",
"minOnTime": 120,
"minOffTime": 180,
"maxOnTime": 65535,
"state": false,
"target": {
"kind": "ActuatorPin",
"state": false,
"pin": 11,
"invert": false
}
}
}
}
},
{
"kind": "Pid",
"name": "beer2fridge",
"enabled": true,
"setPoint": {
"kind": "SetPointSimple",
"name": "beer1set",
"value": 20
},
"inputSensor": {
"kind": "TempSensor",
"name": "beer1",
"sensor": {
"kind": "OneWireTempSensor",
"value": 19.9375,
"connected": true,
"address": "28E95857040000CA",
"calibrationOffset": 0
}
},
"inputError": -0.0391,
"Kp": 8,
"Ti": 10200,
"Td": 600,
"p": 0.3125,
"i": -2.5547,
"d": 0.1875,
"actuatorIsNegative": false,
"outputActuator": {
"kind": "ActuatorSetPoint",
"targetSetPoint": {
"kind": "SetPointSimple",
"name": "fridgeset",
"value": 17.9453
},
"targetSensor": {
"kind": "TempSensor",
"name": "fridge",
"sensor": {
"kind": "OneWireTempSensor",
"value": 17.75,
"connected": true,
"address": "285C83B504000046",
"calibrationOffset": 0
}
},
"referenceSetPoint": {
"kind": "SetPointSimple",
"name": "beer1set",
"value": 20
},
"output": -2.0547,
"achieved": -2.25,
"minimum": -5,
"maximum": 5
}
}
]
}
Many thanks to Elco for replying to my post, I have already implemented the changes you suggested and it seems to be behaving much better !
After my rant yesterday and thinking about PID settings I will do a bit of digging on the web to see if a calibration routine could be implemented. ..thats if I can find and understand the relevant maths involved.. 😳
and Yes I will stick with the Brewpi Spark a little longer and I might up-rate the tube heater (currently 45-60W) to a 200W ceramic ES type heater as used for reptile tanks but if I do, a trial run to tune the settings before a ferment is underway will be in order.