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

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


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

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


Hobbiest Electrical DIY project passionate

20 thoughts on “How to Make GRBL + CNC V3 Shield Based Mini CNC Machine From Scrap DVD Drive

  • 11th March 2017 at 11:54 am

    arduino ki coding mil sakti h

    i want coding of arduino plzzzzzzzzz send me

  • 15th March 2017 at 10:38 am

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

    • 15th March 2017 at 11:35 am

      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

      • 15th March 2017 at 11:39 am

        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?

        • 15th March 2017 at 11:51 am

          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 ….

          • 16th March 2017 at 5:36 am

            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?

  • 11th April 2017 at 10:51 am

    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’

    • 12th April 2017 at 10:59 am

      Hey There,
      I have download it from second website. It’s done.Thanks…

      • 3rd June 2017 at 11:15 am

        hi there
        can you please send me the external link for the extension you got … mine have the same problem as you

        good luck

  • 6th May 2017 at 10:46 pm

    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

  • 11th May 2017 at 10:06 pm

    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?

  • 27th May 2017 at 12:24 pm

    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 ,

  • 1st June 2017 at 8:58 am

    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 .

  • 2nd June 2017 at 1:35 am


    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?

  • 4th June 2017 at 3:44 am


    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

Leave a Reply