sensored bldc start up failure

Thread Starter

etiquoe

Joined Jul 11, 2010
27
hi,
i'm working on my bldc motor driver.
i'm using 3 hall sensors to detect rotor position.
But sometimes, it doesn't start without hand trigger.
i don't know what's the problem.
when it failed to start up, the hall sensors signal is detected, and the microcontroller provide the right sequence control signal, but the power inverter output signal give wrong result.

help me please...
enyone?
:confused:
 

Thread Starter

etiquoe

Joined Jul 11, 2010
27
this is the schematic of the power inverter.

High side and low side input signal is provided from microcontroller based on hall sensor states
 

Attachments

punisher454

Joined Jun 29, 2009
16
I'm not positive (still trying to get my 3-phase working) but I think you may need to pre charge the bootstrap caps before they will fire the first time. possibly try to charge the cap for start-up by turning on the low side first.
 

thatoneguy

Joined Feb 19, 2009
6,359
It seems to be a software issue, but there isn't any source code, and I don't see the hall effect sensors in the schematic.

I'm guessing port initialization or other startup tasks that may not be completed due to a typo or oversight.
 

Thread Starter

etiquoe

Joined Jul 11, 2010
27
I'm not positive (still trying to get my 3-phase working) but I think you may need to pre charge the bootstrap caps before they will fire the first time. possibly try to charge the cap for start-up by turning on the low side first.
yup, i do charge the cap before begin to start it up
 

thatoneguy

Joined Feb 19, 2009
6,359
Took a quick glance, didn't simulate it though.

From your code

Rich (BB code):
void first_init (void)
{  
    PORT_PHASE = 0b00010101;
}
This is called in the main routine. Doesn't this set all the coils to "ON" on the motor, preventing it from turning?
 

Thread Starter

etiquoe

Joined Jul 11, 2010
27
Took a quick glance, didn't simulate it though.

From your code

Rich (BB code):
void first_init (void)
{  
    PORT_PHASE = 0b00010101;
}
This is called in the main routine. Doesn't this set all the coils to "ON" on the motor, preventing it from turning?
this is to make the bootstrap capacitor charged. as punisher454 mentioned, the bootstrap caps need to be pre-charged first before they work.
 

Thread Starter

etiquoe

Joined Jul 11, 2010
27
i tried to increase the bootstrap caps pre-charge period, from 100 us to 250 us. and the start up problem was solved :D
 

Thread Starter

etiquoe

Joined Jul 11, 2010
27
I would try to get your pwm working. But first I'd suggest posting your code and schematic over at rcgroups, that seems to be the #1 bldc knowledge base.

about the pwm, i haven't got any idea yet about using which one pwm scheme. still need much information about each pwm schemes. i haven't found any source which desribes about the pwm schemes in detail. So, it will be so helpful if you have more information about it :D
 

punisher454

Joined Jun 29, 2009
16
Ok I'm no BLDC expert at all, in fact mine wont be working untill I get a parts shipment later this week.
But, from what I have researched so far it looks like you can get away with just switching the high side fets on/off and applying the PWM signal to the low side only.
Variable braking can be accomplished by applying a PWM signal to all 3 low side coils at once.
You can also reduce the current draw and smooth the motor rotation by turning on the next fet in your commutation table BEFORE turning off the current one. You'd probably have to set up a timer to control how much overlap you get. Basically you'd be smoothly transitioning to the next phase rather than abruptly switching.

And thats about all I know. Glad to see your startup is working better now.
 

Thread Starter

etiquoe

Joined Jul 11, 2010
27
Ok I'm no BLDC expert at all, in fact mine wont be working untill I get a parts shipment later this week.
But, from what I have researched so far it looks like you can get away with just switching the high side fets on/off and applying the PWM signal to the low side only.
Variable braking can be accomplished by applying a PWM signal to all 3 low side coils at once.
You can also reduce the current draw and smooth the motor rotation by turning on the next fet in your commutation table BEFORE turning off the current one. You'd probably have to set up a timer to control how much overlap you get. Basically you'd be smoothly transitioning to the next phase rather than abruptly switching.

And thats about all I know. Glad to see your startup is working better now.
ok, i'll try
thanks..
:D
 
Top