Pulse width for starting rotation of BLDC

Hey guys,

I am using Arduino for the first time. My aim is to change the speed of BLDC using Arduino code. I am using "esc.writeMicroseconds(speed)" command for this, where "esc" is declared as a servo object and "speed" is declared as integer variable.

My logic is, as I change the value of "speed" from 1000 to 2000, speed of BLDC should vary from minimum to maximum, because pulse width modulation is done from 1000 to 2000 microseconds.

However, I am finding that BLDC starts to rotate at "speed = 1148", not at "speed = 1000".

Can anyone explain, why this is happening? Why this particular pulse width? Does it have anything to do with BLDC and/or ESC and/or Propeller that I have chosen?

Also, if this is the case with lower limit, then what Pulse width I should give for highest rpm of BLDC? What happens if I exceed 2000 microseconds value? I am not experimenting with it, as I did with lower value. because I don't want to damage my BLDC or ESC.

Please help. Snapshot of part of my code is attached herewith.

Regards.

Capture.JPG

I use the "Knob" sketch in the Examples -Servo to test an ESC and BLDC.

You will need a pot to vary the pulse.

Use the pot like the throttle of a R/C transmitter when arming the ESC. Full turn to the end either way before attempting to arm.

Bane08:
Can anyone explain, why this is happening? Why this particular pulse width? Does it have anything to do with BLDC and/or ESC and/or Propeller that I have chosen?

The ESC.. the minimum pulse width input to begin the motor's startup commutation will be because of the software on the ESC. Many esc's have a from zero to full throttle range much less than 1000-2000. 1150- 1850 is not out of the ordinary.

The ESC will accept pulse widths beyond these without any damage but the speed will only change within that range.