Introduction: CNC Machine Based on Prusa I3 Hephestos

This project was for 'Creative Electronics', a Beng Electronics Engineering 4th year module at the University of Málaga, School of Telecommunications (

We decided to make a CNC machine for drawing. The principal objective of our project is not to spend a lot of money doing it. Because of this, most of pieces that we have used are recycled.

Looking for information on internet, we noticed that a 3D-Printer is basically a CNC-Machine, so we decided to use a 3D-Printer model to do our project. A Prusa i3 Hephestos was the model chosen. Most of the images below are from a guide in Rep Rap Wiki (

Then, we’ll describe you how to do our project.

Step 1: Materials


· M3X10 DIN-912 class 8.8 = 33 units.

· M3X12 DIN-912 class 8.8 = 3 units.

· M3X16 DIN-912 class 8.8 = 5 units.

· M3X18 DIN-912 class 8.8 = 2 units.

· M3X20 DIN-912 class 8.8 = 7 units.

· M3X25 DIN-912 class 8.8 = 7 units.

· M4X6 DIN-912 class 8.8 = 2 units.

· M6X40 DIN-912 class 8.8 = 1 units.


· M3 DIN-934 class 8 = 29 units.

· M5 DIN-934 class 8 = 2 units.

· M6 DIN-934 class 8 = 3 units.

· M8 DIN-934 class 8 = 22 units.

· M10 DIN-934 class 8 = 8 units.

· M10 DIN-6923 class 8 = 4 units.


· M8 DIN-125 class 6 = 22 units.

· M10 DIN-125 class 6 = 8 units.

· M10 DIN-9021 = 4 units.


· Smooth rod 8X370mm = 2 units.

· Smooth rod 8X340mm = 2 units.

· Smooth rod 8X320mm = 2 units.

· Threaded rod 10X370mm = 2units (1,54€ Leroy Merlin).

· Threaded rod 8X205mm = 4units (1,18€ Leroy Merlin).

· Threaded rod 5X300mm = 2units (0,92€ Leroy Merlin).


· B623ZZ axial ball bearing = 2units (9,34€ aliexpress).

· LM8UU lineal ball bearing = 10units (5,54€ aliexpress).

Others materials:

· Cable tie 100x2.5mm = 20 units (0,75€, local establishment).

· 20 teeth pulley GT2 = 2units (2,81€ aliexpress).

· Belt 6mm GT2 = 2 meters(we bought it with the 20 teeth pulley GT2, in the same packet).

· Springs (length 14mm, outside diameter 4.5mm) = 4units.

· Flexible coupling 5x5mm with 4 grub screws = 2units (1,91€ aliexpress).

· Endstops = 3units (3€, local establishment).

· Heat shrink tube 2.4mm = 500mm (1€, local establishment).

· Acrylic base 220x220x8mm = 1unit (10€, local establishment).

· Metallic base 220x220x3 mm = 1 unit.

· Metallic frame 370x369x3 mm = 1 unit.

· Wires = 2 meters.

· Nema 17 motors = 4units.

· SAVMkI = 1 unit.

· Power supply 220 AC 12DC = 1 unit.

Pieces to print of Prusa i3 Hephestos (extruder, LCD screen, fan support or filament holder are not necessary in our project by now, but it is probably to use them in a future if we decide that we want to print with our CNC). You can download these pieces here:

We bought the screws, nuts, springs and washers in bulk in Leroy Merlin, Bricomart and local establishments, so we haven’t an individual price for these materials. The total price of these materials is about 6 €. The rest of materials were recycled from old printers and computers with the collaboration of Jorge Alberto Hernández. Francisco Malpartida let us the SAVMkI controller (

Total Price = 50 €

Step 2: Prepare Pulleys

Two pulleys are necessary. You need: two B623ZZ bearings and four pulley bearing printed pieces.

Step 3: Prepare Motors

Step 4: Embed M3-DIN934 Class 8 Nuts

Step 5: Embed M5-DIN934 Class 8 Nuts

Step 6: Bearing Assembly of X Axis

We are going to separate the assembly process in three parts: one part for any axis. We begin with the X axis. For this first step, you need: four LM8UU linear ball bearing, the X axis left and right printed pieces.

Step 7: X Axis Tensioner

You need: the X axis tensioner B623ZZ printed piece, one of the pulleys assembled previously, one M3X20 DIN-912 class 8.8 and one M6X40 DIN-912 class 8.8 screw.

Step 8: More of X Axis Tensioner

You need: the X axis right piece assembled in the first step of X Axis Assembly, the X axis tensioner and three M6 DIN-934 class 8 nuts.

Step 9: Assembly of Bearings on Smooth Rods

You need: two 8X370 mm smooth rods and three LM8UU linear bearings.

Step 10: Prepare the X Axis Endstop Sensor

We made our own endstops, based on the schematic circuit that you can see here:

We didn’t use the detector led, so we only used one resistance (10K value). However, the steps are the same if you want to buy the endstops.

So you need: an endstop (bought or made by yourself), the X axis endstop printed piece, two M3 DIN-934 class 8 nuts and two M3X10 DIN-912 class 8.8 screws.

Step 11: Assemble the Endstop to the Smooth Rods

Step 12: Assemble the Smooth Rods Into Printed Pieces

Step 13: Mount the X Axis Motor

You need: one Nema 17 motor, two M3X10 DIN-912 class 8.8 screws, two M3X16 DIN-912 class 8.8 screws, one M3X25 DIN-912 class 8.8 screw, the smooth rods with the X axis left and right printed pieces assembled in the last step, the X axis left thread chain coupling printed piece and one GT2 20 teeth pulley.

Remember to use a 2mm Allen wrench to tighten the pulley to the motor axis via the chamfered area. Finished the X axis assembly, next step is the assembly of Z axis.

Step 14: Z Axis Bottom Supports

You need: the Z axis right and left bottom supports printed pieces, the metallic frame and six M3X10 DIN-912 class 8.8 screws.

Step 15: Attach the Z Axis Motors

You need: two Nema 17 motors, the frame with the bottom supports and six M3X10 DIN-912 class 8.8 screws.

Step 16: Attach Top Supports

You need: the frame we have used in last two steps, the two Z axis top support printed pieces, two M3X10 DIN-912 class 8.8 screws, and two M3X18 DIN-912 class 8.8 screws.

Step 17: Join X Axis With Z Axis

Step 18: Flexible Couplings

Step 19: Prepare Z Axis Endstop

You need: one endstop, the Z axis endstop printed piece, two M3 DIN-934 class 8 nuts and two M3X10 DIN-912 class 8.8 screws.

Use glue for plastics to join this piece with the motor bracket. Next steps are from the Y axis assembly.

Step 20: Prepare Threaded Rods

You need: two 10X370 mm threaded rods, four M10 DIN-934 class 8 nuts, four M10 DIN-6923 class 8 nuts, four M10 DIN-125 class 6 washers, and four M10 DIN-9021 washers.

Step 21: Prepare Smooth Rods

You need: two 8X340mm smooth rods and three LM8UU linear ball bearings.

Step 22: Y Axis Corner

You need this prepared rods and four Y axis corner printed pieces.

Step 23: Secure the Structure

Step 24: Y Axis Tensioner

You need: one of the pulleys assembled previously, one Y axis tensioner printed piece, oneM3X20 DIN-912 class 8.8 screw, one M3X25 DIN-912 class 8.8 screw, and two M3 DIN-934 class 8 nuts.

Note: the 25mm screw is used as shaft for the pulley and the 20mm screw for the tensioner.

Step 25: Y Axis Motor

You need: one Nema 17 motor, one Y axis motor mount printed piece, and three M3X10 DIN-912 class 8.8 screws.

Step 26: Threaded Rods

You need: four 8X205 mm threaded rods, fourteen M8 DIN-125 class 6 washers, fourteen M8 DIN-934 class 8 nuts, the Y axis motor, and the Y axis tensioner.

Step 27: Assembly of the Rods

Step 28: Secure With Nuts

You need: eight M8 DIN-934 class 8 nuts and eight M8 DIN-125 class 6 washers.

Step 29: Metallic Base

Step 30: Endstop of the Base

Step 31: Attach the Belt of the Y Axis

Step 32: Attach the Acrylic Base

Tighten all nuts and attach the acrylic base. You need: four M3X25 DIN-912 class 8.8 screws, the acrylic base, four springs and four M3 DIN-934 class 9 nuts.

Step 33: Prepare Y Axis Endstop

You need: the Y axis endstop printed piece, one endstop, two M3X10 DIN-912 class 8.8 screws, and two M3 DIN-934 class 8 nuts.

Step 34: Secure the Y Endstop to the Frame

Step 35: Join All the Axis

Don’t forget to tighten the nuts.

Step 36: Prepare the Carriage

You need: the X axis carriage A and B printed pieces, one M3X20 DIN-912 class 8.8 screw, and one M3 DIN-934 class 8 nut.

Step 37: Attach the Carriage to the X Axis

Step 38: Fit the Belt to the X Axis

Step 39: Connect the Electronic

To connect correctly all things to the SAV MkI, see the connections on the image.

In this image there are some things that we don’t use, like the E-Motor
(extruder motor), the layer fan, the nozzle or the hotbed. We connect the termistors (you don’t worry, we use typical 10K value resistances) because the SAV don’t move the motors if there are not any termistor connected.

To limit the current of the motors, you can download and use a program (Pronterface is popular), but we used a multimeter and a screwdriver. Look at this page to see it.

Step 40: Calibrate the Motors

To move the motors, you can use Pronterface or directly a Serial monitor (we use Arduino serial monitor) to give instructions to the motors.

We’ll show you the process that we follow to do this with a serial monitor.

1. Open your serial monitor.

2. Write G91 and press enter.

3. Write G1 X50 (for example) and measure the distance that X axis has moved. If the distance is 5cm, the motor is correctly calibrated. If the distance isn’t 5cm, you need to calibrate the motors.

4. Write M501 on the serial monitor and press enter. Take a look at the line that begins in M92.

5. Change the X value writing M92 X and the value you want, for example: M92 X80.00. Probably you’ll have to change the Y value too.

6. Write M500 and press enter to save the changes.

7. Take a measure again. If the distance is correct, go to the next point. If not, repeat the process.

8. Repeat the process with the Z axis. Change G1 X50 or G1 Y50 for G1 Z50 (or the value you want).

9. You must adjust the speed of the motors, specially the Z axis. If the speed is very high or very low, the axis won’t move and you can burn the motors. Now, you have to write M201 Z1000 and press enter (with this command you change the speed of Z axis, the 1000 number is the speed that we use in our machine, but you have to use a correct value for yours). Write M500 and press enter to save the changes.

10. Repeat the process with the other axis.

11. You take the measure of the current with a multimeter when the motor is moving. Adjust it at the level you want turning the potentiometer with a screwdriver. Use a ceramic screwdriver or turn off the power supply before doing it if you are going to use a normal screwdriver.

Step 41: Painting

When you have all correctly connected and calibrated, is the moment of paint with our machine. We use a pen screwed in the carriage with a printed piece. In the future, unscrewing this piece and changing it for an extruder, we can turn our “painter” in a 3D printer, for example.

We use Sketchup and FreeCAD to make the designs. When we have our .stl file, we open Cura (a typical 3D printer program) to visualize the “piece to print”, our picture to paint. Load your .stl file, configure the machine parameters and press print.

Few seconds later, you can enjoy your machine drawing a work of art or writing a best seller.

Step 42: Thanks

Thanks for the collaboration to:

Our teachers, Arcadio Reyes Lecuona and Luis Molina Tanco.

Francisco Malpartida, who let us the SAV MkI and his videos teached us how to use it.

Jorge Alberto Hernández Luque, who gave us some recycled pieces.

Mariano Conde Caballero and Antonio beta, who gave us the printed pieces for a good price.

Step 43: Made for RST Electronics

Rodríguez Antón, Juan Pedro.

Sánchez Zafra, Sergio David.

Talavera López, Manuel.