Hey everyone;
Today a few of us over on the discord channel 3 were discussing how to gear down small BLDC motors and it was suggested that we move the discussion over to here so that more people can join in.
So first things first:
Why gear down small BLDC motors? Why not just use a lower KV motor?
Small BLDC motors (e.g. a 3520 motor, which is 35 mm in diameter, 20 mm long) are only available with moderate KV values of about 420 and larger. This gives them a relatively high top speed compared to their bigger brothers but low torque. Lower KV values are available as gimbal motors but their high winding resistance means you can only drive them at a couple of amps, resulting in even less torque. In theory you could make a very high voltage odrive (> 100 V) but I’m told that high current, high voltage MOSFETs are very expensive and therefore impractical.
By gearing down a motor you also increase the torque, increase your effective encoder resolution and reduce the apparent effects of cogging torque.
Why not use a stepper motor?
You can! Here is a 4.5 N.m hybrid stepper motor and it’s motor driver for comparison. The motor is the same as this model 22 ($48 USD).
It’s not exactly small being a NEMA 34 motor light weight at 2.5 kg. It’s high coil inductance and high effective pole count also mean that its torque falls off rapidly as you increase speed. It’s also difficult to drive a stepper above ~1000 rpm open loop as I believe you run into problems when you hit certain resonance frequencies. This all results in a relatively low peak power output due to a limited top speed.
For comparison the design shown below is for a ~4 N.m, 2000 rpm servo motor with integrated drive electronics (odrive one concept) and 21217 counts per rotation on the output. It would also only weigh about 0.5 kg, would fit in a NEMA 17 form factor and the cost of the parts minus electronics (cost TBA) would be around $50 USD with volume.
It works by taking the ‘odrive one’ single axis electronics concept describe here 25 which will be able to supply 40A continuous and 80A peak and use a 4096 count per rotation magnetic encoder. This is used to power a ~200g 3520 size motor ($22 USD) with 420 KV for a maximum speed of ~10,000 rpm at 24 V and an estimated 0.8 N.m of torque. The planetary gearbox ($15.5 USD) gives a 5.18:1 reduction to give the 4 N.m output at 2000 rpm for a peak output power of around 650W with conservative estimates for losses.
The power electronics are mounted on the rear. The back of the motor shaft has a magnet located on it which is position next to the magnetic rotary encoder chip on the pcb. The motor is coupled to the back plate which is then connected via four bolts to the gerabox which has a nema17 mounting hole spacin.
Of course there are drawbacks to this approach. A stepper motor can operate at its rates torque all day without having to worry about overheating while this servo design will let the smoke out after about a minute at full torque. However, for a lot of application the effective duty cycle is low enough that this is not a problem. A good use-case would be something like a CNC mill where the peak load is only seen during brief moments of rapid acceleration and deceleration. A bad use-case would be trying to hold up your robot arm against gravity with this drive or using it to power your ebike flat-out up a hill.
If you would like to check out the model you can find a copy here 15. I mostly just modified existing parts that were available on grabcad so credit goes to those people. Nuts 1, stepper motor gearbox 26, terminal block 2, motor 6, L bracket 2.
@Wetmelon has been working on a similar setup for the larger and more powerful N5065 motor over in this thread 18 in case anyone is interested in going one size up.
This is only a rough first pass on the idea so if anyone has any thoughts at all (good or bad) I would love to hear them.