Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

BLDC motor delta connected

Status
Not open for further replies.

Madbunny1

Member level 2
Joined
May 22, 2017
Messages
49
Helped
1
Reputation
2
Reaction score
1
Trophy points
8
Activity points
380
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.
 

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.
 

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
 

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

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.
 

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

.
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? **broken link removed**

and for the Delta Connection with 5 pole pairs.
 
Last edited by a moderator:

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.
 

I would like to know whether you are able to run the motor without using the Hall sensor codes? (just comment them out)
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
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top