CNC hot wire foam cutter

Andrew Sarangan

This CNC foam cutter was built from a kit by It basically consists of two carriages for the horizontal translations and two towers for the vertical translations. I’ve built two prior CNC foam cutters (not using this kit), and the main challenges with those DIY designs were uneven sliding friction and wobble. These problems have been mostly solved in this kit by using plastic bearing sleeves for friction reduction and two linear shafts per axis to reduce wobble. However, it became clear later that the wobble is primarily due to lack of straightness in the acme lead screws. Any small bends in the screws will producing a rocking motion of the carriages, which will show up as ripples in the foam edges.

The stepper motors are 6-wire NEMA 23 motors with 2A drive current. The driver board was built from a kit by Hobbycnc (Model #4AUPCWHC). This board includes PWM control of the cutting wire temperature . Unfortunately it appears that they don’t make this board any more. 

The control signals are sent via a parallel port connector. The motors need a hefty power supply (up to 8A max), and the hot wire (30-gauge NiCr) also needs a separate power supply.

Most computers nowadays do not come with a parallel port. Although there are USB-to-Parallel converters, they will not work for CNC control because it is impossible to deliver accurate timing signals through the USB port. The solution is to get the UC100 CNC motion controller. It looks like an ordinary USB-to-parallel converter, but it is not. It has embedded circuitry and software drivers to produce the precise signals required for CNC motion control. This allows any laptop with a USB port to be used to drive the CNC. The UC100 is best used with the Mach3 software, which is one of the most widely used CNC software. However, it is a generic CNC software, so some customization (known as “screens”) is necessary. The screens for foam cutting setups can be found in many online forums. I bought mine through Ebay from

The input commands for the Mach3 software are written in G-codes. These are ascii commands that tell the motors how far to move, and how fast. Some drawing packages such as Inkscape allow saving the vectors as G-codes, but none of them work straight out of the box because the foam cutter drives two pairs of axes – two left axes (X & Y) and two right axes (A&B). Most conventional CNC systems use a single pair of X & Y axes with a Z axis for the height of the cutting tool. There are several software specifically made for foam cutting that can produce four axes G-codes (such as devFoam, Foamworks, Jedicut). However, G-codes for simple non-tapered designs can be easily created from Inkscape, or even from an Excel spreadsheet. The codes can be viewed using a variety of software, such as Camotics.

The moving hot wire melts the foam by convective and radiative heat transfer. Therefore, the width of the cut will be larger than the wire diameter. This is known as Kerf, and must be compensated in the design. Kerf is a function of wire diameter, wire temperature, cutting speed and foam type. The best way to determine wire temperature is by using an ammeter to measure the current through the wire. For a given foam type and foam thickness, the temperature is directly related to the current. Low density foam will cut easily and will produce a larger kerf. Slower cut speed will result in a larger kerf. Therefore, the optimum cut speed and temperature has to be determined for each foam type. The thickness of the foam also matters. A thicker foam will draw more heat away the wire, and will require a higher current to maintain the same temperature.

A short tutorial on creating G-codes using Inkscape

This example uses characters, but the same procedure can be used to create cuts from line drawings as well.

The word FOAM written using the Ravie font
Letters with connecting bars
Switch to outline view
Connecting rectangles combined with the Union function
Small rectangles for accessing the internal cuts in O and A.
Small rectangle Differenced with the main object
Final trace with the small stub at the starting point
Setting the default tool library for G-code generation
Gcode Tool library settings
Shape is placed below the bottom left corner of the page.
Path to Gcode creation menu
After Gcode creation
G21    ( UNITS = MM )
M3     ( HOT WIRE = ON )
S30    ( HOT WIRE POWER = 30% )
G4 P5  ( DWELL TIME = 5 SEC )
F150   ( CUTTING SPEED = 150MM/MIN) 
G01 X1.232711 Y-4.768690
G01 X1.232711 Y-7.792300 Z-0.125000 F400.000000
G01 X0.786227 Y-13.993470 Z-0.125000
G03 X1.843255 Y-14.379883 Z-0.125000 I1.879872 J3.503417
G03 X3.365914 Y-14.539170 Z-0.125000 I1.522659 J7.198067
G03 X4.855470 Y-14.401778 Z-0.125000 I-0.000000 J8.143328
G01 X0.0000 Y0.0000
M2    ( END OF FILE )
Viewing the result in Camotics

Leave a Reply

Your email address will not be published. Required fields are marked *