Arduino CNC Shield V3 with GRBL — Wiring, Stepper Drivers and First Setup
The Arduino CNC Shield V3 is the cheapest reliable way to turn a few stepper motors and an aluminium frame into a working CNC router, laser engraver or pen plotter. It plugs directly onto an Arduino Uno, takes up to four pluggable stepper drivers and runs GRBL, an open-source G-code interpreter that has been tested for over a decade. This guide follows the order of a real build: flashing the firmware, setting microstepping, wiring motors, limiting driver current, connecting endstops and a probe, choosing a power supply and entering the first GRBL settings.
What the Arduino CNC Shield V3 actually is
The shield is a passive breakout board. It contains no intelligence. The Arduino Uno runs GRBL and generates STEP and DIR signals, and the shield routes them to four driver sockets labelled X, Y, Z and A. Each socket accepts a Pololu-format module, either an A4988 (up to about 2 A peak with good cooling, 1/16 microstepping) or a DRV8825 (up to about 2.2 A peak, 1/32 microstepping, higher voltage tolerance).
Other features include a screw terminal for motor power, headers for the X/Y/Z endstops, spindle enable and direction, coolant, and control inputs (Abort, Hold, Resume). Two jumpers let the fourth socket (A) clone the X, Y or Z axis, which is useful for a gantry with two Y motors. If you are starting from scratch, the Arduino CNC Shield V3 GRBL kit includes the board you need for the steps below.
Flashing GRBL onto the Arduino Uno
Flash GRBL with the shield removed. This avoids accidental motor movement or shorts while the board is on your desk.
- Download GRBL 1.1 from the official gnea/grbl repository on GitHub.
- In the Arduino IDE, add the
grblfolder as a library (Sketch → Include Library → Add .ZIP Library). - Open File → Examples → grbl →
grblUpload, select "Arduino Uno" and the correct port, then upload. - Open the serial monitor at 115200 baud. You should see
Grbl 1.1h ['$' for help].
An important GRBL 1.1 detail: variable spindle PWM uses pin D11, so the Z limit switch moves to D12. On the shield, connect the Z endstop to the SpnEn header. The header labelled "Z+/Z-" now carries the spindle PWM signal. Many first builds fail at homing because of this.
Microstepping jumpers on the Arduino CNC Shield V3
Under each driver socket are three jumper positions: MS1, MS2 and MS3. On a DRV8825 these map to M0, M1 and M2. Fit the jumpers before you insert the drivers.
| MS1 | MS2 | MS3 | A4988 | DRV8825 |
|---|---|---|---|---|
| – | – | – | Full step | Full step |
| ON | – | – | 1/2 | 1/2 |
| – | ON | – | 1/4 | 1/4 |
| ON | ON | – | 1/8 | 1/8 |
| – | – | ON | — | 1/16 |
| ON | ON | ON | 1/16 | 1/32 |
For a small router, 1/16 is a good default. It gives smooth motion and keeps the step rate well within what an Uno can generate (about 30 kHz). At 1/32 with a fast belt axis you can hit that limit before you reach the speed you want.
Motor wiring and current limit (Vref)
Inserting drivers and connecting motors
Line up the driver's EN pin with the EN mark on the shield. A module inserted backwards is destroyed the moment power is applied. Each NEMA 17 motor has two coils. Use a multimeter to find the pairs: a coil reads a few ohms, while unrelated wires read open circuit. Connect one coil to 1A/1B and the other to 2A/2B. If an axis runs the wrong way, do not rewire it. Change the direction mask $3 instead. Never connect or disconnect a motor while the shield is powered, because the driver will usually not survive it.
Setting Vref
Measure the voltage between the potentiometer and GND while the board is powered and the motors are idle. Set the current to about 70–80% of the motor's rated phase current.
- A4988 (sense resistor R100 = 0.1 Ω): I = Vref × 1.25, so Vref = I × 0.8. For 1.2 A, set about 0.96 V.
- DRV8825 (R100): I = Vref × 2. For 1.2 A, set 0.60 V.
Read the resistor marking on your module. Some boards use R068 or R050, which changes the formula. Fit heatsinks, and add a small fan above the drivers if you plan to run jobs longer than a few minutes.
Endstops and the Z probe
GRBL enables internal pull-ups on its inputs, so a mechanical switch only needs two wires: the signal pin and GND. The "+" and "−" headers for each axis connect to the same Arduino pin. You can wire two switches per axis, but GRBL cannot tell which one was triggered.
- X → D9, Y → D10, Z → D12 (the SpnEn header in GRBL 1.1)
- Probe → A5 (labelled SCL on the shield). Connect the touch plate to A5 and clip the GND lead to the tool.
Normally closed (NC) switches are the safer choice. With NC, a broken wire looks like a triggered switch and stops the machine instead of letting it crash. Set $5=1 to invert the limit pins for NC wiring. Run switch leads away from motor cables, or use shielded cable. Electrical noise on unshielded endstop wires is the most common cause of random alarms.
12 V vs 24 V power supply
Steppers lose torque as speed increases because coil inductance limits how fast current can rise. A higher supply voltage pushes current in faster, so the same motor holds more torque at high RPM. Voltage does not raise motor temperature, because the driver still limits current to your Vref setting.
- 12 V is fine for lasers, plotters and slow lead-screw machines with NEMA 17 motors. The Mean Well LRS-350 12 V power supply has plenty of headroom for four drivers plus fans and LEDs.
- 24 V suits belt-driven axes and faster routers. Check that the shield's electrolytic capacitor is rated above 24 V (35 V is typical). Do not go beyond about 30 V with A4988 drivers.
Power the Arduino from USB or its own 5 V source. The motor terminal on the shield does not feed the Uno.
First GRBL $ settings for an Arduino CNC Shield V3 machine
Steps per millimetre = (motor steps × microstepping) / travel per revolution. For a 200-step motor at 1/16:
| Drive | Travel / rev | Steps/mm |
|---|---|---|
| GT2 belt, 20T pulley | 40 mm | 80 |
| T8 lead screw, 8 mm lead | 8 mm | 400 |
| T8 lead screw, 2 mm lead | 2 mm | 1600 |
| SFU1605 ball screw | 5 mm | 640 |
Enter these values in $100, $101 and $102. Then start with conservative motion settings: $110–$112 (max rate) around 1000–3000 mm/min for belts and 500–1000 for screws, and $120–$122 (acceleration) around 100–300 mm/s². Set $130–$132 to your real travel, then enable $21=1 (hard limits) and $22=1 (homing). If you use a laser, set $32=1. Verify the result by commanding a 100 mm move and measuring it with a caliper. If the move comes out short or long, correct the steps value proportionally.
When to switch to an external driver like the TB6600
Pololu-style modules are fine for NEMA 17 motors up to about 1.5 A. Consider upgrading when you move to NEMA 23 motors at 2–3 A, when the drivers overheat even with a fan, or when you need more voltage. The TB6600 stepper driver handles 0.7–4 A at 9–42 VDC and has proper heatsinking. You can keep the shield as a signal board. Take STEP, DIR and EN from the empty driver socket, wire them to PUL+, DIR+ and ENA+, and tie the "−" inputs to GND (common cathode). You can mix both approaches, for example TB6600s on X/Y and an A4988 on a light Z axis.
Software: UGS and Candle
Universal G-code Sender (UGS) is Java-based and runs on Windows, macOS, Linux and even a Raspberry Pi. It offers jogging, a GRBL settings wizard, probing macros and a 3D toolpath preview. Candle is lighter and Windows-oriented, with a clean interface and built-in height mapping for PCB milling. Both send G-code from CAM tools such as Fusion 360, Estlcam or LightBurn. Start with UGS for setup, since its wizard makes steps/mm and limit configuration easier.
Summary
The Arduino CNC Shield V3 rewards a careful setup. Flash GRBL 1.1, set microstepping before inserting the drivers, match the EN pin, set Vref with the correct formula, move the Z limit to D12 and calibrate steps/mm against a real measurement. Get those right and a V-SLOT frame with NEMA 17 motors will cut, engrave and plot reliably. When the motors outgrow the modules, TB6600 drivers and a stronger supply are a straightforward upgrade. You will find all of these parts in our electronics for CNC collection, with aluminium profiles cut to length and shipping across the EU.
Planning a small CNC build?
Send us your working area, axis drive type (belt or screw) and motor size. We will suggest matching electronics, power supply and profiles cut to length.
Email shop@bsv-slot.pl