3D Printed DC Motor




Introduction: 3D Printed DC Motor

About: I like bikes and being crafty. I've dabbled in 3D printing and microelectronics.

I designed and 3D printed a Brushless Direct Current (BLDC) motor, and used an Arduino to control the motor. All parts of the motor, excluding magnets, solenoid wrapping wire, and hall effect sensors, were printed with a Makerbot Replicator 2. The video shows the completed working motor.

This instructable is available as a pdf here along with cad files and the program for motor control.

Motor control program for arduino:


Feel free to use the files, comment, change the design, or do whatever you please with this!

Step 1: Materials and Tools

A 3D printer, an arduino microcontroller, and access to basic electronic tools like a multimeter, an oscilloscope, a power supply, and electrical components are necessary for this project. The complete list of parts and tools I used.

  • Makerbot Replicator 2
  • CAD software - Google SketchUp - MakerWare
  • Cordless Drill
  • Multimeter
  • Oscilloscope

Mechanical Parts

  • PLA plastic
  • ~100 meters of AWG 26 copper magnet wire for solenoids
  • 8 X N48 1/2 by 1/8 inch neodymium disc magnets


  • Arduino Uno Breadboard - connection wire
  • Alligator Clips
  • 12 V battery supply - 8 AA batteries in series


  • L6234 3-phase motor driver IC
  • 3 X SS411A Hall Effect Sensors
  • Resistors
    • 3 X 120 kOhm
    • 6 X ~400 Ohm
    • 1 Ohm
    • 100 kOhm Potentiometer
  • Capacitors
  • 100 uF
  • 330 nF
  • 100 nF
  • 10 nF
  • 2 X Diode

Table 1 shows the cost to build the motor. Electrical components such as resistors and capacitors were not included as the cost was negligible relative to the total cost of the motor. The total cost to build the motor, excluding the Arduino microcontroller and the batteries was $27.71. It should be noted that cost reduction was not a top priority, and optimization could result in a reduced cost of production.

Step 2: Motor Design

Design specifications for the brushless DC motor were established based on the principle that the motor should be easy to construct with readily available parts, and should provide qualitative performance similar to many commercially available DC motors, such as those used in small electric fans.

The motor was designed as a 3-phase, 4-pole brushless DC motor with 4 - N52 neodymium magnets on the rotor, and 3 wire wrapped solenoids connected to the stator. The brushless design was chosen because of the increased efficiency, reduced number of mechanical parts, and lower friction. The N52 magnets were chosen for their strength, price, and easy availability. Brushless motor control is discussed further in the ‘BLDC Motor Control’ section. Table 2 shows a comparison of brushless and brushed DC motors.

The solenoids are powered at 8-12 volts and controlled by an electrical switching circuit. 3 hall effect sensors will provide location information telling the circuit when to perform commutation.

The following equations were used to estimate the performance of the motor and therefore create the initial motor design.

These equations are messed up if you want to see them take a look at the pdf linked in the intro.

The force between two magnets separated by some distance can be roughly approximated by the following equation: F=BmAmBsAs/4g2

where B is the magnetic field density at the surface of the magnet, A is the area of the magnet, and g is the distance between the two magnets. Bs, the magnetic field of the solenoid is given by: B=NIl

where I is the current, N is the number of wraps, and l is the length of the solenoid. In the motor the max torque was estimated as: t=2Fr

where r is the radius, chosen to be 25 mm.

Combining these equations a linear expression relating the output torque to the input current can be obtained for a given solenoid geometry. f =2rBmAmAsN4g2lI

The desired torque constant was chosen to be 40 m-Nm/A based on the desired performance relative to other available motors [2].

Step 3: BLDC Motor Control

BLDC motor control requires an electronic control circuit. To rotate the BLDC motor, the windings must be energized in a defined sequence depending on the position of the rotor. Rotor position is sensed using Hall effect sensors embedded into the stator. Figure 3 shows a block diagram of the BLDC motor control scheme.

The Hall sensors, which are embedded into the stator in line with the three motor windings, provide a digital output which corresponds to whether a north or south pole is closest to the sensor. Based on this digital output, the microcontroller provides the commutation sequence to the motor driver, which energizes the corresponding windings. Each commutation sequence has one of the windings energized to positive voltage, one to negative, and one is unenergized. The commutation sequence consists of six steps which relate the Hall sensor outputs to which windings should be energized. An example for clockwise rotation is given below in table 3.

Step 4: Mechanical Design

The final design consists of 4 distinct parts; the bottom enclosure, rotor, top enclosure, and solenoids, shown in figure 4 below.

Figure 4: (a) Bottom enclosure (b) Rotor (c ) Solenoid (d) Assembled motor (e) Top assembly. All parts are displayed in the orientation in which they are printed. The bottom enclosure, shown in figure 4 (a), makes up the bottom cap of the motor. The rotor, shown in figure 4 (b), contains the 8 magnets, 4 used to drive the motor and 4 used to provide position data to the hall effect sensors. The rotor slides onto the bottom enclosure in a journal bearing style as shown in figure 4 (d).

The top enclosure, shown in figure 4 (e), fits over the rotor and couples with the bottom piece to enclose the motor. The top enclosure contains the 3 hall effect position sensors, as well as triangle cutouts which allow for the solenoids to snap into the enclosure.

The solenoids, shown in figure 4 (c), have triangles placed in their center to allow them to be lined up with the holes in the top enclosure, which themselves are vertically lined up with the rotor magnets.

Step 5: Printing

All of the parts previously described were printed on the Makerbot Replicator 2. The parts can be printed all at once, and wide variety of printing parameters will most likely lead to satisfactory results. The final product was printed in clear PLA plastic at 20% infill with a 0.20 mm layer height.

It was found through trial and error that pieces meant to join together without sliding such as the top and bottom enclosures should be printed at 0.25 mm added on all sides, while pieces meant to slide freely such as the rotor should be printed at 0.4 mm space on all sides.

The magnets and hall effect sensors were inserted into assembly by designing a correctly sized internal void in the appropriate place, printing to just below the top of the void, pausing the print and inserting the device, and then continuing the print. The appropriate pause heights are given in table 4 below.

The 3D printed pieces can be removed from the Makerbot, and can be fit together after removing excess plastic from the raft. The pieces should fit together smoothly without much effort.

Solenoids The solenoids require the most post-processing. Each solenoid should be wrapped ~400 times with 26AWG magnet wire. This process can be expedited by turning the solenoids on a drill. Make sure that each solenoid is wrapped in the same direction so that the resulting electromagnet is of the same polarity. Once the solenoids are prepared they should be snapped into the top enclosure. Superglue can be used here to reinforce the connections.

Step 6: Electronics

The circuit components should be wired together according to the following schematic. VCC for the L6234 motor driver can be anywhere from about 7 V up to 42 V, but I would recommend running this motor at no higher than 12ish V.

Step 7: Control Software

The program written for arduino to control the commutation sequence can be found at https://github.com/pi-track/3Dmotor. The program was adapted from this instructable.

Step 8: Future Work

Future improvements to the motor can be broken down into 4 main categories; mechanical optimization, efficiency improvements, control improvements, and applications. The first step to any future work should be to perform testing on the torque-speed and efficiency characteristics of the current motor.
The control of the motor could be implemented using a hardware approach rather than a software approach, which would significantly reduce the cost and size of the implementation. A simple description of how this could be accomplished is discussed here - https://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/step12/An-Alternate-Hardware-Based-Approach-to-Commutatio/

The mechanical design of the motor has many areas where it could be optimized. The solenoids could be made to simply snap into the body of the motor. The motor could be reduced in size significantly. The position magnets could be vastly reduced in size to reduce the moment of the rotor. The motor design could potentially be parameterized to be printed at a number of different sizes.

The efficiency of the motor could be optimized by examining the torque-speed characteristics at a range of applied voltages.

If a fully optimized 3D printed motor could be parameterized to be printed at a number of different sizes and ratings, the applications would be very wide ranging.

Step 9: Sources/Further Reading

Here is my evernote notebook with lots of articles and links that I researched while doing this project. https://www.evernote.com/pub/pi_track/seniordesign

Some important sources.

[1] Brushless DC Motor Fundamentals - Padmaraja Yedamale - http://electrathonoftampabay.org/www/Documents/Mo...

[2] Understanding DC Motors - http://www.me.umn.edu/courses/me2011/arduino/tech...

[3] http://www.me.umn.edu/courses/me2011/arduino/tech...

[4] http://www.me.umn.edu/courses/me2011/arduino/tech...

Be the First to Share


    • Metal Contest

      Metal Contest
    • Organization Contest

      Organization Contest
    • Micro:bit Contest

      Micro:bit Contest



    4 years ago

    Have you characterized the motor in terms of Kd, Kv and so on?


    Reply 4 years ago

    Sounds like a good follow up project!


    5 years ago

    Excellent sir, well done indeed!


    6 years ago on Introduction

    Hi Pitrak,

    it's interesting to prototype robots with specific sizes of motors. I would like to test it but the link to the ZIP file with pdf and 3D files is broken.

    Please could you send a new link to the archive?


    Reply 6 years ago on Introduction

    I updated the archive link location.

    Here it is: http://patrickeells.com/3DPrintedMotorFiles.zip


    7 years ago on Introduction

    I had this crazy thought:

    I wonder if the coils for the motor could be created by printing a pattern on paper with conductive ink and then winding the paper into a tube?


    7 years ago on Introduction

    well done, it's beautifull.

    I'm an electro technician from Belgium with a Velleman printer K8200. I also programm AVR 's.

    I use Autodesk Autocad to design my printings.

    So I also want to make such a motor , I have some ideas for improvements in the design to.

    Can you contact me at my e-mail ?


    7 years ago on Introduction

    Truely awsome, hats of to you my friend, How about you follow this up with a stepper motor design to replace a NEMA 17 the entrie RepRap 3D printer community would be indebted to you forever :-)


    7 years ago on Introduction

    I just want to say thanks for being a pioneer in DIY motors. When I looked into this months ago, there was next to nothing available for anyone who wanted to design their own motor. Thanks for putting this out there!


    7 years ago on Step 9

    Great job, this is a good example of where 3D printing is going. This type of "on demand" printing is going to change how industrial repair and logistics will be done in the future.


    7 years ago

    awesome!!! hand made motors rules!!!


    7 years ago

    wonderful project ..though little complex in mechanical but in general a nice and lovely


    Reply 7 years ago on Introduction

    I agree, I would love to simplify it further in the future!