Which is better, a stepper motor or a brushless DC (BLDC) servo motor like these from Teknic (Clearpath)?
The short answer: It depends on your application.
If you only need open-loop position control (no shaft position feedback), are on a tight budget, don’t require high shaft speeds (~600 RPM Max) and can get away with somewhat heavy and bulky motors then stepper motors are for you.
However, if you find you need closed-loop control (shaft position feedback), have more money to spend or need lots of torque in a small light weight package that can also operate at higher speeds then a BLDC servo motor is the way to go.
The slightly longer answer:
Generally speaking, anything you can do with a stepper motor you can also do with servo motor, only better. However this is not true the other way around. So why would you ever use a stepper motor?
1. Stepper motors are super cheap.
Incredibly, you can now buy a four motor microcontroller+stepper driver kit and four stepper motors for less than $40 USD. The price for a single Clearpath motor starts at $254 and a Mechaduino servo (more later on these) comes in at $63 USD each.
2. Open-loop stepper motors are much easier to control than a servo motor.
Simply tell a stepper motor how many steps to move and in what direction. Easy. Depending on the control electronics, a servo motors may also be used in a simple step/direction setup. However, to really make use of its performance careful tuning of its PID parameters under both static and dynamic conditions is needed. Granted, good control firmware can just about take care of this for you these days but it is still definitely something to consider if you are changing the loading which the motors are placed under on a regular basis (ie: different sized parts on an an XY table moving at high speeds) or if you ever decided to roll your own electronics and firmware.
3. High precision and high torque can achieved by stepper motors through gearing
Need 0.0375 degree per step output with 2.4 Nm of torque? Simply use x16 micro-stepping on a long body Nema 23 stepper motor with a 3:1 gear GT2 timing belt gear reduction. Even though this setup is more complicated than a single large servo, it is also much much cheaper.
4. Stepper motors can be converted to a servo motor but adding a rotary encoder.
Projects like Mechaduino have made it possible to turn a stepper motor into a servo motor in that you can have positional, velocity and torque control with sub 0.1 degree pointing capability. By knowing the shaft position it is then also possible to run a stepper motor at considerably higher speeds than would otherwise be possible.
So when should you use a dedicated servo motor?
When I say ‘dedicated servo motor’ I mean a servo motor that is designed from the ground up to be a servo motor, and not a modified stepper motor. The key difference being that a dedicated servo motor will generally not have pole plates with teeth (with each tooth acting like its own pole pair) and will generally have a lower winding inductance than a stepper motor of equal size.
You should use a dedicated servo motor when you require a high power density motor with closed loop control.
If you need a powerful motor in a small, lightweight frame that you can also precisely control then a servo motor is really your only option. For example, servo motors are almost exclusively used to drive industrial robotic arms as the amount of power (torque x angular speed = power) you can produce for a given motor size is considerably larger than an equivalent stepper motor.
Lets compare a Nema23 stepper motor from Pololu with a Hudson-series M-2310 Clearpath servo motor. Both motors have roughly the same frame size and yet the stepper is nearly twice the weight of the servo at 1.05 kg vs 0.63 kg while producing around 30 % less holding torque at 1.9 and 2.7 Nm respectively. However the real difference comes from the peak power produced by each type of motor. By using the torque torque curves from the stepper motor data sheet and assuming a simple linear reduction in torque for the servo motor to around 6000 RPM, 2000 RPM higher than its listed maximum speed of 4000 RPM (I could not find a torque curve for Clearpath motors) we can compare the peak power produced by each motor.
Now we see that the output power of the servo is around three times that of the stepper motor with a maximum of ~350 W vs the stepper motors ~120 W. The difference is even greater still when you consider that the open-loop stepper motors are rarely run at speeds greater than a few hundred RPM.
This difference in output power is due to the high number of poles (200 for 1.8 degree per step) found in a stepper motor that are needed o achieve its fine position control. This high number of pole pairs comes at the expense of maximum rotational speed and torque, greatly limiting the available power the motor can produce. Servo motors on the other hand are fundamentally no different to a BLDC motor.
The next step: Converting cheap and extremely powerful ‘hobby’ BLDC motors into servo motors with Odrive
Up until this point I have only discussed the Clearpath range of servo motors. However, they may soon be a considerably cheaper and yet more powerful alternative available thanks to Oskar Weigl‘s and his alpha release of a BLDC motor controller called Odrive.
Odrive Robotics BLDC Servo Controller
The ODrive motor controller (currently in alpha) is a motor controller designed from the ground up to turn cheap BLDC motors used by RC hobbyists into powerful servo motors by coupling them with equally cheap (~8USD) rotary encoders.
Each ODrive controller board is capable of controlling two motors which are often smaller and lighter than a nema23 stepper motor but can be capable of producing many time the power and torque of even a clearpath servo motors. This is possible because these motors have been designed to be as powerful as possible at the expense of durability and efficiency. So while these motors are not suitable for industrial environments they could be of real interest to the DIY community.
The Odrive controller also has some interesting features such as the ability for regenerative-breaking. This is incredibly useful even outside of transportation applications as it makes it easy to safely remove unwanted power from your system during rapid deceleration without running it backwards through your power-supply, potentially damaging it. The Odrive is also designed to be powered in tandem with a hobby-grade Lithium polymer battery. This is also very important in order to achieve the full capabilities of these BLDC motors, which can have peak power draws in the multi-kW range. By using a high discharge Lipoly batter as a temporary energy store it becomes possible to draw the full 2 kW needed during rapid accelerations while still powering the whole system off a modest power supply.
However there are also drawbacks to adopting Odrive for your projects at this time (July 2017). Namely:
- Features like step/direction commands are still in active development and so this system can not currently be used as a drop in replacement for your existing CNC controller like you can potentially do with Clearpath’s motors.
- Intermittent, small volume production runs of the alpha boards translates to a high unit cost of around $100 USD for a board that can control two motors.
- Limited documentation and discussion of how to get started makes this a project more suited to those users with prior experience in tinkering with firmware development.
- A relatively small development community with Oskar himself doing, as far as I can tell, nearly all of the hardware and software development simultaneously means a slow release schedule is to be expected.
Still, if Odrive can successfully mature into an easy to use drop in replacement for stepper motors then there may finally be an affordable servomotor available for hobbyists that is also many time more powerful than a Clearpath servo.
I have obtained an alpha Odrive board and a few different BLDC motors to try with it and will be posting about my findings in the next post.