How to Make Arduino Based Mini CNC Machine a Complete Tutorial




About: Electrical engineer by profession

Hello friends previously i was uploaded a CNC machine instructables you peoples very much appreciate it some of you have many issue and confusion its obvious, reasons are little amount of knowledge is there.

So i came up here by collecting all necessary instruction to minimize your queries and questions regarding how to make and run successfully a CNC Machine.

Many makers contact and comments some common problems like

# My stepper is not working but its working in test Run

# Machine is plotting very small image

# Arduino or processing showing errors while launching codes

# Unable to make G-code files

# How to install libraries

So here i am posting a Complete guide of how to Make a CNC machine along in very simple and easy manner

If you have any question fell free to contact

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: First of All See This Videos

As per Human Psychology Videos or visual content is the best and power full way to learn

So before proceed further first of all take a look to this videos so you will clear in your mind about what you going to learn in this instructables,

Information in following all videos is must to have to build a perfectly fine CNC Machine so watch then carefully.

1) Watch this to see how to assemble CNC machine, Wire & run

2) Watch this how to Connects Stepper motors with Motor shield + a test run

3) How to make G-CODE file of any image

4) How add libraries in Arduino

After watching this i hope you got understood about basic concept and working of CNC machine

Lets processed for Bill of Material

Step 2: Bill of Material ( Hardware + Software )

Following are the Hardware & Software list you want


Arduino UNO/MEGA---------------------------------------------Qty---1

L293D Motor shield-----------------------------------------------Qty---1

Mini Servo Motor--------------------------------------------------Qty---1

OLd scrap DVD Drives-----------------------------------------Qty---2

50MM long bolts with nut and washer------------------------Qty---8

A pen----------------------------------------------------------------Qty---1

Some hardwares & tools----------------------------------------Qty---1lot


  1. Arduino IDE (Version 1.6.3) (
  2. Processing IDE (Version 3.0.2) (
  3. Inkscape (version 0.48.5) (

Go to link to download the particular software select software pack according to you system

**NOTE:- Inkscape version must be 0.48.5 only other wise gcode extension will not work.

Step 3: Role of Hardware & Software in This Machine

It is good to know role of each component and software in CNC machine


Arduino is basically work as a brain of CNC Machine a CNC code uploded to arduino so that when Gcode stream to arduino Arduino commands motor shield to run stepper motors.

2) L293D Motor shield

This is dedicated shield to control verities of motor with arduino here this shield control two stepper motor(x-axis & y-axis) and one servo motor, read this for detail technical knowledge.

3) Servo motor

Basically this motor is used here just to UP/DOWN pen servo is connected with motor shield

4) Arduino IDE

This is used to upload code to arduino

5) Processing IDE

This is used to stram G-CODE to arduino

6) Inkscape

This is used to make G-CODE file of any image

Step 4: Assembling the Machine

How to assemble machine ?

I hope you have seen videos and pic uploaded here so you have idea about how to assemble machine so I am not going in depth of it

Just want to highlight some key point

Make sure your machine became vibration free like tightly mount axis on each other

Here I used DVD drive shutter opening mechanism to do pen up/down with the help of servo motor, if you don’t want to do much complication simple tie the pen with servo motor shaft and your purpose get solved

Step 5: Wiring Drawing

Do component
wiring accordingly shown in images,

Do cross check power polarity once before powering the components

Step 6: Programming Arduino

Now your machine is ready its time to give life to you machine

So we need to program arduino

Here we are using L293D Motor shield, so it need to add some library (AFMOTOR LIBRARY) to arduino IDE Software

so first download & upload this library to Arduino IDE to know how to add library watch video number 4

Then upload this CNC Code to arduino

After successfully compiling and uploading your arduino programming part is over now move towards G-CODE

Step 7: Preparing G-CODE

G-code is the format of file which your machine can understand and work acordingly

Suppose you have to draw some text with machine so you need its Gcode so what you do

Inkscape software provides you a facility to convert image or text into G-code

how to convert file in G-code watch video number 3

But when you download Inkscape software from net there is not a G-CODE save as option so you need to add a library Extension in inkscape for this download the following Makerboat g-code unicorn extension

How to add this extension to Inkscape

1) Unzip the file

2) Open the folder by double click

3) Copy all the sub folders & files

4) Right click to the inkscape icon from desktop

5) Go to Properties

6) Go to open file location

7) Open "SHARE" folder

5) Open "EXTENSION" folder

6) Past here all that file

7) its done

Step 8: Processing IDE

Our arduino is ready our machine is ready and our g-code is also ready to print

So we need something which can transmit g-code to Arduino, so here we have Processing GCTRL program

Download GTRL Code from below link

After downloading the GCTRL Code unzip the folder load the gctrl code to processing and press play button

a new window open from this window you can select your communication port,

By pressing "G" a browser is open select your g-code file and upload it

as soon as you upload the file Machine start drawing

Here is some ready made g-code file is attached

Step 9:

Thanks for your attention friends

I hope i cover every point of how to make CNC machine

hope you have appreciate this if you are trying to make this machine have a good luck friend

If you stuck anywhere in between feel free to contact i will surely help out my level best

If you have some new idea to improve any thing in this please most welcome you can share with us.

Thanks & bye

subscribe our Youtube channel

Arduino Contest 2016

Participated in the
Arduino Contest 2016

5 People Made This Project!


  • Made with Math Contest

    Made with Math Contest
  • Multi-Discipline Contest

    Multi-Discipline Contest
  • Robotics Contest

    Robotics Contest

27 Discussions


23 days ago

Hello,please give me instructions on how to make an arduino code for this kind of machine which needs g code as well.What is the purpose of arduino code over g-code.Please help.I want to learn


Question 2 months ago on Step 5

How to power it? Is 5V sufficient? Is 1A enough?


Question 4 months ago on Introduction

I have also problem in my steeper 28byj-48 it only shivering on its position and I am using l293d shield servo is working properly.Please sir provide me the right program and right knowledge on this issue.


Question 11 months ago on Introduction

My stepper run's in test program but after uploading cnc code and then sending gcode the motors does not run so what is the problem and solution to it


Reply 1 year ago

Got the solution!!!!!

Try this change in line 31:

String result = (String) JOptionPane.showInputDialog(frame,


Reply 1 year ago

I am new to arduino programming . This is a gctrl code in the processing software. I am getting this error "the method showInputDialog(Component,Object,String,int,Icon,Object[],Object) in the type jOptionPane is not applicable for arguments(gctrl,String,String,int,null,int,int)" even though i have seen the same format of the arguments in the tutorials.


1 year ago

how to connect the ardunio to motor shield driver what are the pins should connect ?


2 years ago

I have made it completly but can u help me pls as it is not drawing neatly as desired ,output is distorted

Pls help ,


2 years ago

everything works. why only one motor to heat up the chip? Reset and then not heat up to the next process. L293D motor control card shield motor drive expansion board for motor shield Arduino


2 years ago

Very Nice..


2 years ago

Hello Mr. Innovative :-)

What about your website? It is empty ...

I'd like to get the instructions for building a cnc-plotter.

Are you planing to go online again?

Thanks for an answer

1 reply

2 years ago

fixed it in inscape I had to scale up to 80mm and draw in the top right hand corner keeping in the 40mm plus zone if this makes sense


2 years ago

There appears to be some error in the code as the home function and arrow key movement functions dont work. however, the P and G functions work fine.


2 years ago

Thank you very nice site
My device error kills, but the linear form
The'm grateful shade guide


2 years ago

Hello again, thank you again AnghelutaA and Sieu Nhan T for helping me solve the code and software. The machine runs now but unfortunately the image that i want to draw/print looks like not 100% same size as in the inkscape (gcode) how do i set the machine to fix my image.

Mr innovativetushar3353

Reply 2 years ago

not sure beacuse i don't know about pcb printing method

this machine can draw image on paper by pen/marker if this all need for PCB printing then yes