微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > 电磁仿真讨论 > BLDC motor delta connected

BLDC motor delta connected

时间:03-29 整理:3721RD 点击:
Hi,

I am working with BLDC motor delta connected system. How to implement the commutation output pattern for this? Motor has 5 pole pairs. And I read many documents which are written for 2 pole pair and 1 pole pair. will the commutation output pattern be changed for various pole pairs? can it be done for delta connected or not? I have to implement it using hall sensors with blck commutation. Can anyone please clarify my question?

Thanks

Hi,

I don′t think the commutation pattern differs. The electrical signals are the same for all pole pairs, but the resulting mechanical RPM differs.

Klaus

Commutation schemes are not different between wye or delta connection and different pole pair count.

In any case, you'll have 3 sensors with 3x120 degree phase shift aligned with the poles. More pole pairs mean more sensor pulses per revolution.

But in my motor construction hall sensors are not placed at each 120degrees. They are p?aced at different angles

120 degree isn't 120 degree mechanical, it's related to poles.

okay,Thank you. Motor is running with commutation pattern I made. But the Phase current is varying always,I can't see constant Phase current and Phase current waveform also look zigzag in oscilloscope. Can you please tell me what are the possibilities to control the phase current?

Thanks

Yes, they need not be at physically 120 deg position; they can be equally well adjacent- if you have 10 poles (total) they even 36 deg apart.

But the software must be told specifically about the sensor physical locations. We need a min 3 sensors so that the software can figure out the sense of rotation. With 10 poles, each sensor produces a series of pulses (10 pulses per rev).

If your motor has four wires, you can use a star connection. With three wires only delta connection is possible. Even with four wires, if you do not use the neutral (the black one) wire you are essentially using it as delta.

Code:
#define Ccu6_SetPtns(CURHS, EXPHS, MCMPS) \
  ( (((uint32)(MCMPS)) << 0u) | \
  (((uint32)(EXPHS)) << 8u) | \
  (((uint32)(CURHS)) << 11U ) )

const TEmoCcu_Cfg EmoCcu_Cfg =
{
  /* HallOutPtns[16] - Hall and output patterns
   * Value = f(current Hall pattern, expected Hall pattern, output pattern)
   */
#if (BCHALL_OFFSET_60DEGREE_EN == 0) 
  { 
    (uint16)Ccu6_SetPtns(0, 0, 0x00), /* Hall pattern=0, forward direction (error) */
    (uint16)Ccu6_SetPtns(1, 3, 0x31), /* Hall pattern=1, forward direction */
    (uint16)Ccu6_SetPtns(2, 6, 0x07), /* Hall pattern=2, forward direction */
    (uint16)Ccu6_SetPtns(3, 2, 0x34), /* Hall pattern=3, forward direction */
    (uint16)Ccu6_SetPtns(4, 5, 0x1C), /* Hall pattern=4, forward direction */
    (uint16)Ccu6_SetPtns(5, 1, 0x0D), /* Hall pattern=5, forward direction */
    (uint16)Ccu6_SetPtns(6, 4, 0x13), /* Hall pattern=6, forward direction */
    (uint16)Ccu6_SetPtns(0, 0, 0x00), /* Hall pattern=7, forward direction (error) */
    (uint16)Ccu6_SetPtns(0, 0, 0x00), /* Hall pattern=0, reverse direction (error) */
    (uint16)Ccu6_SetPtns(1, 5, 0x13), /* Hall pattern=1, reverse direction */
    (uint16)Ccu6_SetPtns(2, 3, 0x0D), /* Hall pattern=2, reverse direction */
    (uint16)Ccu6_SetPtns(3, 1, 0x1C), /* Hall pattern=3, reverse direction */
    (uint16)Ccu6_SetPtns(4, 6, 0x34), /* Hall pattern=4, reverse direction */
    (uint16)Ccu6_SetPtns(5, 4, 0x07), /* Hall pattern=5, reverse direction */
    (uint16)Ccu6_SetPtns(6, 2, 0x31), /* Hall pattern=6, reverse direction */
    (uint16)Ccu6_SetPtns(0, 0, 0x00)  /* Hall pattern=7, reverse direction (error) */
  },
#else /* (BCHALL_OFFSET_60DEGREE_EN == 1) */
  { 
    (uint16)Ccu6_SetPtns(0, 0, 0x00), /* Hall pattern=0, forward direction (error) */
    (uint16)Ccu6_SetPtns(1, 3, 0x0D), /* Hall pattern=1, forward direction */
    (uint16)Ccu6_SetPtns(2, 6, 0x34), /* Hall pattern=2, forward direction */
    (uint16)Ccu6_SetPtns(3, 2, 0x31), /* Hall pattern=3, forward direction */
    (uint16)Ccu6_SetPtns(4, 5, 0x13), /* Hall pattern=4, forward direction */
    (uint16)Ccu6_SetPtns(5, 1, 0x1C), /* Hall pattern=5, forward direction */
    (uint16)Ccu6_SetPtns(6, 4, 0x07), /* Hall pattern=6, forward direction */
    (uint16)Ccu6_SetPtns(0, 0, 0x00), /* Hall pattern=7, forward direction (error) */
    (uint16)Ccu6_SetPtns(0, 0, 0x00), /* Hall pattern=0, reverse direction (error) */
    (uint16)Ccu6_SetPtns(1, 5, 0x07), /* Hall pattern=1, reverse direction */
    (uint16)Ccu6_SetPtns(2, 3, 0x1C), /* Hall pattern=2, reverse direction */
    (uint16)Ccu6_SetPtns(3, 1, 0x13), /* Hall pattern=3, reverse direction */
    (uint16)Ccu6_SetPtns(4, 6, 0x31), /* Hall pattern=4, reverse direction */
    (uint16)Ccu6_SetPtns(5, 4, 0x34), /* Hall pattern=5, reverse direction */
    (uint16)Ccu6_SetPtns(6, 2, 0x0D), /* Hall pattern=6, reverse direction */
    (uint16)Ccu6_SetPtns(0, 0, 0x00)  /* Hall pattern=7, reverse direction (error) */
  },
#endif /* (BCHALL_OFFSET_60DEGREE_EN == 1) */

  /* T12Moden - T12 modulation enable patterns 
   * Table value = 0x80(MCMEN) + pattern for T12MODEN
   * Pattern = COUT62*32 + CC62*16 + COUT61*8 + CC61*4 + COUT60*2 + CC60 */
#if (BCHALL_OFFSET_60DEGREE_EN == 0) 
  {
    (uint8)(0x00),        /* Hall pattern=0, forward direction (error) */
    (uint8)(0x80 + 0x33), /* Hall pattern=1, forward direction */
    (uint8)(0x80 + 0x3C), /* Hall pattern=2, forward direction */
    (uint8)(0x80 + 0x0F), /* Hall pattern=3, forward direction */
    (uint8)(0x80 + 0x3C), /* Hall pattern=4, forward direction */
    (uint8)(0x80 + 0x30), /* Hall pattern=5, forward direction */
    (uint8)(0x80 + 0x0F), /* Hall pattern=6, forward direction */
    (uint8)(0x00),        /* Hall pattern=7, forward direction (error) */
    (uint8)(0x00),        /* Hall pattern=0, reverse direction (error) */
    (uint8)(0x80 + 0x03), /* Hall pattern=1, reverse direction */
    (uint8)(0x80 + 0x0C), /* Hall pattern=2, reverse direction */
    (uint8)(0x80 + 0x0F), /* Hall pattern=3, reverse direction */
    (uint8)(0x80 + 0x30), /* Hall pattern=4, reverse direction */
    (uint8)(0x80 + 0x33), /* Hall pattern=5, reverse direction */
    (uint8)(0x80 + 0x3C), /* Hall pattern=6, reverse direction */
    (uint8)(0x00)         /* Hall pattern=7, reverse direction (error) */
  },
#else /* (BCHALL_OFFSET_60DEGREE_EN == 1) */
 {
    (uint8)(0x00),        /* Hall pattern=0, forward direction (error) */
    (uint8)(0x80 + 0x3C), /* Hall pattern=1, forward direction */
    (uint8)(0x80 + 0x33), /* Hall pattern=2, forward direction */
    (uint8)(0x80 + 0x30), /* Hall pattern=3, forward direction */
    (uint8)(0x80 + 0x0F), /* Hall pattern=4, forward direction */
    (uint8)(0x80 + 0x0C), /* Hall pattern=5, forward direction */
    (uint8)(0x80 + 0x03), /* Hall pattern=6, forward direction */
    (uint8)(0x00),        /* Hall pattern=7, forward direction (error) */
    (uint8)(0x00),        /* Hall pattern=0, reverse direction (error) */
    (uint8)(0x80 + 0x33), /* Hall pattern=1, reverse direction */
    (uint8)(0x80 + 0x0F), /* Hall pattern=2, reverse direction */
    (uint8)(0x80 + 0x03), /* Hall pattern=3, reverse direction */
    (uint8)(0x80 + 0x3C), /* Hall pattern=4, reverse direction */
    (uint8)(0x80 + 0x30), /* Hall pattern=5, reverse direction */
    (uint8)(0x80 + 0x0C), /* Hall pattern=6, reverse direction */
    (uint8)(0x00)         /* Hall pattern=7, reverse direction (error) */
  },
#endif /* (BCHALL_OFFSET_60DEGREE_EN == 1) */
};
Can you please check the commutation pattern which I have now for the microcontroller? https://www.infineon.com/cms/de/prod...4e01c95b04135e

and for the Delta Connection with 5 pole pairs.

I cannot check the code because I am not familiar with this microprocessor.

The datasheet shows one example of a driver with hall sensors. I presume your hardware connections are similar.

I would like to know whether you are able to run the motor without using the Hall sensor codes? (just comment them out)

The datasheet is silent on the programming aspects.

The motor is not working without hall sensors. If we want the motor to run even without hall sensors we could code the program using back emf techniques(we can say software sensor) or using field oriented vector techniques. But Now I am working with hall sensors as the application demands at the moment. So, with the pattern which I posted in the above the motor gets more phase current and it is not constant it is variable. So what are the possibilities to make the phase current constant or should the commutation pattern be changed?


Thanks

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top