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




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 ...

Design Now: In Motion Contest

First Prize in the
Design Now: In Motion Contest

2 People Made This Project!


  • Plywood Challenge

    Plywood Challenge
  • Plastic Contest

    Plastic Contest
  • Battery Powered Contest

    Battery Powered Contest

121 Discussions


Question 2 months ago

What kind of ESC would work best with this?


Question 2 months ago on Step 10

Why can’t their be an inner ring of magnets with opposite pole?


2 years ago

Hello Mr. Laimer. Could you clarify if it is necessary to cut the wire of each coil every 5 meters? I do not understand very well how I should prepare the wire to wind each phase. I understand that each coil carries 6 threads of 5 meters each and is cut at each end. is it like that? please excuse my ignorance. Thank you.


Reply 2 months ago

If you look into how brushless motors work, you will see several configuration types pretty much all of them use 3 wires (do not cut!) The wire you use should likely be coated copper therefore when going to every third stator( assuming 3 wire configuration) just jump over the other stators or wires and because the copper is coated ( usually clear and super thin coating,( you may not realize it is on there, ) but with the coating the wires won't short each other out even if they appear to be touching... This is my experience with building these types of motors... there may be other methods with uncoated wire, but I am not versed In how they work... Hope this helps someone... also be mindful of your wiring directional turns... clockwise or counterclockwise as this can make the motor useless until re-wound in the correct direction.


Reply 1 year ago

I dont undestand this either. Do I at any point need to cut the wires..?


Question 2 years ago

So i've been having constant issues with printing the Stator Core A and B with iron PLA, i've asked multiple people for remedies but the answer comes back that the model for whatever reason may be faulty. Is it possible to be re-sent just the Stator Core files?

Stator Core issue 2.jpgStator Core issue.jpg

Answer 2 months ago

Not sure if you are still building these or if you got it to all work out... as I have not seen the full designs I will have to guess that the pieces shown are supposed to be a single piece ? If those are just the stator that you wind the copper around, then you could probably get away with either gluing it together or if that is not an option get 4 or 6 m2 or m3 size screws made of some plastic like abs, nylon, etc.. long enough to go about half way through the non curved part, drill the hole just smaller than the screw for a friction fit connection... or preferably use an m2 thread tap if you have access to one.. depending on the head of the screw type you may have to shave it down or nearly off (leaving just enough to keep it tight), the better option would be to countersink the top just enough for the screw head. If you use any method to join these pieces be sure to do it with balance in mind... as this will be spinning very fast, any imbalance could shake it apart or explode it during high speed. ( this has happened to me before.. but i was using a much larger diameter stator and a heavy gauge wire with extremely strong neodymium magnets... the motor I blew up should have never been spinning as fast as it was, but as a warning, simple balancing and low revs would be a good idea for starting out. My motor blew out windows in a nearby cabinet and shot magnets into the sheet rock walls... ) please do not make that type of mistake... Either glue evenly or space the screws symmetrical for balance and take it easy at first to assess any wobble or vibration.

vignesh suvarna
vignesh suvarna

Answer 9 months ago

the problem is that the two parts are different entities and there is a surface parting them , either delete the surface or boolean unite them


2 months ago

This is pretty cool, I made a Hub motor with a very similar technique, didn't think to document it all back then... And I would have distributed for free... This is instructables after all... It is about doing things yourself, usually for saving money as well as learning... WOULD RECOMMEND making the files FREELY AVAILABLE... Especially for people just getting started with Cad Programs, and 3D Printing in general... this is alot for someone getting started... Especially to have to pay... If I can find my old files, I will make them freely available. I understand it cost you material and time to make these designs, but you know... It would be a nice gesture... I am an advocate for the new guys and beginners... Isn't that what this is all about? Being positive and constructive... Pretty sure that is part of the "BE Nice" Policy of instructables... IDK... Its just my opinion... Hopefully I will be able to find my old home built motor files and share them.


4 months ago on Step 8

Good afternoon! Quite an optimal solution and simple, probably I would also distribute the magnets. Of course, if it was possible to choose identical magnets from a large number, but this is an additional cost.


Question 10 months ago on Step 4

Hi, looking forward to build that thing. Why should those six strands be twisted 20 to 30 times?


3 years ago

Beautiful work.

I would love to see this adapted to build generators suited for wind turbines.

Best Wishes


Reply 3 years ago

I wondered what it would take to make a generator.


Reply 3 years ago

It works as a generator evenly well like the motor. The electric machine can stay unchanged, just a different electronics is needed.


Reply 10 months ago

Can you say what sort of power output this motor would produce when used as a generator? e.g. use 6 diodes to create a three phase DC bridge and then place a 100R resistor across the bridge to create a load. What sort of voltage would you get at say 600RPM?


Reply 3 years ago

I am not skilled in generator design. For wind applications I understand that low RPM generators are usually used to eliminate mechanical losses so that the generator is directly driven by the windmill. I'm also under the impression that generator startup force is important which may be due to the generator's cogging forces which would be multiplied also by any gearing if used. To use this motor as a generator without modification I believe would require maybe 50:1 mechanical gearing in order to provide 6k RPMs or so. Is it possible to optimize the design for low RPM?



Reply 3 years ago

You're right, a gearing is needed to get the 600W from this machine. If only a higher voltage is needed at a very low rpm, it is possible to use thinner wires with more turns per coil. I've done this for an earlier project: https://www.makesea.com/windpowerWriter


Reply 3 years ago

Thinner wire gets you the voltage, but does not get you the current. The power available from a generator is proportional to the square of the speed. The magic number to look for is voltage squared divided by winding resistance.


Reply 3 years ago

You can reduce the cogging forces in iron-based generators. (Ironless generators have no cogging forces). Do this by curving the magnets to reduce the harmonic field, and either skewing the slots or magnets by 1 slot end-to-end, or setting the magnets "off their correct positions" for short rotors.