Introduction: Mini Arduino CNC

This instructable shows you how to build a cheap and easy, but very small CNC using Arduino UNO. You can use it to mill thin wood, different foams or you can use it for plotting different sketches and also can be used for engraving and etching purposes.Inspired by the Small Arduino CNC (thank you very much for your help), i made it easily.


For this project you will need:

3 old CD/DVD-Roms

1 Computer power supply

3 Easydriver boards

1 Arduino Uno

2 pieces of Wood

1 Soldering Iron

1 Soldering Wire

Step 1: Demo Video

Demo Video 1

Watch here

Thanks to everybody who voted me for the contest and I am very glad that i have won 2 contests :D




Watch the new video of this mini CNC plotter. I have increased the feed rate for sketching. I was using Deskengrave and many other softwares just to check the working of the machine, the results was not satisfactory because some Gcode generated codes were not supported by the GRBL library. After searching n the internet i found Inkscape software. Inkscape is a free and open-source vector graphics editor; it can create or edit vector graphics such as illustrations, diagrams, line arts, charts, logos and even complex paintings. By using this software i can import Dxf, Dwg, JPG, SVG etc files and can convert them into GCODE. You can download Inkscape by clicking below link.
Download Inkscape

I have import several image files which i had downloaded from the google, convert them into Gcodes and send to the GRBL software, it worked perfect :D. Below is the link of sample video i have just made.

Demo Video 2

Mini Arduino CNC Part 2

How to use Inkscape?

There are alot of videos on youtube which will guide you to how to use this software and generate Gcodes. For quick guidance see this link.
Inkscape and Serial Transfer

Step 2: Using the DVD CD-ROM, Get Stepper Motors

I took three wasted DVD-drives apart because we need the steppers (XYZ axis)

Step 3: Step 3: Assemble and Build the Structure

For this part just need a base platform and two pillars. I made the base from wood and pillars are of aluminum. Now simply screw the wooden base withe your Pillars as shown in first Figure.

Place the X axis across the pillars and Y axis onto the wooden base as shown in figures.I used glue to assemble all the axis. Just make sure that all the axis are exactly perpendicular to each other, they must be at right angle.

Step 4: Step 4: Soldering and Wiring

This is also not a very complicated step. You just need to solder wires with your stepper motor. Be careful while soldering and don't use high watt solder as it can burn the wires of stepper, mine was 30W and it was OK. After that, simply sold all the connectors in easydrivers and connect the wires as given in figure.

Step 5: The Software

1. Download and install the Arduino Software, the grbl library and the Grbl controller. or goto the link below

2. After downloading the Grbl library, you have to click sketch --> import library --> add library in the Arduino software and select the zip file you just downloaded.

3. Upload the library to your Arduino.

4. After you installed Grbl on your Arduino open the Grbl controller and select the port to which your Arduino is connected. Press the open button.

5. A list of options appears in the command screen. You have to change a few of these options, by entering the number of the option (the numbers with a $) = and the new value (For example $130=35.000).If your motors are moving into the wrong direction, go to Tools --> Options --> Axis and click the axis you want to invert.

6.You can use any Gcode Generator software to make gcodes.I download DeskEngrave software which is also a gcode generator, here is a link deskEngrave

Step 6: Thank You, Instructables!!

It is really very easy project if you want any help you can ask anytime.

I really want to thank INSTRUCTABLEs and all the people here sharing their ideas. Following this platform i am really able to make my own projects very easily :D :D :D


MusaA11 made it! (author)2017-06-03


i need help. dude i made one of this plotter and i use arduino uno and 3 easydrivers to control the motors. but when i use grbl controller the only motor that move is the X axis .the Y axis only jogging and Z axis dont move at all. i measure the power pins on the easydrivers and its shows 4.6 volts. i dont know what should to do. pls help me.

Dutzyss made it! (author)2017-05-09

Please help me. I don't have $14 and can you post a printscreen with lower commands $1 , $2 , $3 . Thank you . You will help me alot

Dutzyss made it! (author)2017-04-25

Hey i did all of this and when i load a gcode on grbl it doesn't work. It only moves slow in the air abou 5 mm. Do i need to fine tune the cnc or something ? If so how ? Please help. Thanks

me_zain made it! (author)me_zain2017-04-27


Have to check/edit your settings in grbl software according to your belt/lead screw pitch as shown in figure?

Dutzyss made it! (author)Dutzyss2017-04-29

Thanks for the reply mate. The settings are the same as yours. I don't know what is the problem. Are there any other fine tune or something ?

Dutzyss made it! (author)Dutzyss2017-04-29

I don't have the $14(autostart bool) option. Do i need to do something to appear ?

UzairS8 made it! (author)2016-08-21

can anyone send me grbl controller. the link given in disable.

me_zain made it! (author)me_zain2017-04-16

Sorry for the late reply, I was really busy coudnt find time to reply early.

I have just sent you grbl controller setup in email. Check your email.

ManojM56 made it! (author)2016-12-19

hi bro help me i am try to making this project but sam problem create my stepper motor not working but normal motor is working please help me

my whastp no is 9958589245 please contact me

me_zain made it! (author)me_zain2017-04-16

what is your error/problem?

TryThisNameToo made it! (author)2017-01-19

Well after about 3 hrs of searching and trying to find a solution, my last resort is to write here. The grbl library doesn't work fro me (as mentioned by someone else) I keep getting the folder does not contains a valid library, then I tried the GRBL-Arduino-Library-master that some one else suggested, that one does loads but when I try upload it to the board I get a compiling error. I just cant find how to run it. Any help is appreciated. Tnx.

me_zain made it! (author)me_zain2017-04-16

Got to the link below and follow the steps.

I think the new version of Arduino is not competible with the old files/library of GRBL because now for new CNC machine, I am also getting an upload error.

Ramkumar paidi made it! (author)2017-04-07

nice instructable sar ... sar I have a small doubt can we make plotter draw images of us

me_zain made it! (author)me_zain2017-04-16

Yes it can plot Images too..

YATINV made it! (author)2016-09-20

hey man i just got one problem ,whenever i used inkscape to convert g-code and upload or put in the grbl controller, its doesn't work always says, runtime error :scribbed version buffer size is too low and then it stopped , so what should i do now ?

TarunK8 made it! (author)TarunK82017-03-01

Change the baud rate

YATINV made it! (author)YATINV2017-03-01

Nothing happens, same error. Now I'm thinking to change the windows 8 to may be 10 or 7 may be that help Hehe.

Hussain Al Bastaki made it! (author)2016-06-28

hey man how are you I would like to ask if you are able to send the grbl controller on my mail the web page is giving error I already build it but I'm not finding the grbl controller I will be thankful to you if you are able to provide me

contact mail

UzairS8 made it! (author)UzairS82016-08-21

can you send me grbl controller.

FrancoC28 made it! (author)2016-07-11

hi ,

very nice project. i would like to know if its possible to use the cnc shield instead of the 3 easydrivers.


rshashindra made it! (author)rshashindra2016-08-17

Yes it is possible. I am using it and it works well!

cybertech12 made it! (author)2016-05-02

Hi, I'm quite new to CNC stuff, I have a small problem my Z-axis does not move when I start the G-code, only X and Y, The Z does work but not with the generated G-code from INKSCAPE, How do I generate so that my Z can drop down and lift when needed.

There is no Z control in the g-code and I can't find where or how to make this work.

please help?

cybertech12 made it! (author)cybertech122016-05-03

Hi, sorry for double posting, I have found a fix around but it does take time, due to the Laserengraver plugin create the .nc file as a Laser engraver gcode with M03 (Laser on) and M05 (Laser off) I just edit the .nc file and change the m03 to G1 Z=15.000 F260 and M05 to G1 Z=13.000 F260, this works but is there a way to make this happen when creating the gcode. thanks and this is a great project. WELL DONE.

Tanner Hyslop made it! (author)2016-04-23

What gauge of wire did you use?

TonyH3 made it! (author)2016-04-19

This is my cnc (will be done) :D

zoubir.santouh made it! (author)2016-03-30

Genius !

maulvio made it! (author)2015-12-18

This is my version.

vmascarinhas made it! (author)vmascarinhas2016-02-22

Nice :)

jarroyo5 made it! (author)2016-01-25

There is another link to download your controller . Which you pointed out it is not working.

Thanks in advance for all!


HarshanS made it! (author)2016-01-02

Hey there zain I followed all the steps to the wiring but my motors are rigid and don't move at all when i disconnected the power then they are no longer rigid and move easily if pushed by hand. I made sure the the wiring is correct do you have any clue whats going on ?

abbasia92 made it! (author)abbasia922016-01-13


I had the same problem. connect the power pins of your easydriver to another power source. (dont use usb port of your pc because it cant suply enough current)

كابراهيم سمرين made it! (author)2016-01-04

hello thank you for this project but I want to ask you if I can use another stepper motor driver ?? and if its the same quality printing and the same code??


because I want to make it 3d printer :-)

DIT2 made it! (author)2015-12-30

inkscape gcode tools

Chackm made it! (author)2015-10-27

Hey, i wanted to know if i could use that programming and grbl if im using L293Ds instead of easydrivers thanks :)

DaGaminFrik made it! (author)DaGaminFrik2015-12-28

Go to this link.

I am following that and I am 75% done!

loboat made it! (author)loboat2015-11-01

I think you couldn't use L293D for this project: this component is a quadruple H bridge, and you need a stepper motor drivers

yousifhobelos made it! (author)2015-12-19

Hi , great instructable ..

guys i made a bigger device of this ..

but i changed a lot of thing , i use drmel shaft instead of pen ..

how to make it automaticly raise up the pen when moving to a new sequnce of dawing ? , so it doesn't make that extra lines .. ?
please give some help here or at my facebook ( Yousif A Hafiz ) , or my emails

AbderrahimA made it! (author)2015-12-04

Mini CNC Arduino Based & Adafruit Shiled Driver motor L293D v1 :

Amitha Piyasena made it! (author)2015-11-01

hey how to connect arduino mega 2560 use this project. im difficult to connect grbl to arduino mega and pin output...

dsouza6 made it! (author)dsouza62015-11-21

Olá use a versão da biblioteca grbl em formato .HEX e faça o upload via XLOADER

que pode trabalhar com o arduino mega 2560

syedjawwadahmad made it! (author)2015-11-03

Problem :
Motor stuck as i connect.

Setup Details :
- GRBL v9.0j
- Arduino Nano
- DRV8825 set to (12v,250ma)
- DVD R/W Stepper Motor
- GRBL Controller v3.0 by ZapMaker
* Setup is working with other sketch

GRBL Default Settings :
$0=10 (step pulse, usec)
$1=25 (step idle delay, msec)
$2=0 (step port invert mask:00000000)
$3=0 (dir port invert mask:00000110)
$4=0 (step enable invert, bool)
$5=0 (limit pins invert, bool)
$6=0 (probe pin invert, bool)
$10=3 (status report mask:00000011)
$11=0.010 (junction deviation, mm)
$12=0.002 (arc tolerance, mm)
$13=0 (report inches, bool)
$20=0 (soft limits, bool)
$21=0 (hard limits, bool)
$22=0 (homing cycle, bool)
$23=0 (homing dir invert mask:00000001)
$24=25.000 (homing feed, mm/min)
$25=500.000 (homing seek, mm/min)
$26=250 (homing debounce, msec)
$27=1.000 (homing pull-off, mm)
$100=250.000 (x, step/mm)
$101=250.000 (y, step/mm)
$102=250.000 (z, step/mm)
$110=500.000 (x max rate, mm/min)
$111=500.000 (y max rate, mm/min)
$112=500.000 (z max rate, mm/min)
$120=10.000 (x accel, mm/sec^2)
$121=10.000 (y accel, mm/sec^2)
$122=10.000 (z accel, mm/sec^2)
$130=200.000 (x max travel, mm)
$131=200.000 (y max travel, mm)
$132=200.000 (z max travel, mm)

Please correct GRBL settings .....

Thank You

dsouza6 made it! (author)dsouza62015-11-21


ola teste estas configurações no seu arduino

Set step/mm to setup the correct motor distance to run (a common step/mm value for CD-ROM motor should 53.333):

$0=53.333 (x, step/mm)

$1=53.333 (y, step/mm)

Set the accelleration value to 100:

$8=100.000 (acceleration, mm/sec^2)

EM İL made it! (author)2015-11-11

Hello .please say which program drawing and convert Nc file?

Hammer8195 made it! (author)2015-09-07

hi me zain i have a question about the configurations of the drawing before to become Gcode:
1) how do you know the correct dimensions of pictures in way to avoid incorrect functions of motors ( because you don't use end-switch ) ?
2) if i want to do more complicate drawings for example a gear, which programs can i use to draw it, and translate in Gcode ?
Thanks a lot for your time and for your work.

me_zain made it! (author)me_zain2015-10-17

hi Hammer8195.

1. For exact dimensions, you must calculate the step/mm of your motor and the pitch of the coupled lead screw and then set the values in GRBL command settings panel. After setting it your picture dimension would be same as you feed in the program.

2. For complex drawing i am using inkscape software. I have mentioned all the procedure in the UPDATE portion above.. :D

omar baalbaki made it! (author)2015-09-09

hey i have been make the cnc but it is too slow like if you want to draw an H letter it will take a bout 30 Minutes so how can i make it faster.... thx


me_zain made it! (author)me_zain2015-10-17

increase the feedrate generated in your G-Code..

HarnoorS1 made it! (author)2015-10-03

can anyone please give me the link to download the library for this

whenever I upload the zip file it says Arduino: 1.6.5 (Windows 7), Board: "Arduino/Genuino Uno"

Specified folder/zip file does not contain a valid library

Is this the right place to download the library or not ?

me_zain made it! (author)me_zain2015-10-17

Hi HarnoorS1

Sori for the late reply............Yes this is the right place and i also have downloaded them from this site. If still your facing problems then tell me. I will try my best to sort it out.

About This Instructable




More by me_zain:Automatic London Bascule bridge (Arduino based Student Project)Mini Arduino CNCRobotic Arm SolidWorks
Add instructable to: