Introduction: How to Make GRBL + CNC V3 Shield Based Mini CNC Machine From Scrap DVD Drive

Picture of How to Make GRBL + CNC V3 Shield Based Mini CNC Machine From Scrap DVD Drive

This CNC is based on GRBL0.9 Firmware and CNC V3 shield GRBL is Hacked for Z-axis Servo.

CNC Shield & GRBL combinly works very preciselyIt is loaded with very useful functions like Hard limit, Soft limit, Homing, etc

This is about how to make

GRBL+CNCV3 shield+Arduino based CNC machine

This guide include all necessary instruction required

like How to assemble CNC machine

How to Load GRBL to arduino

Inkscape extension installation

GRBL Configuration & G-code streaming

It is loaded with very useful functions like Hard limit, Soft limit, Homing, i will guide you in detail how to Make GRBL Based mini CNC machine at home

Step 1: Watch Video to Know How to Make

Watch this video it will clear you how to make and operate CNC machine

Step 2: Material Required

Picture of Material Required

This are the list of some use full material required

  1. Arduino UNO--------------------------------------QTY- 1
  2. CNC V3 Shield------------------------------------QTY-1
  3. servo motor----------------------------------------QTY-1
  4. A4988 Stepper driver shield--------------------QTY-2
  5. Old scrap DVD Drives---------------------------QTY-2
  6. Some push buttons as limit S/W---------------QTY-2
  7. A acrylic sheet for base
  8. Pen holder (slavege from DVD Drive)
  9. Some wires
  10. Hardware like nut bots etc.

Step 3: Software Required

Picture of Software Required

1. Arduino IDE

GRBL LIBRARY :- Click here to download



SERVO CONTROL EXTENSION :-Click here to download


3. UNIVERSAL G-CODE SENDER : - Click here to download


Step 4: Machine Assembley

Picture of Machine Assembley
  1. Place X-axis Horizontally on the bolt mounted on acrylic sheet
  2. Four bolt mounted on a metal sheet to fit Y-axis on it
  3. Now place the Pen up down holder on y axis whit the help of A bolt through the center
  4. Now place Y-axis on metal sheet and place it vertically on X-axis
  5. Now fit servo motor so that it will move z-axis which is our pen up and down
  6. Now mount CNC shield on Ardunino
  7. Do wiring A shown in wiring circuit as in Next step

For better understand please watch Video & pic attached here

Step 5: Wiring Diagram

Picture of Wiring Diagram

Do wiring as shown here in image

Limit switch are optional

You can use them by changing the GRBL setting as below

$21=0 (hard limits, bool)


$21=1 (hard limits, bool)

Step 6: GRBL Loading to Arduino

Picture of GRBL Loading to Arduino

Link to download GRBL Setup

Download the library file unzip it

and load to arduino

Now go to File>Example>grbl upload compile and upload code to arduino

Note:- delete any previously loaded GRBL library

Step 7: G-CODE Setup in Inkscape

Picture of G-CODE Setup in Inkscape

Again we are using here INKSCAPE software to make G-code

As we are using GRBL & CNC Shield for this machine s

o it will not support a servo motor as a Z-Axis

so here some hack by doing so we can able to manage Servo works on Z-axis

you need to add MI Extension here to get it work with Z-axis Servo

Download link

after download add this files to the

inkscape directory>Share>Extension folder

Now open inkscape set page size 40 x 40mm

draw what you want to plot

select image go to convert to path

then go to extension click on MI GRBL Z-AXIS SERVO CONTORL

Servo up = M3

Servo down = M5

X-axis speed = 2000

Y-axis speed = 2000 S

ervo angle = 90

Delay = 1

Directory = as per you convenient or keep as it is

File name = as per you convenient or keep as it is

Clik on Apply now you G-code is saved @ location you mention

Step 8: GRBL Configuration & Streaming G-code

Picture of GRBL Configuration & Streaming G-code

Download link for Universal Gcode sender

Open Universal G-code sender (Arduino must stay connected with PC/LAPTOP)

Select COM port

Set Baud rate 115200

clik on "OPEN"

go in "COMMANDS" Tab

enter $$ for GRBL configuration

Example Suppose we want to change the $0(step pulse, usec) value from 10 to 20

so enter in command line $0=20 & hit enter its done


$0=10 (step pulse, usec)

$1=25 (step idle delay, msec)

$2=0 (step port invert mask:00000000)

$3=0 (dir port invert mask:00000000)

$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:00000000)

$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=5.000 (x, step/mm)

$101=5.000 (y, step/mm)

$102=100.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=40.000 (x max travel, mm)

$131=40.000 (y max travel, mm)

$132=200.000 (z max travel, mm)


Now time to stream Gcode to machine go to "FILE MODE" Tab Brows your gcode file and hit enter thats it

youR machine start plotting Hope you like this Comment below if any doubt


Zhuna87 (author)2017-11-12


When I send gcode, x and y axis work perfect but servo spins for 180° and stops. Do you know what is the problem? Thank you in advance.

netcareca (author)Zhuna872017-12-11

HAd the same problem - dont use just USB to power arduino. Connect a real power source to arduino and everything worked.

Zhuna87 (author)netcareca2017-12-11

Too late unfortunately, but thank you.

I put stepper from floppy disk for Z axis and it works better than servo.

PepaS1 made it! (author)2017-12-10

I made it finally !!! I tried a lot of instructables and GRBL firmwares but only yours work perfectly! Great guide. I just use full step of steppers (1/16 = three jumpers used) to have more precise movements. I have also different feed rates for x and y. I ave just one issue, when I create G-code in 40x40 mm format, then G code sender shows (in visualisation window) that picture is smaller. I do not know how, so I make pictures bigger. Another issue is overheating of steppers, which is extreme - I need to setup driver rezistors (waiting for breadbord arrival).

mostafa12345 (author)2017-11-20

servo motor get stuck at 180 and doesnt WORK. 100 TESTED.

svenhb made it! (author)2017-11-18

I used A4988 drivers and a battery pack. To control my GRBL I use my own control software GRBL-Plotter - with it you can drag and drop any SVG file...

kingvashe (author)2017-08-30

how to make servo setting my servo is didnt work up and down

KonstantinD1 (author)kingvashe2017-09-08

Same problem((

Zaman (author)2017-08-05

and why so much jittering?

Zaman (author)2017-08-05


mehmet_1234 (author)2017-07-25

how to make servo setting my servo is dıdnt wort up and down

sapatsidis made it! (author)2017-04-17

very nice and works ok.

Mehadi_Saki (author)2017-03-05

I use Inkscape 48.5 but extension not working.
have any other CAM extension except Inkscape?

sapatsidis (author)2017-02-03

Nice and complete with all software informations. I have made all but inkscape does not complete the scheme , I m getting a message that maby the result will not be the same.
I cant get the picture with the small arrows on the line.
Any advise?

sapatsidis (author)sapatsidis2017-02-07

Only 48.5 inkscape works with the file extensions.

pfred2 (author)2017-02-07

I have my doubts about GRBL and gcodetools. Because I use LinuxCNC, and dxf2gcode, and they're both better programs. OK I never ran GRBL, but I don't need to run it to know it is inferior code.

About This Instructable




Bio: Electrical engineer by profession
More by Mr innovative:How to Make Record and Play Servo Based Robotic Arm How to Make Mini Home Made CNC Machine Arduino+28BJY-48 Stepper Motor28BYJ-48 Stepper Motor + Arduino + L293D Motor Shield + Processing Setup Test Run
Add instructable to: