Building a DIY Arduino Yarn Ball Winding Machine

Need some yarn wound into a ball? Don't waste your time with manual labor, create an Arduino-gizmo to do it for you!
Christopher McFadden

If the video player is not working, you can click on this alternative video link.

Do you have a ton of yarn that needs winding into yarn balls? Perhaps you don't have the time, or just can't be bothered to do it by hand?

Then why not make yourself an Arduino-powered yarn ball winding machine? Here's how...

complete arduino yarn winder
Source: Interesting Engineering/YouTube

But first, you will need some parts and equipment before you get stuck in. 

Tools and parts needed

Step 1: Prepare and create the base

The first step is to cut out a piece of wood to form the base of the winder machine. Measure out using a tape measure, mark with a pencil, and cut out using a jigsaw or handsaw.

diy yarn ball winder cut wood
Source: Interesting Engineering/YouTube

Next sand down the cut surfaces, and round the edges, if needed. Now, grab a pair of compasses and extend the arms to 1.5 cm (0.59 inches). 

Mark a cross in each corner of the piece of cut wood using the compasses. 

diy yarn winding machine border
Source: Interesting Engineering/YouTube

Now, grab one of your flange mounts, mark out the drill holes, as shown, and drill pilot holes through all of the pencil marks on the wooden base.

diy yarn winder drill holes
Source: Interesting Engineering/YouTube

Now, grab your rubber feet, and affix to the wooden base using suitably sized bolts and nuts. Add one foot to each corner of the base. 

diy yarn winder feet
Source: Interesting Engineering/YouTube

Now secure the flange mount to the holes we've marked and drilled. 

Step 2: Cut and shape the wood for the spindle arm

diy yarn winder 2nd wood
Source: Interesting Engineering/YouTube

Next, grab another length of scrap wood. 

Cut down to size, cut again into two smaller lengths of wood, and sand as also shown in the video. Sand or cut one of the wood length's edges at an angle, as also shown in the instruction video. 

diy yarn winder angle wood
Source: Interesting Engineering/YouTube

Now grab your pillow bearing. Place it on the non-angled edged length of cut wood, and mark out the drill holes, and central hole.

diy yarn winder bearing
Source: Interesting Engineering/YouTube

Also, mark out two holes near the top of the angled piece of wood too. 

Drill the holes as required. Widen the hole in the longer piece of wood to enable a flush fit for the bearing.

diy yarn winder other woods
Source: Interesting Engineering/YouTube

Insert the bearing as shown. Cut the pieces of wood down to size once again, as shown. No dimensions are available so you will need to measure twice and cut once a lot. 

diy yarn winder second woods
Source: Interesting Engineering/YouTube

These pieces of wood will be joined together to form a final angled piece. Glue the pieces together, as shown below.  

diy yarn winder angled piece
Source: Interesting Engineering/YouTube

Step 3: Assemble the main rotary spindle mechanism

Next, 3D print, or have a friend print for you, the 3D parts needed. You can find the link to the models in the equipment list above. 

Next, cut down one of the 8mm rods to size, as shown in the video. Also, collect all the other parts needed to make the main winding mechanism. 

diy yarn winder winder mechanism
Source: Interesting Engineering/YouTube

Secure the rod to the bearing, and place the bearing inside the readymade recess in the angled wooden piece. Next, place the 3D printed pieces onto the rod, and make sure it is flush with the bearing. 

Bolt all to the wood using suitably sized nuts and bolts. 

yarn winder 3d parts and bearing
Source: Interesting Engineering/YouTube

Next, add the conical 3D printed parts to the other side of the rod. 

diy yarn winder winding mech
Source: Interesting Engineering/YouTube

Secure the winding mechanism to the flange on the baseboard. 

diy yarn winder to base
Source: Interesting Engineering/YouTube

Test the mechanism at this point. It should move freely around the axle. 

Step 4: Make the main spindle bobbin

Next, we'll put those  3D printed parts to use. We will also need those two ball bearings and the timing belt. 

diy yarn winder rod parts
Source: Interesting Engineering/YouTube

Slip the timing belt around the 3D printed wheel, and insert the ball bearings into each end of the 3D printed tube—they should fit nice a snuggly inside the tube. 

Next, insert the 3D printed tube into the central hole of the 3D printed wheel. 

diy yarn winder wheel
Source: Interesting Engineering/YouTube

Next thread one of your threaded rods through the center of the plastic tube and the eyes of each of the ball bearings. Secure into place using nuts. 

diy yarn winder threaded rod
Source: Interesting Engineering/YouTube

The plastic tube, and disc, should rotate freely about the threaded rod, so test its action at this point too. 

Affix the yarn spool holder to the previously completed angle winding assemble you previously completed. The timing belt teeth on the plastic disc need to engage with the teeth of the uppermost conical 3D printed part, as shown below. 

diy yarn winder mechanism
Source: Interesting Engineering/YouTube

Step 5: Complete the main winding mechanism

Next, take the 3D printed stepper motor mounting plate, and mark out the drill holes on the wooden base. Drill the holes, as needed. 

Next, take the stepper motor, and secure it to the plate using suitably sized nuts and bolts. 

diy yarn winder stepper motor
Source: Interesting Engineering/YouTube

Attach and secure the timing pulley to the stepper motor axle. Next, take another timing belt, and connect the winding mechanism you completed earlier to the pulley on the stepper motor. 

You will also need to create four threaded rod struts to hold the stepper motor at the correct height. If needed, consult the video for details. 

diy yarn winder to stepper
Source: Interesting Engineering/YouTube

Secure the stepper motor plate securely to the struts. 

Step 6: Complete the microcircuitry

Grab your custom PCB and microelectronic components needed for the next stage. Affix and solder all the required components, as shown below. 

diy yarn winder pcb
Source: Interesting Engineering/YouTube

Assemble the Adruino Nano and stepper motor driver module. 

diy yarn winder pcb complete
Source: Interesting Engineering/YouTube

Secure the PCB board to the main yarn winding machine's base using nuts and bolts. Next, connect the stepper motor to the PCB board. 

Now, grab your LCD screen and also wire that up to its respective connection points on the PCB board. Mount the LCD screen to the base of the machine. 

You can now also wire up and mount a rotary knob next to the PCB. This will enable you to incrementally increase or reduce the winding speed during operation. 

diy yarn winder lcd screen
Source: Interesting Engineering/YouTube

Step 7: Complete the yarn winder

Next, create, or use existing, yarn feeders/guides, and attach one to the top of the stepper motor and another to the side of the base.  

yarn winder feeder
Source: Interesting Engineering/YouTube

Next, connect the Nano to a computer and upload the code required to make the machine do its thing. We have included the code at the end of this guide. 

With that, your yarn winding machine is effectively complete. Now just connect the power, and start her up for a test run.

Now, turn it off and thread some yarn through the eye of the feeder, and attach it to the yarn spindle using some adhesive tape. 

diy yarn winder prep
Source: Interesting Engineering/YouTube

Now, just turn the machine on, set the winding speed, and let it rip. Happy days!

Arduino code

Here is the complete code. Simply copy and paste to the required program before uploading to your Nano.

#include <Wire.h>
#include "rgb_lcd.h"
rgb_lcd lcd;
#include <Arduino.h>
#include "BasicStepperDriver.h"

#define MOTOR_STEPS 200
#define DIR A0
#define STEP A1
#define knob A2
int val = 0;
#define MICROSTEPS 16
BasicStepperDriver stepper(MOTOR_STEPS, DIR, STEP);

void setup() {

lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print ("YARN BALL WINIDIGN");
lcd.setCursor(0, 1);
lcd.print ("MACHINE");

void loop() {

val = map(analogRead(knob),0,1023,0,100);
stepper.begin(val, MICROSTEPS);
lcd.print ("WINDING");


Add Interesting Engineering to your Google News feed.
Add Interesting Engineering to your Google News feed.
message circleSHOW COMMENT (1)chevron
Job Board