new design heater control for camera body
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good

This commit is contained in:
2022-12-12 21:33:12 +01:00
parent 762ae04bb2
commit 873bb2f79e
2 changed files with 31 additions and 37 deletions

View File

@ -105,8 +105,7 @@ void ThermalController::performControlOperation() {
}
// TODO: Heater control
// TODO: Hysterese offset
ctrl4KCameraHeater();
ctrl4KCamera();
}
@ -955,29 +954,36 @@ void ThermalController::copyDevices() {
}
}
void ThermalController::ctrl4KCameraHeater(){
// 4K Camera - Heater
void ThermalController::ctrl4KCamera() {
// 4K Camera
float cameraTemp;
bool cameraTempAvailable = true;
if (sensorTemperatures.sensor_4k_camera.isValid()) {
if (not heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
if (sensorTemperatures.sensor_4k_camera.value < cameraLimits.opLowerLimit) {
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::ON);
heater4Countdown.resetTimer();
}
} else if (heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
if (sensorTemperatures.sensor_4k_camera.value >= cameraLimits.opLowerLimit + TEMP_OFFSET) {
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::OFF);
}
} else {
if (heater4Countdown.hasTimedOut()) {
// Sensor or heater failure
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::OFF);
triggerEvent(HEATER_MAX_BURNTIME_REACHED, heater::HEATER_4_CAMERA);
};
}
cameraTemp = sensorTemperatures.sensor_4k_camera.value;
} else if (sensorTemperatures.sensor_dro.isValid()) {
cameraTemp = sensorTemperatures.sensor_dro.value;
} else if (sensorTemperatures.sensor_mpa.isValid()) {
cameraTemp = sensorTemperatures.sensor_mpa.value;
} else {
if (heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::OFF);
}
triggerEvent(INVALID_SENSOR_TEMPERATURE, heater::HEATER_4_CAMERA);
triggerEvent(NO_VALID_SENSOR_TEMPERATURE, heater::HEATER_4_CAMERA);
cameraTempAvailable = false;
}
}
// TODO: include redundant heater
if (cameraTempAvailable) {
if (not heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
// TODO: check if op or nop
if (cameraTemp < cameraLimits.opLowerLimit) {
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::ON);
} else if (heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
if (cameraTemp >= cameraLimits.opLowerLimit + TEMP_OFFSET) {
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::OFF);
}
}
}
}
}