Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r79161e35b192de494ac072a2772d73c4b55fca94 -r2e71ad5c3af03ed6767a80c4e9d1ee25e4baf817 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 79161e35b192de494ac072a2772d73c4b55fca94) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 2e71ad5c3af03ed6767a80c4e9d1ee25e4baf817) @@ -647,7 +647,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(); @@ -698,8 +698,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 ) @@ -713,7 +713,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 );