Index: firmware/App/Controllers/DialysatePumps.c =================================================================== diff -u -rf5baeac6a5f000705cd51e4779a967acf4088981 -r8736efaf98697bd9b2e4c52587469b5c634b1fb6 --- firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision f5baeac6a5f000705cd51e4779a967acf4088981) +++ firmware/App/Controllers/DialysatePumps.c (.../DialysatePumps.c) (revision 8736efaf98697bd9b2e4c52587469b5c634b1fb6) @@ -61,20 +61,23 @@ #define MAX_FPGA_DIALYSATE_PUMP_DIRECTION_FAULT_WINDOW_MS ( 1 * SEC_PER_MIN * MS_PER_SECOND ) ///< FPGA dialysate pump direction fault window #define MAX_FPGA_DIALYSATE_PUMP_DIRECTION_FAULT_FAILURES 10 ///< FPGA dialysate pump direction fault failures per MAX_FPGA_DIALYSATE_PUMP_DIRECTION_FAULT_WINDOW_MS -#define FRESH_DIALYSATE_TARGET_PRESSURE_PSI (-12.0F) ///< Fresh dialysate pump recommended pressure(Pn/PHo) in psi. -#define FRESH_DIALYSATE_MAX_PRESSURE_PSI (-15.0F) ///< Fresh dialysate pump maximum allowed (Pn/PHo) pressure in psi. -#define SPENT_DIALYSATE_TARGET_PRESSURE_PSI 25.0F ///< Spent dialysate pump recommended pressure(PDs) in psi. +//#define FRESH_DIALYSATE_TARGET_PRESSURE_PSI (-12.0F) ///< Fresh dialysate pump recommended pressure(Pn/PHo) in psi. +//#define FRESH_DIALYSATE_MAX_PRESSURE_PSI (-15.0F) ///< Fresh dialysate pump maximum allowed (Pn/PHo) pressure in psi. +#define FRESH_DIALYSATE_TARGET_PRESSURE_PSI 25.0F ///< Fresh dialysate pump recommended pressure(D18) in psi. +#define FRESH_DIALYSATE_MAX_PRESSURE_PSI 26.0F ///< Fresh dialysate pump maximum allowed (D18) pressure in psi. +#define SPENT_DIALYSATE_TARGET_PRESSURE_PSI 29.0F ///< Spent dialysate pump recommended pressure(PDs) in psi. #define SPENT_DIALYSATE_MAX_PRESSURE_PSI 30.0F ///< Spent dialysate pump maximum allowed (PDs) pressure in psi. -#define DIALYSATE_PUMP_MIN_PRESSURE_PSI 0.0F ///< Minimum dialysate pump pressure in psi. -#define DIALYSATE_PUMP_MAX_PRESSURE_PSI 40.0F ///< Maximum dialysate pump pressure in psi. +#define DIALYSATE_PUMP_MIN_PRESSURE_PSI 4.0F ///< Minimum dialysate pump pressure in psi. +#define DIALYSATE_PUMP_MAX_PRESSURE_PSI 25.0F ///< Maximum dialysate pump pressure in psi. #define DIALYSATE_PUMP_SPEED_ZERO_RPM 0 ///< Dialysate pump zero RPM speed. #define SPEED_COUNT_ZERO 0 ///< Measured speed count zero check. #define SPEED_CONV_FACTOR 1500000 ///< Measured speed count conversion to RPM +#define PRES_TO_SPD_CONV_FACTOR 85.0F ///< Pressure to speed conversion factor for pump control. -#define D12_PUMP_P_COEFFICIENT 1.0F ///< P term for fresh dialysate pump delta pressure control. -#define D12_PUMP_I_COEFFICIENT 0.0F ///< I term for fresh dialysate pump delta pressure control. -#define D48_PUMP_P_COEFFICIENT 1.0F ///< P term for spent dialysate pump delta pressure control. -#define D48_PUMP_I_COEFFICIENT 0.0F ///< I term for spent dialysate pump delta pressure control. +#define D12_PUMP_P_COEFFICIENT 3.0F ///< P term for fresh dialysate pump delta pressure control. +#define D12_PUMP_I_COEFFICIENT 0.3F ///< I term for fresh dialysate pump delta pressure control. +#define D48_PUMP_P_COEFFICIENT 3.0F ///< P term for spent dialysate pump delta pressure control. +#define D48_PUMP_I_COEFFICIENT 0.3F ///< I term for spent dialysate pump delta pressure control. #define MAX_ALLOWED_RPM_OUT_OF_RANGE 300 ///< Maximum allowed RPM out of range from target RPM in open loop. #define PUMP_TRANS_TO_RAMP_SPEED_THRESHOLD 20.0F ///< Speed change that alters the state to ramp during control state. @@ -744,10 +747,12 @@ F32 measuredPressure = getFilteredPressure( D18_PRES ); F32 targetPressure = getDialysatePumpTargetPressure( pumpId ); F32 newSpeed = 0; +#if 1 + F32 control = runPIController( PI_CONTROLLER_ID_D12_PUMP, targetPressure, measuredPressure ); + //TODO : get the equivalent speed for the given control + newSpeed = control * PRES_TO_SPD_CONV_FACTOR; +#endif - //F32 control = runPIController( PI_CONTROLLER_ID_D12_PUMP, targetPressure, measuredPressure ); - // TODO : get the equivalent speed for the given control - // newSpeed = control * ( MAX_DIALYSATE_PUMP_RPM / DIALYSATE_PUMP_MAX_PRESSURE_PSI ); #if 0 if ( measuredPressure < targetPressure ) { @@ -757,15 +762,15 @@ { newSpeed = dialysatePumps[ pumpId ].currentPumpSpeed - DIALYSATE_PUMP_SPEED_INCREMENT; } - +#endif //Apply speed limit newSpeed = MIN( newSpeed, MAX_DIALYSATE_PUMP_RPM ); newSpeed = MAX( newSpeed, MIN_DIALYSATE_PUMP_RPM ); dialysatePumps[ pumpId ].currentPumpSpeed = newSpeed; //Set fresh dialyate pump speed setFPGAD12PumpSpeed( (U16)dialysatePumps[ pumpId ].currentPumpSpeed ); -#endif + } else { Index: firmware/App/Controllers/DialysatePumps.h =================================================================== diff -u -ra3a396aa37fb562327f05e54990f06538c7617ed -r8736efaf98697bd9b2e4c52587469b5c634b1fb6 --- firmware/App/Controllers/DialysatePumps.h (.../DialysatePumps.h) (revision a3a396aa37fb562327f05e54990f06538c7617ed) +++ firmware/App/Controllers/DialysatePumps.h (.../DialysatePumps.h) (revision 8736efaf98697bd9b2e4c52587469b5c634b1fb6) @@ -33,7 +33,7 @@ // ********** public definitions ********** #define MIN_DIALYSATE_PUMP_RPM 350 ///< Minimum RPM target for dialysate pump (though zero is allowed if turning pump off). -#define MAX_DIALYSATE_PUMP_RPM 2700 ///< Maximum RPM target for dialysate pump. +#define MAX_DIALYSATE_PUMP_RPM 2650 ///< Maximum RPM target for dialysate pump. /// Enumeration of dialysate pumps. typedef enum DialysatePumps