This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BLDC Motor commutation pattern

Tool/software: TI C/C++ Compiler

Hello,

I am using Delta Connection Stator in BLDC Motor and it has 5 pole pairs. How could the commutation pattern be done for this configuration? I will be grateful if anyone helps me.

Thanks

  • Hi Bunny,

    Have you asked the motor manufacturer? In general the commutation sequence for a Wye and Delta motor is the same. If using hall sensors, the motor manufacturer should provide the sequence.
  • Hello Mr.Rick,

    Thank you for your reply. I have the Motor data sheet. In the data sheet, it is written that the Motor has equiped with three hall sensors and with Delta Connection. I don't have any other Details. Will the Motor manufacturer provide the commutation Output pattern?

    Regards,
    Bunny
  • Hi Bunny,

    Yes, the motor manufacturer should provide this information. An example of a motor spec this information can be found here:
    www.ti.com/.../slvc597

    Look for the TelcoMotion DT4260-24-055-04H-TI.pdf file
  • Hello Mr.Rick,

    I have the data as in the pdf file you sent. But I am asking how to make the pattern to activate MOSFET's in order to give the supply to the stator coil when using 5 pole pairs and three hall sensors?

    Will the commutation output pattern be differed if you use only one pole pair ? 

    for 1 pole pair: mech revolution(360°)/1 pole pair= 360°, that means rotor travelled one full rotation. To activate six MOSFET's the six step commutation pattern: 360°/6=60°,that means for every 60° every hall sensor changes its state.

    for 5 pole pair: mech revolution(360°)/5 pole pairs=72°, that means rotor travelled only 72°. To activate six MOSFET's the six step commutation pattern: 72°/6=12°,that means for every 12° the hall sensors changes their state. 

    In both scenarios will the commutation output pattern be same or different? I hope you got my question.

    Thanks

  • Hi Bunny,

    In the link provided by Rick, the hall sensor (HA,HB & HC) & Phase (U,V & W) relation is given in image format as shown. Something similar should be there in your motor datasheet.

    In case, commutation table is not available in the data sheet, then you can populate this by running the motor in open loop by locking the rotor in known positions and capture the hall patterns. To run the motor in open loop, apply commutation pattern in sequence (U+V- , U+W-, V+W-, V+U-, W+U-, W+V-) and capture the corresponding hall sequence.

    Locking the rotor means, aligning rotor flux to the stator flux therefore there is no torque between them and Its getting locked. But to get optimum torque we should maintained 120 to 60 degree phase difference between them.Therefore advance phase commutation sequence by 120 degree to obtained optimum torque. This can be done by rearranging the table.

    Thanks

    Abhishek

  • Hi Bunny,

    In case of hall sensor, commutation pattern doesn't depend on pole pair. Because this sensor gives electrical angle. But for other sensors like encoder pole pair effect because in that case you will get mechanical angle (shaft position). In case of hall sensor you need pole pair to calculate the physical speed of the motor not commutation pattern.

    speed = 120f/p;

    Thanks

    Abhishek

  • Hi Mr.Abhishek,

        (0, 0, 0x00), /* Hall pattern=0, forward direction (error) */
        (1, 3, 0x31), /* Hall pattern=1, forward direction */
        (2, 6, 0x07), /* Hall pattern=2, forward direction */
        (3, 2, 0x34), /* Hall pattern=3, forward direction */
        (4, 5, 0x1C), /* Hall pattern=4, forward direction */
        (5, 1, 0x0D), /* Hall pattern=5, forward direction */
        (6, 4, 0x13), /* Hall pattern=6, forward direction */
        (0, 0, 0x00), /* Hall pattern=7, forward direction (error) */
        (0, 0, 0x00), /* Hall pattern=0, reverse direction (error) */
        (1, 5, 0x13), /* Hall pattern=1, reverse direction */
        (2, 3, 0x0D), /* Hall pattern=2, reverse direction */
        (3, 1, 0x1C), /* Hall pattern=3, reverse direction */
        (4, 6, 0x34), /* Hall pattern=4, reverse direction */
        (5, 4, 0x07), /* Hall pattern=5, reverse direction */
        (6, 2, 0x31), /* Hall pattern=6, reverse direction */
        (0, 0, 0x00)  /* Hall pattern=7, reverse direction (error) */

    Can you please look at the pattern and tell me if it's wrong?

    Thanks in advance 

  • Hi Bunny,

    Hall Pattern looks fine.
    Forward direction Hall Pattern is: 1->3->2->6->4->5->1
    Reverse direction Hall Pattern is : 1->5->4->6->2->3->1

    But I didn't get what is the meaning of 0x31, 0x07 etc.
    (1, 3, 0x31) => (current hall, expected hall, ??)

    Thanks
    Abhishek
  • Hi Mr. Abhishek,

    That is to activate the MOSFET's(high side and low side Switches)...
    But with this pattern I could not see the running of the Motor. Is that the pattern wrong? I am using Delta Connection winding in the Stator.

    Thanks
  • Please ref your Micro-controller datasheet to understand this pattern.

    Also check which modulation tech. you are using? high side, low side or sync rect. Based on that verify Pattern.

    For an example pattern could be

    0x021 => 0xPhase-W Phase-V Phase-U 

    Phase-W is 0 means not conducting

    Phase-V is 2 means low side conducting (complete on)

    Phase-U is 1 means high side conducting (PWM)

    Thanks

    Abhishek

  • Hi Abhishek,

    Thank you for your hints. Now the Motor runs perfectly. But the Problem I am getting is more Phase current output even at lower Speeds. what are the methods to minimize it?

    Thanks
  • That's great...

    If you have current probe, capture the phase current waveform. Due to wrong commutation sequence also motor may draw high current. In this case your motor will get heated up.

    If modulation tech. is synchronous rectification then check dead time configuration also. In this case your device will get heated up. Capture the high side and low side PWM of same leg to verify.

    Thanks

  • Ok, I will check phase current with the current probe using scope. I gave dead time 1.5microseconds for each channel. And can you please tell me how I could see the waveforms for three hall sensors state changes in oscilloscope?

    Thanks
  • You can probe directly hall sensor wires coming from motor or GPIO pins where these hall signals are connected.

    Thanks

  • Hi Abhishek,

    This is the wave form of Phase current when I checked.Can you please see and tell me?

    Thanks

  • Hi Bunny,

    This waveform is not clear to me. Can you increase the time scale and capture more samples?
    If motor is very small then put some load on motor so that it will draw more current and you can capture clear waveform.

    Thanks

  • Hi Abhishek,

    I see the current is always varying when I Keep the Motor in running state. But the current is not constant. Even when I applied load, the current is always varying which can be seen on the SMPS display. Can you tell me what exactly the mistake is?

    Thanks

  • Hi Bunny,

    Phase current will vary because at different instant you are energizing different phase winding. But if you will read DC link current at PWM on instant then you will get constant current and it will be equal to your supply current.

    I have attached sample of phase current and voltage waveform for your reference, this will give you idea, how these waveform look like.

    Thanks

  • Hi Abhishek,

    After changing some time scale ,I captured this phase current waveform. Can you please look it and tell me if it looks fine?

    Thanks

  • Hi Bunny,

    Still current waveform is not very good. Need to improve further...

    Thanks

  • Hi Abhishek,

    Even after changing commutation patterns many ways I always achieve the current waveforms which are shown here

  • Bunny,

    There must be some issue, once debugged waveform will be fine. I have written few steps probably this will help you.

    Hall Sensors:

    • Rotate motor and read hall pins, make sure you are getting 6 hall state changes 1 to 6. This will make sure hall sensors are working fine. Capture GPIO inputs (Hall inputs) in an array and verify.
    • For Hall state change, Interrupt service routine is executing as expected.

    Phase Energization:

    • In existing code, energies same pattern for all hall state change and verify the pattern. Also read the hall input (Hall1).

               (curr_Hall1, next_Hall1, PH1), (curr_Hall2, next_Hall2, PH1)… (curr_Hall6, next_Hall6, PH1)

               If PH1 => U+V-, then verify (using CRO) PWM waveform on Phase U high side and always high on Phase V low side. No waveform on Phase W high/low side.

    • Also capture the hall pattern Hall1 for pattern PH1. One you will apply pattern motor will get locked at that time read the hall pattern say Hall1.
    • Repeat for All remaining Phase pattern (remaining 5) and verify the pattern. Also capture Hall signals for each pattern.

    (curr_Hall1, next_Hall1, PH2), (curr_Hall2, next_Hall2, PH2)… (curr_Hall6, next_Hall6, PH2) -> Capture Hall2

    .

    .

    (curr_Hall1, next_Hall1, PH6), (curr_Hall2, next_Hall2, PH6)… (curr_Hall6, next_Hall6, PH6) -> Capture Hall6

    • Now for each applied phase pattern (PH1,...,PH6) there will be one captured hall pattern (Hall1,.....,Hall6)
    • Rearrange these pattern based on my previous comment (to find commutation pattern) and get required commutation pattern.

    Note: Once you will apply same pattern, rotor will be locked at one position. Motor will draw more constant current. Therefore don’t apply higher duty cycle (Apply Max 5 to 10% PWM duty). Also if possible limit current in your power supply for safety.

    Once captured correct commutation pattern, then in every hall state change ISR, apply the commutation pattern based on hall state.

    Thanks
    Abhishek

  • Hi Abhishek,

    I am attaching the waveforms of phase current and hall sensor signals that I achieved. Could you please look at them and tell me?

  • Hi,

    Ch-4     : Signal strength (amplitude) of hall is very low. Make sure this is not due to probe setting (10x/1x). If not probe issue then this can create the problem.

    Ch-2/3 : Fine

    Ch-1     : Current is not good. If motor is not spinning (locked) then this should be DC current (straight line). If spinning correctly then this should be similar to sample current I have posted before.

    Thanks

    Abhishek

  • Hi Abhishek,

    Ch4: yes,hall sensor Signal strength is low because of the probe Setting of oscilloscope. Because the probe which I have for fourth channel is only having 1x factor. so I couldn't Change 10x factor.

    And you mean Phase current is not good? Is it to be changed and how?

    thanks

  • Hi,

    Current is the response of, how you apply voltage (commutation pattern) on motor phase windings. If commutation is fine then current should be fine.
    If you don’t mind we can debug this offline, send me a private message.

    Thanks
    Abhishek