CNC Shield Guide v1.0
CNC Shield Guide v1.0
V1.1 12 2022
Assembling electrical CNC machine components like power supplies, motors, drivers or other electrical
components involves dealing with high voltage AC (alternating current) or DC (direct current) which can be
extremely dangerous and needs high attention to detail, experience, knowledge of software, electricity and
electro-mechanics or mechanics.
There are 3 main components needed to get the CNC Shield up and running, 1) CNC Shield; 2) Stepper Drivers,
and; 3) Arduino UNO. Each of these will be mentioned below.
The CNC Shield is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Please note: this document is a guide and not a manual. The CNC Shield and Grbl are Opensource and under
constant development and modification. As a result, this document provides guidance but is by no mean
comprehensive nor authoritative. It is essential that all users do their own research and find solutions that suit
their application and requirements.
Features
• Arduino UNO Compatible (https://www.makerstore.com.au/product/elec-unoat16u2/)
o 14 digital input/output pins – 6 pins can be used as PWM outputs
o 6 analog inputs
o 16 MHz crystal oscillator
o Operates at 5V
o Recommended input voltage range: 7V to 12V
o Flash Memory: 32 KB (0.5KB used by bootloader)
o SRAM: 2KB
o EEPROM: 1KB
• CNC Shield (https://www.makerstore.com.au/product/elec-cnc-shield-v4-pk/)
o Version 3.00
o 4-Axis support (X, Y, Z , A-Can duplicate X,Y,Z or do a full 4th axis with custom firmware using
pins D12 and D13)
o 2 x End stops for each axis (6 in total - each axis pair shared by same IO pin)
o Spindle enable and direction connection
o Coolant enable connection
o Uses GRBL as control software
Application
Suitable for a variety of small and medium sized automation equipment and instruments, such as: engraving
machine, marking machine, cutting machine, laser typesetting, plotters, drawbots, CNC machine tools, handling
the devices.
Machines: https://www.makerstore.com.au/product-category/cnc-machining/
https://github.com/grbl/grbl/wiki
There are many conversations about which version of Grbl to use with a v3.0 CNC Shield. Protoneer say that only
Grbl v0.8 is compatible, but later version can be used with slight modification to the config.h file. For more details
about the difference between v0.8 and v0.9 see:
https://github.com/grbl/grbl/wiki/Connecting-Grbl
To use v0.9 and higher just comment out the “#define VARIABLE_SPINDLE” line in config.h. For example, in v0.9
this is on line 247:
243 // Enables variable spindle output voltage for different RPM values. On the Arduino Uno, the spindle
244 // enable pin will output 5V for maximum RPM with 256 intermediate levels and 0V when disabled.
245 // NOTE: IMPORTANT for Arduino Unos! When enabled, the Z-limit pin D11 and spindle enable pin D12
switch!
246 // The hardware PWM output on pin D11 is required for variable spindle output voltages.
247 #define VARIABLE_SPINDLE // Default enabled. Comment to disable.
So given the above, choose the version of Grbl that suits your application and build and download as per the
instructions in the Grbl Wiki page.
There are many settings that can be defined prior to loading Grbl onto the UNO. For more information on what
each of the settings mean see the Wiki page:
https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9
https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration
The best and easiest way to load Grbl onto the UNO is to use the Arduino IDE. This can be downloaded from:
https://www.arduino.cc/en/Main/Software
5. If you get errors, then please read the Arduino IDE help and/or the Grbl Wiki.
While the voltages on and around the CNC Shield are low (5V for the Arduino and up to 36V for the CNC Shield
and steppers) it is still possible to hurt both yourself and the components if handled incorrectly or without care.
The following points are critical and cannot be emphasized strongly enough. Read carefully:
1. NEVER connect or disconnect any stepper motor to the CNC Shield while power is on or connected.
2. ALWAYS disconnect the power before connecting or disconnecting the stepper motors.
3. When installing the driver make sure to correctly orientate the driver so the enable pin (EN) matches
the EN pin on the CNC Shield (top left). Note that the small potentiometer is on the bottom of the
A4988 while it is on the top of the DRV8825 – so take care not to confuse the two drivers.
4. ALWAYS connect a stepper motor to the CNC Shield when testing or using the CNC Shield and driver.
This is very important because the stepper drivers are designed to ramp up the current until it reaches
Component Assembly
1. Taking normal static electricity precautions, insert the CNC Shield into the Arduino Uno making sure the
correct pins of the CNC Shield are inserted into the correct UNO headers.
2. Decide on the micro stepper setting for your application and place the jumpers as required
In the tables below High indicates that a Jumper is insert and Low indicates that no jumper is inserted.
M0 M1 M2 Microstep Resolution
M0 M1 M2 Microstep Resolution
3. Insert the stepper drivers into the CNC Shield paying special attention to match the enable pin (EN) to
the enable socket (EN).
4. Connect the stepper motors ( https://www.makerstore.com.au/product-category/electronics/motors-
servos/stepper-motors/) to the header pins. Take care to check your stepper motor to make sure the
correct wiring sequence. Different stepper motors have different colour wires, so use the stepper’s
Technical Specifications sheet to determine the sequence.
5. Referring to the details on the Protoneer website, set jumpers for slave axis and connect additional
limit/home switches and probes as per your application requirements, see:
Testing
Protoneer has published what they call a “Pre-Flight Checklist”. This is a great resource for testing the CNC Shield.
See:
https://blog.protoneer.co.nz/arduino-cnc-shield-v3-00-assembly-guide/
Configuring Grbl
There are many Wikis, blogs and posts about how to configure Grbl, see the links section below for some. For
Grbl v0.9 see:
https://github.com/grbl/grbl/wiki/Configuring-Grbl-v0.9
Connect to the UNO using a serial console program like Putty or a Grbl GUI (see links below for some examples)
and enter “$$” to see a list of settings:
It is essential to modify these settings to suit your application, machine and requirements.