# Help me with BLDC servo motor control algorithms

Status
Not open for further replies.

#### cyberblak

##### Full Member level 2
BLDC motor control

Hi,

I designed a motor drive using a TI DSP. It is to be used with a BLDC servo motor with quadrature encoder feedback. The hardware part is OK but I'd need some help with the control algorithms.

I want to control the motor's position... Does anyone have some good source about positionning algorithms for this type of system?

Any idea about what is a trapezoidal profile? Does one calculate a profile based on a wanted acceleration and speed in order to obtain the wanted position and feed it to a speed control algorithm?

Any explanation on this would help greatly.

Thanks,

CyBeRbLaK

#### jorgito

##### Full Member level 4
BLDC motor control

Hello cyberblack,
Yes, you have to determine the type of speed profile using desired acceleration, desired speed and length to move, usually before you start the move. Trapezoidal profile ramps speed linear-wise until you reach desired velocity then you move at constant speed, and deccelerates linear-wise to full stop.
However, if lenght to move is small, acceleration is low or max speed is high, the trapezoidal profile transforms in a triangular profile.
Other profiles are used: Parabolic (quadratic) is energy efficient, and S-Curve (3rd degree curve) minimizes acceleration discontinuities, making the move smoother.
Hope this helps
Best regards

### cyberblak

Points: 2

#### cyberblak

##### Full Member level 2
Re: BLDC motor control

Ok, thanks... That helps me, but let me precise my question:

When one say that he uses any of the speed profile described above, does that mean that the controller uses two control loops (inner, current and outer, velocity) and that the setpoint fed to the velocity loop is the, let's say, trapezoidal profile? If this is the case, then do I have to calculate the profile from the next position I want to obtain and then I feed it to the velocity control loop?

What is the difference between this method and using three control loops, the outer being a position control loop? This way, as I understand it, I can't control the velocity profile since it's controlled by the position loop...

BTW, if that can help, my application requires position control with very frequent setpoint changes (~400Hz), short displacements and smooth movement.

Thanks a lot,

CyBeRbLaK

#### jorgito

##### Full Member level 4
Re: BLDC motor control

Ok cyberblack,

Normaly, the DC or BLDC drive gets as input a signal representing the SPEED command. The motor integrates speed giving you position. I left away the math of control systems many years ago, but as far I can remember this aditional integration helps to minimize stationary position error.
The inner control loop (current) helps to limit motor current, but most important it eliminates the effect of motor inductance making the system more responsive.
The second loop (speed) lets you control speed and position using your selected speed profile.
And the outer loop (position) is sometimes switched on very close to the final position, mostly to mantain desired position in spite of external influences, forces, etc.

With regard to the high rate of position changes, I would expect that your main concern will be the mechanic stiffness of your system, to get rid of resonances.
In this case you could select the S-Curve profile, what you can adjust to null the first derivate of acceleration.
Best regards

### cyberblak

Points: 2

#### VVV

Re: BLDC motor control

Think of it as simply two loops: one for position, the other for speed. But the speed is limited to a maximum.
Thus, the profile is trapezoidal if the required change in position is large. That is because there is enough time for the motor to accelerate to the speed limit, before you need to decelerate. Else, the profile becomes triangular, because the motor is still accelerating when the position loop tells it to decelerate. Depending on the change in position, the height of the triangle (the maximum speed reached) varies.

#### cyberblak

##### Full Member level 2
Re: BLDC motor control

Well thank you guys, I begin to figure it out...

Concerning the speed loop, should I let the position loop act free on it (giving it a control signal determine directly from the P/PI/PID of the position loop) or should I impose trapezoidal patterns (force max. acceleration, max. speed and deceleration cycle)?

Thanks,

CyBeRbLaK

#### jorgito

##### Full Member level 4
BLDC motor control

Hello again,
I would calculate your position commands in such a way that the speed profile be trapezoidal, S-Curve or whatever you want.
Best regards.

Status
Not open for further replies.

Replies
6
Views
1K
Replies
3
Views
2K
Replies
0
Views
2K
Replies
0
Views
3K
Replies
3
Views
3K