Introduction: Mini Arduino CNC

Picture of 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

Picture of  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

Picture of 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

Picture of 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

Picture of 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!!

Picture of 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


IzeckA (author)2017-12-19

If any one have cnc Machine for sale contact with me

MusaA11 (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.

me_zain made it! (author)MusaA112017-08-24

There is an adjustable current controller (Potentiometer) on Easydriver, try to change the current. The current varies from 150ma to 750ma.

Dutzyss (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 (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 (author)Dutzyss2017-04-27


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

Dutzyss (author)me_zain2017-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 (author)Dutzyss2017-04-29

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

UzairS8 (author)2016-08-21

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

me_zain (author)UzairS82017-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 (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 (author)ManojM562017-04-16

what is your error/problem?

TryThisNameToo (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 (author)TryThisNameToo2017-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 (author)2017-04-07

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

me_zain (author)Ramkumar paidi2017-04-16

Yes it can plot Images too..

YATINV (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 (author)YATINV2017-03-01

Change the baud rate

YATINV (author)TarunK82017-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 (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

can you send me grbl controller.

FrancoC28 (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 (author)FrancoC282016-08-17

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

cybertech12 (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 (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 (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 (author)2016-03-30

Genius !

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

This is my version.

vmascarinhas (author)maulvio2016-02-22

Nice :)

jarroyo5 (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 (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 (author)HarshanS2016-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)

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 (author)2015-12-30

inkscape gcode tools

Chackm (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 (author)Chackm2015-12-28

Go to this link.

I am following that and I am 75% done!

loboat (author)Chackm2015-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 (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 (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 (author)Amitha Piyasena2015-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 (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 (author)syedjawwadahmad2015-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 (author)2015-11-11

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

Hammer8195 (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 (author)Hammer81952015-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 (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 (author)omar baalbaki2015-10-17

increase the feedrate generated in your G-Code..

About This Instructable




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