PCB Motor

A smaller and cheaper open source brushless motor.

Similar projects worth following
My open source PCB motor is a smaller, cheaper and easier to assemble micro brushless motor.

What unique about this motor design is that the stator is printed on a 4-layer PCB board. The six stator poles are spiral traces wounded in a star configuration. Although these coils produce less torque compared to an iron core stator, the motor is still suitable for high-speed applications.

The current prototype has a 3d printed rotor with a 16mm diameter.

My PCB-Motor is made from a 6-pole stator printed on a 4-layer PCB and a 4-pole 3d printed rotor. Its has an outer diameter of 16mm and is rated at 1 watt. 

I had this idea when I was trying to design a small compact drone. The PCB motor is much cheaper than other micro brushless motors and also easier to assemble. My goal is to make the rotor part of the BOM and mounted just like any other component on a PCB. 


PCB Motor V1.rar

Gerber Files and STL file of the first PCB-Motor prototype.

RAR Archive - 194.17 kB - 02/07/2018 at 22:54


  • 1 × 3D Printed Rotor
  • 1 × PCB Stator
  • 4 × Magnets (5mm diameter x 1mm thick)
  • 1 × Shaft (1.5mm diameter)
  • 1 × SMF681X-ZZ Bearing

  • IEEE Spectrum - “The Printable Motor.”​

    Carl Bugeja08/29/2018 at 18:09 0 comments

    My PCB Motor got featured on IEEE Spectrum! Check out their article bellow :)

    It will also appear in the September print issue as “The Printable Motor.” 

  • New PCB Soldering

    Carl Bugeja08/22/2018 at 22:05 0 comments

    Soldering of the new pcb is done! I still have to test all the components though 

  • New PCBs

    Carl Bugeja08/09/2018 at 20:06 0 comments

    The new PCBs have arrived! The rest of the components should be delivered by next week 

    The silkscreen on the coil traces looks a little crappy but its my fault for not checking the manufacturer's print resolution. 

  • PCB Motors HackChat

    Carl Bugeja08/09/2018 at 00:19 0 comments

    Next Friday there's going to be a HackChat on my PCB Motor! Join the event to ask me any questions on the project!

  • How i came up with the idea?

    Carl Bugeja07/15/2018 at 06:23 0 comments

    This is the drone concept that gave me the idea of trying to create the PCB motor and spherical folding propeller! Both of these projects need a lot more work and improvement to make this drone feasible but at least now I have a starting point :)

  • New PCB Motor with Driver

    Carl Bugeja07/12/2018 at 23:24 1 comment

    I finally ordered a new PCB motor with an integrated ESC. I have managed to package the circuit in a very small space,  30x16mm including the stator. For now I have ordered the same star winding configuration that i've used in the first prototype. I'll be ordering more configurations soon.

    The circuit basically consists from:

     Hall Sensor (US1881) to detect the magnets inside the rotor.

    • MCU (PIC16F1503) - I have shifted from the DSPIC33EP128 to the PIC16F1503. This MCU has less computational power (not much is required since I am no longer considering sensorless control) but is packaged in 3x3mm chip and is around $2 cheaper
    • 3-Phase Motor Driver (STSPIN230) - which is rated at 1.3Arms, and has several types of fault protection build-in.
    • A filtering circuit to supply the micro.

    I will upload all the source code and gerber files once the PCB arrives and verify its functionality. Keep tuned! 

  • Torque

    Carl Bugeja06/19/2018 at 23:49 1 comment

    So torque is the biggest weakness of my tiny PCB motor. This was measured it to be 0.9gcm.

    But it is something that can be improved. These are three ways how I tried to improve it:

    • Double Rotor - Some people in the comments suggested to try and use a double rotor. This will increase the magnetic field produced by the neodymium magnets and therefore will also increase the motor's torque. But in practice this was not the case and  it barely had any effect. The measured torque was 0.9gcm (the same as with one rotor).
    • Ferrite Sheet - This was used as a core to increase the strength of the magnetic field inside the printed windings. Two different shaped cores were tested. The uncut one gave a higher torque value and has increased it from 0.9gcm to 1.5gcm. The only down side of this is that It has also increased the pcb's temperature from 70°C to 90°C due to eddy current losses.
    • Delta configuration - Other simple way to increase the torque is by changing the configuration to a delta winding. This way the coils will be powered with a higher voltage, so it will also increases the torque and temperature (hopefully not by much). This approach was not tested yet.

    Check out the full tested video:

  • Update

    Carl Bugeja06/08/2018 at 22:35 1 comment

    A quick update on my PCB Motor prototype:

    • Dimensions - 16x17x5mm (excluding the shaft)
    • Weight - 1.6grams
    • PCB Stator - 6 Poles connected in a delta configuration, with 40 turns each with 4/4mil traces.
    • 3D Printed Rotor - 4 Poles
    • Bearings - Stainless Steel
    • Phase Resistance - 19.3 ohms
    • Power Rating - 1W
    • Maximum Temperature - 70°C (at 5V)
    • Maximum Torque - 0.9

    Improvements that I'm planning to test:

    • Torque
    • Temperature
    • Increase the winding's magnetic field strength by reducing the PCB thickness
    • Use ceramic instead of stainless steel bearings to reduce friction
    • Experiment with different trace winding's clearance and thickness. Increasing it to 5/5mil from 4/4mil will reduce the pcb's cost at low volumes. However, this would also enlarge the motor's diameter to reach same parameter's of the 40turn 4/4mil coil.

  • Thermal Testing

    Carl Bugeja05/27/2018 at 21:21 0 comments

    How hot is my pcb motor getting? With a direct 5v supply on the windings it reached a maximum of 70°C after 13 minutes of continuous voltage.

    How to improve this? For the next prototype I'm going to use more vias and a copper plane on all four layers to conduct heat on a larger area. 

  • Closed-loop Control

    Carl Bugeja03/27/2018 at 20:09 0 comments

    My plan for speed controlling the PCB Motor was to implement a sensorless back-emf speed controller, which works just like every other brushless ESC. It measures the time it takes to detect the zero-crossing point from the under-driven phase, and adjust the commutation waveforms according. However, during testing the back-emf generated in the windings of the PCB motor was a little weak.

    Plan-B is to use a hall sensor to implement the closed loop speed controller. This will be a little more pricey but will also include positional sensing.

View all 18 project logs

  • 1
    Step 1

    Its this simple:

View all instructions

Enjoy this project?



majolillo wrote 09/18/2018 at 18:21 point

Have you considered rebuilding to a switched reluctance motor instead of a bldc? My gut feeling tells me this could be done slightly cheaper and more efficient. What would be required:

- Keep the ferrite sheet in the back

- Ferrite core in each winding

- Replace permanent magnet with reluctance core patterns to match the amount of windings. Probably 3d printed in ferrite, any high permeability low conductive material. A pattern like one that is shown in the end of this video:

As for the required torque, you might want to consider a 3d printed planetary gear

  Are you sure? yes | no

Patrick Ryan wrote 09/06/2018 at 00:31 point

I am thinking about scaling this up in size and stacking motors and rotors to build a lighter and more efficient hub motor for one person electric vehicles.

  Are you sure? yes | no

warhawk-avg wrote 08/30/2018 at 08:41 point

Very cool..wonder if you could make a via large enough (between the coil via's) to slip a metal nail inside the coil to focus the electromagnetic force (say a thumb tack or rivet? [epoxy in]) very very cool design!

  Are you sure? yes | no

clatour007 wrote 07/14/2018 at 00:38 point

Good hacking,learning project !

A few comments/questions.

1) it seems that you want to increase the torque. (buy you did not specified if static or dynamic, the way you seem to be testing it is giving you results for static torque.  most real world applications require measuring dynamic torque.  it is indeed more dificult to test in a home-lab, but still affordable and doable.

2) The usage of 'round' magnets, or though cheaper, is not optimal. (Square/rectangular magnets optimizes the 'surface' of the magentic field in an easy'er to capture coil. the coil would need to be shaped as a triangle, but the shape maximizes the 'flux'/Area for any given size.   ... look up axial-flux generator and reverse the power-transfer. the equations  are the same. (*well not exacly, but close enough)

3) given the planar orientation designed, perhaps dissasably of old floppy-drive motors would teach a lot. (their magnets were a single round cylinder with 'weird' magnetization, while preserving the planar/6 coils structure.   not sure the actual static/dynamic torque, but they were able to spin the at over  300rpm... indicative of the Dynamic torque)

4) you did not specify the ferrite material used. (is it ferrite is specified by mixture i.e. mix-43/-68/-71 etc. usually color coded....)  the actual mix has a 'HUGE' influence in the (eddy)losses which of course make it 'heat-up' the material.   such loses  are dependent on both the material and the frequency of operation. (i.e. a single pulse of 1000ms would have a given loss, a same pulse of 2000ms would have a totaly different loss. of course the worst case scenario is continuous current (no pulse) as the 'magentic' field would be constant-steady and  heating the material and would produce no alternating-flux hence no power/torque.

5) in reference to #1 and #4 above, Triaminic drivers specs/explanation pages (all the rage in 3d printer motor drivers) give very clear insight (at a layman's level) of the static/dynamic and totat power (i.e. work) expected from any given setup.

6) I'm a bit confused when you specify your magnets/setup give 1W did you mean 1Tesla?Gauss? .. (magnets by themselves don't give power...) or you meant that the 'motor' consumes 1W to deliver 9gr of static torque?

7) It appears to me, that the easy way to radically improve the torque, without redesing) is to decrease the  magnet to coil distance (if using Mag. above and another below, decrease this distance.) i.e. minimize the distance between the surface of the coil and the magnets.  (dont forget to add the height of you board material in the equation !)    

7a) if using a single plane of magnets (pictures seem to show one above, one below.. ) would almost double your power (torque) .... CORRECTION: mean to say using one above in below would double your power...

Sorry, way too long a comment. :-} 

Good Luck!


Further comments on the ferrite. 

In order to be effective the ferrite must be at the center of the coil and be as deep as the coil itself. Placing  as you did makes it behave as a shield!! (eddy currents in the ferrite sheet create a magnetic field OPPOSING the desired magnetic field ON ALL COILS!.)   ie. is behaves as if a steel plate was between your magnets and your coils, all the while heating it up!.

Also, your coils do not need to go all the way to the center, (that space would be much better used to put a tiny ferrite bead instead)  lowering the coil length will also have the desired effect of reducing the ohm resistance, a therefore allowing a higher current with the same voltage.  since the magnetic flux is proportional to current, your flux is much higher, hence higher extracted power. (more efficient.)  my -personal- Rule of thumb is for the center of the coil to be about 1/3 of the total coil width.

beware that the ferrite bead in the center would be subject to strong axial-push/pull forces. i.e. up down, best  solution is to use 'threaded' beads and thread the PCB accordingly. (adding a touch of crazy glue would not hurt.)


The actual magnets were not specified, but some have WAY more pulling force than others(flux), simply changing the actual magnets can substantially increase their flux/power.      Carefull thought, higher flux magnets de-magnetize at lower temperatures ... i.e. proper cooling may be required for a HIGH-power (i.e. drone motor) application...

  Are you sure? yes | no

Carl Bugeja wrote 07/18/2018 at 21:58 point

Hi! Thank you for your comment and suggestions :)

In the shown video i was testing for static torque which would be more beneficial for servo like applications. As you said dynamic torque is harder to test.

Regarding the triangular shaped coil, this would definitely maximise the flux area of the stator however this shape would have less turns (around 7 on each layer) for this motor-size which would significantly reduce the impedance of the windings and thus heat up. This also applies for the core idea you proposed, its something that is great to have but in practice i'm not so confident it will work due to lack of turns. But this is definitely something that can be considered for larger sized pcb motors though.

The static torque test was done with a constant power supply voltage of 5V. The motor was drawing around 200mA of current so it can be rated to around 1W.

  Are you sure? yes | no

clatour007 wrote 07/20/2018 at 03:28 point

Ok, not really 100%sure static torque is better for modelizing servos, but to each it's own.

Not really sure why you say a triangle-shape would have less turns... (mind you, even the circular-shaped coils don't need to coil all the way to the center, the extra loop's contribution to flux is quite minimal and the extra ohmic resistance far outweights  its benefits, specially since they become 'heating' elements). Regarding the impedance, a lower impedance means more current , which means a more intense flux, which means a more 'power-full' (holding) torque  which is what you wanted!    If heating is a problem (perhaps your 'wire'/board traces's cross-section, is too small (hence their resistance is too great, and act more as a 'resistor' instead of a coil)    

One way to decrease the current is to lower the voltage (ohms law), but an easier way (if using drivers such as the 4988/drv8825/triminic 2100 etc. etc etc. ) is to Increase the frequency of the pwm signals. (mind you, doing so would require-you to calculate the actual reactance (impendace) of the coils for the new frequency. (actually easier to do trial-error, than to acurately model it via maths)

Another way to achieve the same result is to Lower the voltage, instead of driving it with a 5 volt source, try a 3.3 v. inversly, you can drive it with a 12 volt source (watch your driver's specs.) and LOWER the max current limit of the driver. either way you'll limit the input power, hence the torque. (the input-power to torque curve is NOT linear, it is indeed a log. curve !  (log/antilog depends how you plot it).

Also, it occurs to me, given the size of the motor,  that instead of using ferrites it would be easier to use steel screws. (make sure they can be magnetized, not all steel can be ) iron screws would be better, but they rust quite fast ..

Gotcha for the 1W calc. makes sense.  However, (haven't actually done the math but, gut feeling,  it appears to me quite to be very IN-efficient. 

ANOTHER type of motor (see axial-flux generator's coil/magnet arrangement) in which 2 coils face 1 magnet can be designed, it would allow for the same current (at 2times the voltage) to 'repel'(or attract)  the magnet with the same force. HOWEVER, the 'cooling' surface is twice as big, and therefore the accumulated heat is much lower (not quite half, but thereabouts) at the same "power-input to torque" point. .... (perhaps I don't make myself clear, I'm at a loss to how to explain it better.... :-|

Alternatively, a *much* more complicated 'geared' motor could be done. (specially for servos, as they don't really need to move very fast.) the added advantage of a geared fast moving rotor, is that a simple fan-blade can be attached to cool it down.  and the static-torque is multiplied by the gear-ratio. 

PPS: the ferrite material you used is primarily used for shielding, (very high loss) basically it is designed to convert the Rf/Em to heat !. exactly what you do not want in this instance. 

Sorry I know it was a very long reply :-/

  Are you sure? yes | no

Carl Bugeja wrote 07/30/2018 at 21:50 point

For that prototype, my goal was to make it as small as possible, and the spiral shaped coils have been designed to fit in the smallest area possible with the minmal clearance. For the triangular shapes coils, the stator diameter would result in a slightly larger. However, I am currently designing another board to test slightly larger motors (less than 20mm diameter) with different coil shapes.

There is a balance between the amount of current that you pass through the coils and heat. From what i have tested with these coreless printed coils the limit is around 40-turns for 4/4mil traces and 60-turns for 5/5mil. 

Using iron screws i the middle is something that I have considered. These would act as the core of the stator. But my original goal for this project was to try and make the smallest and easiest to assemble motor, and adding these screws would defiantly increase the size and complexity of the build. 

  Are you sure? yes | no

rparthiban wrote 07/11/2018 at 18:04 point

I need a motor driver details

  Are you sure? yes | no

Jarrett wrote 07/11/2018 at 18:57 point

just google "uln2003 stepper driver schematic"

  Are you sure? yes | no

Twisted Pair in my Hair wrote 06/25/2018 at 17:51 point

What is the driving circuitry for this motor? Can you please share the schematic?

  Are you sure? yes | no

Calrexreid wrote 05/31/2018 at 14:40 point

Fantastic project - Perfect for solving a headache I had in my project - Thank you. I have ordered a few off OSHPark.. :) ill upload project when further down the road.

I am currently using them in a prototype that will be a fair bit larger than the final version of my project. I am unfamiliar with the limits of PCB manufacture and wonder if you can enlighten me? Do you think it could be made any smaller? In terms of Diameter? Less windings, thinner traces? Looking to get it down to 10mm so about 35% smaller. Obvious huge reduction in power etc.. but still functional? I thought to ask you as you may have already experimented with further miniaturisation and come across some limitations. Be great to get your thoughts! Thank you again for a great concept!

  Are you sure? yes | no

Carl Bugeja wrote 05/31/2018 at 21:25 point

Hi! It is very difficult to make it smaller than 16mm. In my prototypye I am using 4/4mil traces on a 4 layer board. I have around 10 turns on each layer adding up to a total of 40 turns.  I don't recommend going much lower than 40turns with 4/4mil, as these would reduce the phase resistance and increase the overall temperature of the pcb. The only remaining options to reduce the area would be either use smaller manufacturing traces and clearance (which would be much more expensive for a supplier to manufacturer) or increasing the number of layers. However, you need to be careful as increasing the layer would mean you have to leave a larger area in the middle of the coil for more vias.

  Are you sure? yes | no

Calrexreid wrote 06/01/2018 at 08:33 point

That is really useful to know, thank you Carl for your time and considered response. Very appreciated. I may look at 2/2 mil traces in the future if the prototype has any promise. In the meantime though I am very happy with the boards, that have just arrived!

  Are you sure? yes | no

alexw wrote 04/01/2018 at 08:08 point

Awesome project, it'll be great to see people using this!

  Are you sure? yes | no

Carl Bugeja wrote 05/04/2018 at 19:39 point


  Are you sure? yes | no

Ron wrote 03/28/2018 at 18:27 point

I was curious, where did you get the semicircular magnets from?

  Are you sure? yes | no

ehsan wrote 04/23/2018 at 21:10 point

I'm quite interested in this as well. Can't find anything of the same size. Any help is highly appreciated.

  Are you sure? yes | no

Carl Bugeja wrote 05/04/2018 at 19:39 point

Hi :) Those were both custom from a manufacture I found on 

  Are you sure? yes | no

jkocurek wrote 06/17/2018 at 21:45 point

How much for how many units?

  Are you sure? yes | no

Anil wrote 03/18/2018 at 02:35 point

Does this DC motor need a hall effect sensor to control it? What controls the sequencing of the windings like a usual brushless DC motor?

  Are you sure? yes | no

Carl Bugeja wrote 03/27/2018 at 20:16 point

My plan was to use a sensorless back-emf speed controller, however the measured back-emf was too weak to implement this. I'm now working on a prototype with hall sensor for speed and position control.

  Are you sure? yes | no

Anil wrote 03/29/2018 at 21:22 point

Yeah, that makes sense. Would be cool to get the PCB coils strong enough to go sensorless. I bet you could do it if you made the coil strips longer.

  Are you sure? yes | no

bobricius wrote 03/12/2018 at 16:04 point

great project, I am trying stepper motor as direct drive wheel for robot instead of printed rotor I am using PCB rotor (3 layers of 1mm PCB and 5x3mm magnets)

  Are you sure? yes | no

Carl Bugeja wrote 03/12/2018 at 18:12 point

cool :) just make sure you have enough torque to rotate the wheels and move the robot

  Are you sure? yes | no

Peter McCloud wrote 02/08/2018 at 06:55 point

This is really cool. Thank you for sharing the Gerber files!

I'm interested in using this approach for building an axial flux generator. I can't find any existing designs that fit my needs and making PCBs seems easier than hand windng coils and potting them.  For those of us new to the PCB design world, would you mind providing an outline of the tools you used to design your PCB?

  Are you sure? yes | no

Carl Bugeja wrote 02/10/2018 at 09:25 point

Hi Peter! I used a CAD tool to draw the spiral coil windings for each layer. These layers were saved as a dxf file and then imported into a PCB design software as different copper layers.

  Are you sure? yes | no

helge wrote 02/07/2018 at 23:08 point

maybe ferrite foil in the back would be beneficial? and the like.

  Are you sure? yes | no

crazzzik wrote 01/30/2018 at 03:32 point

Do you have a power requirement for your drone?

  Are you sure? yes | no

James Newton wrote 01/29/2018 at 04:36 point

I'm curious how you are driving the motor? Is it just from the Digital IO pins on the Arduino? Or are there transistors, FETs, etc...

  Are you sure? yes | no

Carl Bugeja wrote 01/29/2018 at 21:52 point

Hi I'm currently using the STSPIN230 3-phase driver (availble on the X-NUCLEO-IHM11M1 dev board). I am then driving it with a dPic microcontroller.

  Are you sure? yes | no

Moldovanu Ionut wrote 01/26/2018 at 10:22 point

Hello , can you please release the pcb design files , or just draw a schematic of the coils and all the details?

  Are you sure? yes | no

Carl Bugeja wrote 02/07/2018 at 22:56 point

Hi! The files are now available for download

  Are you sure? yes | no

oshpark wrote 01/26/2018 at 05:38 point

great idea!

  Are you sure? yes | no

Carl Bugeja wrote 01/27/2018 at 06:59 point

Thanks :)

  Are you sure? yes | no

Robert Mateja wrote 01/25/2018 at 09:04 point

I that HP MultiJet material or your own print for black rotor ?

  Are you sure? yes | no

Carl Bugeja wrote 01/25/2018 at 11:26 point

Hi i have 3d printed from shapeways

  Are you sure? yes | no

agarner3 wrote 01/25/2018 at 07:37 point

This is such a great idea. I agree it would work better with a different stator/magnet configuration. It would be interesting to see how torque and kv would be affected with different thickness traces. And how much more output and balance you could achieve with two magnet sets sandwiching the stator. 

I can see a revolution in quad copters coming on. It would be amazing to see this on the crazyflie (open source)  quad

  Are you sure? yes | no

Carl Bugeja wrote 01/25/2018 at 11:30 point

Sure :) a rotor combined with propeller is coming soon

  Are you sure? yes | no

Thomas Daede wrote 01/25/2018 at 04:07 point

This is neat! I would like to try to build my own, and also have some things I'd like to try to improve the design:
Most axial flux motors have magnets on both sides of the stator. The purpose of this is to not just to fit in more magnet, but to make sure all of the magnetic flux passes perpendicularly through the stator - with your current design, some of it wraps around the magnets and doesn't even make it through the PCB. Likewise, on the rotors behind the magnets is iron, to complete the magnetic circuit and get better utilization of the magnets. Iron-filled plastic could substitute here, though it's less important and just using beefier magnets might also be OK.

The downside of facing rotors is there is a huge amount of force between them. You'll either need strong 3D printed parts, or attach them on the outer diameter, running the wires through a non-rotating axle.
For bigger motors, you can get a better winding factor with an 8/9 or 10/12 arrangement. If you don't already know about it, there's a nice winding calculator here:

Note that coreless axial flux motors like this can be quite efficient. You might find some inspiration from the CSIRO design often used by solar cars.

  Are you sure? yes | no

Carl Bugeja wrote 01/25/2018 at 17:42 point

Hi Thomas! Thanks for the tips! For the second prototype I have order semicircular magnets so that all magnetic flux pass through the stator, just like you suggested :) stay tuned for the update

  Are you sure? yes | no

adria.junyent-ferre wrote 01/29/2018 at 09:02 point

Excellent feedback. Btw, I tried the iron-filled plastic myself  some time ago when I wanted to make a linear actuator with 3d-printed parts and the results were quite disappointing. The effective permeability one gets ends up being around 2, which is quite disappointing (

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates