Introduction: Simple CNC From Scrap Printers

  • After building my 3D printer out of old printers and MDF and using it for a few years, I want to expand my machine shop with a CNC machine. Before to go and buy expensive aluminium extrusions and electronics, I decided to build a small machine out of the parts I had lying around from my 3D printer project and printer dismantelement.

I used 6mm smooth rods and brass bearings pretty common in paper printers as guides for my axes, M6 threaded rods to drive those axes, the whole structure is made from 16 mm thick MDF and 3D printed parts assembled with common M3 countersunk screws from the hardware store.

The machine is controled using an Arduino Uno and a CNC shield running grbl.

The whole machine was designed on Fusion 360.

All the parts plans for cutting and printing are available on my thingiverse account : , (pdf and stl files are available as well as Fusion 360 archives)


  • Electronics :

-3 NEMA 17 stepper motors

-Arduino Uno

-Arduino CNC Shield

-3 stepper drivers (A4988, DRV8825, TMC...)

-OPTIONNAL 4 endstop switches 12,6 x 6,5 x 5,7 mm (you can get them from old mouses)

-12V DC 200W power supply

  • Mecanics :

-400*600 16 mm MDF board

-12 brass bearings (10mm external diameter, 6 mm internal diameter, 8mm length, 2 mm thick 14mm diameter flange

-2x 6 mm smooth rods 222 mm long

-2x 6 mm smooth rods 232 mm long

-2x 6 mm smooth rods 150 mm long

- M3 countersunk screws

-M3 6mm inserts

-1 m M6 threaded rod

-3x 5 to 6 mm shaft couplers

  • Printed Parts

-2 (1 mirrored on y) CNC_y_brass_linear_bearing_mount_x2_MIRROR1

-1 CNC_dremel_flexible_clamp_x1

-1 CNC_x_bearing_mount_x1

-1 CNC_y_bearing_mount_x1

-1 CNC_y_M6_nut_mount_x1

-1 CNC_y_motor_mount_x1

-1 CNC_z_carriage_x1

-1 CNC_z_M6_nut_mount_x1

-1 CNC_x_carriage_x1

-1 CNC_x_motor_mount_x1

Step 1: Step 0 : Prepare the Parts

-The first step is to cut all the MDF parts of the CNC, to do so, you
can glue the printed pdf plans using spray glue and cut the parts using a jigsaw, use a drill to start the inner cuts,all the plain lines are cut-trough, the dotted lines are 6 mm deep slots you can cut with a wood cisor. All holes are pierced with a 3mm drillbit.

-Print all parts for the CNC.

-Add 6mm M3 inserts threaded inserts to all the holes of the printed parts using a welding iron with a piece of M3 threaded rod instead of a welding tip.

-Press fit a 626ZZ bearing in CNC_x_bearing_mount_x1, CNC_y_bearing_mount_x1 and CNC_x_carriage_x1

-Thread both 150 mm 6mm smooth rods with a M3 tap on both ends.

Step 2: Step 1 : Assembling the Base

-Glue the 2 feets with the base plate, you can also use wood screws if you prefer, or even just press fit the parts together if your cuts are precise.

-Add the Y NEMA 17 motor to CNC_y_motor_mount_x1 using 4 7 mm countersunk M3 screws with 5 to 6mm shaft coupler.

-Add the 2 printed parts for the Y axis driving CNC_y_bearing_mount_x1 and CNC_y_motor_mount_x1.

Note : I plan to double the drive of the Y axis by adding a second threaded rod to increase the regidity of the axe, that would allow smaller supports for the Y linear bearing wich in turn will allow a bigger working area.

Step 3: Step 2 : Assembling the Z Axis

-Add 4 brass linear bearings to CNC_x_carriage_x1 and opptionnaly 2 endstops switches in the top and the bottom of the part.

-Add an M6 nut in the nut holder of CNC_z_carriage_x1, you can add a spring and a second M6 nut to reduce backflash, but it works with one nut only.

-Add 4 brass linear bearings to CNC_z_carriage_x1.

-Assemble the z carriage to the x carriage using the 2 150mm 6mm smooth rods and lock them using 4 10mm M3 screws and 8 mm washers.

-Add one NEMA 17 with 4 7 mm M3 screw and a 5 to 6 mm shaft coupler.

Step 4: Step 3 : Assembling the X Axis

-Slide the 2 222mm 6mm smooth rods trought the linear bearing of your Z assembly.

-Add the CNC_x_bearing_mount_x1 on the left side of the assembly

-Add the CNC_top_beam_x1 to the assembly and screw it in place with 2 30 mm M3 screw CNC_x_bearing_mount_x1, you can now add CNC_x_motor_mount_x1 and screw it to CNC_top_beam_x1 as CNC_x_bearing_mount_x1.

-Assemble the X NEMA motor with 4 7mm M3 screws and a 5 to 6 mm shaft coupler.

-Screw a 280 mm (!!! may vary depending on your stepper motor's axle lenght) M6 threaded rod through the X carriage's driving nut and whole body to couple it with the X NEMA 17 motor.

OPTION : You can glue an endstop switch to the motor mount for homing operation.

Step 5: Step 4 : Assembling the Y Axis

-Press-fit 2 brass linear bearings in the two CNC_y_brass_linear_bearing_mount_x2_MIRROR1

-Assemble the two CNC_y_column_x2 withe the two CNC_y_brass_linear_bearing_mount_x2_MIRROR1 using 1 20 mm M3 screw and a nut and a plastic screw from a printer.

-Screw the columns with your X assembly using 4 30 mm M3 screws and M3 nuts.

-Slide two 232 mm 6mm shafts trought the linear bearings.

Step 6: Step 5 : Assembling the Base to the Y Axis

-Slide the Y shafts in the slots of the base assembly and lock them in place with 4 screw from the fan protection of a computer power supply, else use screw from a printer with 8 mm washers.

-Screw the CNC_y_M6_nut_mount_x1 to the CNC_bottom_beam_x1 with 4 22mm M3 screw and insert a M6 in the holder.

-Screw that assmbly to the bottom o the two y column.

-Screw a 290mm M6 threaded rod through the Y driving nut and couple it with the Y driving motor.

Step 7: Step 6 : Setting Up the Electronics

The wiring is pretty simple : connect each motor to its corresponding connector on the board, if you added endstops, connect them to the corresponding connectors.

Connect the 12 V power supply to the power connector of the board.

To do things the right way, plug your motor drivers and set them to work with your motors folowing this tutorial :

Step 8: Step 7 : Programming the Arduino

Download the latest version of grbl from github :

Using the Arduino IDE upload the program to the Arduino Uno.

Use the commands available here to set up your CNC :

work area is 130*130*60 mm

step per mm is 200 on all axes in full step.

Step 9: Step 8 : Adding the Dremel Flex Shaft

-Use 4 30mm M3 screws and CNC_dremel_flexible_clamp_x1 to clamp the dremel flex shaft to the Z carriage.

-Insert a M6 nut in CNC_z_M6_nut_mount_x1 and screw it to the dremel clamp with 4 10mm M3 screws.

-Screw a 135mm M6 threaded rod trought the z driving nut and couple it to the z Nema motor.

Step 10: Step 9 : Milling the Work Area

-First from milling your first project, it's better to first be sure that your work area is flat, to do so, use a 5 mm milling bit to cut the whole working area using gcode sender.

First manually home your milling on X Y and Z, then launch à 3mm deep cut on the whole work area.

Step 11: Step 10 : Enjoy Your New Machine !!!

Your machine is ready to be used !

Enjoy !

I tried it on plywood and plexiglas with good success, may try aluminium someday to make leather stamps to produce badges.

CNC Contest 2020

Participated in the
CNC Contest 2020