Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r8525a30b488d13d24af34379fe81d759026663bb -re398b4bd8bfacd05a021d6008dbccf3c38f2c5d1 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 8525a30b488d13d24af34379fe81d759026663bb) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision e398b4bd8bfacd05a021d6008dbccf3c38f2c5d1) @@ -49,7 +49,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. @@ -541,11 +542,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 );