Introduction: LOW COST DIY 500€ CNC MILL
Hi,
in this Instructable I want to show you, how you can build your own CNC-Mill for less then 500€. I designed this machine for CNC-beginners, who don't want to spend a lot of money for their first experiences with CNC machines but also expecting a rigid and professional looking CNC.
This machine is perfect for maker, tinkerer and everyone who wants to start CNC-Machining.
In the pricerange of sub 500€ you will not find any other CNC with these features:
- 710 Watt spindle motor
- MGN linear-rails on all axis
- 1204 ballscrews on all axis
- effective workarea of 250x220mm
- max. travelspeed of 3000mm/min (at 12V)
- high accuracy of 0.1mm in all axis
- super rigidportal frame (out of one piece of wood and aluminium extrusions)
Below on this site, you will find a detailed instruction + a bill of materials (BOM) with links, where you can source the required parts.
The complete CNC is build out of CNC milled screen printing wood plates. So assembling will not be a problem. For the build you don't need any expensive tools like (3D-Printers, CNC or Lasers). The only special tool is a M5 and M6 thread cutter.
Video of CNC in action:
If you like my Instructable, please vote for me in the Build a Tool Contest
You can see the CNC live at Makerfaire Ruhr 2020
I really like to see, when someone has rebuilded the CNC, so please post a photo of the CNC in the comments with "I made it" :-)
Change Log:
- [06.03.2019] Added step "Configure Estlcam for This Machine" + video of test run
- [07.03.2019] Added video of CNC in action
- [15.03.2019] Added photo of Linear Parts
Step 1: Mechanical Parts
The complete CNC is designed in Fusion 360, below you will see the complete CNC in an interactive 3D-model:
Required Parts:
CNC-Milled-Parts:
Here are all required CNC-milled parts. You can buy all the CNC-milled parts in my Online Shop. The total cost of all the CNC-milled parts will be 150€ + shipping.
Quantity | Description | How the part looks like |
---|---|---|
1x | Y_Axis_Front | ![]() |
1x | Y_Axis_Rear | ![]() |
1x | Y_Axis_Nut | ![]() |
2x | Portal_Side | ![]() |
1x | Portal | ![]() |
1x | X_Motor | ![]() |
1x | X_Bearing | ![]() |
1x | X_Carriage | ![]() |
1x | Z_Motor | ![]() |
1x | Z_Plate_Front | ![]() |
2x (normal+mirror) | Z_Plate_Side | ![]() |
1x | Spindle_Mount | ![]() |
1x | Main_Plate | ![]() |
Aluminium Extrusion Parts:
I am trying to use as much standart aluminium extrusion parts, so it will be relativly easy to source the parts.
Quantity | Description | Link | Price |
---|---|---|---|
10x | 2040 extrusion angle bracket | Aliexpress | 9,10€ (for 20 pieces) |
2x | 428mm 20x20mm aluminium extrusion 6mm slot | dold-mechatronik | 2,07€ |
2x | 400mm 20x40mm aluminium extrusion 6mm slot | dold-mechatronik | 3,70€ |
2x | 250mm 20x20mm aluminium extrusion 6mm slot | dold-mechatronik | 2,60€ |
1x | 330mm 20x60mm aluminium extrusion 5mm slot | dold-mechatronik | 4,26€ |
Nuts, Screws and Washers:
I am trying to be as accurate as possible while counting all the screws and nuts. If you find any fault on the list, please tell me, so I can update the parts list. Also I recommend to buy some more screws.
Quantity | Description | Where to buy | Price |
---|---|---|---|
84x | M3 T-slot Nut Slot 6mm | 5,60€ | |
40x | M4 T-slot Nut Slot 6mm | 5,60€ | |
4x | M4 T-slot Nut Slot 5mm | 0,88€ | |
32x | M4x20mm DIN912 cylinderhead screw | local hardware store | - |
32x | M4x16mm DIN912 cylinderhead screw | local hardware store | - |
8x | M4x12mm DIN912 cylinderhead screw | local hardware store | - |
8x | M3x16mm DIN912 cylinderhead screw | local hardware store | - |
52x | M3x12mm DIN912 cylinderhead screw | local hardware store | - |
8x | M3x10mm DIN912 cylindergead screw | local hardware store | - |
84x | M3x8mm DIN912 cylinderhead screw | local hardware store | - |
6x | M5x20mm DIN912 cylinderhead screw | local hardware store | - |
12x | M5x10mm DIN912 cylinderhead screw | local hardware store | - |
16x | M6x20mm DIN912 cylinderhead screw | local hardware store | - |
8x | M3 nylon nut | local hardware store | - |
24x | M4 nylon nut | local hardware store | - |
8x | M3 washer | local hardware store | - |
6x | M5 washer | local hardware store | - |
80x | M4 washer | local hardware store | - |
16x | M6 washer | local hardware store | - |
Linear parts and custom machined ballscrews:
For the CNC mill you will need three custom machined 1204 ballscrews. I have attached a drawing with the dimesions at the bottom of this step. Additionally you will need MGN12 linear rails, ballscrew, bearings and housings. Because it was a littlebit hard to source all the parts, I contacted a manufacture, who can supply all these parts for a resonable price. This manufacture will also make the custom machined ballscrews. You can buy all the parts here: Aliexpress
Quantity | Description |
---|---|
1x | 1204 Ballscrew 425mm |
1x | 1204 Ballscrew 395mm |
1x | 1204 Ballscrew 200mm |
4x | 400mm MGN12 Linear Rail |
2x | 250mm MGN12 Linear Rail |
12x | MGN12H Linear Rail Wagon |
2x | FF10 Ballscrew Bearing |
3x | 24mm 1204 Ballscrew Housing |
3x | 5 to 8mm shaft coupler (rigid ; not the red or flexible) |
Attachments
Step 2: Electrical Parts
Electrical Parts for the CNC:
Here you will find all the required electronic parts for the CNC mill. For the router you can use the Katsu from Amazon or a Makita RT0700C. Both will fit to the CNC-milled parts.
Quantity | Description | Link | Price |
---|---|---|---|
1x | 710W 230V spindle motor | Amazon | 59,99€ |
3x | inductive limit switches NPN | Aliexpress | 4,44€ |
3x | Nema 17 Motors | Aliexpress | 33,00 € |
1x | Arduino Uno + CNC-Shield + DRV8825 | Aliexpress | 9,76€ |
1x | 12V Powersupply 5A | Aliexpress | 7,05€ |
some | wires | - | - |
Step 3: The Main Frame
What you need for this step:
Quantity | Description |
---|---|
32x | M3x8mm DIN912 cylinderhead screw |
32x | M3-T-Slot-Nut 6mm-Slot |
2x | 400mm MGN12 Linear-Rail |
4x | MGN12H-Linear-Rail-Wagon |
1x | Y_Axis_Front |
1x | Y_Axis_Rear |
8x | M6x20mm DIN912 cylinderhead screw |
8x | M6 washer |
2x | 20x40mm aluminium extrusion 6mm slot |
What you have to do:
At frist you have to cut eight M6 threads inside the aluminium extrusions. After that you need to attach the MGN12 linear rails to the alumnium extrusions by using the M3x8mm screws. Then you have to take the two wood parts and attach them to the aluminium extrusion with eight M6x20mm screws.
Step 4: Y-Ball-Screw
What you need for this step:
Quantity | Description |
---|---|
8x | M3x16mm DIN912 cylinderhead screw |
4x | M3-nylon nut |
8x | M3-washer |
1x | FK10 Bearing |
1x | 1204-ballscrew housing |
1x | 395mm 1204-ballscrew with custom end-machining |
1x | Nema 17 Stepper Motor |
1x | 5x8mm shaft-coupler |
What you have to do:
Now it is time to install the Y-ballscrew to the main frame. At first install the Nema 17-motor to the rear plate and fix it with four M3x16mm screws. Then you can slide the 395mm ballscrew in. Once the ballscrew is in place, attach the FK10 bearing at the front plate. The FK10 bearing is fixed by four M3x16mm screws and M3-nylon nuts.
Step 5: Y-Ballscrew Plate
What you need for this step:
Quantity | Description |
---|---|
4x | M5x10mm DIN912 cylinderhead screw |
1x | Y_Axis_Nut |
What you have to do:
For that step, you have to install the Y_Axis_Nut plate to the ballscrew housing. You do that with four M5x10mm screws.
Step 6: The Portal Side
What you need for this step:
Quantity | Description |
---|---|
4x | M4x16mm DIN912 cylinderhead screw |
4x | M4-T-slot nut 5mm Slot |
1x | 330mm 60x20mm aluminium extrusion 5mm slot |
6x | M5x20mm DIN912 cylinderhead screw |
6x | M5 washer |
16x | M3x12mm DIN912 cylinderhead screw |
16x | M3 washer |
2x | Portal_Side |
What you have to do:
At first you have to connect the two Portal_Side plates to the linear wagons. After that you have to attach the 60x20mm extrusion to the Portal_Side plates by using the six M5 screws. Finally connect the ballscrew housing from the previous step to the extrusion.
Step 7: The Main Plate
What you need for this step:
Quantity | Description |
---|---|
1x | Main_Plate |
16x | M6 hammer nut |
What you have to do:
You have to hammer the 16 hammer nuts to the predrilled holes.
Step 8: Attach the Main Plate to the Main Frame.
What you need for this step:
Quantity | Description |
---|---|
8x | M4x12mm DIN912 cylinderhead screw |
8x | M4 T-Slot mut 6mm slot |
8x | M4 washer |
What you have to do:
You have to connect the preassembled Main_Plate to the main frame. The connection is made with eight M4x12mm screws.
Step 9: Portal
What you need for this step:
Quantity | Description |
---|---|
32x | M3x8mm DIN912 cylinderhead screw |
32x | M3-T-slot nut 6mm slot |
8x | M4x12mm DIN912 cylinderhead screw |
8x | M4x20mm DIN912 cylinderhead screw |
32x | M4 washer |
2x | 400mm MGN12 Linear Rail |
4x | MGN12H Linear Wagon |
2x | 428mm 20x20mm 6mm slot aluminium extrusions |
4x | 4020 angle bracket |
1x | portal plate |
What you have to do:
At first you have to connect the linear rail to the aluminium extrusion.Then place the extrusions on the portal plate. Now screw the extrusions to the extrusions. Don't forget to place the angle brackets.
Step 10: X-Ballscrew
What you need for this step:
Quantity | Description |
---|---|
4x | M3x10mm DIN912 cylinderhead screw |
4x | M3x16mm DIN912 cylinderhead screw |
8x | M3 washer |
4x | M3 nylon nut |
1x | 425mm 1204 Ballscrew |
1x | 1204 24mm Ballscrew housing |
1x | 5x8mm coupler |
4x | M6x20mm DIN912 cylinderhead screw |
4x | M6 washer |
1x | Nema 17 Motor |
1x | X_Bearing |
1x | X_Motor |
1x | FF10 Bearing |
What you have to do:
You have to place the ballscrew between the two linear rails. The connection of the motor and the FF10 bearing is made by four M6 screws. Don't forget to cut the four M6 threads to the aluminium extrusions.
Step 11: X-Carriage
What you need for this step:
Quantity | Description |
---|---|
4x | MGN12H Linear Rail Wagon |
32x | M3x12mm DIN912 cylinderhead screw |
32x | M3 washer |
1x | X-Carriage plate |
What you have to do:
Connect the X-Carriage plate to the linear wagons by using the M3x12mm screws and the predrilled holes.
Step 12: Z-Axis Part 1:
What you need for this step:
Quantity | Description |
---|---|
1x | Z-Plate_Front |
2x | 250mm MGN12 Linear Rail |
2x | 250mm 20x20 aluminium extrusions |
8x | M4x16 DIN912 cylinderhead screw |
16x | M4 washer |
8x | M4 t slot nut |
20x | M3x8mm DIN912 cylinderhead screw |
20x | M3 t slot nut |
What you have to do:
Connect the linear rails to the extrusions by using the M3x8mm screws. After that attach the extrusions to the Z_Plate_Front .
Step 13: Z-Axis Part 2:
What you need for this step:
Quantity | Description |
---|---|
1x | Spindle_Mount plate |
1x | Z_Motor plate |
4x | M6x20mm DIN912 screws |
4x | M6 washer |
What you have to do:
Connect the Spindle_Mount at the bottom of the Z-Axis and the and the Z_Motor plate at the top of the Z-axis. Don't forget to cut a M6 thread inside the extrusions.
Step 14: Z-Axis Part 3:
What you need for this step:
Quantity | Description |
---|---|
2x | Z_Plate_Side |
8x | M4x16mm DIN912 cylinderhead screw |
16x | M4 washer |
8x | M4 T-slot-nut |
What you have to do:
Place the Z_Plate_Side plates at the side of the Z-axis. Then connect them with the M4x16mm screws
Step 15: Z-Axis Part 4:
What you need for this step:
Quantity | Description |
---|---|
1x | Nema17 Motor |
4x | M3x10mm DIN912 cylinderhead screw |
1x | 200mm 1204 Ballscrew |
1x | 1204 Ballscrew Housing |
1x | 5x8mm shaft coupler |
What you have to do:
Attach the Nema 17 motor to the predrilled holes and connect it with four M3x10mm screws. After that connect the ballscrew to the Nema 17 motor with the 5x8mm shaft coupler.
Step 16: Connect the Z-Axis and the Portal
What you need for this step:
Quantity | Description |
---|---|
4x | M5x16mm DIN912 cylinderhead screw |
4x | M5 washer |
What you have to do:
Slide the Z-Axis into the linear wagons on the X-Carriage. Then connect the Z-ballscrew to the X-Carriage with four M5x16mm screws.
Step 17: Connect the Portal to the Main Frame
What you need for this step:
Quantity | Description |
---|---|
6x | 2040 angle bracket |
32x | M4x20mm DIN912 screws |
64x | M4 washer |
32x | M4 nylon nut |
What you have to do:
Finally connect the portal to the main frame. You do this by using six additional angle brackets. All the requiered holes are predrilled. Please take a look at the pictures, where the angle brackets are located.
Step 18: Prepare the Spindle
For the connection between the spindle and the machine, I am using the allready existing spindle mount. You simply need to remove the plastic part at the bottom of the mount.
Step 19: Attach the Spindle Mount to the Machine
What you need for this step:
Quantity | Description |
---|---|
4x | M4x16mm DIN912 cylinder head screw |
4x | M4 washer |
1x | Spindle mount |
What you have to do:
Place the spindle mount on the Z-axis. Then connect it to the Z-axis with four M4x16mm screws. Once completed, you can slide the spindle inside the spindle mount.
Step 20: Electronics
For the electronics I am using an Arduino Uno with a CNC-shield. This is the cheapest methode to controll the CNC.
For the connection you have to connect the X-Motor to the X-Motor-Port, the Y-Motor to the Y-Motor-Port and the Z-Motor to the Z-Motor Port. Then you have to connect 12V to the board at the blue terminal pins. After that connect it to your PC and flash the software (GRBL or ESTLCAM) to the Arduino.
Now you should be able to move your machine.
(coming soon):
On the machine there are also holders for inductive 12mm end switches in the CNC milled frame. I am still waiting for delivery, so when they arrieved, I will update the instruction.
Step 21: Software
To controll the machine you need 3 types of software:
1. CAD software:
Inside the CAD software you create your 3D-File, which you want to manufature. I personally use Fusion360 for this kind of application.
2.CAM software:
In the CAM software you define the tool path of your CNC machine, here you can also use Fusion360, because it has a build in CAM-module.
3. G-code Sender:
The G-code sender took the G-code file, from the CAM-Software and sends it to the controller of the machine. Because I am using an Arduino as the controller you can use GRBL as a software on the Arduino and a G-code sender like "Univerversal-Gcode-Sender" or "bcnc"
As an alternative I also want to mention Estlcam. In Estlcam, the CAM and controller part are combined in one software (If you use an Arduino as your controller). Also it is more simple to use compared to other CAM Software.
Step 22: Configure Estlcam for This Machine
I personally recommend to use Estlcam over GRBL for this CNC because of these aspects:
- It is a lot easier to configurate than GRBL
- It has a build in CAM, so you don't need any additional Software
- Controller and CAM are combined in one Software
Now I want to show you which configuration you have to do, that the machine will work propably:
1. Open Estlcam and go to "Einstellungen" then click on "CNC Steuerung"

2. After that a window will open with some configurations. There you will see all the basic values for this machine. Once you have all the settings like in the picture, connect your Arduino to your computer, select the right COM-Port, click on "Steuerung-Programmieren":
3. If the programming of the Arduino was a success, close "Estlcam" and open "CNC-Controller". Now you should be able to move your machine.
4.Here is a video of the test-file. The test file can be downloaded at the bottom of this step. The feedrate in the testfile is 2400mm/min.
Step 23: CNC-Milled Results
Here I will show you some CNC-milled parts, which where milled on this machine. ( list will be extended in the future )

Second Prize in the
Build a Tool Contest
3 People Made This Project!
- MarkusK39 made it!
- cho42 made it!
- haraldhartmann78 made it!
70 Comments
Question 1 year ago on Introduction
Bonjour si je veux modifier la cnc quel soit un peux plus large et plus long faut-il changé les moteur et carte?
Cordialement
1 year ago
Can anyone point me to the .dxf files for the machined parts?
Question 2 years ago on Step 1
Hallo, erstmal ein gutes, gesundes neues Jahr!
Habe folgendes Problem, das Kugellager meiner Z-Achsenspindel ist defekt. Brauche dringend ein Ersatzteil. Können Sie mir bitte mitteilen, wo ich die Ersatzteile herbekommen kann???
Vielen Dank
Schöne Grüße
flashover333
Question 2 years ago on Step 2
Hallo und vielen Dank für die tolle Beschreibung. Habe mir alle Teile bestellt und warte noch auf die Lieferung aus China. Habe aber ein Problem mit der Einstellung der Treiber für die Nema17 Motoren. Welche Spannung soll ich da einstellen? Ich möchte ja nicht, dass die gleich durchbrennen. Habe eine Formel gefunden (2.1 A x 70% = 1,47 A
VRef = 1,47A x 5 x 0,1 = 0,735 V). Laut dem Datenblatt, dass bei den Nema dabei war hätten diese 2,1 A. Soll ich 0,735 V einstellen oder was wäre der richtige Wert.
Danke und ich warte schon mit Spannung auf die restlichen Teile.
Schöne Grüße
flashover333
Answer 2 years ago
Hi,
die Formel ist mir so nicht bekannt, aber ich mache es selbst auch immer nach frei Hand. Stell die Referenzspannung zunächst so niedrig wie möglich und erhöhe diese dann soweit, das du deine benötigte Geschwindigkeit ohne Aussetzer erreichst. Falls die Motortreiber zu warm werden, entsprechend die Referenzspannung reduzieren.
Die Motortreiber (DRV8825) sind zudem thermisch überwacht und es ist sehr unwahrscheinlich, das diese an einem Hitztod sterben. Einfach ausprobieren!
Viele Grüße
Vulcaman
Question 2 years ago
Gibt es auch die Fusion360 Zeichnungen der Teile oder DXF Dateien zum Download?
Question 2 years ago on Introduction
Hallo Johannes. Tolles Projekt. Ist die Maschine in der Lage Aluminium zu fräsen (evtl andere Spindel)?
Answer 2 years ago
Ja die Fräse ist in der Lage Aluminium zu fräsen, die Stabilität reicht dafür aus. Jedoch ist es empfehlenswert sich eine HF-Spindel (Chinaspindel) zu besorgen, sodass man präzise den Vorschub einstellen kann. Zusätzlich sollte noch eine Minimalmengenschmierung verwendet werden für optimale Fräsergebnisse.
Question 3 years ago on Introduction
very impressive, the parts that you sell to make the mill do you create these on this mill? m based in spain and am very interested in this, I only use Mac though, would it be compatible with OSX.
Answer 3 years ago
The parts I sell are not milled on this machine, because the machine is not big enough to mill their own parts. I have another DIY CNC-Mill (completly different design) out of aluminium, where I can mill all these parts very accurate and in a decent speed.
I think this machine will also work with a Mac if you use this software combination: Fusion360 for CAM, bcnc or UGS for Gcode-Sender and GRBL on the Arduino. Sadly Estlcam will not work on a Mac, but for GRBL there a lot of tutorials in the internet, how you have to set it up.
Reply 2 years ago
Hallo Johannes. Wo finde ich denn die Anleitung zu der anderen DIY Fräse? Diese hier hat mir etwas zu wenig Workspace. Vielen Dank.
2 years ago
This looks awesome, thanks. Unfortunately not having the cutout files would be a real pain. Someone has to do the work finding all the measurements and from there extrapolate the shapes. You don't even ship the cutouts to Canada. The community needs a truly open-source machine.
3 years ago
Mee to can't seem to find the files for the CNC parts. I am thinking about having them jetted out of alu. Are those files still available?
3 years ago on Step 23
Hi,
How can I download your parts. I want to do it by different materials, but I dont see and can't download some of your part. If you can, will you share your design with my Fusion 360 account 1511026@hcmut.edu.vn.
Thanks so much and best wish for you!
3 years ago
Hi,
the download button dont run. Whats wrong ?
Greetings
Andreas
3 years ago
Reply 3 years ago
I already informed him in july via email.
Step 17 lacks some m4 6mm t-slot-nuts and some shorter m4x12, because you have to mount two angle brackets in the portal aluminium profile
Reply 3 years ago
I am stuck in my build in this stepp. I ordered the last profile on aliexpress. My steppers was without conections, so I orderd a crimp pilers to.
Question 3 years ago on Step 20
Have the limit switches still not been delivered? (End of Step 20 "Electronics")
Answer 3 years ago
Sadly the limit switches are not delivered yet, because my order from aliexpress got lost