Introduction: 3 Axis CNC Milling Machine

About: Naval Architect and Ocean Engineer highly interested in CNC

For lots of projects a CNC milling machine is necessary for good and fast results. After some research about current available machines I came to the conclusion that all machines in a price frame of up to 2000€ can not fulfill my needs regarding working space and accuracy.

I want:

- 900 x 400 x 120 mm working space

- relatively silent spindle with high power on low rotation rates

- as much stiffness as possible (for milling aluminium parts)

- as much precision as possible

- USB interface

- to spend under 2000 €

With this requirements I started 3D construction as an iterative process, checking lots of available parts.

Main focus: The parts have to fit together.

Finally I decided to build the machine in 30-B type nut 8 aluminium frames with 16mm ball-circulation-spindles, 15mm ball-circulation rail bearings and 3Amp. NEMA23 stepper motors that fit easily to a ready to buy mounting system.

This parts fit perfectly together without the need of special manufactured parts.

Step 1: Building the Frame

good planning is everything ..

one week after ordering the parts arrived. And after few minutes the X-axis was ready. - Easier than I thought!

The 15mm HRC linear bearings have a very good quality and after mounting them you already feel that they will do a very good job.

After 2 hours the first problem: spindles do not want to get into the roller bearings. My freezer is to small for 1060mm spindles, thats why I decided to get dry ice which meant to pause the project for a week.

Step 2: Setting Up the Spindles

Friend with package of dry ice arrived and after few minutes of freezing the spindles fit perfectly into the roller bearings.

Some more screws and it already looks a little bit like a CNC machine

Step 3: Electrical Parts

The mechanical part is now finished and i come to electrical parts.

As I am very familiar with Arduino and want to have full control via USB, i selected an Arduino Uno with a GRBL shield and TB8825 stepper drivers at first. This setup runs really uncomplicated and after view settings the machine was controllable on the PC. Great!

But as the TB8825 runs on max 1,9 Amp and 36V (becoming really hot), it is enough to run the machine but i recognized step losses due to too less power. Feel also not very good when I think of long milling process on this temperature..

I bought cheap TB6560 from china (5$ each, 3 weeks delivery) and connected them to the GRBL shield. The voltage ratings are not very precise for this board, you find ratings from 12 - 32V for this board. As I already have the 36V power supply, I just tried to use it.

Result: two stepper drivers works fine, one cannot bare the higher voltage and one only turns in one direction (not possible to change direction)

So again searching for a good driver..

The TB6600 is my final solution. It is fully covered with aluminium cooling device and easy to setup. Now running my steppers on X and Y axis with 2.2amps and Z axis with 2.7 amps. I could go up to 3 amp, but as i have a closed box to protect circuits against aluminium dust, I decided to run on 2.2 what is enough for my needs and produces nearly no heat. Additional I do not want the steppers to destroy the machine in case of any mistake, when i give them too much power.

I was long time thinking of a solution to protect power supply for steppers and frequency converter against small aluminium parts. There are many solutions where the converter is mounted very high or in enough distance to the milling machine. Main problem is, that this devices produces much heat and need their active cooling. My final solution are fine tights of my girlfriend. Cutting them into 30cm pieces and using them as a protection hose is very uncomplicated and provide good air flow.

Step 4: Spindle

The selection of a suitable spindle needs a lots of research. At first I thought to go with a standard Kress1050 spindle, but as it has only 1050W on 21000rpm, I cannot expect much power on lower rates.

For my requirements of dry milling aluminium and maybe some steel parts, I need power on 6000-12000rpm.

Thats why i finally chose a 3kw VFD from china incl. converter for 335€.

The quality of the spindle is very good. It is quite, powerful and easy to setup. I underestimated the weight of 9kg but luckily my frame is really strong and there are no problems with the heavy spindle. (The high weight is the reason to drive Z axis on 2.7 amps)

Step 5: Work Completed

It is done. The machine is working very well, I just had few problems with the stepper drivers but in total I am really satisfied with the result. I spent about 1500€ and have a machine matching exactly my needs.

First milling project was a negative form in POM.

- Machine did a good job!

Step 6: Upgrade for Aluminium Milling

Already at POM i saw that the torque on the Y-bearing is a little bit to high and the machine bends on high forces around the Y axis. That's why I decided to buy a second y-rail and upgrade the gantry accordingly.

After this there is now nearly no movement due to forces on the spindle. Great upgrade and of course worth the 120€.

Now I am ready for Aluminium.

With AlMg4,5Mn I made very good results without any cooling.

Step 7: ​Conclusion

Building an own CNC machine is really no rocket-science. I have relatively bad working conditions and equipment, but with good planing there are only few bits, screwdriver, gripper and normal drilling machine needed. One month CAD construction and purchase planning and four month of building to complete the machine. Building a second one would be much faster now but without any pre-knowledge in this field I had to learn a lot about the mechanics and electronics in that time.

Step 8: Parts

Here you can find all main parts. I would recommend AlMg4,5Mn alloys for all Aluminium plates.


I bought all electrical parts on ebay.

Arduino+GRBL-Shield: ~20€

Stepper Driver: 12€/ pc.

Power Supply: 40€

Stepper Motors: ~20€ /pc

Milling Spindle+Inverter: 335€


Linear Bearings:

Linear Rails:





Fix-Spindle-Bearings+Stepper holder:


Spindle-Stepper Couplings:

Got china couplings for 2,5€ /pc.


Bottom profiles:

X-profiles for rails:

Y-profiles for X-axis Stepper/Spindle mounting


Profile on Linear X-Bearing:


Backplate / Mounting Plate:

5mm Aluminium Plate 600x200.




Z-Mounting Plate:

5mm 250x160 Aluminium Plate

Z-Sliding Plate for Spindle mounting:

5mm 200x160 Aluminium Plate

Step 9: Software

Using CAD, then CAM and finally G-Code Sender is very disappointed. After long search of a good software solution I found Estlcam, what is a very user-friendly, powerful software and very affordable (50€).

It completely overwrites the Arduino and controls the stepper motors on its own. There are many, good documented features. The trial version provides a complete software functionality with only some waiting times.

For example edge finding. It is just needed to connect a wire to Arduino A5 pin and connect the wire to the workpiece (if not metal, then use aluminium foil to cover it temporary). Via machine controls you can now drive the grounded milling tool against the working piece. As soon as the circuit is closed, the machine stops and sets the axis to zero. -Very useful!

(normally there is no separated grounding needed, because the spindle should be grounded)

Step 10: Upgrade 2

Until now the Y and Z axis had temporary plastic brackets to transmit forces of the spindle nuts and move the milling spindle accordingly.

The plastic brackets were out of strong plastic, but i do not trust them.. imagine the Z axis bracket would brake, the milling spindle would just fall down (obviously during milling process).

Thats why I milled this brackets now out of aluminium alloy (AlMgSi).

The result is attached picture. This is now much stronger as the plastic version I made before without a milling machine.

Step 11: Machine at Work

Now with a little bit of practice the machine already produces very good results (for hobby purpose)

This pictures show a nozzle of AlMg4,5Mn. I had to mill it from two sides. The final piece is without any further polishing or sandpaper.

I used a 6mm 3 flutes VHM tool. I figured out that 4-6mm tools are making very good results on this machine.