Smart Stepper

Open Source Closed Loop Stepper Motor Controller!
Turns your Stepper Motors into Smart Servo Motors

Similar projects worth following
The Smart Stepper is a closed loop controller for stepper motors.

Designed for up to 35V +/- 2A
14bit rotation encoder (360 degree absolute encoder)
Typical positioning accuracy of 0.05 degrees
Step, Dir, Error, Enable input for plug and play with existing controllers (smoothie, Marlin, grbl, etc)
LCD and buttons to help with calibration
LCD showing speed and error
Supports up 256x microstepping, recommend 16x.
Typical unloaded speed up to ~700RPM

Hardware available from:

Firmware on Github:


We have new hardware design as of 3-16-2017! The new hardware includes a buck regulator to power board from the motor voltage. Additionally it has an enable pin and level sifting on all the IO pins. Check it out at

FW 0.11 has been pushed to Github

- Fixed a bug where motors were only getting half current

- Fixed an issue with noise in the calibration -

- Added predictive phase advancement for increased speed

FW 0.09 has been pushed to Github

- Added a planner for stand alone controller application you can move with constant velocity

- Cleaned up and documented the command line interface

FW 0.08 has been pushed to github.

- LCD menu is functional

- Added support for velocity PID mode

- Added enable pin support and !Enable

FW 0.06 planned features 12-8-2016

- Improve LCD menu to allow access to menu any time and break out as own module

- Add motor parameters to flash (step size, wiring direction, desired rotation direction for dir pin polarity, etc)

- Add protocol between host (Marlin/smoothie) and Smart Stepper such that host can update parameters on fly

- Allow the Error/Enable pin as bidirectional open collector type of signaling system.

- Add the velocity PID control loop

- Review option for a speed limit system

- Continue work on the relay tuning and auto tune features.

- As always if you have any feature requests or comments email me or post a comment at

FW 0.05 updates

The pipeline read of the AS5047 has been fixed, this has increased the loop speed of the control loop such that control loop is around 120us. This also allows the control loop speed to be increased to 6kHz.

The mode command has been added. This allows the user to switch between open loop, simple control loop, and positional PID control loop modes. More control loop modes will be added.

Added support for the Mechaduino hardware

PID parameters are stored in flash as floating point but in code used as scaled fixed point values.

The LCD code will be updated to show which control loop mode the system is operating in.

As always if you have any feature requests or comments email me or post a comment at

FW 0.04 Updates 11-27-2016:

I have update the LCD so the position shown is absolute desired motor position, hence two rotations from start is 720 degrees

The command line interface has move command and readpos commands, which in closed loop operation will move to desired location. For example move 720 will move the motor two rotations from the starting location.

The move and readpos are great if you want to make playback functionality. For example if the NZS is connected to a robotic arm you could readpos as you manually move the arm then you could play back that movement by using the move command.

The firmware also has improved the critical section handling of the firmware.

here is a video:

  • New Hardware

    Misfittech04/20/2017 at 11:30 0 comments

    Some smoothie powered boards do not have enough spare electrons to power multiple smart steppers. So I finally gave up and shoe horned in a buck regulator on the board. While I was in there I went ahead and added a dedicated enable pin with level shifting and level shifting on the TX/RX pins as well.

    Of course the NEMA 23 boards already had these options as well..

    We are also looking at creating a lower cost version of the board without the connectors and LCD populated.

    All smart stepper orders will be shipped with new hardware, so order now.

  • Motion Planner

    Misfittech01/11/2017 at 12:48 1 comment

    Just released FW 0.09 with a motion planner.

    The next steps are to implement a s-curve route planner. The basic thoughts are that the user can provide issue a an s-curve move command like "s-curve 360 1.2" which would move to angle 360 with an s-curve and take 1.2 seconds to get to destination. However I am open to suggestions.

View all 2 project logs

Enjoy this project?



wrote 01/13/2020 at 13:54 point

Can I debug this board with Jlink?

  Are you sure? yes | no

Andrew wrote 01/21/2018 at 19:46 point

Just installed 4 of these on my Shapeoko 2 NEMA 23's.  Haven't ran any cuts yet, but was able to crank acceleration and top speeds WAY up!  Really well thought-out product.  Definitely recommend the LCD panel add-ons.

Couple of things for other n00bs like me:  Only hook up power to calibrate (no control wires).  If you fail calibration, do a factory reset to clear out the bad cal table. Remember what microsteps you used to set up your steps/mm and make sure to match it on the NZS!

Previously I had to keep my z axis very slow (low acceleration and low top speed) to keep from missing steps, even during jog or home cycle.  I was able to match the acceleration and top speed of the X and Y axes with the Smart Stepper and never missed a step (according to my handy dandy ruler).

Such an awesome project, wish I had found it years ago.

  Are you sure? yes | no

trapshooter117 wrote 05/14/2017 at 05:47 point

I have a few more questions that I would like to ask can you send me a PM or equivalent? I would really like to know more about the design and your website didn't appear to have any way to create a new account or contact you. Thanks

  Are you sure? yes | no

Misfittech wrote 04/20/2017 at 11:21 point

We are shipping a 3.2A version for NEMA 23 motors now.  

  Are you sure? yes | no

Misfittech wrote 12/21/2016 at 18:42 point

As I am sure you know, I am working a NEMA 23 versions of the device with more power!

Check out the website for more details

  Are you sure? yes | no

RDChilders wrote 12/10/2016 at 15:24 point

I am very interested in how this turns out. I want more power like you are suggesting. I want more user feedback like you are suggesting. I want to make the Mechaduino more user friendly like you are suggesting.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates