Generate your own commutation table – part 2

In the previous blog, we discussed that deriving the right commutation table plays an important role in controlling 3-phase BLDC motors using hall sensors. As a refresher, here are some surprising facts about the drive system:

  • Out of six possible connections between three-phase motor terminals and 3-phase H-bridge outputs, there is only one right connection for both direction of rotation and the remaining 5 are wrong.

  • Some think that by swapping two motor terminals direction can be reversed. But, that’s not quite right. Many times motors are able to rotate even using one or two wrong sequences so determining the right commutation sequence is very important to get efficient control.

We also previously covered a method to generate the commutation table based on three-phase motor back EMF waveforms and their relation with respect to hall sensor output. This is based on the assumption that you are able to get the required information from motor manufactures. The reality is that in almost more than 60-70% of cases, the information is not easily available.

If you’re puzzled on how to derive the right commutation sequence and how to get your motor rotating in either direction, please read-on where we’ll cover the steps to generate a commutation table for a given BLDC motor using a DC lab power supply on the actual motor sample without depending upon manufacturer’s data.

The good thing about this approach is that once you follow and understand it, you are able to visualize how a motor actually rotates and subsequently, how to reverse the rotation. The below method assumes that hall sensors are displaced at 120⁰electrically apart from each other.

  • Mark three-motor phases as PH_A, PH_B and PH_C as you desire. Do not mark the hall sensors yet.

  • Set the current limit of DC power supply to 10-20% of motor rated current.

  • Connect PH_A to Positive terminal of DC supply. Connect PH_B and PH_C to negative terminal of power supply. The stator current vector generated inside the motor with this sequence is in phase with magnetic axis of PH_A as shown in figure 3 and 4 by dotted line. The rotor will move to get aligned with PH_A axis.

  • Once the rotor becomes stationary, measure the three-hall sensor signals. There are two possibilities of binary code, either with two high level logic (i.e. 1 1 0), or with two low level logic (i.e. 0 0 1), depending upon the motor and hall sensor configuration.  If binary pattern is 1 1 0 (configuration-A), define hall sensor with low logic as HC. If the binary pattern is 0 0 1 (configuration-B), define high logic as HC.

  • Apply next excitation with PH_A and PH_B connected to positive terminal and PH_C connected to negative, as shown in figure 3 and 4. This will apply stator current vector which is 60⁰ CCW with respect to PH_A axis. Measure the three hall sensor signals after the rotor comes to a standstill. If the previous pattern resembles configuration-A, define HA as a hall signal which changed from 1 to 0. Similar, if the previous pattern resembles configuration-B, define HA as a hall signal which changed from 0 to 1.  With HA and HC clearly marked, mark the third hall signal as HB.

  • Follow figure 3 excitation sequence in CCW direction to complete the vector diagram if your motor and hall configuration resembles to Configuration-A, other-wise follow figure-4.

  • It is important to observe that the motor should rotate consecutively in same direction (either CW or CCW) as excitation sequences moves in CCW direction as per figure 3 and 4. 

  • For simplicity let’s assume that the motor sample resembles configuration-A and with applied CCW sequence of excitation, the motor also rotates in CCW direction as seen by the facing motor shaft. Referring to figure 3, commutation table to rotate the motor in CCW direction is derived from the angle between the stator magnetic field and the rotor flux, which should be 90°. This means that for hall code 1 1 0, commutation sequence Aoff, B+ and C- should be applied. When the motor moves to the next sector and the hall pattern changes to 0 1 0, commutation sequence A-, B+ and Coff should be applied. Following above logic, we get the commutation table 1.


Figure 3: Commutation sequence as per configuration-A


Figure 4: Commutation sequence as per configuration-B


Table 1: Six state commutation table

Using the above method, you can derive the commutation table for reverse direction of rotation. By the way, table 1 is also valid for configuration-B types of motors or hall combinations in reverse (i.e.: clockwise) direction.

Next Step:

TI supplies various motor control kits which support hall sensor interface including the BOOSTXL-DRV8323RS and DRV8353RS-EVM. Grab one and get your motor spinning!

Thanks for reading and your comments are welcome.

  • Hi Milan,

    I am trying to understand the difference between the amplitude of vectors when two phases conducting vs three phases conducting.

    My analysis shows assuming constant current (I) from power supply  vector amplitude when two phases are conducting ( solid line )is bigger than the amplitude of the vector when three phases are conducting (dotted line ) , I am confused as the figure shows the amplitudes other way , and trying to get clarification whether the figure is drawn to scale ??

    For example when only two phases are conducting ( Let Ia = I , Ib = -I , Ic =0 ) resultant vector amplitude is sqrt(3)* I

    when three phases are conducting (( Let Ia = I , Ib = -0.5*I , Ic =-0.5*I ) resultant vector amplitude is (3/2)* I


  • Ravikumar,

    The magnitude of 3-phase current vector (vector sum of 3-phase currents) would be 3/2*Idc.

    Actual torque devloped will depend upon the motor torqure constant. In the blog I mentioned to apply Idc around 10-20% of motor rated current.

    In actual conditions this may vary deepening upon the shaft inertia and load applied. If motor is on no-load or partially loaded, 10-20% current would be sufficient to move the rotor to next state on the other hand if motor is fully loaded, current may need to increase to 30-40%.  For the proper measurement, you should make sure sufficient current is pumped such that rotor moves to next state to get align with it, continuous free rotation is not required.

    Best Regards


  • Hi Milan,

    Can you confirm magnitude of the vectors on Figure 3 and 4 are marked to  scale ? . What are the magnitudes of dotted line and normal line.