Index: firmware/App/Controllers/BalancingChamber.c =================================================================== diff -u -rfc6a157a48debd4ee8c2fb8dec8af21f5b07abe2 -rc53b6d8d57bd64bcfedf8a1bbb0d0eeab4502971 --- firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision fc6a157a48debd4ee8c2fb8dec8af21f5b07abe2) +++ firmware/App/Controllers/BalancingChamber.c (.../BalancingChamber.c) (revision c53b6d8d57bd64bcfedf8a1bbb0d0eeab4502971) @@ -465,7 +465,9 @@ static BOOL isBalChamberTimeBasedSwitching( void ) { BOOL state = FALSE; - state = ( getD48PumpSpeed() <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) ? TRUE : FALSE; + F32 dialFlowRate = getBalChamberActiveDialysateFlowrate(); + //state = ( getD48PumpSpeed() <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) ? TRUE : FALSE; + state = ( dialFlowRate <= BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_3 )? TRUE : FALSE; return state; } Index: firmware/App/Controllers/BalancingChamber.h =================================================================== diff -u -r42541cc4700d748d524400f61d99e288a0e11f3e -rc53b6d8d57bd64bcfedf8a1bbb0d0eeab4502971 --- firmware/App/Controllers/BalancingChamber.h (.../BalancingChamber.h) (revision 42541cc4700d748d524400f61d99e288a0e11f3e) +++ firmware/App/Controllers/BalancingChamber.h (.../BalancingChamber.h) (revision c53b6d8d57bd64bcfedf8a1bbb0d0eeab4502971) @@ -39,6 +39,13 @@ #define BC_SPENT_FILL_PRESSURE_PSIG 29.0F ///< Spent side pressure (drop) during balancing chamber switching, indicates fill has been started / in progress. #define BAL_CHAMBER_FILL_VOLUME_ML 30.0F ///< Balancing chamber fill/drain volume per batch operation. #define BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM 250 ///< Minimum D48 speed and fixed speed for time-based balancing chamber switching. +#define BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_1 50.0F ///< Band 1 flowrate(50 mL/min) +#define BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_2 60.0F ///< Band 2 flowrate(60 mL/min) +#define BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_3 70.0F ///< Band 3 flowrate(70 mL/min) +#define BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_4 80.0F ///< Band 4 flowrate(80 mL/min) +#define BAL_CHAMBER_TIME_BASED_BAND_1 250 ///< Speed at D48 pump runs when the flowrate is between 50 mL/min and 60 mL/min. +#define BAL_CHAMBER_TIME_BASED_BAND_2 290 ///< Speed at D48 pump runs when the flowrate is between 60 mL/min and 70 mL/min. +#define BAL_CHAMBER_TIME_BASED_BAND_3 330 ///< Speed at D48 pump runs when the flowrate is between 80 mL/min and 80 mL/min. /// balancing chamber data structure typedef struct Index: firmware/App/Modes/ModeGenDialysate.c =================================================================== diff -u -r4237cbced773b985ff69a8c2af8287dbd5457f24 -rc53b6d8d57bd64bcfedf8a1bbb0d0eeab4502971 --- firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision 4237cbced773b985ff69a8c2af8287dbd5457f24) +++ firmware/App/Modes/ModeGenDialysate.c (.../ModeGenDialysate.c) (revision c53b6d8d57bd64bcfedf8a1bbb0d0eeab4502971) @@ -704,14 +704,28 @@ { U32 rpm; U32 nominalRpm; + F32 dialFlowRate = getBalChamberActiveDialysateFlowrate(); nominalRpm = getD48PumpSpeed(); rpm = nominalRpm; - if ( nominalRpm <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) +// if ( nominalRpm <= BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM ) +// { +// rpm = BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM; +// } + + if ( ( dialFlowRate >= BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_1 ) && ( dialFlowRate <= BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_2 ) ) { - rpm = BAL_CHAMBER_TIME_BASED_D48_SPEED_RPM; + rpm = BAL_CHAMBER_TIME_BASED_BAND_1; } + else if ( ( dialFlowRate > BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_2 ) && ( dialFlowRate <= BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_3 ) ) + { + rpm = BAL_CHAMBER_TIME_BASED_BAND_2; + } + else if ( ( dialFlowRate > BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_3 ) && ( dialFlowRate <= BAL_CHAMBER_OPEN_LOOP_FLOW_RATE_BAND_4 ) ) + { + rpm = BAL_CHAMBER_TIME_BASED_BAND_3; + } return rpm; }