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 )
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.