Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r5c53288436774f0cf6a24132ace29a64a66d619d -rf43eb0d0f168ea14b846d0c24f0ad0cb30784d3f --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 5c53288436774f0cf6a24132ace29a64a66d619d) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision f43eb0d0f168ea14b846d0c24f0ad0cb30784d3f) @@ -642,7 +642,7 @@ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_HEATERS_EFFICIENCY ) != SW_CONFIG_ENABLE_VALUE ) #endif { - if ( TRUE == checkEfficiency ) + if ( ( TRUE == checkEfficiency ) && ( FALSE == isThisTheFirstFill() ) ) { F32 heaterDutyCycle = heatersStatus[ DG_PRIMARY_HEATER ].dutycycle; F32 lastFillTemperature = getLastFillTemperature(); @@ -693,8 +693,8 @@ static F32 calculateTrimmerHeaterDutyCycle( F32 targetTemperature, F32 currentTemperature, F32 flow, BOOL checkEfficiency ) { // Get the primary heater's efficiency and the last fill temperature from the ModeFill - F32 heaterEfficiency = heatersStatus[ DG_TRIMMER_HEATER ].heaterEstGain; - F32 dutyCycle = 0.0; + F32 heaterEstGain = heatersStatus[ DG_TRIMMER_HEATER ].heaterEstGain; + F32 dutyCycle = 0.0; #ifndef _RELEASE_ if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_HEATERS_EFFICIENCY ) != SW_CONFIG_ENABLE_VALUE ) @@ -708,7 +708,7 @@ // Duty cycle = ( 69.73 * flow rate * deltaT / primary heater maximum power ) and multiply the duty cycle to the heater efficiency dutyCycle = ( ( flow * WATER_SPECIFIC_HEAT_DIVIDED_BY_MINUTES * - ( targetTemperature - currentTemperature ) * heaterEfficiency ) / TRIMMER_HEATER_MAX_POWER_W ) * heaterEfficiency; + ( targetTemperature - currentTemperature ) ) / TRIMMER_HEATER_MAX_POWER_W ) * heaterEstGain; // Check the boundaries of the calculated duty cycle dutyCycle = MIN( dutyCycle, HEATERS_MAX_DUTY_CYCLE );