Index: firmware/App/Controllers/SubstitutionPump.c =================================================================== diff -u -r09bb4a7c085a868d1eb6d886c94ac6c78e5e92de -r7ef41d90338528f3e8c0ef801fc17fa1ec4b34ea --- firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 09bb4a7c085a868d1eb6d886c94ac6c78e5e92de) +++ firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 7ef41d90338528f3e8c0ef801fc17fa1ec4b34ea) @@ -316,7 +316,8 @@ { F32 speedIncrease; BOOL hasTgtBeenReached = FALSE; - F32 currentToTargetDiff = fabs( getSubstitutionPumpTargetRate( pumpId ) - substitutionPumps[ pumpId ].currentPumpSpeed ); + F32 pumpTargetSpeed = getSubstitutionPumpTargetRate( pumpId ) * SUBSTITUTION_PUMP_VOLUME_PER_REV; // Translate from ml/min to RPM. + F32 currentToTargetDiff = fabs( pumpTargetSpeed - substitutionPumps[ pumpId ].currentPumpSpeed ); if ( currentToTargetDiff > NEARLY_ZERO ) { @@ -331,15 +332,15 @@ } // Subtract current speed when target speed is smaller - if ( getSubstitutionPumpTargetRate( pumpId ) < substitutionPumps[ pumpId ].currentPumpSpeed ) + if ( pumpTargetSpeed < substitutionPumps[ pumpId ].currentPumpSpeed ) { speedIncrease *= -1.0F; } substitutionPumps[ pumpId ].currentPumpSpeed += speedIncrease; // If the pump's target speed is set to be 0, do not ramp down set it to zero immediately - if ( getSubstitutionPumpTargetRate( pumpId ) < NEARLY_ZERO ) + if ( pumpTargetSpeed < NEARLY_ZERO ) { substitutionPumps[ pumpId ].currentPumpSpeed = 0.0F; } Index: firmware/App/Controllers/SubstitutionPump.h =================================================================== diff -u -r09bb4a7c085a868d1eb6d886c94ac6c78e5e92de -r7ef41d90338528f3e8c0ef801fc17fa1ec4b34ea --- firmware/App/Controllers/SubstitutionPump.h (.../SubstitutionPump.h) (revision 09bb4a7c085a868d1eb6d886c94ac6c78e5e92de) +++ firmware/App/Controllers/SubstitutionPump.h (.../SubstitutionPump.h) (revision 7ef41d90338528f3e8c0ef801fc17fa1ec4b34ea) @@ -47,7 +47,7 @@ /// Substitution pump data struct. typedef struct { - F32 d92_PumpTargetRate; ///< Substitution pump D92_Pump target speed + F32 d92_PumpTargetRate; ///< Substitution pump D92_Pump target speed F32 d92_PumpCurrentSetSpeed; ///< Substitution pump D92_Pump current set speed U32 d92_PumpState; ///< Substitution pump D92_Pump current state F32 d92_PumpMeasuredSpeed; ///< Substitution pump D92_Pump measured speed