BLDC overcurrent protection when start up

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

BLDC overcurrent protection when start up

Jump to solution
3,519 Views
Monke
Contributor I

when I use project MTRCKTSBNZVM128 to Test my  bldc,

I found that there is a minimum duty cycle after the program enters the closed loop.  because the motor speed is not fast enough at this time, the motor current is very high. I want to know how to solve it. I tried to modify the minimum duty cycle, but the motor reported stall fault

scope_0.png

 

0 Kudos
1 Solution
3,485 Views
StanoA
NXP TechSupport
NXP TechSupport

Hello Monke,

It is very hard to identify issue in your application. Do you want use Hall-sense based control or sensorless? Could you send me the measured parameters of your motor? What is behavior of your application in voltage loop – open loop? Is it possible to set-up various speed of motor?

Here is the web page with many useful information about MagniV kits:

https://www.nxp.com/design/development-boards/automotive-motor-control-solutions/magniv-and-s12-solu...

and list of Ans for MagniV:

https://community.nxp.com/t5/S12-MagniV-Microcontrollers/List-of-MagniV-and-S12-X-Application-notes/...

Please provide required information. I asked my colleagues for this topic and should receive answer soon.

Best Regards,

Stano.

View solution in original post

0 Kudos
9 Replies
3,509 Views
StanoA
NXP TechSupport
NXP TechSupport

Hello Monke,

It is very small information provided. The issue seems as the not properly set the ADC measurement time relative to generated PWM signal. Then the PWM steps out of synchronization and overcurrent arrive.

I suggest you to check the measured values of used motor and also check the recalculation of those values into regulator constants. Then as first tune the voltage open loop and check the ADC measurement time for various voltage levels / duty cycles. The measured ADC values must be right in right time. After that you can tune the speed loop – it will result variable duty cycle for variable load of motor.

Best Regards,

Stano.

0 Kudos
3,499 Views
Monke
Contributor I

hello,I found the RUN_PI_SPEED_LOWER_LIMIT is limit to 0.0190,and my pwm period is 20KHZ,then the on time of pwm is at least 9 us,this time is too long。and my speed enter to close loop is not fast enough,due to continuous PWM chopping,the current will be rise up quickly,then overcurrent fault appeared。

I think 9 us is necessary to ensure ADC sampling time,but I don‘t know how to solve the overcurrent problem。

thank you for your reply!

Monke_2-1629802650621.png

 

 

0 Kudos
3,486 Views
StanoA
NXP TechSupport
NXP TechSupport

Hello Monke,

It is very hard to identify issue in your application. Do you want use Hall-sense based control or sensorless? Could you send me the measured parameters of your motor? What is behavior of your application in voltage loop – open loop? Is it possible to set-up various speed of motor?

Here is the web page with many useful information about MagniV kits:

https://www.nxp.com/design/development-boards/automotive-motor-control-solutions/magniv-and-s12-solu...

and list of Ans for MagniV:

https://community.nxp.com/t5/S12-MagniV-Microcontrollers/List-of-MagniV-and-S12-X-Application-notes/...

Please provide required information. I asked my colleagues for this topic and should receive answer soon.

Best Regards,

Stano.

0 Kudos
3,475 Views
Monke
Contributor I

motor params:24V 40000rpm,bldc

control mode:sensorless;

problem:on the open loop,because the dutycycle is limit to 0.02,the current was limited;and when go to close loop,the min dutycycle is set at least 19%,and current will rise up quickly ;

Monke_2-1629817022629.png

Monke_3-1629817138320.png

 

0 Kudos
3,447 Views
StanoA
NXP TechSupport
NXP TechSupport

Hello Monke,

The motor parameters you provided are not the motor parameters. It can be 24V 4000rpm motor for 5W, 50W, 200V, 500W… and they have totally different parameters.

You need to know the motor inductance, resistance, BEMF constant and other for use the BLDC sensorless motor control. Please read the next ANs for help:

https://www.nxp.com/docs/en/application-note/AN4680.pdf

https://www.nxp.com/docs/en/application-note/AN4704.pdf

There are many of variables in the example control SW for BLDC. The basic steps to run the motor are described here:

StanoA_0-1629898237508.png

 

And the main variables which require attention:

runTimeVariable = INIT_VALUE

runTimeVariable – used in application. Can be controlled using the FreeMASTER during the tuning process.

INIT_VALUE (final value after tuning) used initialization. Values for particular motor can be found in BLDC_appconfig_40W.h and BLDC_appconfig_90W.h

 

Alignment :

Depends on Motor parameters like inertia, friction, inductance and resistance.

Duration of alignment process:

alignmentTimeValue = ALIGNMENT_TIME;

Current used during alignment

requiredAlignCurrent = ALIGN_CURRENT_SCALED;

AlignCurrentPIPrms

 

Open Loop:

Depends on Motor parameters like inertia, friction, inductance and resistance.

 

Number of commutation during the open loop:

startCMTcounterPeriod = START_CMT_CNT;

 

Preriod of the fitst commutation:

NextCmtPeriod = START_FIRST_PERIOD;

 

Acceleration:

Commutation_n= Commutation_n-1 *acceleration

startCMTacceleration = START_CMT_ACCELERATION;

 

Current during openloop:

requiredOpenLoopCurrent = ALIGN_CURRENT_SCALED;

 

Run:

Depends on Motor parameters like inertia, friction, inductance and resistance.

 

advanceAngle = ADVANCE_ANGLE;

currentPIPrms

speedPIPrms

speedRamp

 

There is plenty of theory how to run BLDC motor on web:

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3231115/

https://www.researchgate.net/publication/348930291_Optimized_Speed_Control_for_BLDC_Motor

or other kits and supported information for BLDC motor control applications:

https://www.nxp.com/design/development-boards/automotive-motor-control-solutions:AUTOMOTIVE-MOTOR-CO...

Finally the exact tuning of plenty of variables in SW code is required for smooth run of each BLDC motor.

I wish you many success in your project.

Best Regards,

Stano.

0 Kudos
3,431 Views
Monke
Contributor I

pole pairs:1

Ld=Lq=27uH

R=0.025Ω

Ke=0.36V/1000RPM

RPM=40000

0 Kudos
3,410 Views
StanoA
NXP TechSupport
NXP TechSupport

Hello Monke,

It looks like small high-speed modeler BLDC motor.

I suggest you to use the small supply voltage for start-up to limit motor current and ramp up to nominal voltage when the closed loop runs smoothly.

I suggest you to read also next document – it belongs to much higher motor, but the Section 3 can guide you to run your motor:

https://www.nxp.com/docs/en/reference-manual/DRM110.pdf

There is many other factors as moment of inertia which must be taken into account for set-up the regulator constants properly.

Best Regards,

Stano.

0 Kudos
3,402 Views
Monke
Contributor I

Yes,How to reduce supply voltage when first go to close loop is what I misted,My power supply is a battery,and it's output voltage is fixed 。

Thank you for your reply!

0 Kudos
3,366 Views
StanoA
NXP TechSupport
NXP TechSupport

Hello Monke,

You use PWM modulation for the applied voltage. So the main supply voltage can be reduced by the PWM duty cycle – smaller duty = smaller voltage. The result will be reduced current.

On other side the current is limited during initialization – alignment to 0.02. It must be used the ramp to set the full current in closed loop. The rotation speed is small after initialization and BEMF is small also. The motor must speed-up with limited current (ramp-up) in closed loop till reaches nominal speed. Then you can set the max limit current because motor is running on stabile speed in closed loop and actual current depends on motor friction and load.

Best Regards,

Stano.

 

0 Kudos