3D printing an Arduino-controlled stepper motor

As a way to help teach others how stepper motors work, this Maker designed one of his own. 

Normal DC motors are fairly easy to use. Connect the propper voltage across the positive and negative leads, and one of these motors should spin. Stepper motors, however, are somewhat more complicated, both in how they are controlled and how they are constructed.


Maker “Proto G” decided to not just learn how to control one of these mechanisms, but actually built one from scratch. To achieve this, he 3D printed a stator (body of the motor) as well as a rotor that he could attach six permanent magnets to. These magnets were then sequnetially pulled by eight electromagnets on the outside, each made out of a nail wrapped with 25 feet of wire. You can see his hand drill wrapping process at around the 1:30 market in the video below.


Control is handled by an Arduino Uno (ATmega328), along with some other electronic components, nicely enclosed in a project box. The motor is turned by energizing the electromagnets in a counterclockwise direction to spin the rotor clockwise, and clockwise to spin in the opposite direction. It is capable of 15-degree full steps, as well as 7.5-degree half steps, accomplished by energizing two pairs of coils at the same time.

As linked toward the end of that video, Proto G has made a version 1.1 version of his motor with a NeoPixel LED ring to show which coils are activated. The results are visually quite interesting, though the video also notes that he’s working on a second version!

Interested? You can check out the entire project on its Instructables page here.

1 thought on “3D printing an Arduino-controlled stepper motor

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 )

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