Closed loop steppers

After a supplier posted an offering for closed loop steppers in another thread, I thought it would make sense for this topic to have its own thread.

I took the opportunity to open this thread to facilitate the discussion and also to share some info, as I did go through the process of researching a little about them before settling for small servos. Please, feel free to share your ideas, plans and experiences.

So, here’s my initial contribution to the thread…

First of all, closed loop steppers can come in an all-in-one driver and motor package or in two separate pieces (driver and motor). Leadshine has a very interesting value for $ offering that markets as “easy servos”. The model names can be confusing as different ones are used for the global and the domestic market. The latter are commonly found on eBay and Aliexpress.

Out of the “easy servo” line, the following models would be more than enough (if not overkill) for a desktop CNC of X-Carve’s class.

Inegrated motor+driver:
iES-2320 (global market)
iSS57-20 (Chinese market)


Separate motor and driver:
driver ES-D508 (global market)
driver HBS57 (Chinese market)
motor ESM32320 (global market)
motor 573HBM20 (Chinese market)


Now, the following lines are worth their weight in gold.

Automation Technologies carries identical models under their own “KL” brand. For US-based users that means no delays, no customs.

Integrated motor+driver:
KL-5056H (rebranded iES-2320/iSS57-20)

Separate motor and driver:
KL-5080H (rebranded ES-D508/HBS57)
KL-23-2N-1000 (rebranded ESM32320/573HBM20)

Cost for either the KL integrated or the KL combo total is ~$159. And I should be taking a commission for this. :smiley:

(Hey, AT, if you’re reading this, send me a PM.)

1 Like

And here’s the StepperOnline lineup:

Take into account the “Ships from” info. Most (all?) ship from a Chinese warehouse.

@ChrisMyers if I’m not mistaken, were you using Lichuan closed loop steppers?

so what’s the difference with the steppers we all use? Advantages, drawbacks?

I think the closed loop nature of the steppers is all handled in the driver. Grbl would not need to involved. That said, some closed loop systems would have a way to alert the operator…grbl, as it is, wouldn’t do that.

1 Like

@anon68752607 Typical steppers are open loop. You send a command and have faith that it’s executed. In the vast majority of times it does. For numerous reasons (electrical or mechanical) some steps might get lost and you might realize this (e.g. a loud squealing if the motor stalls) or not (if it’s just a small loss). Closed loop steppers add an encoder on the motor and a feedback circuit back to the driver. This way the motor can notify the driver in real-time what the commanded vs actual position is. In case there is a difference, the driver will try to compensate.

@PhilJohnson Since the feedback circuit is internal (between the motor and the driver) this is transparent to the controller (GRBL in our case). The controller to driver signaling is your typical STEP+/- , DIR+/- , ENABLE+/- .


Good point. Some systems on top of the input signals (step, direction, enable) can provide output signals too. In that case, if the controller is not ready to interpret such a signal, you’d have to get creative. E.g. in a dual Y setup, you could setup a small circuit to shutdown all motors in case either one of the Y’s faults in order to protect the machine itself (I imagine with a software configurable threshold).

@EliasPolitis you are correct I am using the Lichuan closed loop steppers with grbl.

@PhilJohnson you are correct that grbl does not support closed looped steppers, as in it has no mechanism to alert the user of a missed steps, or re-issue step commands.

The control loop stops at the motor driver; however, the drivers do have an output that can raise an alert if a step is missed, and the driver will automatically stop driving the motor if steps are missed, essentially shutting that axis down.

Found this in my youtube history. Skip to 7:00 if you’re impatient.

This seems to be a forum user. @MartinBarfoed if you’re around, you’re welcome to comment.

Btw, HBS507 must be the earlier model of HBS57 (Chinese market).

very interesting stuff.

In case the previous support / no support in grbl statements were confusing, let’s simply put it this way:

  1. GRBL commands the driver a motion
  2. the driver signals the motor to execute the motion
  3. the motor executes the motion and reports back its position to the driver
  4. the driver compares the reported position with the expected position
  5. if there is a difference the driver will try to compensate
  6. if the driver cannot compensate (based on a threshold) it will trigger an alarm output
  7. GRBL has no idea that 3~6 happened
1 Like

the question is, why would anyone investing in those motors still work with grbl?


So in reality, there are 2 control loops happening with these (assuming GRBL):

GRBL’s control loop (open loop) is running independent of anything, hence it being open loop. It’s going to send STEP pulses no matter what. This is the master control loop.

Each stepper has its own control loop (closed loop) that is dictating the actual motor motion. This is responding to GRBL’s control loop. It has no feedback to GRBL.

I see that as a potential to have the loops get out of sync and wreck havoc.

Since GRBL is making assumptions things are going just fine, it will always send the next STEP pulses even if the stepper control loop isn’t “ready” for them. If the stepper loop goes off trying to correct due to a physical mis-step, then it misses another command, isn’t the problem compounded?

This is why you generally want the positional feedback fed all the way back to your main control loop so that you don’t get these out of sync issues or at least vastly minimize them.

The problem is the only program that I’m aware of that will run closed loop is LinuxCNC except probably proprietary control software on . MACH3 and MACH4 are both open loop as well.

So the $536 question is (difference in price between a stepper and the “easy servo” x 4), is it actually worth upgrading to?

Let’s say you do and you’ve missed step(s) but you’re removing material and therefore you’ve already cut it so correcting for a mis-step, while it may “save” the rest of the piece, still results in a flawed carving. Is it enough to matter? Do you care?

If you’ve got your feeds and speeds dialed in and your machine is tuned and you’re not missing steps with your stepper, you still won’t miss steps with this so what actual benefit is it?

Every time I’ve researched servos, closed loop, and CNCs the general consensus that I read is, if you can properly manage your feeds and speeds, you don’t need closed loop or servos.


Because they are closed loop to themselves. They don’t expose their feedback. So you actually can’t use these in more complicated closed loop control systems because you can’t get access to the raw feedback. You could go with MACH3 or LinuxCNC, but you can’t use these in true closed loop systems.

It only outputs an alarm or “Yep, I’m where you told me to be”, based on what I see on the datasheets.

Hi There,
I Think all is covered well in the thread. Closed loop offers some great advantages over normal ( no lost steps, higher torque and quicker response and acceleration) but at some additional cost.
Over kill for an X-Carve ? I don’t know probably it’s a personal decision.
Cheers Martin

Your description of closed loop steppers is what I thought servos (the real kind, not the hobby kind) were. What’s the difference? Is it that you tell a closed loop stepper to step and it tries to do it and lets you know if it gave up, and a servo you tell it where you want it to be and it keeps trying to get there?

@StevePrior that’s the idea: CL steppers try to bridge the gap between OL steppers and real servos by “stealing” the servos feedback function while maintaining their stepper characteristics.

@JustinBusby great analysis, dead-on to the point. I have very few things to comment.

The #1 criterion for picking a motor is its torque curve. No matter if it’s OL stepper, CL stepper or servo. #2 is if the price is justified. (Unless the application calls for closed loop all the way).

As mentioned in the beginning, this thread appeared after a supplier posted a $400~$600 product and I thought to notify potential users of an $160 alternative. Interestingly, the post has been deleted from the original thread !!! So, let me post it here again:

To begin with, I started researching CL steppers for one reason I mentioned earlier. I wanted to upgrade to more powerful motors but also wished for a way to protect my (then) dual-Y machine from a loss of sync in Y. With more powerful motors the effect of such loss of sync could be very costly (in t and/or $). The fault output of such a system was one way to solve this problem. I have since switched to a single Y and saved on complexity.

Of what you wrote, the only thing I’m uncertain of is whether there is a chance for the controller and driver to fall out of sync. I presume that in a sequential system timing problems must be already solved. Conceptually I’d think with some sort of buffering, but I have no idea of a motor driver’s internals.

One idea would be to implement you own logical OR circuit and in case any of the fault signals goes off to cut the common enable signal, which effectively kills all the motors.

You could tie the fault signal to the door pin which could then initiate a parking routine so you could check things out.

Personally, I flagged it as spam considering the guy joined literally just to post a link to his own product. It’s definition spam and against the community guidelines. I flag every post when it’s obvious the account was created for the sole purpose of linking to ones own product. Trying to help maintain a healthy community. For the record, I have no issues with vendors posting links to their products, but they need to participate more in the community than just self serving their own promotion.

There’s always a chance that things fall out of sync when they don’t talk to each other. Conceptually, I’m sure the motor driver loop runs at a frequency high enough to ensure that it can do its adjustments as needed but that would need to be much higher than the open loop frequency controlling it.

For instance at work, I work with a mechanically steered device. The motor control loop runs at X kHz while the main loop runs at 0.2X kHz. This allows for the motor control loop to do its job while also allowing for outside system control. That product has 2 different closed loop systems running but the primary controller has feedback from the motor control loop so it works.

As for buffering, I’d hope that wouldn’t be the solution to the problem because now you’re introducing more of a latency aspect to the system and yea…let’s hope that isn’t it.

Always a concern with a dual driven axis and the beefier the motor, the more likely chance to have something go bad.

1 Like

Oh my, so am I re-promoting spam now? :smiley:

It’s ok, it was the reason to start a very interesting discussion and I believe it does not harm as an extra reference. Thanks for your insight!

1 Like