Index: firmware/App/Controllers/ConcentratePumps.c =================================================================== diff -u -rd2fb916f924e8d988cb62b1e3a16aad2d923f7e7 -r2332d35e7db7dd3b4b58e79433ebcf9fd28a1544 --- firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision d2fb916f924e8d988cb62b1e3a16aad2d923f7e7) +++ firmware/App/Controllers/ConcentratePumps.c (.../ConcentratePumps.c) (revision 2332d35e7db7dd3b4b58e79433ebcf9fd28a1544) @@ -41,12 +41,17 @@ #define CONCENTRATE_PUMP_SPD_OUT_OF_RANGE_TOL_WHEN_SLOW_MLPM 1.0F ///< Concentrate pump speed out of range tolerance when slow in mL/min. #define CONCENTRATE_PUMP_LOW_SPEED_THRESHOLD_MLPM 10.0F ///< Concentrate pump low speed threshold in mL/min. #define CONCENTRATE_PUMP_ZERO_FLOW_RATE 0xFFFF ///< Pulse width value when zero flow rate or pump is off. -#ifndef __PUMPTEST__ -#define CONCENTRATE_PUMP_VOLUME_PER_REV 0.1F ///< Volume output every revolution (mL). -#else + +#ifdef __DIENER_CONC_PUMP__ +#define CONCENTRATE_PUMP_VOLUME_PER_REV 0.4F ///< Volume output every revolution (mL). +#define CONCENTRATR_PUMP_SPEED_RATIO_FACTOR 4.0F ///< Diener pump Speed multiply factor. +#elif __PUMPTEST__ #define PISTON_PUMP_STEPS_PER_ML 342.0F ///< Revolution count for 1ml volume delivery. #define CONCENTRATE_PUMP_VOLUME_PER_REV ( CONCENTRATE_PUMP_STEP_PER_REV / PISTON_PUMP_STEPS_PER_ML ) ///< Volume output every revolution (mL). +#else +#define CONCENTRATE_PUMP_VOLUME_PER_REV 0.1F ///< Volume output every revolution (mL). #endif + #define CONCENTRATE_PUMP_PULSE_PER_REV 2.0F ///< Number of pulses generate for every revolution. #define CONCENTRATE_PUMP_STEP_PER_REV 200.0F ///< Number of steps for every revolution. #define CONCENTRATE_PUMP_HALL_SENSE_PERIOD_RESOLUTION 100.0F ///< Hall sense period resolution in microseconds. @@ -997,7 +1002,11 @@ if ( concentratePumps[ pumpId ].currentPumpSpeed > NEARLY_ZERO ) { +#ifdef __DIENER_CONC_PUMP__ + F32 timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATR_PUMP_SPEED_RATIO_FACTOR * CONCENTRATE_PUMP_STEP_PER_REV ); +#else F32 timePerStep = CONCENTRATE_PUMP_VOLUME_PER_REV / ( concentratePumps[ pumpId ].currentPumpSpeed * CONCENTRATE_PUMP_STEP_PER_REV ); +#endif F32 stepPeriodCounts = timePerStep / ( CONCENTRATE_PUMP_STEP_PERIOD_RESOLUTION * CONCENTRATE_PUMP_MICRO_STEPS_PER_STEP ); concentratePumps[ pumpId ].togglePeriodCount = (U16)( stepPeriodCounts + FLOAT_TO_INT_ROUNDUP_OFFSET ); @@ -1065,7 +1074,11 @@ } else if ( FALSE == isPumpPulseWidthOut ) { +#ifdef __DIENER_CONC_PUMP__ + measuredPumpSpeed[ pumpId ].data = ( ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN ) / CONCENTRATR_PUMP_SPEED_RATIO_FACTOR; +#else measuredPumpSpeed[ pumpId ].data = ( US_PER_SECOND / pulseWidthInMicroSeconds ) * CONCENTRATE_PUMP_VOLUME_PER_PULSE * SEC_PER_MIN; +#endif } // If pulse width is out of range capture pump out of range, pumpId and pulse width