Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Help me with BLDC servo motor control algorithms

Status
Not open for further replies.

cyberblak

Full Member level 2
Joined
Jul 19, 2005
Messages
139
Helped
6
Reputation
12
Reaction score
0
Trophy points
1,296
Location
Canada
Activity points
2,618
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
Joined
Mar 26, 2003
Messages
203
Helped
16
Reputation
32
Reaction score
3
Trophy points
1,298
Location
Argentina
Activity points
1,809
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
    Helpful Answer Positive Rating

cyberblak

Full Member level 2
Joined
Jul 19, 2005
Messages
139
Helped
6
Reputation
12
Reaction score
0
Trophy points
1,296
Location
Canada
Activity points
2,618
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
Joined
Mar 26, 2003
Messages
203
Helped
16
Reputation
32
Reaction score
3
Trophy points
1,298
Location
Argentina
Activity points
1,809
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
    Helpful Answer Positive Rating

VVV

Advanced Member level 5
Joined
Nov 26, 2004
Messages
1,582
Helped
384
Reputation
768
Reaction score
87
Trophy points
1,328
Activity points
19,971
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
Joined
Jul 19, 2005
Messages
139
Helped
6
Reputation
12
Reaction score
0
Trophy points
1,296
Location
Canada
Activity points
2,618
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
Joined
Mar 26, 2003
Messages
203
Helped
16
Reputation
32
Reaction score
3
Trophy points
1,298
Location
Argentina
Activity points
1,809
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.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Top