Adding closed loop control to your 3D printer will put an end to missed steps


A new solution that’ll keep your print out of the trash.


When using a 3D printer, or CNC machines for that matter, just the littlest missed step when moving the toolhead can ruin a print. And if that occurs, the entire layer and every layer after will be slightly off. Fortunately, Maker  hopes to solve that problem with his closed loop control of DC motors.

medium_2014-12-31_20.07.10

A majority of printer firmware use an open loop control system in order to move the motors around. If a few steps are missed, the firmware loses track of where the nozzle is supposed to be — an issue that Sánchez’s new solution hopes to prevent by adding a DC motor, an optical encoder and an Arduino Pro Mini (ATmega328) to a 3D printer. Meanwhile, the Arduino is responsible for receiving step and direction commands from the printer controller, while the controller itself takes care of ensuring that the motor gets to its necessary location.

The entire build is heavily based on a similar build called ServoStrap, but revolves around two inputs named STEP and DRI that control the changing of the target position. As Sánchez demonstrated in the video above, whenever the motor misses a step, the X and Y axes can be forcefully moved in another direction, while the ATmega328 based ‘duino makes sure the print head returns to its proper position.

Interested in learning more? You can find a detailed breakdown of the Maker’s closed loop solution here.

2 thoughts on “Adding closed loop control to your 3D printer will put an end to missed steps

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s