Introduction: 3D Printed Stepper Motor

Picture of 3D Printed Stepper Motor

I recently came across this instructable of a 3D Printed DC Motor and I figured I could take it a stepfurther; Literally. I designed this stepper motor with eight electromagnets, six neodymium magnets, with a 3d printed rotor and stator housing. This is specifically a permanent magnet stepper motor capable of 15 degree full steps and 7.5 degree half steps. There are many different types of stepper motors but most of them work very similar to the one I have designed here. This is an educational display to show others how stepper motors work. I designed this to run on a 5-12VDC power supply so it will work with most USB power supplies.

I am also doing a giveaway on my Youtube channel. I will be giving away an arduino, transistors used in this project, and some switches. More details in the last step of this instructable.

If you like this project, please vote for me at the top.

Step 1: What You Will Need

Picture of What You Will Need

1. Six 1/4" neodymium magnets.

2. 608ZZ Bearing

3. Eight 8d 2-3/8" nails - Not critical what nails you use as long as they fit.

4. Magnet Wire - I used 0.315mm magnet wire but this is not critical.

5. Arduino Uno

6. Four Transistors - I used PNP transistors I had lying around, but you can use whatever transistors you want or MOSFETS as long as you make sure they can handle the current your motor will draw. Read the datasheet carefully for specific recommendations. On 5v mine motor draws about 1 amp and on 12v it demands about 3 amps.

7. 3D Printed Rotor and Stator

8. Glue

9. Electrical Tape

10. A compass

Step 2: Print the Dodecagon Rotor and Octagon Stator

Picture of Print the Dodecagon Rotor and Octagon Stator

Step 3:

Picture of

Use a compass to determine the poles of your magnets and glue the magnets with the north poles facing outward. If your magnets are strong enough, the compass on some smartphones will show you the polarity of the magnets.

Step 4:

Picture of

Press fit the bearing into the stator and then press the rotor into the bearing. I was pleasantly surprised how well the bearing press fit into the stator. When 3d printing, holes tend to want to shrink inward and end up smaller than expected so I usually oversize them a bit.

Step 5:

Picture of

Cut 9 pieces of wire to 25 feet and wind them with a drill. Use a compass and a battery to determine the configuration required to give you the south pole at the head of the nail. Use a marker or heat shrink tubing to mark the negative lead of your electromagnets. Wrap the sections of the electromagnets with electrical tape where they will come in contact with the stator housing. This serves two purposes. It firmly secures the electromagnets in place and also insulates the housing from any heat the coil may produce. The coil pairs draw about 1 amp with the 5V power supply I am using. The transistors I chose can handle using a 12V power supply that the coils draw about 3 amps from. The problem with the higher voltage supply is that if I leave it running for a bit, the coils start to get warm.


I designed this to run on a 5-12VDC power supply. If you decide to stray off the beaten path, use Ohm's Law to determine what size coils you want. V = I*R

Remember, the fewer windings on your coil, the lower the resistance is going to be. If you are not careful, your coils will pull more current than your power supply or transistors can handle and bad things will happen.

Step 6:

Picture of

Push the electromagnets into the stator until they're about 1/4" from the neodymium magnets. You can slide the electromagnets in and out as you wish, but I didn't want them too close because the nails will become magnetized much faster. That's the downside of using the nails. The motor will still work once they become magnetized, but it will be less efficient. Welding rods are a good alternative to the nails if you have some laying around.

Step 7: Solder Everything Together

Picture of Solder Everything Together

Wire up your coil pairs in series and connect them so that all the south poles of the electromagnets face inwards. The resistor I used in the schematic is a 1k resistor. The purpose of this is to prevent the digital pin from "floating" high when in the off position. Again, make sure to use a transistor capable of holding up to the current that your coils will be demanding.

Load the source code to you arduino and you're ready to go!

If you like this project, please vote for me at the top.

Step 8: Pay It Forward!

Picture of Pay It Forward!

I will be giving away an arduino, the transistors used in this project, along with some switches and jumper wires.

Rules for the giveaway:

Subscribe to my YouTube Channel, like this video and leave a comment on the video saying what you would like to see me build next. On September 1st I will randomly select a subscriber's comment and ship them out for free! Thank you guys for being such a welcoming community!


ihvan3535 made it! (author)2016-04-09

HEllo :) I did this circuit but its not work.Which transistor did you use in circuit?thank you.Good work! :)

Proto G (author)ihvan35352016-04-09

The schematic posted here is assuming you are using a PNP transistor capable of handle currents above 3 amps. You can use a MOSFET but you will need to wire it up differently. Make sure you completely understand how transistors work before hooking it up. Read the datasheet of all the parts you're using. They must be able to handle several amps. There are a lot of things that can go wrong with this project. It is not for beginners. Good luck.

ihvan3535 made it! (author)2016-04-09

HEllo :) I did this circuit but its not work.Which transistor did you use in circuit?thank you.Good work! :)

dicoy (author)2015-10-23

Is welding rod a better alternative than nails to avoid magnetizing? What would be the best choice for that?

Proto G (author)dicoy2015-10-23

There's no need in this scenario. Even if the nails eventually become magnetized, the motor will still work. Ferrite rods would be the optimal choice.

CrisC2 (author)2015-10-08

Great project. Wondering what you would need to increase the torque of this motor? And is there a special Arduino code?

DylanL4 (author)2015-08-27

You know what the next "step" is.... (sorry could help it)... to make a complete 3d printer using the 3d printed stepper motors...

tomatoskins (author)2015-08-24

This is awesome! Thanks for reaching out to me as I've been out of town and would have missed this. Great job!

Proto G (author)tomatoskins2015-08-24

Check out my latest instructable. I added LEDs to the motor to help visualize which coils are energized.

Proto G (author)tomatoskins2015-08-24

Thank you, I'm glad you like it! I'm making an axial flux stepper motor next. It will actually be strong enough to use in a future project!

gfalcone1 (author)2015-08-24

Great! Congratulation!

Proto G (author)gfalcone12015-08-24

Thank you!

bpark1000 (author)2015-08-20

Portescap made stepper motors by using jigs to hold all the parts of the stator in position while molten plastic was injected. This made a lightweight, inexpensive, rugged motor. (Unfortunately, after they cheapened the process, the plastic deformed with age and the motor jammed. Customers then became leery of the process.)

BrianT5 (author)2015-08-18

Great instructable! I have a basic knowledge of electromagnetism, so my question relates to the winding of the coils around the nails. You use an electric drill (great idea!), I see that the coils have a tendency to cross over one another during winding. How will this affect the strength of the magnetic field, do you think? I have seen this type of winding on cheap commercial motors. If it is worthwhile, I am thinking of setting up my hobby lathe to do the winding so that the windings are sequential with no random cross over. Thanks again for a great idea.

bpark1000 (author)BrianT52015-08-18

Crossing over of the wire in the winding has no affect on the magnetic field outside the internals of the coil (the fields of the crossings cancel) What counts is the number of turns, and the total winding resistance. The only affect would be a "practical" one (if the winding were so sloppy that you couldn't get as much wire in the space). That is not an issue in this motor as there is lots of space available, and the efficiency and the power density is not important in this demonstration motor.

bluebriant (author)bpark10002015-08-18

Thanks for the reply. If the fields cancel, then this would reduce the magnetic field?

bpark1000 (author)bluebriant2015-08-19

No. At least not the one that counts. When you have a wire in a helix carrying current, there are 2 magnetic fields created. One is along the axis of the helix, and powers this motor. The other loops around the cores (like the coil windings) and provides no useful purpose in this motor. Left-hand and right-hand wire helices produce fields that add up along the core, but cancel out the useless looping fields.

Proto G (author)BrianT52015-08-18

Thank you! I saw no noticeable difference in the coils that I carefully wound with no cross over and ones with cross over in terms of their magnetic performance. It is better, but not noticible at such low power.

zurkog (author)2015-08-19

I think it'd be cool (and educational) to stick 8 LED's near the tips of the electromagnets so that you can actually see which pairs are being energized.

Proto G (author)zurkog2015-08-19

Yeah, my second version will definitely include LEDs.

CFW (author)2015-08-19

Nicely done!

I've used it to explane to my students how magnetism can drive a motor and they understood it clearly.

Do continue the good work.

jashock (author)2015-08-19

wow this idea of printed motors could really go far i the technology field for ultralight otors

stephenfitton (author)2015-08-18

To make a simple small coil winder grab 1xstepper motor and 1xCD worm stepper motor,mount on parrelel board .Make chuck (CORE HOLDER) mount worm stepper 1 INCH APPROXIMATELY away from centre clear of chuck, fit detector on chuck for revolution counting tie motors back to Adunio .Run coil winding wire from opposite side around worm gear back to coil holder in chuck,apply a little tension then experiment with rotation matching of both on aAduino ,throw in reverse at appropriate spot,repeat. The rest is up to you

BrianT5 (author)stephenfitton2015-08-18

Interesting idea.

bpark1000 (author)2015-08-18

One thing you apparently do not have, is surge protection on the transistors. When a transistor turns off current in an inductive load, the inductance of the coil produces a voltage spike, which can destroy the transistor, and could also disrupt the Arduino. (Sit an AM radio next to the running motor tuned between stations. Do you hear clicks?) The current flowing in the coil, suddenly has nowhere to go, and tries to continue traveling through the now turned off transistor. You can put diodes across each coil (cathode on the Vcc end). This will clamp the spike by providing an alternative path for the inductive current, but will also slow the motor (at high speeds only, may not be an issue for this motor). You can also use diodes in series with zener diodes (rated at about your Vcc, and transistors good for at least twice your Vcc). This will allow running fast.

Proto G (author)bpark10002015-08-18

I don't need them because the back emf from the coils is rather low at 5V and I chose pretty beefy transistors that can handle 8A and 40V. I measured the back emf before I decided to omit the diodes and it was negligible at 5V. It is also worth a mention that you should usually use a current limiting resistor at the base of a transistor but in this case, the arduino digital pin doesn't supply enough current to damage the transistor.

Treknology (author)2015-08-18

I love the 3D printing and the motor! However, I'm forced to make suggestions, based on my seeing this as a demonstration item that would be found in a High School Science Lab:

1. Did you consider ferrite rods instead of the nails? You would eliminate the magnetism problem inherent in the nails.

2. After establishing a fixed input voltage, consider adding LEDs in parallel with each coil. This would enhance the project by showing which coils are active.

3. Is the Arduino really necessary? As your user interface only provides for direction and speed, would not a 555 Timer and a 4017 Decade Counter suffice? As you've gone to such an amazing effort to make the motor so simple, I find it odd that you chose a comparatively complicated solution for the controller.

PS: It looks just as good in the video.

Proto G (author)Treknology2015-08-18

1. Ferrite rods would be better but I wanted the parts to be cheaper/more accessible to the general public. The magnetism of the nails isn't really an issue here because this is only an educational display. The motor will still work once the nails have become magnetized, it will just become less efficient.

2. I have discussed this with others and was thinking of using an adafruit neopixel ring.

3. No, the arduino is not necessary but I have an abundance of microcontrollers on hand and I like to program.

Diyman31 (author)2015-08-18

this piece of work deserves more than a vote, you sir show 3d printers are not only solid structures to transfer motion and torque but to create them , they are capable of producing actuators in right hands like yours with the right design.

Second remix should be designing a 3-4 axis robotic arm with those :D would be revolutionary if you see the big picture. Almost fully 3d printed.

Thanks for such contribution. Hope you win the contest

Proto G (author)Diyman312015-08-18

Thank you for the kind words! They are definitely appreciated :)

Treker2 (author)2015-08-18


Proto G (author)Treker22015-08-18

Thank you, please vote for me in the contests!

ldabague (author)2015-08-18

Amazing job man! I sure voted for you!

Proto G (author)ldabague2015-08-18

Thank you!

xNerdiusMaximusx (author)2015-08-18

Dude! this is rockin! I would love to see this being used as the base for a laser scanner.

Proto G (author)xNerdiusMaximusx2015-08-18

Thank you! That would be pretty cool.

Hey Jude (author)2015-08-17

Really cool - love how simply this explains the science of stepper motors. I would have found this useful at Uni, but it's cool to see it now in hindsight! Great job! Voted :o)

Proto G (author)Hey Jude2015-08-17

Thank you! I really like your Card Rabbet Tool!

johanmoberg (author)2015-08-17

dont you need some kind of diodes on the coils against back emf?

Proto G (author)johanmoberg2015-08-17

That is a good point to mention. I don't need them because the back emf will be rather low at 5V and I chose pretty beefy transistors that can handle 8A and 40V. It is also worth a mention that you should usually use a current limiting resistor at the base of a transistor but in this case, the arduino digital pin doesn't supply enough current to damage the transistor.

tgall67 (author)2015-08-16

I really loved this instructable. I can't get enough if the instructables that teach you how something works, while you build it. I am trying to make a decision on either building a 3D printer or purchasing a 3D printer. Once I decide, this will be one of the first things I try when I have the 3D printer in my possession. Just an fyi - I tried using your link to subscribe to your youtube channel and it did not take me to your channel it just defaulted to my subscriptions page. It may be a problem on my end. I am going to go to youtube and try to search for your channel. I just did not know what your Youtube username is nor your channel name.

Proto G (author)tgall672015-08-16

Thank you. That's awesome, I'm glad you liked it!

That's weird, the link works for me on two different computers. Try this link:

tgall67 (author)Proto G2015-08-16

The new link you provided worked great. Thank you for the timely response.

printrbot932 (author)2015-08-16

Excellent.. i wounded how scaling it down a bit say 25% would work out?

Proto G (author)printrbot9322015-08-16

If you scale it down the nails and the bearing will not fit. You'd have to redraw the stator.

no3o5 (author)2015-08-16

Nice tutorial
might try it

fyi it's not a zz809 bearing but an 608zz

Proto G (author)no3o52015-08-16

Good call, I just grabbed it from my bin and read it upside down.

simonrafferty (author)2015-08-16

great Instructable. Stepper motors are so common - but very few people I suspect have any idea how they actually function.

Proto G (author)simonrafferty2015-08-16


PiotrS (author)2015-08-16

Good job m8 awesome explanation

About This Instructable




Bio: Electromechanical Engineer, Product Designer, Maker. I love to make prototypes and teach others in the process. I graduated from UCF and spent two years working ... More »
More by Proto G:ESP32 Clock Using WiFi, ESP-NOW, & CellularLevitating Platform1000W Portable Induction Heater
Add instructable to: