Homemade DIY CNC Machine using Step Motors, Dremel, and EMC2

Tags: , , , , , ,

CNC MachineWhat is a CNC?

The abbreviation CNC stands for computer numerical control, and refers specifically to a computer “controller” that reads G-code instructions and drives a machine tool, a powered mechanical device typically used to fabricate components by the selective removal of material.

In simple words, a CNC is a machine which is controlled by a computer, and used to fabricate 3D objects.

This page will describe the process of building a CNC machine, from the design stage, the required materials and the process itself.

Still confused? Here’s a shot movie showing a CNC fabricating a printed electronic circuit board:

After seeing the movie, you must have understood how useful that kind of machine is for printing electronic circuit boards or manufacturing robot parts. This kind of machine helped tremendously cut the prototype manufacturing costs, and thus very useful for me. The only problem is – such a machine costs thousands of dollars.

But as I say – “If there’s a will there’s a way”. So I decided to build such a machine myself.

This page describes the building process, beginning with the design, the required parts list, the needed electronics, how to connect everything to the computer and how to operate the machine.

Parts List

Aluminum U Channels, 20cm x 20cm

Aluminum Rails

1/4″ Threaded Rods:

Threaded Rod

Long 1/4″ nuts:

Leading Nut

Bearings (different sizes):


Perspex (Acrylic) boards:


Choosing the stepper motors

While choosing the motors one should take into account the physical size of the machine, the weight each axis will carry. Another important criteria is the precision of the motors – the number of degrees it spins at each step. A few more parameters are the physical size of the motor (NEMA23, NEMA32..) and it’s power rating.

I have chose Shinano Kenshi 1.8 degrees\step, 7.3 volts 0.95 ampere, NEMA23 stepper motors. To achieve more precision I run the motors in half-stepping mode. The motor is controller using my CNC Stepper Motor Controller.

Stepper Motor

CNC Controller

I built an opto-isolated 3 Axis CNC Controller which supports home and limit switches for all the axes.

More info at the CNC Controller Page

CNC Controller Board

CNC Controller - Case

CNC Software – Linux EMC

Linux CNC

The software I’m using is EMC – Linux CNC. It has many advantages – it’s an open source program and thus a free one, it supports various kinds of hardware and configurations and it’s very easy to use. Since EMC is running on a special version of linux – Real Time Linux, it is also very reliable and never misses a step.

EMC Is working with G-Code.

Creating The Machine Frame

The machine’s frame is created from metal bars, soldered together and painted gray:

CNC Stand

Threaded rod’s bearing mounts:

In order to achieve high precision, I used bearings to fix the threaded rod to the frame:

מיסבים מוט הברגה
תושבת מוט ההברגה של ציר X

The result is impressive – the threaded rod is fixed to the frame, and it moves very smoothly, as you can see in the video:

Motor Mounts:

X Axis motor mount:

תושבת המנוע של ציר ה-X

Y Axis motor mount:

תושבת המנוע של ציר ה-Y

Z Axis motor mount:

תושבת מנוע ציר Z ומצמד המנוע

Using bearings to tighten everything:

מיסב להצמדת תושבת הציר

Motor shaft coupler

This is the first coupler I created. It’s made of a long nut, in which I drilled two small holes. Its performance was medium – a coupling was achieved, but I could notice some jitter.

Shaft Coupler

So I replaced it and bought aluminum and rubber professional couplers:

מצמד מנוע

X and Y Axes

Both X and Y Axes, with the motor mounts. Click on the picture to enlarge.

Home and Limit switches

In order to support automatic homing of the machine, and have better safety, I installed home and limit switched for all the axes. You can see the home and limit switches for the Y axis in the pictures below.

מפסק בית - ציר Y

Limit switch:

מפסק גבול - ציר Y

Z Axis:

The dremel mount is made of 15mm x 15mm perspex. It works out very well – there is no vibration even when the Dremel is spinning in 33,000 rpm!

תושבת הדרמל

The Dremel head with the CNC milling bit:

ראש הדרמל עם הכרסם

Bearing support for the Z Axis:

תמיכת מיסבים בציר ה-Z

The finished machine!

מכונת CNC
מכונת CNC

Side View

מכונת CNC

CNC in Action – CNC Examples

The CNC Machine is now complete! The results are very good – I get 0.4mm precision (I simply can’t measure if it’s more precise than that).

An example of milling wood:

An example of PCB Isolation Routing, here is the PCB layout:

סכמת מעגל מודפס PCB

A picture taken while the printed circuit board was milled:

CNC PCB Isolation Routing

A video demonstrating the CNC machine milling a printed circuit board (PCB) using PCB Isolation routing. The machine is working at it’s lowest speed in this example, in reality it can be configured to run much faster.

The result:

CNC PCB Isolated Board

As you can see the machine is able to create PCB quite nicely.

In order to *really* test the machine, I tried to engrave the following scheme of a horse – which is 2mm x 2mm only!

CNC Engraved Horse

The result amazed me (the photo is enlarged so you can see the detail):

CNC Engraved Horse


Subscribe now via RSS and never miss a post!

36 Responses to "Homemade DIY CNC Machine using Step Motors, Dremel, and EMC2"

  • David Orthman says:
    • Anonymous says:
  • Chris says:
  • haazvaa says:
  • Kostis says:
  • BHATGAV says:
  • Lin says:
  • Lincheng Xiu says:
  • Anonymous says:
  • Dennis says:
  • TML says:
  • Charlie Rheo says:
  • Mike says:
  • Kodama says:
  • Prashant says:
  • Anonymous says:
    • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
    • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says:
  • Anonymous says: