Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r6742785597228dba2009e73a9de3f85024d4c82a -rebbb1f85550a1f9b8f946655f7b2b63f76fbf67d --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 6742785597228dba2009e73a9de3f85024d4c82a) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision ebbb1f85550a1f9b8f946655f7b2b63f76fbf67d) @@ -41,8 +41,8 @@ #define CONCENTRATE_PUMP_ERROR_TOLERANCE 0.02 ///< Measured speed needs to be within 2% of commanded speed. #define CONCENTRATE_PUMP_ZERO_FLOW_RATE 0xFFFF ///< Pulse width value when zero flow rate or pump is off. -#define CONCENTRATE_PUMP_VOLUME_PER_REV 0.1 ///< Volume output every revolution (mL). -#define CONCENTRATE_PUMP_PULSE_PER_REV 2.0 ///< Number of pulses generate for every revolution. +#define CONCENTRATE_PUMP_VOLUME_PER_REV 0.15 ///< Volume output every revolution (mL). +#define CONCENTRATE_PUMP_PULSE_PER_REV 4.0 ///< Number of pulses generate for every revolution. #define CONCENTRATE_PUMP_STEP_PER_REV 200.0 ///< Number of steps for every revolution. #define CONCENTRATE_PUMP_HALL_SENSE_PERIOD_RESOLUTION 100.0 ///< Hall sense period resolution in microseconds. @@ -53,7 +53,7 @@ #define CONCENTRATE_PUMP_VOLUME_PER_PULSE ( CONCENTRATE_PUMP_VOLUME_PER_REV / CONCENTRATE_PUMP_PULSE_PER_REV ) #define CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL ( 500 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is monitored. -#define CONCENTRATE_PUMP_CONTROL_INTERVAL ( 250 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is controlled. +#define CONCENTRATE_PUMP_CONTROL_INTERVAL ( 500 / TASK_GENERAL_INTERVAL ) ///< Interval (ms/task time) at which the concentrate pump is controlled. #define CONCENTRATE_PUMP_SPEED_CONTROL_PERSISTENCE_PERIOD ( 5 * MS_PER_SECOND ) ///< Persistence period for concentrate pump speed control error. /// Enumeration of concentrate pump states. @@ -268,14 +268,10 @@ targetSpeed_ml_min *= -1.0; } - if ( targetSpeed_ml_min <= CONCENTRATE_PUMP_MAX_SPEED ) + if ( ( CONCENTRATE_PUMP_MIN_SPEED <= targetSpeed_ml_min ) && ( targetSpeed_ml_min <= CONCENTRATE_PUMP_MAX_SPEED ) ) { concentratePumps[ pumpId ].pumpTargetSpeed = targetSpeed_ml_min; } - else if ( CONCENTRATE_PUMP_MIN_SPEED <= targetSpeed_ml_min ) - { - concentratePumps[ pumpId ].pumpTargetSpeed = 0.0; - } else { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_CONCENTRATE_PUMP_SPEED_OUT_OF_RANGE, targetSpeed_ml_min ) @@ -547,7 +543,7 @@ { F32 const absSpeed = fabs( value ); - if ( absSpeed <= CONCENTRATE_PUMP_MAX_SPEED ) + if ( ( CONCENTRATE_PUMP_MIN_SPEED <= absSpeed ) && ( absSpeed <= CONCENTRATE_PUMP_MAX_SPEED ) ) { result = TRUE; setConcentratePumpTargetSpeed( (CONCENTRATE_PUMPS_T)pumpId, value );