Today a few of us over on the discord channel 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 ($48 USD).
It’s not exactly small being a NEMA 34 or 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 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 spacing.
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.
This design would also require some custom parts to be manufactured. The rear mounting plate is simple enough with only some holes required. However the motor shaft would also need to custom to be long enough for the gearbox input and be the right diameter to receive a press fit of the spline gear that drives the planetary gearbox. The rear of the motor shaft would would also need to be long enough for the magnetic encoder to be the right distance to the magnet. The addition of a thermistor to the motor windings for active temperature monitoring would also be handy as would staggering the magnets on the rotor to reducing cogging torque. But neither of these are a requirement. An optional L bracket could also be quite useful for mounting the motor at 90 degrees to your base.
If you would like to check out the model you can find a copy here. I mostly just modified existing parts that were available on grabcad so credit goes to those people. Nuts, gearbox, terminal block, motor, L bracket.
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.