Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r3cad7f9a8cf615b96038e08f0c271aafba5fccbc -r4ae9dd8065549025f92619a9279b0724548a2347 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 3cad7f9a8cf615b96038e08f0c271aafba5fccbc) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 4ae9dd8065549025f92619a9279b0724548a2347) @@ -51,10 +51,9 @@ #define CONCENTRATE_PUMP_MIN_ALLOWED_HALL_SENSOR_COUNT 1000 ///< Hall sensors minimum allowed value. #define CONCENTRATE_PUMP_HALL_SENSORS_OUT_OF_RANGE_TIME_MS ( 5 * MS_PER_SECOND ) ///< Hall sensors out of range time in milliseconds. -#define CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP 64.0F ///< Number of micro-steps ( fractions of step) per step. #define CONCENTRATE_PUMP_VOLUME_TO_REVOLUTION_DIENER ( ( 1.0F / CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER ) * \ ( CONCENTRATE_PUMP_STEP_PER_REV * \ - CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ) ) ///< Convert volume in to number of revolutions needed. + concentratePumpMicroStepsPerStep ) ) ///< Convert volume in to number of revolutions needed. #define CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION ( 0.50F / ( US_PER_SECOND * SEC_PER_MIN ) ) ///< Convert step period resolution (0.50 us) to minute. /// Volume output per pulse. @@ -105,7 +104,7 @@ #define DRV8434S_CTRL5_DEFAULT 0x08 ///< Stall detection off by default, but if turned on it will show up as a fault #define DRV8434S_CTRL6_DEFAULT 0x03 ///< Stall detection sensitivity threshold (low byte). #define DRV8434S_CTRL7_DEFAULT 0x20 ///< Low current ripple setting, spread-spectrum switching enabled (reduces EMI noise). -#define DRV8434S_CTRL_DEFAULT 0x7F ///< Stop State indicator flag. +#define DRV8434S_CTRL_DEFAULT 0x28 ///< Stop State indicator flag. /// Enumeration of concentrate pump states. typedef enum ConcentratePumpState @@ -160,6 +159,7 @@ static U32 CONCENTRATE_PUMP_CONTROL_FORWARD; ///< Concentrate pump control forward. static U32 CONCENTRATE_PUMP_CONTROL_REVERSE; ///< Concentrate pump control reverse. +static F32 concentratePumpMicroStepsPerStep; ///< Concentrate pump microsteps (fraction of steps) per step //static DD_ACID_CONCENTRATES_RECORD_T acidConcentrateCalRecord; ///< Acid concentrate calibration record. //static DD_BICARB_CONCENTRATES_RECORD_T bicarbConcentrateCalRecord; ///< Bicarb concentrate calibration record. @@ -237,6 +237,7 @@ concentratePumps[ pumpId ].isConcPumpParkInProgress = FALSE; stopConcentratePump( pumpId ); isDosingCompleted[ pumpId ] = FALSE; + concentratePumpMicroStepsPerStep = 8.0F; } concentratePumpDataPublishInterval.data = CONCENTRATE_PUMP_DATA_PUBLISH_INTERVAL; @@ -1081,7 +1082,7 @@ F32 stepPeriodCounts; timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV_DIENER / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); - stepPeriodCounts = timePerStep / ( CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION * CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ); + stepPeriodCounts = timePerStep / ( CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION * concentratePumpMicroStepsPerStep ); concentratePumps[ pumpId ].togglePeriodCount = (U32)( stepPeriodCounts + FLOAT_TO_INT_ROUNDUP_OFFSET ); } else @@ -1367,6 +1368,7 @@ CONCENTRATE_PUMP_CONTROL_DRV_REVERSE_DIR | CONCENTRATE_PUMP_CONTROL_DRV_SIXTYFOURTH_STEP; + concentratePumpMicroStepsPerStep = 64.0F; Enable_DRV8434S_Stepper_Driver = TRUE; } @@ -1386,6 +1388,7 @@ CONCENTRATE_PUMP_CONTROL_REVERSE_DIR | CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; + concentratePumpMicroStepsPerStep = 8.0F; Enable_DRV8434S_Stepper_Driver = FALSE; } }