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; } } Index: firmware/App/Controllers/SubstitutionPump.c =================================================================== diff -u -r3cad7f9a8cf615b96038e08f0c271aafba5fccbc -r4ae9dd8065549025f92619a9279b0724548a2347 --- firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 3cad7f9a8cf615b96038e08f0c271aafba5fccbc) +++ firmware/App/Controllers/SubstitutionPump.c (.../SubstitutionPump.c) (revision 4ae9dd8065549025f92619a9279b0724548a2347) @@ -87,7 +87,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 Substitution pump states. typedef enum SubstituionPumpState @@ -158,6 +158,8 @@ substitutionPumps[ pumpId ].direction = SUBSTITUTION_PUMP_FORWARD_DIR; substitutionPumps[ pumpId ].controlSet = SUBSTITUTION_PUMP_CONTROL_FORWARD_DIR; } + + checkSubstitutionPumpControl(); setFPGAD92PumpRevolutionCount( SUBSTITUTION_PUMP_ZERO_FLOW_RATE ); setFPGAD92PumpControl( SUBSTITUTION_PUMP_CONTROL_STOP ); @@ -168,7 +170,6 @@ substitutionPumpDataPublishInterval.override = OVERRIDE_RESET; Enable_DRV8434S_Stepper_Driver = FALSE; - checkSubstitutionPumpControl(); initPersistentAlarm( ALARM_ID_DD_D92_PUMP_RPM_OUT_OF_RANGE, RPM_OUT_OF_RANGE_TIME_OUT, RPM_OUT_OF_RANGE_TIME_OUT ); } @@ -553,21 +554,21 @@ if( Enable_DRV8434S_Stepper_Driver == FALSE ) { SUBSTITUTION_PUMP_CONTROL_FORWARD = SUBSTITUTION_PUMP_CONTROL_DRV_ENABLE | - SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | - SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; + SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | + SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; - SUBSTITUTION_PUMP_CONTROL_STOP = SUBSTITUTION_PUMP_CONTROL_DRV_DISABLE | - SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | - SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; + SUBSTITUTION_PUMP_CONTROL_STOP = SUBSTITUTION_PUMP_CONTROL_DRV_DISABLE | + SUBSTITUTION_PUMP_CONTROL_DRV_REVERSE_DIR | + SUBSTITUTION_PUMP_CONTROL_DRV_SIXTY_FOUR_STEP; - setFPGAD92CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); - setFPGAD92CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); - setFPGAD92CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); - setFPGAD92CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); - setFPGAD92CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); - setFPGAD92CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); + setFPGAD92CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); + setFPGAD92CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); + setFPGAD92CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); + setFPGAD92CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); + setFPGAD92CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); + setFPGAD92CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); - Enable_DRV8434S_Stepper_Driver= TRUE; + Enable_DRV8434S_Stepper_Driver= TRUE; } } else Index: firmware/source/sys_main.c =================================================================== diff -u -r3b84fc79b2fd6c7a447e54e4fe821447f613af59 -r4ae9dd8065549025f92619a9279b0724548a2347 --- firmware/source/sys_main.c (.../sys_main.c) (revision 3b84fc79b2fd6c7a447e54e4fe821447f613af59) +++ firmware/source/sys_main.c (.../sys_main.c) (revision 4ae9dd8065549025f92619a9279b0724548a2347) @@ -214,6 +214,7 @@ initDryBiCart(); initMixingControl(); initIntegrity(); + initSubstitutionPump(); // FP Modules