@@ -15,6 +15,7 @@ StepperDriver4PWM::StepperDriver4PWM(int ph1A,int ph1B,int ph2A,int ph2B,int en1
1515  voltage_power_supply = DEF_POWER_SUPPLY;
1616  voltage_limit = NOT_SET;
1717  pwm_frequency = NOT_SET;
18+   inverse_power_supply = 1.0f / voltage_power_supply;
1819
1920}
2021
@@ -52,10 +53,12 @@ int StepperDriver4PWM::init() {
5253  // sanity check for the voltage limit configuration
5354  if( !_isset(voltage_limit) || voltage_limit > voltage_power_supply) voltage_limit =  voltage_power_supply;
5455
56+   inverse_power_supply = 1.0f / voltage_power_supply;
57+ 
5558  // Set the pwm frequency to the pins
5659  // hardware specific function - depending on driver and mcu
5760  params = _configure4PWM(pwm_frequency, pwm1A, pwm1B, pwm2A, pwm2B);
58-   initialized = (params!=SIMPLEFOC_DRIVER_INIT_FAILED);   
61+   initialized = (params!=SIMPLEFOC_DRIVER_INIT_FAILED);
5962  return params!=SIMPLEFOC_DRIVER_INIT_FAILED;
6063}
6164
@@ -77,14 +80,14 @@ void StepperDriver4PWM::setPwm(float Ualpha, float Ubeta) {
7780  Ubeta = _constrain(Ubeta, -voltage_limit, voltage_limit);
7881  // hardware specific writing
7982  if( Ualpha > 0 )
80-     duty_cycle1B = _constrain(abs(Ualpha)/voltage_power_supply ,0.0f,1.0f);
83+     duty_cycle1B = _constrain(abs(Ualpha) * inverse_power_supply ,0.0f,1.0f);
8184  else
82-     duty_cycle1A = _constrain(abs(Ualpha)/voltage_power_supply ,0.0f,1.0f);
85+     duty_cycle1A = _constrain(abs(Ualpha) * inverse_power_supply ,0.0f,1.0f);
8386
8487  if( Ubeta > 0 )
85-     duty_cycle2B = _constrain(abs(Ubeta)/voltage_power_supply ,0.0f,1.0f);
88+     duty_cycle2B = _constrain(abs(Ubeta) * inverse_power_supply ,0.0f,1.0f);
8689  else
87-     duty_cycle2A = _constrain(abs(Ubeta)/voltage_power_supply ,0.0f,1.0f);
90+     duty_cycle2A = _constrain(abs(Ubeta) * inverse_power_supply ,0.0f,1.0f);
8891  // write to hardware
8992  _writeDutyCycle4PWM(duty_cycle1A, duty_cycle1B, duty_cycle2A, duty_cycle2B, params);
9093}
0 commit comments