# delta sigma mod. for BLDC motor controller

• posted

Ok, here we go again with my lack of knowledge on digital control, so pardon me if it looks I'm just waving hands in the blind (I'm not blind but I'm italian and waving hands is pretty much a genetic feature).

I have a Controller block which provides the torque (T) value to be applied to a BLDC motor. Now T needs to be converted into current (I) for each of the three phases of the motor according to the actual angular position, provided by an absolute encoder.

The chain of the Controller+Converter ia updating a new value at f KHz. Now, within my period 1/f I need to *regulate* the current with an error max of x% FSR and we thought about having a delta-sigma modulation driving an half H-bridge (class D amplifier) with some lpf before goint on the motor coil.

Now, how can I estimate the frequency for my regulation loop? and the level of the quanitzer? Which are the parameters I need to play with? Would I need to simulate the motor as well or can I leave with an open loop analysis?

Any pointer is appreciated (even to books if you deem not worth discussibg before I get a proper education on the subject!)

Al

--
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
• posted

First, this heavily intersects with analog: it would do better on s.e.d, even if you do have to sort through political junk for your answer.

Second, the motor has built-in low-pass filtering: it has the inductance in the coils. The switching rate of your H-bridges should* be fast enough that you can drive the motor coils directly. I would measure the current in each coil and regulate it in closed loop, applying delta-sigma modulation to the PWM duty cycle. That should work well enough -- but you should run the numbers, and check.

If for some reason you really need to knock down the switching-rate AC going to the motor you can, but you'll seriously limit the bandwidth of your current loop.

By "estimate the frequency of my regulation loop" I assume you mean that you want to figure out the bandwidth of your current loop? Unless the motor is really perverse, you should be able to close this at around

1/10th the switching rate to the H-bridges, assuming that you're sampling the ADC synchronously with the H-bridges (which you want to do, so that you can sample at a felicitous moment to avoid switching spikes).
• "Should" as in "you should make it so", not "should" as in "you can expect it to be so".
--
Tim Wescott
Wescott Design Services
• posted

I've done something much like this. In my particular application I've needed to control the torque over a fairly wide range. What I discovered was that the propagation (turn-on and turn-off) delays were significant at the low end of the torque range, and I had to insert a linearizer block in order to keep the loop dynamics consistent over the whole range.

I'd be cautious about using delta-sigma methods unless you can use them open-loop. Their delay is probably too much to be used closed-loop.

• posted

Hi Frank, my apologies for such a delayed reply, the thread has moved to s.e.d. a week ago and I did not inform c.a.e. promptly (shame on me). I took the liberty to crosspost your reply on s.e.d.

Frank Miles wrote: []

Maybe not a showstopper for my application where the motor is *always* running and is stopped only in non nominal cases (profile reconfiguration, or similar stuff).

An open-loop will not be able to attain the precision required. The whole system is thought to be operated in closed loop.

Al

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.