Safety Statement
The author of this document is not liable or responsible for any accidents, injuries, equipment damage, property damage, loss of money or loss of time resulting from improper use of electrical or mechanical or software products.
Assembling electrical and mechanical CNC machine components like power supplies, motors, drivers or other electrical and mechanical components involves dealing with high voltage AC (alternating current) or DC (direct current) and other hazardous items which can be extremely dangerous and needs high attention to detail, experience, knowledge of software, electricity, electro-mechanics and mechanics.
BEFORE MAKING ANY CONNECTIONS OR DISCONNECTIONS POWER MUST BE REMOVED FROM THE DEVICE AND THE CONTROLLER. FAILURE TO DO SO WILL VOID ANY AND ALL WARRANTIES.
Before starting please read through all the instructions.
Note : Any Mains power connections must be installed by a Licensed electrician or suitability qualified person.
Errors and omissions excepted
The CNC Shield was designed by Protoneer.co.nz to take advantage of the demand for a low-cost controller solution for DIY CNC machines. It was designed to be 100% compatible with Grbl, the Opensource G-Code interpreter, and fit onto the popular Arduino Uno. The CNC Shield can be used to control a number of different types of CNC machines, including CNC milling machines, laser engraving/cutting machines, drawing machines, 3D printers or any project that needs precision control of stepper motors. It uses Pololu and compatible stepper drivers, either the A4988 or the higher current DRV8825.
There are 4 main components needed to get the CNC Shield up and running;
Version 3.0 of the CNC Shield is used throughout this guide.
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.
Arduino UNO Compatible
CNC Shield
TB6600 Stepper Drivers
Stepper Driver Adapter Module
Suitable for a variety of small and medium sized automation equipment and instruments, such as: engraving machines, cutting machines, laser typesetting, plotters, drawbots, CNC machine tools, handling the devices. Capable of driving stepper with stepper motors with current requirement of up to 4A.
Some compatible UNOs uses the CH340 USB to serial chip. In order for your computer to recognize the UNO you may need to download the latest CH340 driver:
http://www.wch.cn/download/CH341SER_ZIP.html
Read more here:
http://www.arduined.eu/ch340-windows-8-driver-download/
http://www.microcontrols.org/arduino-uno-clone-ch340-ch341-chipset-usb-drivers/
Before wiring it is essential to note a couple of safety issues and handling requirements.
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:
Below is a guide on how to put together the controller bundle.
| Adapter Module | TB6600 Terminal |
| EN+ | ENA+ |
| EN- | ENA- |
| PUL+ | PUL+ |
| PUL- | PUL- |
| DIR+ | DIR+ |
| DIR- | DIR- |
Z limit switch wiring (Method 1).
Z limit switch wiring (Method 2).
This wiring method uses Version B of the firmware. If you choose this firmware please put the Z limits in the SpnEn location as indicated below. This is because Version B of the firmware changes the pin layout slightly in the firmware.
Note : Any Mains power connections must be installed by a Licensed electrician or suitability qualified person. Different countries have different regulations that should be followed when doing any mains wiring. The emergency stop switch MUST be wired in by an electrician or similarly qualified individual.
Please click the image to enlarge
Note : Any Mains power connections must be installed by a Licensed electrician or suitability qualified person. Different countries have different regulations that should be followed when doing any mains wiring. Note: All GRBL High Torque bundles Pre-October 1st 2020 use 12V Power supples. Current bundles use 24V power supplies. Functionality is still the same.
Connect the male part of the dupont jumper cable into the male half of the 2 pin EDG connector as shown.
Connect the red and black wires of the touch probe to the female half of the touch probe connector and plug it into the EDG connector with the dupont leads.
Finally, put the brown jumper in the SCL header and the red jumper in the GND header as shown below.
To configure the XYZ touch probe in software, follow the guide here.
Before activating your machine, you must configure your settings to ensure that your stepper motors are running in sync. The TB6600 has a series of dip switches that can be adjusted to run your motors to your required specification. This dip switch array is located on the front face of the diver.
The dip switch is considered ON when it is pointing down wards and OFF when pointing upwards. Dip switches 1-3 adjust the stepping rate of the motor while switches 4-6 adjust the current settings of the motor. Please see our recommended current settings for the 2 variants of the Nema23 stepper motors as well as the recommended stepping rate in the tables below.
Please refer to the highlighted row in the tables below
Stepping Rate
| Micro Step | Pulse/Rev | S1 | S2 | S3 |
|---|---|---|---|---|
| NC | NC | ON | ON | ON |
| 1 | 200 | ON | ON | OFF |
| 2/A | 400 | ON | OFF | ON |
| 2/B | 400 | ON | OFF | OFF |
| 4 | 800 | OFF | ON | ON |
| 8 | 1600 | OFF | ON | OFF |
| 16 | 3200 | OFF | OFF | ON |
| NC | NC | OFF | OFF | OFF |
Standard Motor Current Settings
If you have the standard Nema23 Stepper motor (1.26Nm), please follow the settings in the table below.
| Current (A) | S4 | S5 | S6 |
|---|---|---|---|
| 0.5 | ON | ON | ON |
| 1 | OFF | ON | ON |
| 1.5 | ON | OFF | ON |
| 2 | OFF | OFF | ON |
| 2.5 | ON | ON | OFF |
| 3 | OFF | ON | OFF |
| 3.5 | ON | OFF | OFF |
| 4 | OFF | OFF | OFF |
High Torque Motor Current Control Settings
If you have the High Torque Stepper motor, please follow the settings in the table below:
| Current (A) | S4 | S5 | S6 |
|---|---|---|---|
| 0.5 | ON | ON | ON |
| 1 | OFF | ON | ON |
| 1.5 | ON | OFF | ON |
| 2 | OFF | OFF | ON |
| 2.5 | ON | ON | OFF |
| 3 | OFF | ON | OFF |
| 3.5 | ON | OFF | OFF |
| 4 | OFF | OFF | OFF |
Your Arduino compatible microcontroller comes with the boot loader pre-flashed and is ready to be flashed with GRBL. Flashing GRBL on the Arduino is pretty straight forward. Please adhere to the following steps: Download and install the Arduino IDE
Download and install the GRBL libraries.
Download GRBL V1.1 Version B here
Configuring your Arduino
Flashing GRBL
There are many G-Code senders that can be used. We recommend the GRBL Panel G-Code sender because of its ease of use and features..
Click to expand image
Click to expand image
Click to expand image
Configuring and tuning your machine
Click to expand image
Below are the recommended GRBL settings. The highlighted settings must be modified to suit your machine.
This set of settings are for the lead screw driven Lead CNC 1000 x 1000mm. Please adjust the work area of your lead screw driven machine accordingly.
| Setting | Parameter | Function |
|---|---|---|
| $0 | 10 | step pulse, usec |
| $1 | 255 | 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.02 | junction deviation, mm |
| $12 | 0 | 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 | 100 | homing feed, mm/min |
| $25 | 1000 | homing seek, mm/min |
| $26 | 250 | homing debounce, msec |
| $27 | 5 | homing pull-off, mm |
| $100 | 200 | x, step/mm |
| $101 | 200 | y, step/mm |
| $102 | 200 | z, step/mm |
| $110 | 5000 | x max rate, mm/min |
| $111 | 5000 | y max rate, mm/min |
| $112 | 2500 | z max rate, mm/min |
| $120 | 150 | x accel, mm/sec |
| $121 | 150 | y accel, mm/sec |
| $122 | 150 | z accel, mm/sec |
| $130 | 824 | x max travel, mm |
| $131 | 780 | y max travel, mm |
| $132 | 50 | z max travel, mm |
Below are the recommended settings for an Ox 1000 x 1500mm machine. Please adjust your X, Y and Z max travel settings to suit your machine accordingly.
| Setting | Parameter | Function |
|---|---|---|
| $0 | 10 | step pulse, usec |
| $1 | 255 | 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.02 | junction deviation, mm |
| $12 | 0 | 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 | 100 | homing feed, mm/min |
| $25 | 1000 | homing seek, mm/min |
| $26 | 250 | homing debounce, msec |
| $27 | 5 | homing pull-off, mm |
| $100 | 26.670 | x, step/mm |
| $101 | 26.670 | y, step/mm |
| $102 | 200 | z, step/mm |
| $110 | 5000 | x max rate, mm/min |
| $111 | 5000 | y max rate, mm/min |
| $112 | 2500 | z max rate, mm/min |
| $120 | 150 | x accel, mm/sec |
| $121 | 150 | y accel, mm/sec |
| $122 | 150 | z accel, mm/sec |
| $130 | 820 | x max travel, mm |
| $131 | 1275 | y max travel, mm |
| $132 | 57 | z max travel, mm |
Below are the recommended settings for an Ox 1000 x 1500mm machine with our gear rack transmission in the Y axis. Adjust your X, Y and Z max travel settings to suit your machine accordingly.
| Setting | Parameter | Function |
|---|---|---|
| $0 | 10 | step pulse, usec |
| $1 | 255 | 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.02 | junction deviation, mm |
| $12 | 0 | 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 | 100 | homing feed, mm/min |
| $25 | 1000 | homing seek, mm/min |
| $26 | 250 | homing debounce, msec |
| $27 | 5 | homing pull-off, mm |
| $100 | 26.670 | x, step/mm |
| $101 | 31.900 | y, step/mm |
| $102 | 200 | z, step/mm |
| $110 | 5000 | x max rate, mm/min |
| $111 | 5000 | y max rate, mm/min |
| $112 | 2500 | z max rate, mm/min |
| $120 | 150 | x accel, mm/sec |
| $121 | 150 | y accel, mm/sec |
| $122 | 150 | z accel, mm/sec |
| $130 | 820 | x max travel, mm |
| $131 | 1275 | y max travel, mm |
| $132 | 57 | z max travel, mm |
| Designer of the CNC Shield: | https://blog.protoneer.co.nz/arduino-cnc-shield/ |
| Grbl to v0.9: | https://github.com/grbl/grbl/wiki |
| Grbl from v1.1: | https://github.com/gnea/grbl/wiki |
| Grbl GUIs: | https://github.com/gnea/grbl/wiki/Using-Grbl |
| Driver Details: | https://www.makerstore.com.au/product/stepper-driver-tb6600-4a-40v/ |
| Wikipedia Arduino entry: | https://en.wikipedia.org/wiki/Arduino |
| Arduino IDE: | https://www.arduino.cc/en/Main/Software |
The High Torque GRBL Control System was designed and published by Tawanda under the Open Source Licence by Maker Store.