The S12VM31M performance to control a BLDC motor with sensorless control.

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

The S12VM31M performance to control a BLDC motor with sensorless control.

418 Views
atsushiyoshida
Contributor I

Dear Sir/Madam,

 

I was required to run a 3-phase 4-pole brushless DC motor at 40,000rpm or more with sensorless control using S12VM31M.

Because of this BLDC motor speed and sensorless control, I need to control the BLDC motor within 125usec each speed control period.
Main tasks for the CPU to control the BLDC motor are:
Reading three winding coil current with ADC,
Calculating to estimate rotor position to set drive voltage for the next control period and
Controlling the BLDC motor current during next control period with adequate voltage.
I am wondering if all the tasks can be done in time for the speed control period which is 125us.

 

Are there any theoretical way to confirm possibility to use the S12VM31M for this application?
Is there anyone who did run a BLDC motor with sensorless control at 40,000rpm or more?
What is maximum speed to control a BLDC motor with sensorless control using the S12VM31M?

 

Any information and/or your recommendation to confirm and/or to estimate if the S12VM31M can be workable with this application will be appreciated.

 

Regards,
ay

Labels (1)
0 Kudos
1 Reply

297 Views
pachamatej
NXP Employee
NXP Employee

Dear ay,

I assume that 125 us means 8 kHz control loop. Currently S12ZVM can run the BLDC six step sensorless algorithm at 20 kHz control loop with a good level of CPU load (up to 6us max of 50us period) up to "normal motor speed". "High speed" means the achieved speed of the motor is so high that the frequencies of the motor quantities (voltage, current) are out of the sampling range. In the terms of that, e.g. zero crossing detection for the sensorless algorithm requires the commutation period to be 5 times higher than the PWM period is. The commutation period can be calculated as: Tcomm = 1 / (6/60 * NominalSpeed * PolePairs) = 1 / (6/60 * 40,000 * 2) = 125 us. Thus the PWM period should be 5x shorter. If you stay with the 20 kHz PWM, you'll get 5 * 50 us = 250 us threshold for the normal zero crossing algorithm, which means you would need 40 kHz PWM or to use the "classic approach" up to  20,000 RPM only. Above that speed, an advanced technique should be used to detect the zero crossings. One of the methods is published e.g. in AN4142. If such method is implemented, the motor can be run up to 60,000 RPM or even higher, depending on the rated speed. Running over the nominal speed requires the field weakening algorithm to be implemented. If the AN4142 wouldn't work for you, there is another method called "oversampling", which has not been published by NXP yet, but such applications are pretty much doable.

I hope it helps,

Best regards,

Matej

0 Kudos