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:
parent
762ae04bb2
commit
873bb2f79e
@ -105,8 +105,7 @@ void ThermalController::performControlOperation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Heater control
|
// TODO: Heater control
|
||||||
// TODO: Hysterese offset
|
ctrl4KCamera();
|
||||||
ctrl4KCameraHeater();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -955,29 +954,36 @@ void ThermalController::copyDevices() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ThermalController::ctrl4KCameraHeater(){
|
void ThermalController::ctrl4KCamera() {
|
||||||
// 4K Camera - Heater
|
// 4K Camera
|
||||||
|
float cameraTemp;
|
||||||
|
bool cameraTempAvailable = true;
|
||||||
|
|
||||||
if (sensorTemperatures.sensor_4k_camera.isValid()) {
|
if (sensorTemperatures.sensor_4k_camera.isValid()) {
|
||||||
if (not heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
|
cameraTemp = sensorTemperatures.sensor_4k_camera.value;
|
||||||
if (sensorTemperatures.sensor_4k_camera.value < cameraLimits.opLowerLimit) {
|
} else if (sensorTemperatures.sensor_dro.isValid()) {
|
||||||
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::ON);
|
cameraTemp = sensorTemperatures.sensor_dro.value;
|
||||||
heater4Countdown.resetTimer();
|
} else if (sensorTemperatures.sensor_mpa.isValid()) {
|
||||||
}
|
cameraTemp = sensorTemperatures.sensor_mpa.value;
|
||||||
} 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);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
|
if (heaterHandler.checkSwitchState(heater::HEATER_4_CAMERA)) {
|
||||||
heaterHandler.switchHeater(heater::HEATER_4_CAMERA, HeaterHandler::SwitchState::OFF);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -54,14 +54,12 @@ class ThermalController : public ExtendedControllerBase {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::HEATER_HANDLER;
|
static const uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::HEATER_HANDLER;
|
||||||
static constexpr Event HEATER_MAX_BURNTIME_REACHED = MAKE_EVENT(0, severity::LOW);
|
static constexpr Event NO_VALID_SENSOR_TEMPERATURE = MAKE_EVENT(0, severity::LOW);
|
||||||
static constexpr Event INVALID_SENSOR_TEMPERATURE = MAKE_EVENT(1, severity::LOW);
|
|
||||||
|
|
||||||
static const uint32_t DELAY = 500;
|
static const uint32_t DELAY = 500;
|
||||||
|
|
||||||
// TODO to be changed
|
// TODO to be changed
|
||||||
static const uint32_t OP_TIME = 1000;
|
static const uint32_t TEMP_OFFSET = 5;
|
||||||
static const uint32_t TEMP_OFFSET = 10;
|
|
||||||
|
|
||||||
enum class InternalState { STARTUP, INITIAL_DELAY, READY };
|
enum class InternalState { STARTUP, INITIAL_DELAY, READY };
|
||||||
|
|
||||||
@ -138,16 +136,6 @@ class ThermalController : public ExtendedControllerBase {
|
|||||||
// Initial delay to make sure all pool variables have been initialized their owners
|
// Initial delay to make sure all pool variables have been initialized their owners
|
||||||
Countdown initialCountdown = Countdown(DELAY);
|
Countdown initialCountdown = Countdown(DELAY);
|
||||||
|
|
||||||
// Heater Countdown to make sure heater
|
|
||||||
Countdown heater0Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater1Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater2Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater3Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater4Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater5Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater6Countdown = Countdown(OP_TIME);
|
|
||||||
Countdown heater7Countdown = Countdown(OP_TIME);
|
|
||||||
|
|
||||||
PoolEntry<float> tmp1075Tcs0 = PoolEntry<float>(10.0);
|
PoolEntry<float> tmp1075Tcs0 = PoolEntry<float>(10.0);
|
||||||
PoolEntry<float> tmp1075Tcs1 = PoolEntry<float>(10.0);
|
PoolEntry<float> tmp1075Tcs1 = PoolEntry<float>(10.0);
|
||||||
PoolEntry<float> tmp1075PlPcdu0 = PoolEntry<float>(10.0);
|
PoolEntry<float> tmp1075PlPcdu0 = PoolEntry<float>(10.0);
|
||||||
@ -159,7 +147,7 @@ class ThermalController : public ExtendedControllerBase {
|
|||||||
void copySus();
|
void copySus();
|
||||||
void copyDevices();
|
void copyDevices();
|
||||||
|
|
||||||
void ctrl4KCameraHeater();
|
void ctrl4KCamera();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MISSION_CONTROLLER_THERMALCONTROLLER_H_ */
|
#endif /* MISSION_CONTROLLER_THERMALCONTROLLER_H_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user