Introduction: Spring Making / Wire Bending Machine

About: Software developer during day, hardware maker at night.

Well, this machine is not only about making springs. It is a wire bending machine capable of bending 0.8/0.9/1 mm wire into any 2D shape. But yeah, the coolest thing I was able to make with it so far was the spring. How cool is that?

The main goal was to make it quite precise. Other DIY wire bending machines are not very precise and their bends tend to have quite a big radius. I like to work with nice sharp bends!

The second goal was to make it as easy to build as possible with commonly available parts and components. All the structural parts are 3D printed and all the metal parts are available in most of the hardware stores.

Why I build this? Check out my other creations. I am a passionate free-form electronic circuits artist and this awesome machine will ease my job when doing repetitive tasks or when there are a need identical parts.

Step 1: Watch the Video!

I've tried to record the whole build to help you understand it. It's always better to see the build in action. Continue with steps below to collect all the material and start building step by step!

Step 2: Gathering All the Required Parts and Material

3D printed parts (GitHub)

  • Bender
    • Tool Head
    • Motor Frame
  • Feeder
    • Motor frame
    • Bottom frame
    • Wire guide
    • Idler gear carriage
    • Idler gear spacer
    • Feeding gear spacer
    • Bending plate (template)
  • Straightener rollers (2x)
    • Bed frame (2x)
    • Top gears frame (2x)
    • Roller (14x)
  • Spool holder

Screws & bolts

  • 3x16 wood screw (16x)
  • M3x10 hex-socket bolt (4x)
  • M3x12 hex-socket bolt (18x)
  • M3x20 hex-socket bolt (6x)
  • M3x40 hex-socket bolt (4x)
  • M3 nut (10x)
  • M3 washer (14x)


Bearings & Other

  • Welding Machine Feeding gear V-grove (30mm diameter)
  • Small steel spring 4x6mm
  • Bearing 3x10x4mm
  • Bearing 6x15x5mm
  • 6mm steel rod
  • 2mm thick small sheet of steel for bending plate (optional)
  • Wood board for a base (minimal size - 450x100mm)

Step 3: Printing Plastic Parts

All the STL files for the plastic parts are available in the project's GitHub repository. Download them and start printing. I always design the parts to omit the need for using supports so the post-processing is much easier and parts are cleaner.

I was printing with 0.15mm layer height, 3 perimeters and 40% infill with Gyroid pattern setup. It does not matter if you use PLA or PETG. The parts will not get hot so PLA is just fine. See you in 2 days! (That's the print estimated time)

Step 4: How Does It Work?

While you are printing the plastic parts let's have a look at how the wire bender works and what components it consists of (from right to left):

  • Spool holder - it holds the spool of wire for the machine to process.
  • Straightener rollers - set of 7 rollers to make the wire as straight as possible. Working with straight wire is crucial. That's also why there are 2 of them in a row.
  • Feeder - you can find a similar mechanism in your 3D printer. A set of gears that pull the wire from the spool, through the rollers and pushes it to the bending head. The feeding gear must have enough drag on the wire so it will not slip thus making the machine inaccurate. More on that later.
  • Bender - by rotating the pin on its head it bends the wire into programmed shape.

It is all controlled by a single Arduino UNO with a CNC shield. Arduino takes a commands from computers and translated them into movements of the stepper motors. Like any other CNC machine.

Step 5: The Bender

You are about to build your own Bender! Don't worry. It won't destroy your liqueur bar. To start, take the wooden base and screw in the base for both bender and feeder motors. Use 3x16 wood screws. It's important to install both frames because their position needs to be precise to each other as shown on the layout image below.

Continue with installing one of the stepper motors into the bender motor frame and fix it with four M3x10 screws. Orientation does not matter. Now press the bender head onto the motor shaft. They match each other. Pretty simple, huh?

Step 6: The Feeder

Unlike the Futurama's Bender this one needs a wire to make it happy, so let's build a wire feeder. The frame is already installed so the first step in building the feeder is to build a carriage for idler gear which will press the wire against the feeding gear. Press the plastic spacer inside a 6x15x4mm bearing to make the hole for an M3 bolt. Insert the M3x20 bolt. Press an M3 nut into the carriage and screw the bearing with the bolt. Make sure the bearing can spin freely. Press a second M3 nut into the motor frame (from the motor side in the left bottom corner) and screw the carriage through the small bracket with M3x20 bolt. Do NOT tight the bolt too much, the carriage has to move freely. Lift the carriage up and put a spring into the hole beneath it.

Take the second stepper motor and press it into the motor frame. Do not screw it yet, another plastic part is still needed. Press the feeder gear spacer onto the motor shaft and install the feeding gear.

The feeding gear I am using is taken from a MIG welding machine. Similarly to my wire bending machine, the welding machine needs a wire to operate. So it is a perfect fit. The gear has two grooves on the side. One for the 0.8mm wire and one for 1mm wire. The grove bites into the wire and pushes it through the machine without damaging it. I was previously experimenting with gears with teeth used in 3D printer extruders. But the teeth were leaving visible marks on the wire.

Feeder and bender are connected with a bending plate - 2mm thick metal plate with a small grove on the back which feeds the wire straight into the center of the bending head to make a perfect bend. There is a 3D printed plastic bending plate, which works fine if used. But gets worn out quickly and needs to be replaced frequently. So use it if you cannot make the identical part from the metal. Otherwise, use the plastic version as a template.

Do you have your bending plate? Good. Take wire guide plastic part and press four M3 nuts into holes on the back of it. Now screw the bending plate on it with M3x20 bolts. Place the wire guide on the front of the feeder motor frame and fix it to the motor with four M3x12 bolts. Now adjust the bending plate position. It has to be in the exact center of the bending head. Lose the four bolts on the bending plate and adjust firmly the bending plate into the center of the bending head. Tight the bolts again.

The feeder is ready. If you have straight wire, you can use the wire bender right away. Otherwise, you need a straightener.

Step 7: The Straightener Rollers

The wire is usually supplied in the form of a spool. To bend a wire you first need to straighten it. It's true. Straightener consists of 7 rollers (4 on the top and 3 on the bottom) which can be pressed against each other to make a proper tension on the wire. It also prevents the wire from twisting while bending.

Start with assembling the rollers. Press the 3x10x4mm bearing into the plastic roller housing. Insert M3x12 bolt from one side and M3 washer from the other side of the roller. The washer will prevent the wheel from rubbing on the frame. Screw all the rollers to the bed and top frame. Insert top frame with 4 rollers onto the bed frame. There is a set of V grooves to make the proper contact. Press two M3 nuts to the bottom side of the base frame and insert two M3x40 bolts from top to the bottom. This bolt will adjust the tension on the wire. It can be loose right now.

You can save some money on the bearings for the rollers. Print a Straightener_RollerNoBearing part instead of Straightener_Roller. But the performance will be much worse.

To achieve even better results, use 2 straighteners in a row.

Step 8: Spool Holder

The spool holder is just a simple cylinder that holds the wire and lets it unwind from the spool. Attach it to the end of the machine with the use of four 3x16 screws.

Step 9: Wiring It Up!

First, the wire for bending has to be supplied to the machine. I am using 0.8mm or 1mm brass wire in a form of 5m or 25m spool.

Wire comes from the spool first through the set of straightener rollers. Just press the wire inside the rollers. Then it goes through the feeder. Adjust the position of the feeding gear so that the grove you want to use is flush with the surface of the wire guide. Press the lever on an idler gear and push the wire all the way through the feeder up to the bending plate. Release the lever and let the idle gear to press against the feeder gear. Now you can roll with the feeder gear by hand to push the wire to the bending head. Gently adjust the tension on the rollers by tightening the bolts. The rollers should not spin freely but the wire has to move smoothly. Unwind some of the wire to make sure you start with a nice and straight one.

Second, the controller electronics has to be wired to the machine as well. I am using classic Arduino UNO with CNC shield with two A4988 stepper motor drivers. Feeding motor is connected to the Z-axis and bending head motor to the X-axis. Drivers are set up for the highest possible precision - ale the 3 jumpers under the stepper drivers are inserted. Everything has to be powered with a 12V 3A power supply.

Step 10: Running the Code

Everything is wired up? Good. You can finally try to run the machine. I am using GRBL in combination with cncjs. It is designed to run a milling machine, but it works perfectly for any kind of CNC. GRBL is a firmware that has to be flashed into the Arduino UNO. Check out the project page for instructions. It provides a command-based interface to communicate with the machine over the USB (serial). But instead of typing some commands manually to the console, there is a nice cncjs web client for it. Install the GRBL on the Arduino and cncjs on your computer.

When ready you can connect to your machine and start trying moving with the head and wire manually by pressing Z+/- or X+/- buttons.


; 1 degree = X0.1
; 10 mm = Z10

Above commands defines the calibration. Simply said it is a set of values defining how to translate a number given in code to the movement of the motor. For example, if you set to move Z-axis by 30 it actually means it will push the 30mm of wire through the feeder.

Setting bender head Zero position

Movement of a bending head is defined from a well-known fixed position of the bending head. In my case, it is the position where the bending pin on the head is facing left. See the picture below. It's wise to mark this zero position on the head to be able to reset the head to the very same position. There is no such need for defining zero position for feeding gear because it always moves relative to the current position.


G1 Z1
G1 X2
G1 X-6

This is an example of the bending program. It is a sequence of instructions on how to move the motors. It's hand-written.

G91 - use relative coordinates (required before any Z-axis movements)
G1 Z1 - feed 1mm of wire
G90 - use absolute coordinates (required before any X-axis movements)
G1 X2 - rotate the bending head to position 2 (this number has not units)
G1 X-6 - rotate the bending head to position -6

If you repeat above steps 100 times you get a spring bending code. You can find more source files to begin with below.

Step 11: That's All!

No, wait. It's not. This machine has few limitations or rather simplifications to make it easy to construct by anybody. It can bend only in one direction because the bending head cannot skip the wire to the other side. It can only make 2D shapes. So stay tuned because I want to make some upgrades.

Don't forget to share your creation! Like this article. Also, consider supporting me on Patreon or by buying some of my products in my Tindie store.

I am Jiri Praus.

Instagram, Twitter, YouTube

Metal Contest

Second Prize in the
Metal Contest