Index: firmware/App/Controllers/DialInFlow.c =================================================================== diff -u -rc3315e0cc263df74569bbb58591229418b50fe92 -r90945afbe3866bf383c44c2a1f52438192c267c5 --- firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision c3315e0cc263df74569bbb58591229418b50fe92) +++ firmware/App/Controllers/DialInFlow.c (.../DialInFlow.c) (revision 90945afbe3866bf383c44c2a1f52438192c267c5) @@ -107,11 +107,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