Introduction: DIY Arduino CNC

Hi, My name is Deep Mistry. I'm currently studying Mechanical engineering at University, I'm a car enthusiast and a machining fanatic. This is one of my first major projects.

Step 1: Supplies


  • Arduino UNO
  • Arduino CNC shield V3
  • Computer fan
  • switches (2x)
  • A limit switch or a push-button
  • 12v power supply
  • Spindle motor
  • NEMA 17 stepper motors (3x)


  • 400mm Linear rail (6x)
  • 400mm Lead screw (3x)
  • Pillow block bearings (3x)
  • Rail shaft support (12x)
  • Linear bearing (10x)
  • Flexible shaft coupling (3x)
  • Lead screw nut
  • Aluminum L angle (0.5in x 0.5in x 48in)
  • Stepper motor mounts
  • wood platforms (for the bases and structure)
  • Spindle motor mount
  • Miscellaneous metal brackets

Step 2: Making the Y-axis & X-axis

In order to build one axis, we are going to use,

  • (4x) Rail shaft support
  • (2x) linear rail
  • (4x) Linear bearings
  • (1x) Flexible shaft coupling
  • (1x) Lead screw
  • (1x) Lead screw nut
  • (1x) Pillow block bearing
  • (1x) Baseboard
  • (1x) stepper motor mount

Start by finding a solid base, I'm using an old wooden shelf, just make sure that it is flat and there are no dips in the base. Then, plan and mark where you want to put your rail supports, but be sure that they are 100% parallel to each other. Once the rail supports are mounted using bolts or wood screws mark the center between the linear rails (not the center of the board) this is where the lead screw will be. Using the mark, mount your pillow block bearing such that the center of the hole is in line with the mark. For the stepper motor mounts, you can either buy pre-made mounts or improvise mounts like how I did by using some L-brackets, Now using the center between the rails install your stepper motor and mount, you may notice after installing the lead screw and lead screw to stepper motor coupler that the bearing is much lower than the lead screw, to fix this, use washers to space the bearing up while using a level to check (make sure you are doing this on a level surface).

To connect the stepper motor to the axis I am going to use a lead screw nut and a metal L-bracket (look at the last picture for clarification). Start off by getting an L-bracket such that the face of the lead screw can fit onto the face of the bracket, then mark the center and drilled a hole that is big enough for the extrusion of the lead screw to fit through. Then, transfer the holes from the face of the lead screw to the bracket, once that's done, use some nuts and bolts to secure the lead screw to the bracket. Finally, drill two holes on the other face of the L-bracket (these will be used to attach the bracket to the axis) and use screws to fasten the bracket to the axis baseboard.

Step 3: Connecting the Y-axis to the X-axis

For the CNC I am using linear bearings, and in order to keep the two bearings for each linear rail perfectly inline with each other, I'm using two pieces of 1/2 x 1/2in x6in to keep them together, this also help keeps your CNC a bit more rigid.

When it comes to actually installing these "carriages" onto the x-axis I marked a straight line where the linear rail was going to be (to know where on the board the carriage was going to land). Then I drilled four holes (according to the pattern on the linear bearing) large enough that the threads of the screw could go through but not the head of the screw, afterwards I used another drill bit that was large enough for the head of the screw to fit but I drilled just enough where enough of the threads could come out the bottom of the axis baseboard and so the screw would fall through (If you end up drilling through by accident, just superglue a washer on the bottom of the hole).

Now, you can just install the x-axis onto its linear rails. You are now done both the X and Y-axis.

(If you find that the axis is not moving smoothly, go around and loosen the screws holding the carriage in until the axis moves smoothly)

Step 4: Making the Z-axis

Now, for the z-axis, it's going to be very similar to the x and y-axis. Using two linear bearings attached to a small thick piece of wood to act as the base for mounting the spindle. Then, two small L-brackets screwed into the wood in order to create an offset surface and using two triangular brackets to create the support for the final mounting plate of the spindle, including two small L-bracket underneath to add rigidity. Afterwards, a metal plate with holes was added for mounting the spindle motor. Finally to add rigidity to the entire upright of the CNC two large shelf support brackets were used.

Step 5: Electronics + Spindle

The final part of the CNC, plugging everything in! Using the labelled diagram of the CNC controller the stepper motors can be plugged in, we can also plug in any switches we may want for various functions, I have an Emergency stop button, a hold/pause button and a resume button. Also using the GND and 5-volt pin I wired in a computer fan for cooling. For the spindle, all I currently have is an electric motor from a weed trimmer coupled with a drill collet, to power the CNC board I'm using a 12v power supply and I will be using a separate power supply for the motor.

Step 6: Next Steps

Due to financial constraints and university, I have stopped working on this for now.

My next steps include:

  • Testing the CNC with wood, acrylic and aluminum
  • making the CNC even more rigid
  • enclosure
  • upgrading the spindle motor and mounts

Thank you for reading, I would appreciate any and all feedback on this project.

Make it Move Contest 2020

Participated in the
Make it Move Contest 2020