new design heater control for camera body
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/pr-develop This commit looks good
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user