ControlMode
Operating mode selected by the control engine.
Definition control_engine.h:50
@ kFanHigh
Water-driven hysteresis currently commands the high fixed PWM.
@ kFanOff
Water-driven hysteresis currently keeps the fan off.
@ kWaterSensorFallback
Water sensor is invalid and fallback PWM is used.
@ kFanLow
Water-driven hysteresis currently commands the low fixed PWM.
constexpr ControlConfig kDefaultControlConfig
Default control limits for the aquarium cooling firmware.
Definition control_engine.h:94
Pure cooling-control calculations.
Definition control_engine.cpp:10
bool isTargetTemperatureValid(float targetTemperatureC, const ControlConfig &config)
Checks whether a target temperature is finite and inside configured limits.
Definition control_engine.cpp:12
bool isControlConfigValid(const ControlConfig &config)
Checks whether a full staged-control configuration is internally valid.
Definition control_engine.cpp:18
float sanitizeTargetTemperature(float targetTemperatureC, const ControlConfig &config)
Replaces invalid target temperatures with the configured default.
Definition control_engine.cpp:39
const char * modeLabel(ControlMode mode)
Converts a control mode to a stable diagnostic label.
Definition control_engine.cpp:110
ControlSnapshot compute(const ControlInputs &inputs, const ControlConfig &config)
Computes the fan command and control mode for the current inputs.
Definition control_engine.cpp:47
Tunable limits and hysteresis settings for cooling control.
Definition control_engine.h:21
float minimumCoolingOnDeltaC
Lowest accepted upper hysteresis delta.
Definition control_engine.h:26
float minimumHighCoolingDeltaC
Lowest accepted delta where fan-high is allowed.
Definition control_engine.h:32
uint8_t minimumFanLowPwmPercent
Lowest accepted fixed PWM for fan-low.
Definition control_engine.h:35
float maximumTargetTemperatureC
Highest accepted configured target in degrees Celsius.
Definition control_engine.h:24
float highCoolingDeltaC
Water delta above target where fan-high starts.
Definition control_engine.h:34
uint8_t fanLowPwmPercent
Fixed PWM used during fan-low cooling.
Definition control_engine.h:37
float maximumCoolingOffDeltaC
Highest accepted lower hysteresis delta.
Definition control_engine.h:30
float minimumTargetTemperatureC
Lowest accepted configured target in degrees Celsius.
Definition control_engine.h:23
float minimumCoolingOffDeltaC
Lowest accepted lower hysteresis delta.
Definition control_engine.h:29
float maximumCoolingOnDeltaC
Highest accepted upper hysteresis delta.
Definition control_engine.h:27
uint8_t fanHighPwmPercent
Fixed PWM used during fan-high cooling.
Definition control_engine.h:40
uint8_t maximumFanHighPwmPercent
Highest accepted fixed PWM for fan-high.
Definition control_engine.h:39
uint8_t maximumFanLowPwmPercent
Highest accepted fixed PWM for fan-low.
Definition control_engine.h:36
float coolingOnDeltaC
Water delta above target where cooling starts.
Definition control_engine.h:28
uint8_t minimumFanHighPwmPercent
Lowest accepted fixed PWM for fan-high.
Definition control_engine.h:38
uint8_t fallbackPwmPercent
Fan PWM used when water temperature is unavailable.
Definition control_engine.h:25
float coolingOffDeltaC
Water delta below target where cooling stops.
Definition control_engine.h:31
float maximumHighCoolingDeltaC
Highest accepted delta where fan-high is allowed.
Definition control_engine.h:33
float defaultTargetTemperatureC
Fallback target water temperature in degrees Celsius.
Definition control_engine.h:22
Complete result of one control calculation.
Definition control_engine.h:80
bool waterSensorValid
True when the water temperature value is usable.
Definition control_engine.h:83
ControlMode mode
Selected control mode.
Definition control_engine.h:88
uint8_t waterBasedPwmPercent
PWM requested by water-temperature hysteresis control.
Definition control_engine.h:86
float targetTemperatureC
Effective target water temperature in degrees Celsius.
Definition control_engine.h:81
bool targetDefaulted
True when the default target replaced an invalid request.
Definition control_engine.h:82
uint8_t finalPwmPercent
Final commanded fan PWM percentage.
Definition control_engine.h:87
float waterDeltaC
Water temperature minus target temperature.
Definition control_engine.h:85
float waterTemperatureC
Effective water temperature, or NAN when invalid.
Definition control_engine.h:84