Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rdad9875b809383ca3cd5a24c6f888d02d5f6f2ab -r8cd983a8bd4d594c36083ce4f096f82d677ac9fe --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision dad9875b809383ca3cd5a24c6f888d02d5f6f2ab) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 8cd983a8bd4d594c36083ce4f096f82d677ac9fe) @@ -108,11 +108,12 @@ #define DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR ( DIP_REV_PER_LITER / ML_PER_LITER ) #define DIP_GEAR_RATIO 32.0F ///< DialIn pump motor to dialIn pump gear ratio. #define DIP_PWM_ZERO_OFFSET 0.1F ///< 10% PWM duty cycle = zero speed. +#define DIP_100_PCT_PWM_RPM_RANGE 4000.0F ///< 10-90% PWM range yields 0-3,200 RPM range. Full 100% PWM range would yield 4,000 RPM range. /// Conversion from PWM duty cycle % to commanded pump motor speed. PWM range is 10% to 90%. RPM range is 0 to 3200. 3200 / 0.8 = 4000. -#define DIP_PWM_TO_MOTOR_SPEED_RPM(pwm,dir) ( ( ((pwm) - DIP_PWM_ZERO_OFFSET) * 4000.0F ) * ( dir == MOTOR_DIR_FORWARD ? 1.0F : -1.0F ) ) +#define DIP_PWM_TO_MOTOR_SPEED_RPM(pwm,dir) ( ( ((pwm) - DIP_PWM_ZERO_OFFSET) * DIP_100_PCT_PWM_RPM_RANGE ) * ( dir == MOTOR_DIR_FORWARD ? 1.0F : -1.0F ) ) /// Conversion from pump motor speed to PWM duty cycle. -#define DIP_MOTOR_SPEED_RPM_TO_PWM(rpm) ( ( (F32)(rpm) / 4000.0F ) + DIP_PWM_ZERO_OFFSET ) +#define DIP_MOTOR_SPEED_RPM_TO_PWM(rpm) ( ( (F32)(rpm) / DIP_100_PCT_PWM_RPM_RANGE ) + DIP_PWM_ZERO_OFFSET ) // Macro converts PWM to estimate flow rate needed to achieve it. TODO - this macro does not reverse the function that estimates PWM from target flow rate - and it should #define DIP_ML_PER_MIN_FROM_PWM(pwm) ( (pwm) - DIP_PWM_ZERO_OFFSET ) / DIP_ML_PER_MIN_TO_PUMP_RPM_FACTOR / DIP_GEAR_RATIO / DIP_MOTOR_RPM_TO_PWM_DC_FACTOR