# set the delay time for the 6 steps of bldc

Hi, i am currently working on BLDC motor controller (ESC without Back EMF), i want to know what is the max and the min delay time to switch between the 6 steps to control the speed of the motor . I am using atmega328p (with quartz 16MHZ). Motor : Turnigy 2627 Brushless Outrunner 3800kv ( 12 v and P = 260 w )

• What does the datasheet of the motor tell you? As it is the question is unanswerable as you do not reveal which motor you're using. Nov 27, 2017 at 14:57
• ok i will add it Nov 27, 2017 at 15:01
• This question does not make much sense. Timing is entirely dependent on the speed you want to run it at and the load the motor is pulling. You need to study up on BLDC motor driving. Running it open loop, it is just a synchronous motor. Nov 27, 2017 at 15:03
• i want to run it ( for now ) without load Nov 27, 2017 at 15:04
• There is always a load, even if the load is just friction and air resistance. It is clear from your question that you doing understand how BLDCs work. That's ok, we all have to start somewhere. Please take some time to read the plethora of free information available online that explain BLDC fundamentals. Nov 27, 2017 at 15:56

With sensorless commutation the zero crossing occurs approximately half way between commutation points, so you need a delay of half a step to switch at the correct time. The motor does 6 steps per 'electrical' revolution, but the mechanical speed is divided by the number of magnet pole pairs (1 for 2 poles, 2 for 4 poles etc.).

The Turnigy 2627-3800Kv has 6 magnet poles so its electrical speed multiplier is 6/2 = 3, and mechanical to commutation speed multiplier is 3*6 = 18. So at a motor speed of eg. 30000rpm the commutation frequency would be (30000/60)*18 = 9000Hz, and the step time would be 1/9000 = 111us. The required 1/2 step delay would then be 111us/2 = 56us.

To determine the maximum and minimum delay times you need to decide what minimum and maximum motor speeds to support. At very low speed back-emf is insufficient to get reliable zero-crossing detection so the motor is started 'open-loop'. In this mode you don't need any delay, but the initial step time could be 100ms or longer.

High-end motor speed is limited by mechanical constraints (bearings, rotor balance, centrifugal forces) magnetic losses, and loading. Your motor has a Kv of ~4330rpm/V so on 12V with no load it would do ~52000rpm, which equates to a commutation frequency 1/(52000/60)*18 = 15.6kHz. The minimum delay time required is therefore (1/15.6kHz)/2 = 32us.

Note that these calculations are for neutral timing. At high speed the winding inductance significantly retards current rise so 'advanced' timing (= shorter delay) is often applied to improve motor performance.

Obviously the maximum delay between states is infinite, which would be stationary and holding a position (a bit like a stepper motor).

The minimum delay depends on the motor characteristics (such as slip) and the load (which will vary).