Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r2fff37fa585181917705645494549b5fd4a4d522 -r89259a1e69799a051874afaf351c37091bef26da --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 2fff37fa585181917705645494549b5fd4a4d522) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 89259a1e69799a051874afaf351c37091bef26da) @@ -44,7 +44,7 @@ #define LOAD_CELL_ADC_ERROR_PERSISTENCE 500 ///< Alarm persistence period (in ms) for load cell ADC errors. #define EMPTY_RESERVOIR_WEIGHT_GRAMS 1600 ///< Reservoirs empty weight in grams. -#define MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS 300 ///< Max allowed extra weight before tare in grams. +#define MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS 150 ///< Max allowed extra weight before tare in grams. /// Load cell data structure. typedef struct @@ -281,7 +281,7 @@ F32 weight = getLoadCellSmallFilteredWeight( loadCellID ); // Check if the load cell is being tared for the first time - if ( fabs(loadcells[ loadCellID ].autoCalOffset) < NEARLY_ZERO ) + if ( fabs(loadcells[ loadCellID ].autoCalOffset ) < NEARLY_ZERO ) { // For the first tare, the weight of the reservoir should be considered // The current weight of the load cell should not be greater than the weight of the reservoir + the extra weight Index: firmware/App/Modes/ModeFault.c =================================================================== diff -u -r2fff37fa585181917705645494549b5fd4a4d522 -r89259a1e69799a051874afaf351c37091bef26da --- firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 2fff37fa585181917705645494549b5fd4a4d522) +++ firmware/App/Modes/ModeFault.c (.../ModeFault.c) (revision 89259a1e69799a051874afaf351c37091bef26da) @@ -32,9 +32,11 @@ // ********** private definitions ********** +#define DELAY_VALVE_MS ( 1 * MS_PER_SECOND ) ///< Valve state change delay in ms. + // ********** private data ********** -static DG_FAULT_STATE_T faultState = DG_FAULT_STATE_START; ///< Currently active fault state. +static DG_FAULT_STATE_T faultState = DG_FAULT_STATE_START; ///< Currently active fault state. // ********** private function prototypes ********** @@ -120,18 +122,18 @@ turnOffUVReactor( OUTLET_UV_REACTOR ); // De-energize all the valves - setValveState( VPI, VALVE_STATE_CLOSED ); - setValveState( VBF, VALVE_STATE_CLOSED ); - setValveState( VSP, VALVE_STATE_CLOSED ); - setValveState( VPD, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState( VPO, VALVE_STATE_NOFILL_C_TO_NO ); - setValveState( VDR, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState( VRC, VALVE_STATE_DRAIN_C_TO_NO ); - setValveState( VRO, VALVE_STATE_R1_C_TO_NO ); - setValveState( VRD1, VALVE_STATE_CLOSED ); - setValveState( VRD2, VALVE_STATE_CLOSED ); - setValveState( VRI, VALVE_STATE_R1_C_TO_NO ); - setValveState( VRF, VALVE_STATE_R2_C_TO_NO ); + setValveStateDelayed( VPI, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VBF, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VSP, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VPD, VALVE_STATE_DRAIN_C_TO_NO, DELAY_VALVE_MS ); + setValveStateDelayed( VPO, VALVE_STATE_NOFILL_C_TO_NO, DELAY_VALVE_MS ); + setValveStateDelayed( VDR, VALVE_STATE_DRAIN_C_TO_NO, DELAY_VALVE_MS ); + setValveStateDelayed( VRC, VALVE_STATE_DRAIN_C_TO_NO, DELAY_VALVE_MS ); + setValveStateDelayed( VRO, VALVE_STATE_R1_C_TO_NO, DELAY_VALVE_MS ); + setValveStateDelayed( VRD1, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VRD2, VALVE_STATE_CLOSED, DELAY_VALVE_MS ); + setValveStateDelayed( VRI, VALVE_STATE_R1_C_TO_NO, DELAY_VALVE_MS ); + setValveStateDelayed( VRF, VALVE_STATE_R2_C_TO_NO, DELAY_VALVE_MS ); requestConcentratePumpsOff( CONCENTRATEPUMPS_CP1_ACID ); requestConcentratePumpsOff( CONCENTRATEPUMPS_CP2_BICARB ); Index: firmware/App/Services/Reservoirs.c =================================================================== diff -u -r037f0edb0b880130563058c809ba50308f2a63e9 -r89259a1e69799a051874afaf351c37091bef26da --- firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 037f0edb0b880130563058c809ba50308f2a63e9) +++ firmware/App/Services/Reservoirs.c (.../Reservoirs.c) (revision 89259a1e69799a051874afaf351c37091bef26da) @@ -487,11 +487,17 @@ *************************************************************************/ void tareLoadCellsAtEmpty( DG_RESERVOIR_ID_T reservoirId ) { + U32 const targetDrainVolume = getReservoirDrainVolumeTargetMl(); + if ( TRUE == tareLoadCellRequest ) { tareLoadCellRequest = FALSE; - tareLoadCell( associatedLoadCell[ reservoirId ] ); - tareLoadCell( redundantLoadCell[ reservoirId ] ); + + if ( MIN_RESERVOIR_VOLUME_ML == targetDrainVolume ) + { + tareLoadCell( associatedLoadCell[ reservoirId ] ); + tareLoadCell( redundantLoadCell[ reservoirId ] ); + } } }