Introduction: 600 Watt, 3d-printed, Halbach Array, Brushless DC Electric Motor

About: I was born in Zurich, Switzerland, grew up nearby. After finishing my studies in Electrical Engineering at the ETH in Zurich with the masters degree, I was working as a software developer - initially in semico…

This is a very powerful, 3d-printed brushless DC electric motor. It has 600 Watts, and performs with more than 80% efficiency. The main components like rotor and stator can be printed with a common FDM-printer. Magnets, copper wire, and ball-bearings are ordinary components. The magnets of the rotor are arranged as Halbach Array. The motor runs with a standard ESC widely used in different RC-applications (plane, drone, car).

Max. power (tested)           600 W
Nominal Voltage                30 V
Nominal Current                20 A
Kv                            255 rpm / V
Efficiency (at nominal power)  80 %
Total Weight                  900 g
Diameter                      105 mm
Length (without Shaft)         85 mm
Shaft Diameter                  8 mm

The motor is a redesign based on the learnings from the makeSEA Motor. For the design I've used Fusion 360, for 3d-printing Simplify3D, Ultimaker 2, and Makerbot Replicator 2x. The referenced videos above show additional information: general demo, building and assembly instructions.

The required hardware (magnets, copper wire, ball-bearings) is available on eBay or AliExpress for roughly $50 (USD). I hope that you also want to support me and my work: I'm selling the STL-files for your 3d-printed motor for $10 (USD). Links to all individual components are provided in the subsequent instructions steps.

I’m really curious to see your applications, comments, and ideas.

Step 1: Purchase Hardware, Parts-List

To get started, you need to purchase some hardware. The hardware isn't very exotic, and you maybe can find it in your local hardware store. I bought most of it from AliExpress, but other online stores like eBay or McMaster are selling these products as well.

Depending on your application you should prepare M3 Bolts and Nuts, Washers, connecting Cables, Heat-Shrink, and Plugs. As tools you need a decent drill-press, a solder iron, various screwdrivers, and a little scale. Make sure your 8 mm drill-bit is in a good shape.

Note 1: The sizes of the magnets indicated by the sellers are a nominal values. In reality the magnets are a bit smaller. The 3d-design of the rotor is optimized for the real size (large magnets: 39.2 x 9.7 x 3.7 mm, small magnets: 19.2 x 4.7 x 2.8 mm). In doubt, contact the seller before ordering.

Note 2: For documentation reasons I'll keep the links for buying the hardware in the list above, even if the product is sold out. Here are some alternate links (no guarantee, if 100% compatible): Magnets 40x10x4

Note 3: When you’re doing the first test runs, keep an eye on the rotation speed - especially, if you’re using different materials. Better start with a lower voltage battery. If the motor rotates too fast, it could disintegrate, and fast flying debris can cause severe injuries. The expected rotation speed, when the rotor breaks is 15’000 rpm. The suggested maximum rotation speed is 8’000 rpm. At that speed the internal forces are almost a factor of 4 below the catastrophic limit.

Step 2: 3d-print the Main Components

Basically the motor consists of 3 main components, whereas each component is divided into two halves. There is the rotor, the stator core, and the stator mount. All parts can be printed with 0.15 mm layer height. Except of one part, there is no support material needed.

The files can all be purchased and downloaded from makeSEA. Please note, that you must be logged in (registration is free) in order to get the files.

Component                 Material  Layer    Shells   Infill   Support
----------------------------------------------------------------------
Halbach Rotor A 8mm.stl   PETG      0.15mm   4        60-80%   No
Halbach Rotor B.stl       PETG      0.15mm   2        50%      No
Collar 2x 8mm-13.stl      PETG      0.15mm   3        70-90%   Yes
Stator Mount A.stl        PETG      0.15mm   3        70-90%   No
Stator Mount B.stl        PETG      0.15mm   3        70-90%   No
Washer M50 0_75mm.stl     PETG      0.15mm   2        50%      No
Stator Core A.stl         mPLA(*)   0.15mm   2        95%      No
Stator Core B.stl         mPLA(*)   0.15mm   2        95%      No

(*) Magnetic PLA from Proto-Pasta

The ROTOR with the slots for the magnets is the largest part. The second part of the rotor is like the lid of a jar, and holds the magnets in place. The third smaller part of the rotor named “collar” is needed to firmly lock the shaft to the rotor. The rotor needs to sustain a high centrifugal forces, hence I recommend a material, which is strong and not brittle. The shaft collar is the only piece, which needs to be printed with supports enabled.

The STATOR CORE is the winding form of the copper wires. It consists of two symmetrical parts. I recommend to use Magnetic Iron PLA from Proto Pasta. PLA has a problem at higher temperatures, but the metal powder not only helps to increase the magnetic flux, but also helps to dissipate heat.

The STATOR MOUNT is also divided into two halves, it firmly locks the stator core, and allows to mount the motor on a chassis. All ball-bearings sit on the stator mount, and it finally needs to absorb all the forces from the motor (vibrations, torque).

Accessory Components

Since it takes several hours to print the rotor, I recommend to first print a small section, fit in the magnets, and tune the print-settings if needed. There is also a spool, which is very useful for the winding work. And there is my "WirePusher" - a tool that looks like a degenerated spatula.

Component                            Material  Layer   Shells  Infill  Sup
--------------------------------------------------------------------------
Halbach Rotor A Test Magnet Fit.stl  PETG(*)   0.15mm  4       60-80%  No
Spool Top 40mm.stl                   PETG      0.1mm   2       30%     No
Spool Bottom 40mm.stl                PETG      0.1mm   2       30%     No
Wire Pusher.stl                      PETG      0.1mm   2       50%     No

(*) Use the same settings as "Halbach Rotor A.stl"

The material settings for these tools is less critical. You probably can print them also with PLA or ABS.

Step 3: Clean-up, Preliminary Assembly

After all parts are printed, they temporarily should be assembled without the copper wires and the magnets. Most likely there is some work required to fit all parts together.

Use a drill-press to adjust the holes for the shaft and screws. Lubricate the drill-bit, and drill at low rotation speeds - cut and not melt the plastic! The 8 mm bore in the rotor and the collar needs to drilled very careful - it has to be perfectly straight, or there will be a potential problem with a very bad balanced rotor.

Press-in all the ball-bearings. If it’s too loose, you can add some kapton-tape (don’t use painters tape, because it will be flattening and loose its effect).

Fix the nuts on one end of the rods with thread-locker glue.

Push the two halves of the stator cores onto the stator mount, and align the teeth-headers. Temporarily fix them with painters tape for later winding work.

Also check, if the rotor can freely spin, and doesn't touch the stator.

Step 4: Prepare the Wiring

Enamelled copper wire with 0.45 mm diameter is needed. 6 strands are combined into a single cable. It needs to be 5 m long. Twist it 20 to 30 times, and wind it up onto a small spool (provided as 3d-printable accessory component). The copper of one spool will weigh roughly 50g. 3 spools are needed for winding the 3 phases.

I recommend to wire the motor with the wye-configuration, hence the 3 terminals of the cables can already be soldered together, and isolated with heat-shrink. In my tests I've measured quite high circulating currents for the delta connection, causing unwanted high losses. Nevertheless, if you want to experiment with delta- or wye-configuration, keep all the terminals unconnected.

The illustrations show the 3 phases coloured in yellow, red, and blue. The cables are placed with alternating phase and direction into the slots. A single phase consists of 9 smaller coils arranged around the stator.

Step 5: Winding the Stator Core

Phase A: Take the first cable and place it into a slot which has an elongated tooth-head. Fix the loose beginning with some painters tape. Bend the cable into the direction suggested by the tooth-head, skip two slots and place it beneath the neighbour tooth-head into the third slot.

Use a piece of wood or plastic and tightly push the copper wires into the slots. Never use metal tools like a screwdriver, because it damages the isolation. Better use my 3d-printed “wire-pusher”.

Wire the cable back to the slot, where you’ve started. The first turn of the first coil is now completed. Repeat this procedure and make 3 more turns. With the last turn, place the remaining cable inside the stator. It will stay there until the next round.

Phase B: Repeat exactly the same as with phase A, but start with 2 slots offset. The overlapping wires help to fix the wires beneath. When done, also put the spare cable inside the stator.

Phase C: Redo the same pattern again with the third cable.

Great! 1/9 of the winding work is now finished. The rest of the work isn’t much different. Get the spool of phase A out of the interior of the stator, and just continue. Then do phase B, then C, and so on.

When you get to the very last coil of phase C you will realise, that there is something fishy. The cables need to be wired beneath the first coil of phase A. Widen the space with a wooden toothpick, unroll the remaining cable from the small spool, and start weaving!

The result of the weaving work not only looks great, but it also secures ALL the cables.

Step 6: Finish the Stator

Now it’s time to insert the stator mount into the stator core. Feed the 3 begins and the 3 ends of the cables through the holes. You probably need to bend the windings outwards in order to avoid jamming them between stator core and stator mount.

Make sure, the two smaller ball-bearings are well inserted. Also insert the 4 threaded rods with the nuts glued on one side. Be careful to not damage the isolation of the copper wires.

If you soldered already the cables for the wye-configuration, there are only 3 wires to feed through the holes. For finishing the wires, you need to solder some connectors, and protect them with heat-shrink.

Well done! That was certainly the hardest part of the motor.

Step 7: Select and Sort the Magnets

As next, we like to insert the magnets into the rotor. The problem is the variation of the quality of these magnets. They are differently strong and heavy, and this could cause a badly balanced rotor. Therefore we’re going to measure the weight and the force of all magnets first.

Our main tool is a little scale. The absolute accuracy is not as important, but repeatability needs to be good. When measuring magnets with a scale, we have to be careful to not disturb the result by magnetic components of the scale itself. Also avoid any magnetic objects on your desk. Even a screw hidden inside the table could corrupt the numbers. A wooden bar helps to move the magnet away from the scale, and with the law of the lever, the full measuring range of the scale could be used.

Stick all the magnets on an iron bar. Orient all of them with the same polarity, north or south upwards. Label the magnets with a number for later identification.

A simple construction helps measuring the force: Take a wooden bar, and put one end onto the scale, the other end on a block of wood which keeps the bar horizontal. Place the magnet on the bar, mark the exact position, and tare the scale. Push a ferromagnetic object beneath the magnet, also remember or mark that position. I found a piece of ferrite with a similar size like the magnets. Another chunk of metal, for example some nuts, will certainly work as well, but you need to be careful to not magnetise it during the measurements. Tare the scale for each magnet, before measuring the force. Make a note all the values.

For measuring the weight, I’m using a similar construction with a wooden lever like a seesaw. This time the scale needs to be tared only once without the magnet. Also write up all these values.

The plot illustrates the distribution of my magnets. The variation of the magnetic force is very significant but it has no influence on the centrifugal forces (in particular the small magnets are distributed over a wide range: the strongest magnet is almost 3 times stronger than the weakest magnet). However the variation of the weight matters. Imagine, if all the heavy magnets were located to the same half of the rotor.

Step 8: Insert Magnets Into Rotor

Now we’re going to insert the magnets with a special pattern. The picture shows the 18 positions of the slots for the main magnets. But these numbers are not the identification labels of the magnets. They indicate the weight. 1 is the location for the lightest magnet, and 18 is the location for the heaviest magnet. Certainly this sorting method isn’t the optimum for a perfectly balanced rotor, but it’s simple and helps to avoid the worst case.

First insert all the large magnets. Their polarity needs to be alternating. The label on the magnet helps to identify the correct orientation. If a magnet was inserted wrongly, you can easily remove it by pushing a pin through the hole from the other side of the rotor.

Secondly insert the small magnets with the same balancing method as the large magnets. When inserting them, the large magnets will help to find the correct polarity. If the polarity is wrong, the small magnet will float in its slot. Turn it around, and with the correct polarity, the magnet snap to its proper position.

Step 9: Final Assembly, Test-Run

The 3d-printed collar needs to be fixed on the shaft. In fact there is a smaller metal collar sitting inside. The set-screw needs to be quite long and extend into the plastic collar. The collar has 4 additional holes, which can be used to directly mount a pulley or a propeller. There is also a collar available with two internal metal collars. This version can transfer more torque from the rotor to the shaft (see last step with possible variations). Insert the shaft into the rotor and fit the collar into the rotor spokes.

Slide the completed stator into the rotor. Maybe you first try to close the motor without that large 3d-printed washer. If the stator doesn’t slide forth or back, you’re done. In my case the washer was needed - probably the clearance depends on the printer calibration calibration.

Turn the rotor by hand, and carefully listen, if there is some noise from cables, which are touching the rotor. Remove the stator again, and find the reason. Cables are maybe not properly in their slots. Maybe the cables are touching the air-sealing ring of the rotor (see highlighted spot in the drawing).

Basically the rotor is already well fixed when the lid is closed, but if there is a heavy load directly attached to the shaft, I recommend to fix another metal collar on the side of the stator mount.

I also strongly recommend to build a simple, wooden test-stand for the motor. The four threaded rods are used to fix the stator. Don’t tighten the nuts too much, because there is only plastic on the other side. If the nuts come loose while the motor is running, you should use locking nuts instead.

Connect the three wires from the motor to a regular ESC. I’m using my homemade arduino-based servo-tester for generating the control signal. It’s also a good idea to alternatively use an RC transmitter and a receiver - then you can do the initial tests from a safe distance. For the very first test you should really use a battery with a voltage much lower than the nominal voltage of the motor. The motor will spin not as fast, and in case something goes wrong, the damage is less severe. With 8 volts from the battery the motor should be slower than 2000 rpm.

Without a load the motor draws much less than 1 amp. I’m attaching a propeller and let it run in reverse direction, because I want to test the current and not the thrust. For this test I’m initially using again the small battery. Tests at low RPM with the small battery can safely be done indoor, but with the higher voltage from a bigger battery, I recommend to do the tests outdoor.

Step 10: Variations

Different Collars, 5 mm Shaft

There is no real standard for a shaft collar, so I’ve designed a few variations with a different outer diameter. Optionally the motor can also be constructed with a 5 mm shaft. Use the print settings recommended in the according instruction step above.

- Halbach Rotor A 5mm.stl (rotor for 5 mm shaft)
- Collar 5mm-13.stl (for 5 mm shaft, single metal shaft collar, 13 mm OD)
- Collar 8mm-16.stl (for 8 mm shaft, single metal shaft collar, 16 mm OD)

Winding Options

The nominal voltage depends on the number of turns per slot and the number of parallel coils. The maximum current depends on the copper wire section area, and the number of parallel strands and coils. The following table shows some suggested configurations matching with different batteries. The “8S LiPo” version is the configuration, which has been tested in-depth. It is used as a reference.

                  8S     6S     4S     3S     2S
---------------------------------------------------------
Wire Diameter     0.45   0.45   0.45   0.45   0.45   mm
Wire Strands      6      8      12     5      8      #
Turns per Slot    4      3      2      5      3      #
Parallel Coils    1      1      1      3      3      #
Total Wire Area   0.95   1.27   1.91   2.40   3.82   mm^2
Nominal Voltage   30     23     15     13     8      V
Nominal Current   20     27     40     50     80     A
Nominal Power     600    600    600    625    600    W

Wire Strands: When winding your first motor, it’s recommended to use less strands, because the work becomes substantially more simple. The downside is a declined nominal current and power. With more strands it’s more difficult to fit all the cables into the slots. Since I'd like to do more experiments with this motor, I've been winding another core and used 20% more copper wires. I guess that's the upper limit which fits into the slots. That motor still needs to be tested.

Parallel Coils: Decreasing the nominal voltage while maintaining the power is done by lowering the number of turns and increasing the total wire section area. Thick, rigid cables with many strands are painful to wind. It’s simpler to wire the coils in parallel with thin, flexible cables. In order to do this, start like suggested in the basic winding instruction, but already finish when the first third the slots is filled with cables. Prepare 3 new cables, start again with the regular winding pattern, and finish when the second third of the slots is filled. Do the same for the remaining third. Finally there are 9 leads exiting the motor. These leads are now soldered in parallel. The two drawings show the electrical scheme of the motor with the single, and the parallel coils.

PETG Stator Core

If the stator core isn't 3d-printed with magnetic PLA, the rotation-speed per Volt is 15-20% higher. Hence the operating voltage needs to be lower in order to not exceed the specified limit of 8'000 rpm. As a consequence the maximum power of the motor is also 15-20% lower. I don't expect any other disadvantage, when printing the core with a regular material. I'll do some tests later ...