Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r0a8d902c3a7c4883ce6692cc53e85b254cef82c4 -rdc783f26994ed6eed74c8e3656fe6c9d38b9f9bd --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 0a8d902c3a7c4883ce6692cc53e85b254cef82c4) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision dc783f26994ed6eed74c8e3656fe6c9d38b9f9bd) @@ -48,6 +48,7 @@ #define HEATERS_DISINFECT_TEMPERATURE_DRIFT_C 3.0F ///< Heaters disinfect temperature drift in C. #define HEATERS_ZERO_DELTA_TEMP_C 0.0F ///< Heaters zero delta temperature in C. #define HEATERS_DUTY_CYCLE_CONVERSION_FACTOR 100.0F ///< Heaters duty cycle 0: OFF, 100: 100% duty cycle. +#define TRIMMER_HEATER_GAIN 10.0F ///< Trimmer heater gain for testing. #define PRIMARY_HEATER_P_COEFFICIENT 1.0F ///< P Term for primary heater control. #define PRIMARY_HEATER_I_COEFFICIENT 1.0F ///< I Term for primary heater control. @@ -512,7 +513,10 @@ if ( targetTemperature > 0.0F ) { ctrl = HEATERS_MAX_DUTY_CYCLE - ( measuredTemperature / targetTemperature ); - ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl ); + ctrl = ( ctrl < 0.0F ? HEATERS_MIN_DUTY_CYCLE: ctrl * TRIMMER_HEATER_GAIN ); + //Apply dutycycle limit + ctrl = MIN( ctrl, HEATERS_MAX_DUTY_CYCLE ); + ctrl = MAX( ctrl, HEATERS_MIN_DUTY_CYCLE ); } control[ heater ].data = ( ctrl * HEATERS_DUTY_CYCLE_CONVERSION_FACTOR ) + FLOAT_TO_INT_ROUNDUP_OFFSET;