Index: firmware/App/Controllers/LoadCell.c =================================================================== diff -u -r9c310aee18d85fe28b2f096cd3d61bd8df17937f -r7e632c636be41c139d2d97cc845298ff98ff66ed --- firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 9c310aee18d85fe28b2f096cd3d61bd8df17937f) +++ firmware/App/Controllers/LoadCell.c (.../LoadCell.c) (revision 7e632c636be41c139d2d97cc845298ff98ff66ed) @@ -276,20 +276,20 @@ void tareLoadCell( LOAD_CELL_ID_T loadCellID ) { BOOL isWeightOutOfRange = FALSE; - F32 deltaWeight = 0.0; F32 weight = getLoadCellSmallFilteredWeight( loadCellID ); // Check if the load cell is being tared for the first time if ( fabs(loadcells[ loadCellID ].autoCalOffset) < NEARLY_ZERO ) { - deltaWeight = fabs(weight - ( EMPTY_RESERVOIR_WEIGHT_GRAMS + MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS )); - isWeightOutOfRange = ( weight > deltaWeight ? TRUE : FALSE ); + // 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 + F32 deltaWeight = fabs( weight - EMPTY_RESERVOIR_WEIGHT_GRAMS ); + isWeightOutOfRange = ( deltaWeight > MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS ? TRUE : FALSE ); } else { - deltaWeight = fabs(weight - MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS ); - isWeightOutOfRange = ( weight > deltaWeight ? TRUE : FALSE ); + isWeightOutOfRange = ( fabs(weight) > MAX_ALLOWED_EXTRA_WEIGHT_BEFORE_TARE_GRAMS ? TRUE : FALSE ); } if ( FALSE == isWeightOutOfRange )