Index: firmware/App/Controllers/DialysatePumps.c =================================================================== diff -u -rd54f4bbfdb5b751ccc661735d4586f6a2dad5d02 -r25e940840c5a54bd98fcadf582d3a1587b55a59d --- firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision d54f4bbfdb5b751ccc661735d4586f6a2dad5d02) +++ firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision 25e940840c5a54bd98fcadf582d3a1587b55a59d) @@ -43,10 +43,11 @@ #define DATA_PUBLISH_COUNTER_START_COUNT 60 ///< Data publish counter start count. #define DP_CONTROL_INTERVAL ( 1000 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the dialysate pump is controlled. +//#define DP_CONTROL_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the dialysate pump is controlled. #define DIALYSATE_PUMP_CONTROL_RUN 0x01 ///< Dialysate pump control run pump. #define DIALYSATE_PUMP_CONTROL_STOP 0x00 ///< Dialysate pump control stop pump. #define DIALYSATE_PUMP_FORWARD_DIR 1 ///< Dialysate pump forward direction. reverse direction is not allowed. -#define DIALYSATE_PUMP_SPEED_INCREMENT 5.0F ///< Speed increase when controlling dialysate pump to target step speed. +#define DIALYSATE_PUMP_SPEED_INCREMENT 10.0F ///< Speed increase when controlling dialysate pump to target step speed. #define ZERO_SPEED 0.0F ///< Zero speed/RPM value. #define DIALYSATE_PUMP_MAX_CURRENT_WHEN_OFF_A 0.1F ///< Dialysate pump maximum current when the pump is off in amps. @@ -742,11 +743,20 @@ { F32 measuredPressure = getFilteredPressure( PRESSURE_SENSOR_FRESH_DIALYSATE ); F32 targetPressure = getDialysatePumpTargetPressure( pumpId ); + F32 newSpeed = 0; -#if 0 - F32 control = runPIController( PI_CONTROLLER_ID_FRESH_DIALYSATE_PUMP, targetPressure, measuredPressure ); + //F32 control = runPIController( PI_CONTROLLER_ID_FRESH_DIALYSATE_PUMP, targetPressure, measuredPressure ); // TODO : get the equivalent speed for the given control - F32 newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); + // newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); +#if 0 + if ( measuredPressure < targetPressure ) + { + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed + DIALYSATE_PUMP_SPEED_INCREMENT; + } + else + { + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_SPEED_INCREMENT; + } //Apply speed limit newSpeed = MIN( newSpeed, MAX_DIALYSATE_PUMP_RPM ); @@ -761,10 +771,20 @@ { F32 measuredPressure = getFilteredPressure( PRESSURE_SENSOR_SPENT_DIALYSATE ); F32 targetPressure = getDialysatePumpTargetPressure( pumpId ); -#if 0 - F32 control = runPIController( PI_CONTROLLER_ID_SPENT_DIALYSATE_PUMP, targetPressure, measuredPressure ); + F32 newSpeed = 0; + + //F32 control = runPIController( PI_CONTROLLER_ID_SPENT_DIALYSATE_PUMP, targetPressure, measuredPressure ); // TODO : get the equivalent speed for the given control - F32 newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); + // newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); +#if 0 + if ( measuredPressure < targetPressure ) + { + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed + DIALYSATE_PUMP_SPEED_INCREMENT; + } + else + { + newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_SPEED_INCREMENT; + } //Apply speed limit newSpeed = MIN( newSpeed, MAX_DIALYSATE_PUMP_RPM );