Looking for high control Slow and Fast Motor (0.3 - 600 rpm)

I’m looking for a motor connecting to an Arduino or Adafruit Motor Shield
(DC, BLDC with ESC, Servo or Stepper)
that can handle very sensibly controlled low rpm’s (as low as 0.3 rpm)
but at the same time is also able to run as fast as 600+ rpm.

The slow precision is more important than the fast end.
It would also be acceptable if it would only go as high as 300 rpm or something, if need be.
Direction needs to be reversible.
Operating Voltage is preferably in the 5-12V range.

Brushed DC
At the moment I’m using a Powerdrill Brushed DC controlled with a separate PWM-Board with a Poti.
The problem with this setup is, that I have no feedback of the actual speed of the motor and it gets hot when running slow (and also noisy).

Stepper
On the other hand I’m running a stepper on the motor shield for a different task, making it obvious that a stepper in general would be precise enough when slow, but never fast enough for my task in the high range.

Brushless DC + ESC
I Informed myself about RC Brushless motors with some experts, who believed, that even motors as high as 60T or 80T for crawlers would never run slow and controlled enough in the low range.

Continuous rotation Servo
Maybe this could be what I’m looking for, but is the movement ever so precise when running very slow?
I’ve found this one which seems to be capable of around 180 rpm, which is a bit slow.
Are the turns exact and controllable in the super-slow range?

Which motors should I look at?

Hello hzzm!

I recently had a chat with someone who showed me these DC motors, which look really smart: https://www.gobilda.com/yellow-jacket-planetary-gear-motors/

Also, these: https://www.pololu.com/category/115/25d-metal-gearmotors

You didn’t say how powerful they need to be, but the above are closer to the DC drill motor you’re using.

If you can use something smaller, there’s always the N20 gearmotors that I’m using myself. There are loads of nice motors here on Robotshop.

Regarding control, that’s really why I’m replying. It sounds like your issue is more control than motor. I’ve developed a 4ch motor controller that uses quadrature feedback and can do both speed and position closed loop control. To use it you’ll need a motor with quadrature encoder. In position control mode you can do ridiculously slow ramps like 0.000001 transitions/s, up to 50,000. The exact rpm range depends on your gearing and quadrature resolution, but almost any motor would allow you the range you specified, with this controller.

You can have a look at my controller here: https://www.robotshop.com/en/chipbotics-quadquad2drv-connectorless-pid-motor-controller-with-quadrature-feedback.html

I’m looking to keep developing it and add new functions as needed by users. I have an Arduino library for the SPI interface, but if you need something else let me know and I might add it.

Thank you for your input.
I forgot to say, it doesn’t need any torque really.

So you’re saying a geared, brushed DC motor will be controlled enough in the low RPMs to make slow turns, but also fast enough.

Do you think a geared, brushless DC like this


can also be as precise in the low RPMs?

You’re welcome.

That’s not a simple DC motor as I meant, but a very interesting motor, nonetheless. You could in theory control it with our board from the control signal pins, bypassing the power driver, since the motor has one built in. (But we haven’t tested it, and so on.)

It’s a bit complicated to explain. The problem is that a motor requires a certain amount of power to overcome stationary friction. And once it starts turning at this minimum amount of power, it tends to rotate at some minimum speed, which may be higher than you require. And if you reduce power or apply any resistance, it will simply stall again. This friction problem applies when you’re driving the motor open-loop at low speed and generally means there’s some dead-zone of speeds you can’t achieve this way. If you have a high enough gear ratio, friction is not a problem, but your maximum speed will be limited and your torque will be on the high side.

I can get really technical about this, but will do my best to keep it short. When you use position control, it works like the continuous rotation servo you linked, but is far superior and actually gives you velocity and position feedback. It doesn’t control speed as such, but slowly changes the angle it is aiming to achieve using closed loop. The command works something like “increase the angle by 1000 steps total clockwise, at a rate of 1 step every 10ms”. The minimum speed depends on the controller - ours can do ludicrously slow speeds (it is somewhere in the datasheet). You specify 1 degree a day if you want, if your encoder and gear ratio provide that resolution. As long as your motor can achieve the maximum speed and torque you need at full power, you can achieve the minimum speed you need using position control. A higher gear ratio or more torque will produce slightly smoother control, though.

We have recently designed a new 1-channel controller with the same functionality that solders onto the back of a particular type motor that comes in various gear ratios. It’s a lot smaller than your drill motor, but if one of the gear ratios gives you the torque and speed, it might do the job. If you search for “n20 gearmotor” on RobotShop, you’ll see a selection of these motors. You will need one with the “extended shaft”. We use these motors in our robotic electric guitar with great success. And we have one of these new controllers for sale: https://www.robotshop.com/en/chipbotics-q-pixie-connectorless-n20-gearmotor-pid-controller-with-quadrature-feedback.html.

It has an Arduino library, but you do need to know what you’re doing connecting it all up. Happy to work with you on this as we want to get this out in the real world and see how people use it. The demo code tells you how to connect up to an Arduino nano and should be fairly easy to get working if it all goes right. You need some fine soldering skills, though.

Do you need to control just one motor or several? Maybe you could give more information about your application and how you want to use the motors?

These N20 gearmotors look really interesting. Paired with the small controller, that is certainly something I want to try out some time.
In this project however, I think I will settle with this yellow jacket for now, because the N20’s dimensions seem to be very small.

My soldering skills are decent.
For this project I’m assembling an Arduino Mega, Adafruit motor shield, 320x480 TFT Shield on top of eachother.
I don’t think i will drop the motor shield, because overall I need to drive 1 Stepper mounted on a circulation spindle, which will slowly guide a sled along the cable, that will be rotated by the yellow jacket.

The movement speed of the sled on the circulation spindle will be relative to the rpm’s of the yellow jacket.
I will implement a formula putting the two speeds in relation. The yellow jacket speed will then be freely adjustable in the TFT GUI, while some adjustable multiplier will determine how relatively fast the sled will progress along the yellow jacket rotation axis.
The GUI is switching between 3 main operating modes: Forward, Halt, Backwards - for all motor movement together.

Do you think i can pair your 1-Channel Chipbotics Q-Pixie with the yellow jacket to gain full control (like with the QuadQuad2Drv) on the Mega?
(without making use of the magnet wheel / extended shaft)
I really don’t need more than 1 Channel for DC-Motors, so this small board would save me some space :slight_smile:

The yellow jackets look awesome.

So you’re building some kind of winch? Keep in mind that as the cable winds up, the spindle diameter will increase and thus the relationship between motor speed and cable speed will change.

Sadly the Q-Pixie can only be used with the N20 motor as the magnetic sensors are on board and the power driver is only something like 1.8A. However, a stand-alone version of the Q-Pixie is on my shortlist of things to design. A 1-channel high current design. I intend to use the same protocol, so in theory you could swap out a QuadQuad2Drv for a Q-Pixie or the future stand-alone 1 channel board.

Some considerations if you want to use QuadQuad2Drv. Looking at the yellow jacket, it is specified as 9A stall current. The QuadQuad2Drv drivers are specified as 6A, but have automatic current limiting at 8A. Basically, you can safely run the yellow jacket continuously at 2/3 power at 12V. Also, our boards use SPI to communicate, so consider whether your shields also use SPI and how they will interact. Our boards do have resistors on the SPI output to prevent things from blowing up should you accidentally get this wrong. Have you worked with SPI before?

Also, I just saw the price of the RoboClaw controller recommended for the yellow jacket and nearly died. It looks like a good controller, though, if you want to consider it.

I’ve received an email with another message from you, but it’s not showing on RobotShop. I’ll reply to that anyway.

It is worth noting that the BLDC motors used in RC are typically sensorless, meaning they use the EMF feedback to determine when a motor is rotating instead of using Hall sensors. This requires a higher minimum speed to produce the feedback, which isn’t a problem with RC airplanes. Also, if you have enough gearing, it won’t be a problem.

If it has Hall sensors such as the one you linked, one should be able to get some pretty good slow control out of them if it is geared (but I haven’t tried this yet). Remember without gearing you only get a 120 degree resolution and this could cause problems at the slow/stationary end. (Actually, I just realized this is rubbish. There are just three phrases, but typically many multiples per rotation, so the resolution is much higher.) The sensor signals are different from quadrature, though - for one, there are three wires instead of two. QuadQuad2Drv does not support inputs such as RC servo output (which is basically a special kind of PWM), but could in theory and it’s on my list. I thought you wanted to drive it with an Arduino, though?

BLDC motors are awesome and I definitely want to build a controller such as the one you describe, or something that can go between the QuadQuad2Drv and such a motor. I had a quick look and found the DRV8307 IC that can drive such a motor from the QuadQuad2Drv (I’m sure there are others), but couldn’t find anything that can convert the Hall sensors to quadrature. However, you could fit an external quadrature wheel on the motor shaft.

If you want to use a BLDC motor with hall feedback controlled from Arduino, I expect you’d find speed controllers specifically for this purpose. If not, let me know as you may have discovered a market gap worth filling.

I’ve deleted my question, because I realized the answer with further searching.
I’ve come to a conclusion for now, I’ll see how that really works in practice.
I ordered this geared BLDC now.
Built-in driver, 830rpm rated.
I thought 830rpm/60s=~14rps is quite fast for my purpose, but it seems that I can control a standard PWM Pin on the Mega with a 0-255 accuracy, so 830rpm/60s/255=0.05 rotations per second is reaaally slow and even beyond the level of control that I need.
If it turns out to be wild, I might have to go back to the yellow jacket & QQ2D plan.

I also ordered this 25K Poti pedal for master speed control :star_struck:
There was also a 250K version for “passive elements”, i.e. passive PickUps on a guitar (working in the 0~800mA range), but as far as I could find out, Arduino seems to like 10-50K Potis more in general. I also want to go into the pedal’s input 6,3mm Stereo Klinke Jack with 5VDC, thinking it will give me a fraction out with the 25K poti in between, on an input pin.
Also, acoustic Potis seem to be LOG- not LIN-Pots, which probably helps my cause (more granual control in the lower rpms, speed up once the values are found).

Thanks a lot for your help, I’ll tell you about my experiences once the parts arrive.

I think that BLDC motor will do the job. I’m fairly sure the “speed control PWM” input is actually power control, rather than speed, so if you want exact speed control, you’ll have to do some kind of basic speed closed loop control. You’ll have to read the hall sensor pulse frequency, which you can do on an Arduino using either interrupts or if you know what you’re doing, you can set up a Capture peripheral.

Interesting idea to use an effects pedal for speed control. I like it.

Keep me updated.