Electronic – BLDC Motor Commutation Based Speed Control

brushless-dc-motorpwm

I am working on a project which has a motor to drive a gyroscope (it has quite a bit of mass, and we want it to run at 60k RPM or more). The motor we built has very low inductance. We started using a couple of developer kits from major manufacturers, but have found that the PWM frequency that we need to use in order to not have current ripple destroy the waveform (about 100kHz or more) is outside of their normal operating range. Once we get to 100% duty cycle, things tend to behave pretty well (although still not perfectly).

We were thinking that, since we don't need speed or torque control, that the commercial boards are really overkill. We just need to spin the gyro up to a set RPM, and then apply some energy every now an then to keep it running at that speed.

So we got to thinking, what if we dispensed with the PWM voltage control, and just ran that at 100% duty cycle. But to control the speed, we would just adjust how often we apply that 100% by not applying it every commutation. It has enough inertia to run for a long while before losing much noticable energy). I have been looking around to see if anyone else has described this method, but have come up empty (so I figure there is a fatal flaw in our reasoning).

The motor does have hall sensors. And we figured we could adjust the PWM at startup for a smoother ramp up, although that is a very insignificant part of the total operating time of the device.

So my question is, before I start programming this, would this be an acceptable method or am I missing something? And if so what kind of controller would be good to develop it on. For example, would an Arduino work.

(As background, I am a programmer with a Physics degree from a while ago, and not an engineer with a motor background. But am really enjoying learning about it)

Best Answer

Pulsing the motor full-on for a few cycles occasionally should work fine if you're OK with the resulting strong torque pulses on the flywheel and backwards on whatever is holding the motor. This will also result in a higher speed ripple. You have to decide whether you can tolerate the speed ripple or not.

One drawback will be lower efficiency. Shorter pulses of higher current versus longer pulses of lower current are the same to the motor, but don't cause the same dissipation in the inevitable effective resistance in series with the windings. The dissipation of the resistance is proportional to the square of the current. Usually you try to pulse motors fast enough so that the inherent inductance smooths out the actual current as a sawtooth about the average. A constant average current minimizes the lossed in the series resistance.