Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -r5070f8552a200e15dcc2ca0532db10fba9dc8c6b -rdfece12385652318f19c2aa3bd0a5992b0396bec --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 5070f8552a200e15dcc2ca0532db10fba9dc8c6b) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision dfece12385652318f19c2aa3bd0a5992b0396bec) @@ -98,8 +98,8 @@ #define DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( DIP_REV_PER_LITER / ML_PER_LITER ) #define DIP_GEAR_RATIO 32.0 ///< DialIn pump motor to dialIn pump gear ratio. #define DIP_PWM_ZERO_OFFSET 0.1 ///< 10% PWM duty cycle = zero speed. -/// Macro converts flow rate to estimate PWM needed to achieve it. -#define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR + DIP_PWM_ZERO_OFFSET ) +/// Macro converts flow rate to estimate PWM needed to achieve it. // TODO - I added 1.2 gain based on empirical data +#define DIP_PWM_FROM_ML_PER_MIN(rate) ( (rate) * DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR * DIP_GEAR_RATIO * DIP_MOTOR_RPM_TO_PWM_DC_FACTOR * 1.2 + DIP_PWM_ZERO_OFFSET ) /// Conversion from PWM duty cycle % to commanded pump motor speed. #define DIP_PWM_TO_MOTOR_SPEED_RPM(pwm) ( ((pwm) - DIP_PWM_ZERO_OFFSET) * 4000.0 ) Index: firmware/App/HDCommon.h =================================================================== diff -u -ra25c11a9beb66c7292a184e3bc02a1a5ded5ed8a -rdfece12385652318f19c2aa3bd0a5992b0396bec --- firmware/App/HDCommon.h (.../HDCommon.h) (revision a25c11a9beb66c7292a184e3bc02a1a5ded5ed8a) +++ firmware/App/HDCommon.h (.../HDCommon.h) (revision dfece12385652318f19c2aa3bd0a5992b0396bec) @@ -49,6 +49,7 @@ #define USE_FMD_FLOW_SENSOR 1 // Use FMD flow sensor (on HD) instead of FMD on DG #define USE_FMB_FLOW_SENSOR 1 // Use FMB flow sensor instead of flow estimation from pump speed/pressure/wearing #define RUN_BP_OPEN_LOOP 1 // Run blood pump in open loop mode + #define RUN_DPI_OPEN_LOOP 1 // Run dialysate inlet pump in open loop mode #define DISABLE_MOTOR_CURRENT_CHECKS 1 // Do not error on HD pump current checks #define DISABLE_PUMP_FLOW_CHECKS 1 // Do not error on HD pump flow checks #define DISABLE_PUMP_SPEED_CHECKS 1 // Do not error on HD pump speed checks Index: firmware/App/Modes/Dialysis.c =================================================================== diff -u -r0237b2fc49d60b6602bac35ce43831b37f294c81 -rdfece12385652318f19c2aa3bd0a5992b0396bec --- firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision 0237b2fc49d60b6602bac35ce43831b37f294c81) +++ firmware/App/Modes/Dialysis.c (.../Dialysis.c) (revision dfece12385652318f19c2aa3bd0a5992b0396bec) @@ -207,8 +207,12 @@ #else setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); #endif +#ifndef RUN_DPI_OPEN_LOOP setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); #else + setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); +#endif +#else setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); #endif @@ -298,8 +302,12 @@ #else setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); #endif +#ifndef RUN_DPI_OPEN_LOOP setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_CLOSED_LOOP ); #else + setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); +#endif +#else setBloodPumpTargetFlowRate( setBloodFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); setDialInPumpTargetFlowRate( setDialysateFlowRate, MOTOR_DIR_FORWARD, PUMP_CONTROL_MODE_OPEN_LOOP ); #endif