GRBL CNC Shield for 3-axis CNC machine
The Arduino CNC Shield makes it easy to get your CNC projects up and running in a few hours. It uses opensource firmware on Arduino to control 4 stepper motors using 4 pieces of A4988 Stepper Motor driver breakout board, with this shield and ArduinoUno/Mega, you can build all kinds of robotics, linear motion project or projects including CNC routers, laser cutters and even pick&place machines.
- GRBL 0.9 compatible. (Open source firmware that runs on an Arduino UNO that turns G-code commands into stepper signals)
• 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)
• 2 x End stops for each axis (6 in total)
• Coolant enable
• Uses removable A4988 compatible stepper drivers. (A4988, DRV8825 and others)(Not Included)
• Jumpers to set the Micro-Stepping for the stepper drivers. (Some drivers like the DRV8825 can do up to 1/32 micro-stepping )
• Compact design.
• Stepper Motors can be connected with 4-pin Molex connectors or soldered in place.
• Runs on 12-36VDC. (At the moment only the DRV8825 drivers can handle up to 36V so please consider the operation voltage when powering the board.)
1. Configuring Micro Stepping for Each Axis
Each axis has 3 jumpers that can be set to configure the micro stepping for the A4988 plug-in driver board.
Micro-stepping jumper location, before inserting A4988. In the tables below ‘High’ indicates that a jumper is insert and ‘Low’ indicates that no jumper is inserted.
MS0 MS1 MS2 Microstep Resolution
Low Low Low Full Step
High Low Low ½ Step
Low High Low ¼ Step
High High Low 1/8 Step
High High High 1/16 Step
2. GRBL Control Software/Firmware for Arduino
Before you can use this CNC shield with Arduino, a control firmware need to be downloaded into Arduino board. We are going to use ‘GRBL’ to accomplish our job. GRBL is open-source software that runs on an Arduino Uno that takes G-Code commands via Serial and turns the commands into motor signals. Grbl is a no-compromise, high performance, low cost alternative to parallel-port-based motion control for CNC machine.
It accepts standards-compliant g-code and has been tested with the output of several CAM tools with no problems. Arcs, circles and helical motion are fully supported, as well as, all other primary g-code commands. Macro functions, variables, and most canned cycles are not supported, but we think GUIs can do a much better job at translating them into straight g-code anyhow.
A copy of this open-source firmware can be downloaded from the below link: Following the below steps to prepare this CNC Shield board to function properly:
1. Download a copy of GRBL from: https://github.com/grbl/grbl
Unzip this file into your local hardisk location, you may want to create a special new folder for this purpose for easy locating of all files needed in your project. Locate an Arduino sketch ‘grblUpload.ino’ in this folder where you have unzip the files.
Below is the files structures located in my local hardisk:
Open up this sketch ‘grblUpload.ino’ and you should see the screen as below:
Click the upload icon as usual to ‘compile/upload’ as you normally upload Arduino sketch. When you see ‘done uploading’, click the ‘Serial Monitor’ on Arduino IDE as shown below:
If you can receive response message “ Grbl 0.9j [‘$’ for help] ” from your Serial Monitor, congratulation! You have successful uploaded the ‘GRBL’ firmware into your Arduino board.
3. Hooking Up the Stepper Motor to CNC Shield
Connect steppers motor to CNC Shield board as the below block diagram. of the CNC Shield connected to 3-stepper motor:
Your CNC Shield board is now ready to go for a test run, let’s try to turn the motor as to our instruction !
4. G-Code Sender
To send commands to your CNC/3-axis stepper motor driver board you need a g-code sender to send command and instruction.
Download the Universal-G-Code-Sender.
Universal GcodeSender is a Java based GRBL compatible cross platform G-Code sender. Use this program to run a GRBL controlled CNC machine. Once downloaded, connect the UNO board USB to your computer and take note of the COM port it is connected to.
Run the start-windows.bat or the JAR file directly.
You will be presented with the following screen:
Click the “Machine Control” tab. Select the “Port” number which your Arduino board is attached to. Select 115200 as the Baud rate as this is the speed configured in “GRBL” firmware. Click “Open” button to start the communication for controlling this shield board.
Now, you are ready to control the XYZ stepper motor connected to shield board. Click X+ or X- for example, the stepper motor attached to X terminal will turn in forward or reverse direction. This will complete our initial setup for driving 3-axis stepper motor connected to this shield board with “GRBL” loaded to Arduino controller board using “Universal G-Code Sender” user interface.