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
Solved! Go to Solution.
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:
and list of Ans for MagniV:
Please provide required information. I asked my colleagues for this topic and should receive answer soon.
Best Regards,
Stano.
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.
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!
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:
and list of Ans for MagniV:
Please provide required information. I asked my colleagues for this topic and should receive answer soon.
Best Regards,
Stano.
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 ;
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:
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:
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.
pole pairs:1
Ld=Lq=27uH
R=0.025Ω
Ke=0.36V/1000RPM
RPM=40000
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.
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!
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.