Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r1b4447ba6fdc3d90a9013571b5710a52295c43d3 -rfa75c4efb5820c4030cf621fda6f58279ad292ba --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 1b4447ba6fdc3d90a9013571b5710a52295c43d3) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision fa75c4efb5820c4030cf621fda6f58279ad292ba) @@ -48,7 +48,8 @@ #define HEATERS_MAX_DUTY_CYCLE 1.00F ///< Heaters max duty cycle (100%). #define HEATERS_MIN_DUTY_CYCLE 0.00F ///< Heaters minimum duty cycle (0.00%). -#define HEATERS_DISINFECT_TEMPERATURE_DRIFT_C 1.0F ///< Heaters disinfect temperature drift in C. +#define HEATERS_DISINFECT_DUTY_CYCLE 0.60F ///< Heaters disinfect cycle. +#define HEATERS_DISINFECT_TEMPERATURE_DRIFT_C 3.0F ///< Heaters disinfect temperature drift in C. #define HEATERS_MIN_EST_GAIN 0.2F ///< Heaters minimum estimation gain. #define HEATERS_MAX_EST_GAIN 5.0F ///< Heaters maximum estimation gain. #define HEATERS_NEUTRAL_EST_GAIN 1.0F ///< Heaters neutral estimation gain. @@ -543,11 +544,16 @@ F32 currentTemperature = getTemperatureValue( TEMPSENSORS_HEAT_DISINFECT ); F32 targetTemperature = heatersStatus[ DG_PRIMARY_HEATER ].targetTemp; - if ( ( currentTemperature < targetTemperature ) || ( currentTemperature - targetTemperature > HEATERS_DISINFECT_TEMPERATURE_DRIFT_C ) ) + if ( currentTemperature < targetTemperature ) { setHeaterDutyCycle( DG_TRIMMER_HEATER, HEATERS_MAX_DUTY_CYCLE ); setHeaterDutyCycle( DG_PRIMARY_HEATER, HEATERS_MAX_DUTY_CYCLE ); } + else if ( currentTemperature - targetTemperature < HEATERS_DISINFECT_TEMPERATURE_DRIFT_C ) + { + setHeaterDutyCycle( DG_TRIMMER_HEATER, HEATERS_DISINFECT_DUTY_CYCLE ); + setHeaterDutyCycle( DG_PRIMARY_HEATER, HEATERS_DISINFECT_DUTY_CYCLE ); + } else { setHeaterDutyCycle( DG_TRIMMER_HEATER, HEATERS_MIN_DUTY_CYCLE );