Arduino/GRBL Based Desktop Automatic Coil Winder!

by JGJMatt in Workshop > 3D Printing

8937 Views, 134 Favorites, 0 Comments

Arduino/GRBL Based Desktop Automatic Coil Winder!

Instructable cover (23).png
20240611_170435-ezgif.com-optimize.gif



Hello fellow makers,



In this Instructable I will be showing you how to build your own automatic coil winder that runs GRBL software on a Arduino Uno board.



Not only have I wanted something like this for a long time as restoring vintage electronics means a lot of fried transformers but my main motivation was for my upcoming project aka the Supercap Speaker v2.



With a small desktop coil winder like this you can make your own solenoids, transformers, guitar pick-ups, tesla coils...etc.

This will also not break the bank as all the parts I will be using are old 3D printer components and also printed parts, the only expense I had making this was the actual enameled copper wire for the coils!




If you enjoy my Instructables and would like to support my future projects you can Buy Me A Coffee.

Supplies:

To make your own you will need the following:





*As an Amazon Associate I receive a small percentage from sales made through provided links at no cost to you, this helps fund future projects.

3D Printed Components:

20240606_153331.jpg

First we will get the needed parts printed.


As with all my projects that involve 3D printing I hopped onto Fusion 360 and got designing.


I started by importing CAD models of the Nema 17 motors and 2020 extrusions as a starting point and then the rest was determined by the maximum size of the bobbin I wanted to be able to wind, in this case that was 120mm.



All parts can be easily printed on any standard FDM printer, as mine will be receiving a lot of sunlight I went with CPE+ filament but in most use cases normal PLA will suffice.


The only parts that need any type of supports are the two sides where the 2020 extrusions fit in so I simply used the "paint on supports" in Prusa slicer for those two spots.

Assembly: the Guide/tensioner

20240607_105244.jpg

The first part we will be assembling is our wire guide and tensioner, an adjustable tensioner is important as it is the secret no nice even windings.


For this step you will need:

  • "Guide.stl" and "Tension Knob.stl" printed parts
  • LM6UU linear bearing
  • 2x 2.5mm heat inserts + 2x 15mm screws
  • 4mm heat insert + 1x 40mm screw
  • 15mm piece of 4mm I.D. teflon or brass tubing
  • T8 nut
  • M4 30mm washer
  • A soft spring
  • Thin felt sheet


First I glued the 40mm M4 screw into the tension knob using the some clear 2-part epoxy glue.



Now using a soldering iron I melted my heat inserts into place, the M4 one goes in the middle of the circular indent (on the back flat side) and two 2.5mm ones go in where the T8 nut gets fastened to.

With the threaded inserts in place we can press in the LM6UU bearing into place, note that it does protrude about 2mm on each side of the printed part.


Now the reason the M4 heat insert had to go on the back flat side is because we will now need to insert the piece of 4mm I.D. pipe into the hole on the opposite side until we hit the heat insert, because I used a brass pipe I could use my soldering iron to insert it the same way as you would the heat insert.

This piece of pipe is just to prevent your enamelled wire from scratching whilst moving through the tensioner.



The final part of the of the tensioner is to cut out two 30mm felt circles (hopefully better than me!) with 4mm holes and then glue one to the printed tensioner and the other gets glued to the washer.


The "washer" I'm using is actually the centre of an old floppy disk, because it has the lifted edge it makes it easier to insert the copper wire into the tensioner.


Your guide and tensioner are now ready.


Assembly: the Frame

20240607_150641.jpg

We can now start assembly on the main frame of the winder.


For this step you will need:

  • "Bearing Side.stl", "Motor Side.stl" and "Bobbin Support Slide.stl" printed parts
  • 2x 2020 Aluminium extrusions, ends tapped to 6mm (as long as you want your winder to be)
  • 2x Nema 17 stepper motors
  • 8x 25mm M3 screws
  • 608 bearing
  • 2x 686 bearings
  • 4x M6 30mm screws
  • 6mm rod (same length as your 2020 extrusions)
  • T8 acme screw (same length as your 2020 extrusions)
  • T-nut + screw



Before starting you will need to tap each end of the 2020 aluminium extrusion to 5mm or 6mm depending on the specifications of the extrusion, sometimes the extrusions already accept screws without tapping needed.


Starting at the motor side you simply have to push the two extrusions into their dedicated slots and fasten them on the side of the panel using your M6 or M5 screw, then press in the 6mm rod in it's position as pictured above.



We can now fasten the two Nema 17 motors onto the motor plate using the eight M3 screws, note that you will want to use a motor with the highest torque you have available for the top motor whereas the bottom motor can be a low torque one.



Before assembling the other side plate we need to first press the two 686 bearings into either side of the bobbin support slide, to make things easier I used F686Z bearings that have a flange on one side to keep them in place but as they can sometimes be hard to find you can also use regular 686zz bearings.


We will also need to press in the 608 bearing into the side place as this will hold our acme screw straight.


With all the bearings fitted you can now slide the bobbin support onto the front 2020 extrusion as pictured below and attach the side plate with the remaining two 6mm screws.


Assembly: the Electronics

image_2024-06-11_100255741.png

In this first iteration of the coil winder the electronics are as simple as can come.



We are simply making use of off the shelf boards namely the CNC shield V3 with two DRV8825 or A4988 stepper drivers all driven by an Arduino Uno board.


To get it going you will only need to mount the CNC shield onto the Arduino Uno, insert the two stepper driver boards onto the X and Y slots and then plug in the wires from the stepper motors to their corresponding pins next to each driver.



To run everything you will need to upload the GRBL sketch to the Arduino Uno.

  • The latest version of GRBL can be downloaded on Github



GRBL parameters on my machine:

$0 10.000 Step pulse time

$1 25.000 Step idle delay

$2 0.000 Step pulse invert

$3 0.000 Step direction invert

$4 0.000 Invert step enable pin

$5 0.000 Invert limit pins

$6 0.000 Invert probe pin

$10 1.000 Status report options

$11 0.010 Junction deviation

$12 0.002 Arc tolerance

$13 0.000 Report in inches

$20 0.000 Soft limits enable

$21 0.000 Hard limits enable

$22 0.000 Homing cycle enable

$23 0.000 Homing direction invert

$24 25.000 Homing locate feed rate

$25 500.000 Homing search seek rate

$26 250.000 Homing switch de-bounce delay

$27 1.000 Homing switch pull-off distance

$30 1000.000 Maximum spindle speed

$31 0.000 Minimum spindle speed

$32 0.000 Laser-mode enable

$100 400.000 X-axis travel resolution

$101 1600.000 Y-axis travel resolution

$102 250.000 Z-axis travel resolution

$110 500.000 X-axis maximum rate

$111 500.000 Y-axis maximum rate

$112 2000.000 Z-axis maximum rate

$120 5.000 X-axis acceleration

$121 5.000 Y-axis acceleration

$122 10.000 Z-axis acceleration

$130 200.000 X-axis maximum travel

$131 200.000 Y-axis maximum travel

$132 200.000 Z-axis maximum travel



The G-code needed to wind your coil can be made using the following Excel sheet - Coil Winder

Shout out to tuenhidiy who originally made this worksheet.



To send the generated G-code to the Arduino you will need a sender like Universal G-code Sender

Some Final Touches:

20240611_132733.jpg

Time for some finishing touches before we can start winding.


To enable support for different shapes and sizes of bobbins I made a simple cross shaped male coupler on both the winding motor (5mm) and the bobbin support (6mm), this way you can make custom holders that suit your specific needs and then simply slide the female holder onto the coupler.


Because of the future project that will consist of 3D printed speaker driver this method allowed me to print a holder that will support a large awkwardly shaped bobbin that is quite delicate to boot in place to wind the coil.



After multiple binding issues I ended up printing these self centering couplers by Loco on Thingiverse and they really work fantastically!



Finally we need to extend the reach of the tensioner to the bobbin, I designed the tensioner to accept a 4mm PTFE tube (3D printing bowden tube) so that you can have a few different lengths pre-cut that can be switched between.

The PTFE tube is also the same size as a syringe needle, I cut a needle slightly shorter then heated up the tip and just flared it ever so slightly with a nail just to get rid of burrs that might damage the enamel coil wire.


What's Next:

image_2024-06-11_153246207.png
  • As you may notice there is currently no enclosure for the Arduino board that's because I'm currently implementing a second Arduino Nano board along with a 16x2 display that will provide a user interface for the coil winder so that you can enter all of your parameters for the coil and the Arduino will generate the gcode and send it over to the machine so that you don't need a computer to work the winder.


  • For more precision I will be designing a support to stiffen the PTFE tube that exits the tensioner.

Get Winding!

20240611_145736.jpg

I hope you guys find this Instructable useful and if you have any questions please feel free to leave me a message or comment bellow.



Thank you for taking the time to read through my project and as always..


Happy making!