Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -r20676421ce71cfc51bddaaa9ba95f9e183967aba -r7f56f07660862bc62524c506699193a7e5f48f96 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 20676421ce71cfc51bddaaa9ba95f9e183967aba) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 7f56f07660862bc62524c506699193a7e5f48f96) @@ -51,7 +51,7 @@ #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 8.0F ///< Number of micro-steps ( fractions of step) per step. +#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. @@ -81,7 +81,6 @@ #define CONCENTRATE_PUMP_CONTROL_ENABLE_MASK 0x10 ///< Concentrate pump control enable bit mask. //NEW STEPPER DRIVER CONFIGURATION DRV8434S - #define CONCENTRATE_PUMP_CONTROL_DRV_TWOFIXTYSIXTH_STEP 0x0A ///< concentrate pump microstep control 1/256th step. #define CONCENTRATE_PUMP_CONTROL_DRV_ONETWENTYEIGHTYTH_STEP 0x09 ///< concentrate pump microstep control 1/128th step. #define CONCENTRATE_PUMP_CONTROL_DRV_SIXTYFOURTH_STEP 0x08 ///< concentrate pump microstep control 1/64th step. @@ -100,16 +99,14 @@ #define CONCENTRATE_PUMP_CONTROL_DRV_DISABLE 0x20 ///< bit 5, active low, Concentrate pump control disable pump. #define CONCENTRATE_PUMP_CONTROL_DRV_ENABLE_MASK 0x20 ///< bit 5 mask, Concentrate pump control enable bit mask. -#define DRV8434S_CTRL1_DEFAULT 0x00 -#define DRV8434S_CTRL2_DEFAULT 0x8F -#define DRV8434S_CTRL4_DEFAULT 0x30 -#define DRV8434S_CTRL5_DEFAULT 0x08 -#define DRV8434S_CTRL6_DEFAULT 0x03 -#define DRV8434S_CTRL7_DEFAULT 0x20 +#define DRV8434S_CTRL1_DEFAULT 0x00 ///< Full motor current, normal open-load fault behavior. +#define DRV8434S_CTRL2_DEFAULT 0x8F ///< Motor outputs on, 16us off-time, smart auto-tuning current control (quietest/smoothest mode). +#define DRV8434S_CTRL4_DEFAULT 0x30 ///< Registers unlocked/writable, basic over current and over temperature protection settings. +#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. -static U32 CONCENTRATE_PUMP_CONTROL_FORWARD; ///< Concentrate pump control forward. -static U32 CONCENTRATE_PUMP_CONTROL_REVERSE; ///< Concentrate pump control reverse. - /* * * @@ -168,6 +165,9 @@ static BOOL isDosingCompleted[ NUM_OF_CONCENTRATE_PUMPS ]; ///< Flag indicating dosing completed status (T/F). static U08 Enable_DRV8434S_Stepper_Driver; ///< Enable New Stepper driver for Concentrate Pump. +static U32 CONCENTRATE_PUMP_CONTROL_FORWARD; ///< Concentrate pump control forward. +static U32 CONCENTRATE_PUMP_CONTROL_REVERSE; ///< Concentrate pump control reverse. + //static DD_ACID_CONCENTRATES_RECORD_T acidConcentrateCalRecord; ///< Acid concentrate calibration record. //static DD_BICARB_CONCENTRATES_RECORD_T bicarbConcentrateCalRecord; ///< Bicarb concentrate calibration record. //static DD_UF_PUMP_RECORD_T ultrafiltrationPumpCalRecord; ///< Ultrafiltration pump calibration record. @@ -185,7 +185,7 @@ static void checkConcentratePumpControlSet( CONCENTRATE_PUMPS_T pumpId ); static void publishConcentratePumpData( void ); static void monitorPumpParkStatus( void ); -static void updateConcentratePumpControl( void ); +static void checkConcentratePumpControl( void ); /*********************************************************************//** * @brief @@ -204,7 +204,7 @@ ufPumpParkPersistenceClear = FALSE; Enable_DRV8434S_Stepper_Driver = FALSE; - updateConcentratePumpControl(); + checkConcentratePumpControl(); for ( pumpId = CONCENTRATEPUMPS_FIRST; pumpId < NUM_OF_CONCENTRATE_PUMPS; pumpId++ ) { @@ -572,8 +572,8 @@ { if ( pumpId < NUM_OF_CONCENTRATE_PUMPS ) { - //Set Concentrate Pump Control - updateConcentratePumpControl(); + //Check Concentrate Pump Control and Set configuration if driver is changed. + checkConcentratePumpControl(); if ( targetSpeed_ml_min >= 0.0 ) { concentratePumps[ pumpId ].direction = CONCENTRATE_PUMP_FORWARD_DIR; @@ -1334,41 +1334,50 @@ /*********************************************************************//** * @brief - * The updateConcentratePumpControl function update concentrate pump control + * The checkConcentratePumpControl function update concentrate pump control * registers. * @details \b Inputs: Enable_DRV8434S_Stepper_Driver * @details \b Outputs: Enable_DRV8434S_Stepper_Driver, * CONCENTRATE_PUMP_CONTROL_FORWARD, CONCENTRATE_PUMP_CONTROL_REVERSE * @return none *************************************************************************/ -static void updateConcentratePumpControl( void ) +static void checkConcentratePumpControl( void ) { - if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRV8434S_STEPPER_DRIVER ) && (Enable_DRV8434S_Stepper_Driver == FALSE ) ) + if ( TRUE == getTestConfigStatus( TEST_CONFIG_DD_ENABLE_DRV8434S_STEPPER_DRIVER )) { - setFPGAD10D11CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); - setFPGAD10D11CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); - setFPGAD10D11CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); - setFPGAD10D11CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); - setFPGAD10D11CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); - setFPGAD10D11CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); + if ( Enable_DRV8434S_Stepper_Driver == FALSE ) + { + setFPGAD10D11CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); + setFPGAD10D11CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); + setFPGAD10D11CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); + setFPGAD10D11CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); + setFPGAD10D11CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); + setFPGAD10D11CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); - setFPGAD76CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); - setFPGAD76CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); - setFPGAD76CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); - setFPGAD76CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); - setFPGAD76CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); - setFPGAD76CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); + setFPGAD76CTRL1Reg( DRV8434S_CTRL1_DEFAULT ); + setFPGAD76CTRL2Reg( DRV8434S_CTRL2_DEFAULT ); + setFPGAD76CTRL4Reg( DRV8434S_CTRL4_DEFAULT ); + setFPGAD76CTRL5Reg( DRV8434S_CTRL5_DEFAULT ); + setFPGAD76CTRL6Reg( DRV8434S_CTRL6_DEFAULT ); + setFPGAD76CTRL7Reg( DRV8434S_CTRL7_DEFAULT ); - CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | - CONCENTRATE_PUMP_CONTROL_DRV_FORWARD_DIR | - CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP; + setFPGAD10PumpControl( DRV8434S_CTRL_DEFAULT ); + setFPGAD11PumpControl( DRV8434S_CTRL_DEFAULT ); + setFPGAD76PumpControl( DRV8434S_CTRL_DEFAULT ); - CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | - CONCENTRATE_PUMP_CONTROL_DRV_REVERSE_DIR | - CONCENTRATE_PUMP_CONTROL_DRV_EIGHTH_STEP; - Enable_DRV8434S_Stepper_Driver = TRUE; + CONCENTRATE_PUMP_CONTROL_FORWARD = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | + CONCENTRATE_PUMP_CONTROL_DRV_FORWARD_DIR | + CONCENTRATE_PUMP_CONTROL_DRV_SIXTYFOURTH_STEP; + CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_DRV_ENABLE | + CONCENTRATE_PUMP_CONTROL_DRV_REVERSE_DIR | + CONCENTRATE_PUMP_CONTROL_DRV_SIXTYFOURTH_STEP; + + Enable_DRV8434S_Stepper_Driver = TRUE; + } + + } else { @@ -1378,11 +1387,12 @@ CONCENTRATE_PUMP_CONTROL_FORWARD_DIR | CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; - CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | - CONCENTRATE_PUMP_CONTROL_NOT_RESET | - CONCENTRATE_PUMP_CONTROL_ENABLE | + CONCENTRATE_PUMP_CONTROL_REVERSE = CONCENTRATE_PUMP_CONTROL_SLEEP_OFF | + CONCENTRATE_PUMP_CONTROL_NOT_RESET | + CONCENTRATE_PUMP_CONTROL_ENABLE | CONCENTRATE_PUMP_CONTROL_REVERSE_DIR | CONCENTRATE_PUMP_CONTROL_EIGHTH_STEP; + Enable_DRV8434S_Stepper_Driver = FALSE; } }