Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r8348015aa77e1ee2c4c20e9f8e2c45b59bcf3f17 -rbdf2c733a764466fcc4a0ff4938f5c97456bdb77 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 8348015aa77e1ee2c4c20e9f8e2c45b59bcf3f17) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision bdf2c733a764466fcc4a0ff4938f5c97456bdb77) @@ -852,6 +852,8 @@ concentratePumps[ pumpId ].currentPumpSpeed = 0.0F; // set target rate to zero pumpTargetSpeed[ pumpId ].data = 0.0F; pumpTargetRevCnt[ pumpId ].data = 0; + measuredPumpSpeed[ pumpId ].data = 0.0F; + concentratePumps[ pumpId ].pulseWidthUS = 0.0F; isDosingCompleted [ pumpId ] = TRUE; // Disable the motor when stopping, to take next revolution count @@ -1117,16 +1119,26 @@ pulseWidthInMicroSeconds = pulseWidthCount * CONCENTRATE_PUMP_HALL_SENSE_PERIOD_RESOLUTION; concentratePumps[ pumpId ].pulseWidthUS = pulseWidthInMicroSeconds; - isPumpPulseWidthOut = ( pulseWidthInMicroSeconds <= (F32)CONCENTRATE_PUMP_MIN_ALLOWED_HALL_SENSOR_COUNT ? TRUE : FALSE ); + isPumpPulseWidthOut = FALSE; // Determine measured speed for the pump - if ( CONCENTRATE_PUMP_ZERO_FLOW_RATE == pulseWidthCount ) + if ( ( concentratePumps[ pumpId ].currentPumpSpeed <= NEARLY_ZERO ) || + ( CONCENTRATE_PUMP_ZERO_FLOW_RATE == pulseWidthCount ) ) { measuredPumpSpeed[ pumpId ].data = 0.0F; } - else if ( FALSE == isPumpPulseWidthOut ) + else { - measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; + isPumpPulseWidthOut = ( pulseWidthInMicroSeconds <= (F32)CONCENTRATE_PUMP_MIN_ALLOWED_HALL_SENSOR_COUNT ? TRUE : FALSE ); + + if ( FALSE == isPumpPulseWidthOut ) + { + measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE_DIENER * SEC_PER_MIN; + } + else + { + measuredPumpSpeed[ pumpId ].data = 0.0F; + } } // If pulse width is out of range capture pump out of range, pumpId and pulse width