This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28069M: PMSM speed control resolution

Part Number: TMS320F28069M


I have a 20 pole PMSM that has a rated speed of 1500 rpm. I need to achieve 1 rpm speed control resolution using instaspin software with f28069m microcontroller.

But i think the speed control resolution is limited with the pwm switching frequency resolution. Am i right? Because motor voltage and current frequency is constructed with the pwm frequency i use.

1500 rpm needs 250Hz motor voltage while 1499 rpm needs 249.8333 Hz.  This will mean 2.67 usec difference in motor electrical period.

So i think it is impossible to perform such a speed control resolution with a pwm frequency Like 20kHz. Am i right?

But my other concern is Hardware switching losses if i increase pwm frequency. Because according to this calculation sw freq should be as high as Sliqhtly higher than 400kHz. And this is very high.

Here is my question. Is it possible to change pwm switching frequency during runtime for fine tuning the motor voltage frequency using c2000 microcontroller in instaspin sw? (İt will be a small change Like 20kHz to 20.05 kHz)

  • The speed control resolution is more dependent on the resolution of motor parameters, current/voltage sensing signal, loading, and current/speed controller. The 20~30kHz PWM frequency is good enough for a motor with 250Hz maximum electric frequency, and it's not very useful to make a small change on PWM frequency as you want.

  • 1 in 1500 rpm means %0,067 resolution. As far as I understand, you mean I need to increase encoder resolution, analog measurement resolution as much as I can.

    In Instaspin current measurements are related with USER_IQ_FULL_SCALE_CURRENT_A and it is related with IQ24 variables and calculations. In my application I need to measure currents up to 500A and IQ24 is limited with 128.0 Do you have any advice for me to do for modifying the code? 

  • 1 in 1500 rpm means %0,067 resolution. As far as I understand, you mean I need to increase encoder resolution, analog measurement resolution as much as I can.

    In Instaspin current measurements are related with USER_IQ_FULL_SCALE_CURRENT_A and it is related with IQ24 variables and calculations. In my application I need to measure currents up to 500A and IQ24 is limited with 128.0 Do you have any advice for me to do for modifying the code? 

  • You can set USER_IQ_FULL_SCALE_CURRENT_A  and USER_ADC_FULL_SCALE_CURRENT_A to a number is greater than 128 since the InstaSPIN_FOC is based on PU format. You just can't convert the PU to real value in a project that's not necessary for the motor control algorithm, only for debug monitor.