Introduction: DIY Arduino CNC Machine

About: I'm electronics enthusiast. I like to design and develop new things.

In this instructable, I show you how to make Arduino CNC machine at home. The aim of this project is to make the Computer Numerical Control machine which helps to design the PCB without using ETCHING process, which makes the manufacturing process faster.

This problem or idea came across by observing and evaluating the real time scenario of well going PCB designing process using an etching process which is tedious and time-consuming. To overcome this problem the idea was born to increase the speed of process in real time to make the development cycle shorter. To fulfill the same purpose Microcontroller is used. By combing of both Arduino platform and GRBL firmware helped to overcome this problem.

With the help of this CNC machine, We can design a PCB as well as we also can perform different process like milling, drilling, drawing and engraving. So we can say that it's not only CNC machine, it's an all in one multipurpose CNC machine.

What things you will need [ Electronics Part ]:

  • Arduino UNO
  • Stepper Motor (1.8 Degree Step Angle)
  • Stepper Motor Driver (DRV8825)
  • SMPS - 12V, 10A
  • Miscellaneous components

What things you will need [ Mechanical Part ] :

  • Linear Bearing
  • Circular Bearing
  • Mild Steel Rod
  • Ball Screw / Lead Screw
  • Nut & Bolt
  • L Clamp
  • MDF Wooden Sheet


  • Univarsal G-Code Sender
  • FlatCAM
  • PCB Design Software(EAGLE CAD or DipTrace)

Step 1: Stepper Motor and Stepper Motor Driver (DRV8825)

Stepper Motor:

  • Bipolar Stepper Motor (12.6 Kgcm) for x-axis
  • Bipolar Stepper Motor (4.4 Kgcm) for y-axis & z-axis

Stepper Motor Driver (DRV8825) from Texas Instruments

Step 2: Power Supply - SMPS

Power Supply - SMPS (12V, 10Amps)

Step 3: Stepper Motor Driver - Connections

Stepper Motor Driver (DRV8825) connections diagram on General Purpose Board (GPB).

Step 4: CNC Machine Frame Designing

Step 5: MDF Wooden Sheet Cutting & Polishing

Step 6: Linear & Circular Bearing

Step 7: Metal Rod & MDF Wooden Sheet Part

Step 8: Drilling

Step 9: CNC Base Designing

Step 10: Designing of Lead Screw

Step 11: Designing of X-Axis

Step 12: Designing of Y-Axis and Stepper Motor Interfacing

Step 13: Designing of Z-Axis

Step 14: ​Final Structure of CNC Machine

Step 15: Working of CNC Machine

I'm using a software named as DipTracce to create a sample track for PCB. With the help of which we can generate a GERBER file. It consists of the G-codes which contains the information about the track of our PCB layout.

The Gerber file having those G-codes are further loaded into the FLATCAM software. By using this software, I'm creating the NC file, which is necessary to create a path for a drill bit.

Then the NC file is given to the UNIVERSAL G-CODE SENDER software. It is a GUI software which sends the G-code to the Arduino. Arduino is already loaded with the grbl hex file which is required to interpret those G-codes.

Check my video...

Job Done!