Position and speed control of a DC brushless motor

J

Thread Starter

John Higgins

I have a project at the moment, that i am struggling with, any help is appreciated. Basically i have a small DC brushless motor (30W)that is spinning at approx 3600 RPM. i have an index pulse at say, Top Dead Centre from an encoder and a sync pulse every 60Hz. I need the sync pulse to be at TDC every revolution, if a small load is applied for a split second then the motor needs to compensate and catch up with the TDC pulse, and vice versa. The motor control needs to be quite precise and not keep overshooting. Would a Phase Locked Loop be the best way to go? If so any advice? Would a 4046 PLL Chip do this job? Can it be done simpler without a PLL. I have a speed controller that came with the motor so that part of it is taken care of, The motor speed control can vary the speed from an external voltage ranging from 0v(0rpm) to 5v(7500rpm). I was thinking an error voltage derived from the size of a pulse generated from the rising edge on TDC pulse to the rising edge of sync pulse could be used to speed up the motor. Like i say any advice would be greatly appreciated.

John
 
John,

This is easy to do with a standard motion controller that has hardware position capture capability. Doing it with a home grown solution will be fairly involved due to the fact that you have to develop several building blocks to put together a workable solution.

As I understand it, you have a 60Hz master pulse that must be "aligned" with the once per rev pulse of the motor.

Does the motor additionally have a higher resolution encoder?

If so, I would use the master pulse to do a hardware capture of the encoder register followed by a capture from the once/rev pulse. Look at the displacement of the two latches in encoder counts, compare to a setpoint and adjust the ongoing position target accordingly. We do this all the time in a broad range of applications. Pulse capture rates of 9kHz are easy to do - 60Hz should be a walk in the park!

Ken
Applied Motion Systems, Inc.
 
J

John Higgins

Ken

Thanks for the reply. The encoder has a resolution of 500 per rev, so your idea is a posibility.

I'm not sure what a standard motion controller is though? Is this a chip you can buy, or is it more like a speed controller.

Also another thing i was wondering is that if the once/rev pulse is lagging the master pulse by just a small amount how will the controller know that it only needs speed up by a little bit, rather than slow down alot.

Could you recommend a motion controller with hardware position capture?

Thanks Again

John Higgins
 
If you want to have the master pulse occur concurrently with the once/rev pulse, you will need to latch every other pulse from one of the two signals and create a situation where you want to see 500 encoder counts between pulses. Otherwise, if you can tolerate a fixed offset between the master and slave pulses - you can correct every revolution. My experience is that this is rarely necessary if you have designed your system correctly - it is possible to design a system like this where once it is aligned, the only error you will have is servo loop PID following error.

The motion controller that gives you the high bandwidth hardware position capture capability is a Delta Tau PMAC. They have a PC104 version that will be the most cost effective for a single axis of control. http://www.deltatau.com

Is this a one-time development effort or do you plan on making these widgets in large qtys? Your mentioning "chip" makes me think you might be in for sticker shock.

Ken
 
Top