cancel
Showing results for 
Search instead for 
Did you mean: 

Low-speed control with STEVAL-SPIN3201 and FOC SDK

Max Schachtschabel
Associate II
Posted on November 30, 2017 at 12:57

Greetings!

For the past few weeks, I have been working with the SPIN3201 Eval-Board to control a small BLDC motor which is usually used for electrical-powered Longboards. I have chosen a purposely slow model with only 60KV (rpm/V), which I want to run on 12V DC Voltage (max. speed of 720rpm).

I was able to set up the board, the internal Hall-Sensors, the Firmware and I measured/estimated the neccessary motor parameters; now I can control the rotation Speed of the motor quite well using an external Servo tester (basically a voltage divider) or the Motor Monitor within the ST Motor Workbench.

Now, I have some issues when I want to set the motor to a particulary low speed compared to the maximum, e.g. 100rpm or lower. Once I set the speed ramp to such a value, the motor either comes to a stop or does some fidging around, clearly showing that the FOC is not aligned with the current rotor position. Since I am quite sure that the

motor parameters are correct at the moment, I tried adjusting the PID constants of the Torque-, Flux and Speed-control, which brought nice results with higher Speeds (good adjusting time, no overshoot, no offset), but the lower speeds still show the same behaviour. When I apply small loads during these moments, the motor is not able to bring the neccessary force to rotate and makes noticable jumps between the phases.

Since my application has a focus on low rotation/high torque scenarios, which should fit the motor quite well (1800W, up to 55A peak current and 8.5Nm of tourque), I am searching for more ways to adapt the FOC SDK for smoother and more robust control schemes.

Does anyone had similar experiences with another motor and can give me a few hints where to look?

For those wo are interested, this is the motor I currently use:

https://community.st.com/external-link.jspa?url=http%3A%2F%2Falienpowersystem.com%2Fshop%2Fbrushless-motors%2Faps-5065-outrunner-brushless-motor-60kv-1800w%2F

And here is the list of parameters that are not stated and I needed to measure manually:

Pole pairs = 7

R_s = 0.55 Ohm

L_s = 0.5 mH

B_Emf constant = 12.5 Vrms/krpm

Many thanks in advance,

Max Schachtschabel

#foc-sdk #low-speed #motor-control #field-oriented-control #sdk-foc #steval-spin3201
4 REPLIES 4
Diandi Zhu
Associate III
Posted on July 11, 2018 at 15:46

I my case, if I enable the hall sensor on my motor the low speed performance improves a lot. You my want to try a encoder on your motor shaft or a reduction gearbox?

Davide Zanni
Associate II
Posted on July 12, 2018 at 15:54

In sensorless application with SDK version 4.3, I have changed the function STO_CalcAvrgMecSpeed01Hz for increase the range of speed. It's a problem of integer approssimation, before the function was

  /* The maximum variance acceptable is here calculated as a function of average

     speed                                                                    */

      wAvrSquareSpeed = wAvrSquareSpeed / (int16_t)128 *

                             (int32_t)(DCLASS_PARAMS->hVariancePercentage);

and I changes as follow

  /* The maximum variance acceptable is here calculated as a function of average

     speed                                                                    */

  wAvrSquareSpeed = wAvrSpeed_dpp * wAvrSpeed_dpp;

  if (wAvrSquareSpeed >= 0x100000)

      wAvrSquareSpeed = wAvrSquareSpeed / (int16_t)128 *

                             (int32_t)(DCLASS_PARAMS->hVariancePercentage);

  else

      wAvrSquareSpeed = wAvrSquareSpeed * (int32_t)(DCLASS_PARAMS->hVariancePercentage) /

                           (int16_t)128;

Also in motor control workbench I change the parameters of STO PLL KP and KI,  with lower values, for KP a value / 2 and KI / 10. You must try by drawing the speed with a rate of 1 or 2 ms, depends of the motor and PWM frequency

Mark-S
Associate II

Hello,

I have similar needs for my application as well; very low speed, high torque. I am using a 57BL90 motor with Halls, 90 watts, testing at 24vdc. I am using the ST workbench to specify all of the parameters then generate the *.h files which are downloaded using Keil. I am able to acheive good high speed motor control but very low speeds are very choppy and out of control. Even using torque mode only, the motor jumps and has a very uneven torque output. I will eventually be running the motor in position control mode commanding torque or speed from the position control loop. How can I get smooth torque and/or speed control of the motor at very low speeds??

Laurent Ca...
Lead II

The question has been moved from the "Motor Control Hardware" section to the "STM32 Motor Control" section (the question is about the STM32 MC SDK). 

Best regards