Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations MintJulep on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Optimal BLDC current/torque calibration? 2

Status
Not open for further replies.

Vog

Electrical
Sep 14, 2005
6
Hi I am looking to build a BLDC controller that can accurately control torque.

Ideally the controller will take the current shaft position and torque demand and set the current in each coil accordingly. This would require the controller to know the exact current-torque characteristics of the motor for each coil at each angle. But how can we get this data?

One way is by measuring back EMF on each coil at each angle with the shaft spinning at a constant speed. We wont get the exact current numbers but we will get a ratio of currents from different coils.

Another way is to attach a torque sensor to the shaft and lock the shaft at different angles and excite the coils one by one and see how much torque is measured. Presumably the brake on regular servo motors can be modified for this use.

Yet another way is to excite the coil for a very short amount of time and measure the acceleration or speed of the shaft as a result of the pulse.

The end goal is to arrive at a table:

Angle I1 I2 I3
1 5 2 0
2 4 3 0
3 3 3 -1
...

so that the controller can do a quick look up and decide deterministically what current each coil should have.

This seems to be simple enough idea somebody probably have implemented it. Or this is totally unrealistic?

Is there a better way to accomplish this?

Vog
 
Replies continue below

Recommended for you

Hello Vog:

Considering that a BLDC motor is in reality a permanent magnet synchronous motor and the stator has sets of 3 coils equally spaced the best resultant torque is that corresponding to a three phase power supply. The currents in each coil should be:
i1 = Im *sin (wt)
i2 = Im*sin(wt+2*Pi/3)
i3 = Im*sin(wt+4*Pi/3)

w = 2*Pi*f
t = time
"f" the frequency will define the speed.
 
Yes theoretically that is the case. However some motors might be driven with multiple coils, and the coil geometry is not perfect, and the magnets do change over time. So I think current/torque characteristic should be calibrated, ideally. Besides, a controller should know how a motor behaves instead of assume how it behaves.

The question is how this can be done in an automated fashion. This should be a feature integrated in certain controllers where torque ripples are to be minimized at all cost.
 
Vog,

The trite and true way is to use a PID controller on your current loops. You tune the gain parameters (proportional, integral, and derivative) to match motor characteristics and load profile. This is the way it has been done. We've done six steps to sinusoidal current shaping.

The look up table works if you know the motor characteristics well, but if the load changes (and as the gentleman above mentioned the other variables) that affects the behavior of the motor and it would be impractical to have a set of data points for every possible load condition.
May be what you want is to implement the controller with a state space model and calibrate it to match your motor-drive?
 
Vog I think coconutalley is on the mark. Think about your method when a load starts being applied. Slip will start occuring which will change everything. I believe your method would be more appropriate for something like a stepper motor.
 
Vog:

In my experience, the people who have really wanted to reduce the torque ripple of "brushless DC" motors (a horrible term, as they are AC synchronous motors) have used two techniques.

The first, as you suggest, is to map out the back EMF curves of the phases (they had better all be reasonably the same). Conservation of energy tells us that, in the absence of energy storage (see below) that the back EMF curves and the torque curves are the same. Once you have established the shape of these curves, you must come up with current-vs-angle curves that when multiplied by these torque-per-unit-current-vs-angle curves yields constant torque as a function of angle. If the torque curves are truly sinusoidal, then the current curves will be as well.

The second is to look at the reluctance, or cogging torque, in which varying amounts of energy are stored in the magnetic circuits depending on rotor orientation. You can feel if this is a significant effect in a permanent-magnet motor just by turning an unloaded, unpowered motor by hand and seeing if it has "detents".

A simple technique I have used to compensate for this cogging torque is to command the motor (unloaded) to hold position at many points around a revolution. With the integrator of the position loop active, I monitor the torque command necessary to hold position at each point. This value becomes an entry in a "torque compensation table" I then use in active control, just linearly interpolating between points in the table when I am between these points. I've set up tables like this with an automated program in 30 seconds, and I find it usually reduces the resulting velocity ripple by two-thirds.

 
Status
Not open for further replies.

Part and Inventory Search

Sponsor