Need clarification and help regarding BLDC motor control.

Thread Starter

electrojim

Joined Jun 3, 2009
20
My requirement is to obtain a constant speed from a DC motor, regardless of the mechanical load on the shaft... within reason, of course. To experiment, I bought an 'entry level' BLDC motor with Hall-effect sensors and a controller module for it, both from stepperonline.com. Connecting things up according to instructions, I find that, sure enough, I can vary the speed of the motor with a pot, either the one built into the controller or by tying an external pot to the circuit. Using an external pot, the built-in one can set the maximum motor speed, thus affording better resolution over the motor's working speed range by the outboard pot.

My application has the motor running at about 700 r.p.m. I'm able to set the speed close to the precise speed I need, but not quite. With essentially infinite resolution over the DC control voltage applied to the controller, the motor seems to 'hop' up and down in speed by about 2% per hop. So I can get either 693 r.pm. or 707 r.p.m., but never 700 on the nose. This makes me question exactly how this controller works.

The controller has a 'pulses' output, which seems to be an 'OR' function of the Hall sensor outputs. This output yields six pulses per revolution of the motor, so at 700 r.p.m. (11-2/3 revs. per second) it's a fairly symmetrical squarewave at 70Hz. What I'm figuring is that this frequency is being compared with some clock internal to the controller, and a PLL is applying more or less DC to the motor to maintain lock. I'm also thinking that the reason I can't get an exact speed from the motor is that 70Hz is too low a PLL loop frequency to provide the necessary resolution.

What I'd like is a confirmation of, or correction to, my understanding of what's going on in that controller. Any hints, like messing with the controller's internal clock to vary its frequency and allow 'fine tuning' the motor speed, or any other approach, would be much appreciated.
 

MaxHeadRoom

Joined Jul 18, 2013
30,595
A BLDC motor at the lower speeds tends to show the pulse rate, as the RPM drops, The only way to correct this is some kind of feedback.
Or run the motor with a 3ph waveform type of drive
 

Thread Starter

electrojim

Joined Jun 3, 2009
20
Right, Max. I think the controller I got must work in a feedback mode, as the motor keeps at the same speed no matter how much I load it, until it stalls. It's the incremental (digital?) response to a 'stepless' (analog) speed input signal that I must find a way around.
 

dendad

Joined Feb 20, 2016
4,636
The controller is probably PWMing the phases to control the speed and the PWM resolution may be 256 steps so you are limited by that too. A higher PWM resolution will allow finer control.
And as @MaxHeadRoom says, you will need some feedback, monitoring the speed via the Hall sensor pulses and adjusting the speed control signal otherwise the speed will vary with the load and power supply variations.
Do you have any schematic or info of controller and motor?
 

Thread Starter

electrojim

Joined Jun 3, 2009
20
Thanks, dendad, and you're right, the PWM resolution itself may well be a limiting factor. But, again, I'm sure that feedback is already in play through the action of the controller and Hall sensors, as motor speed is absolutely constant regardless of load until the motor stalls. In fact, closed-loop operation is further indicated by a very slight time delay for correction to occur after loading or unloading the motor. 'Sluggish' action of an internal PLL can be seen by watching the Hall sensors' pulse train... a short delay before the motor speeds back up after loading, and a momentary 'overshoot' in speed when the load is removed.
 
Top