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


Step 1: Watch video to know how to make

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 2: Material Required

BOM for GRBL CNC Machine
BOM for GRBL CNC Machine

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


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


  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. place the Pen up down holder on y axis whit the help of A bolt through the center
  4. place Y-axis on metal sheet and place it vertically on X-axis
  5. 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

Connection diagram of GRBL CNC Shield
Connection diagram of GRBL CNC Shield


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


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


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

universal gcode sender
universal gcode sender

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

Low cost PCB on PCBWay - only $5 for 10 PCBs and FREE first order for new members

PCB Assembly service starts from $88 with Free shipping all around world + Free stencil 

PCBWay 2nd PCB Design Contest



Hobbiest Electrical DIY project passionate

27 Responses

  1. Hi I really liked your video but i want to make a 3d printer with the help of this cnc shield v6 and I want to know if this shield can be used to make a 3d printer and if so, will the extruder motor have to be connected as a duplicate axis stepper driver with the z axis or it will be a seperate axis and also can this shield be used to run the thermister and the cooling fan of the hotend extruder . Please reply..

    • exactly the same question i asked to my self when i purchased a cnc shield for my 3d printer project, unfortunately this shield is not that much versatile for 3D printer operation, you don’t get function like, extruder heater control, hot bed heat control, filament bowden extruder stepper control
      better if you select Ramps 1.4 it is best

      • what if I control the extruder motor with this shield via the 4th stepper driver and choose another direct power to control thermistor and the cooling fan like in E3D v6 hotend extruder? will that work?

        • you can’t control 4th stepper slot (which is in red one) sepratly it only used to duplicate any of Axis like in many CNC machine ther are Two motors for X or Y-axis for better performance so it is for duplicate the axis ….

          • I read about the CNC shield v3 that the 4th stepper motor can be controlled separately by the 12th and 13th pins for stepping and direction controls respectively.. You tried that?

  2. Hiii,
    Thanks for your post. But i have some problem while creating G-codes. It gives me following message.Please help me to solve it.

    Traceback (most recent call last):
    File “”, line 3172, in
    File “F:\Laser Printer\Inkscape\share\extensions\”, line 283, in affect
    File “”, line 3156, in effect
    self.orientation( self.layers[min(0,len(self.layers)-1)] )
    File “”, line 3085, in orientation
    doc_height = inkex.unittouu(self.document.getroot().get(‘height’))
    AttributeError: ‘module’ object has no attribute ‘unittouu’

  3. Hello Dear,
    We got the lots of idea on it.. still, we have some queries. Can you teach or trained us at your place?
    What will be the fee & how much time you have required to trained us…
    Please share your personal view & contact no.

    Thanks & Regards

  4. i m using nema 17 stepper.after doing all of this my motor not moving just giving a sound & starts vibrating .what should i do?

  5. Good morning sir !
    Firstly I would thank you for sharing this project with us , I was looking to make a plotter and so I found your video as a complet source of information . To let you know , I built the machine and everything works perfectly (I used Nema17 steppers) , But I still have and issue that the servo doesn’t move .I tried many options to make it work but didn’t succed … I don’t know if you had this problem when you first made your plotter , if not , I’m asking you sir if you have any suggestions to solve the servo’s issue .
    PS: I wanted to know if the signal pin of the servo is connected to the Z+ pin of the V3 shield as mentionned in the diagram , because as I know the Z+ is an input signal for limit switch of the Z axis .
    Thank you in advance Mr Innovative !
    Best regards ,

  6. Again we are using here INKSCAPE software to make G-codeAs we are using GRBL CNC Shield for this machine so it will not support a servo motor .

  7. Hi,

    May i know during runtime of the GCode from Universal GCode Sender program, the Machine and Work coordinates Z always showed the “0.000”. Is this a valid?

  8. Hi,

    I got MI GBRL Z-Axis Servo Controller extension installed in Inkscape, and follow your above instruction settings. After begin run via GBRL controller, X, Y axis running very well except the Z-axis servo motor didn’t move. But I checked the data as shown below, the M05, M03S90 it got called servo command. I also double the wiring on CNC Shield V3 also correct, where signal point to Z+ and + point to 5v and – point to GND.

    Could you please advice, what is went wrong on my servo why it didn’t move at all?

    Grbl 0.9i [‘$’ for help]
    >>> M05
    >>> G90
    >>> G21
    >>> G1F2000
    >>> G1X5.0556Y5.1265
    >>> M03S90
    >>> G4P1
    >>> G1F2000
    >>> G1X5.0375Y4.8038F2000
    >>> G2X4.7561Y4.7359I-0.2329J0.3484
    >>> G2X4.2881Y5.1328I0.064J0.5498
    >>> G2X4.311Y5.7549I0.9607J0.2761
    >>> G2X5.0357Y6.4081I0.9839J-0.363
    >>> G2X5.9541Y6.2982I0.317J-1.2427
    >>> G2X6.7529Y5.2211I-0.7308J-1.3768
    >>> G2X6.5447Y3.8695I-1.9767J-0.3873
    >>> G2X5.1725Y2.8638I-1.7567J0.9579
    >>> G2X3.5581Y3.1735I-0.4228J2.1587
    >>> G2X2.4114Y4.9231I1.3953J2.1651
    >>> G2X2.8219Y7.0118I3.0132J0.4925
    >>> G2X4.8391Y8.3773I2.5148J-1.5424
    >>> G2X7.152Y7.8606I0.5266J-3.0773
    >>> G2X8.6501Y5.4397I-2.0549J-2.9455
    >>> G2X8.0337Y2.6126I-4.0491J-0.5979
    >>> G2X5.372Y0.8852I-3.2692J2.1229
    >>> G2X2.3601Y1.6112I-0.6303J3.9955
    >>> G2X0.5093Y4.703I2.7122J3.7234
    >>> G2X1.3328Y8.2688I5.0843J0.7037
    >>> G2X4.639Y10.3591I4.0221J-2.7017
    >>> G2X8.35Y9.4229I0.7341J-4.9134
    >>> G2X10.5542Y5.6602I-3.3684J-4.5001
    >>> G2X9.5228Y1.3557I-6.1191J-0.8097
    >>> M05
    >>> G4P1
    >>> G1F2000
    >>> G1X0Y0

  9. Hey anyone please help me
    I am trying to build my own cnc size(50cm*60cm) please suggest me the right software to use with servo to lift the pen.
    i have tried benbox with cnc shield but the servo doesn’t work with it both stepper motors works fine but servo doesn’t give any response i have connected the servo with z+ in end stop. and uploaded the firmware from benbox.

    • If you are using CNC shield with GRBL then use MI INKSCAPE EXTENSION to prepare G-code
      If you are using L293D Motor shield & GCTRL then use INKSCAPE makerboad G-code extension

  10. bro i make machine like you and i also code them i not understand when i run after certain stepper motor heat up and i changed stepper motor please reply and tell me how much voltage and ampere i used

  11. Hello, so i made everything, every step and my Y from CNC 3V are not working, it only goes in one direction, i tested others A4988 but it appears that it is not the problem, i’ve teste other dvd stepper motors in the same place and the error still there… Any suggestions ?

  12. in the above cnc project my servo motor goes out of controle and ends up with beep sound can you help me with the problem

Leave a Reply

Your email address will not be published. Required fields are marked *

Enter Captcha Here : *

Reload Image

Post comment