Maker Shield CNC Controller

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 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 Maker Shield is an all in one GRBL 1.1 compatible stepper motor shield designed for the Arduino Uno and Uno compatible microcontroller boards. It has been designed to be easy and intuitive to use with no requirement for additional driver modules.

  • Reverse polarity protection for the main motor power input (VMOT)
  • Onboard Texas Instruments DRV8825PWPR stepper motor driver IC’s
  • Dupont motor header pins (A1, A2, B2, B1) for each drive channel
  • Onboard Micro Step (up to 1/32) and drive channel enable dip switches
  • LED error indicators for each drive channel (including the CLONE channel)
  • LED driver Enable indicator
  • Voltage Reference pad for easy current adjustment of each drive channel
  • Two VMOT header pins (dependant on input voltage used and a Maximum of +24V)
    • VMOT Header pins can be used for a cooling fan
  • X-Axis, Y-Axis, and Z-Axis header pins for the Clone Axis drive channel
  • X, Y and Z channel Limit switch inputs with Loop header pin
    • The loop header pins allows for a connection of up to two limit switches per drive channel directly to the board. (when used as a Normally Closed loop)
  • Additional GRBL header pins include,
    • Probe Pin – Allowing you to set the correct height of your milling tool
    • Cool Pin – Coolant control
    • Resume – Continue GRBL job after a Hold command or door open (if configured within grbl)
    • Hold – Pause the current GRBL job
    • Abort – GRBL reset function
    • Reset – Full Arduino Uno board reset
    • PWM – GRBL PWM output for milling or laser cutters that support variable speed / power
    • Spin Dir – GRBL Spindle Enable pin when configured as a milling machine
  • Handy micro step table on the back of the Maker Shield

For GRBLv1.1 configuration settings, refer to https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration

The Maker Shield CNC Controller is suitable for a variety of small and medium sized automation equipment and instruments including but not limited to: CNC machines, laser engraver / cutter, plotters and drawbots. The integrated drivers are capable of driving standard 4 wire stepper motors with up to 2.5 Amp drive capability per motor coil.

This section will describe the connection and adjustment settings to get the best out of your Maker Shield. It is recommended to read through this section to become familiar with this board.

The stepper motor header pins are a 4- way Dupont style header pin that describes which drive channel it is used for and the relevant pin assignments. To ensure you get correct motor functionality and rotational direction, refer to your stepper motor wiring guide. Note: The Maker Shield pin assignments are a guide only and while the current assignments are marked as B1 B2 A2 A1 these can also be transcribed as B+ B- A- A+.

Each motor drive channel comes with its own Microstep and channel Enable DIP switch (Z Axis channel shown in picture). To set the required microstep resolution refer to the table below or the table on the back of the Maker Shield. Important NOTE: Ensure you refer to the numbers marked on the board (Circled in RED in the image to the right below) for correct micro step settings and not the numbers marked on the switch itself.

Note : It is important to note that if a drive channel is not being used (not connected to a motor) that the relevant EN switch is in the ‘Off’ position.

The Maker Shield incorporates a green GRBL Enable indicator as a visual reminder that the driver IC’s are energised and supplying power to the connected stepper motors.

Each drive channel incorporates its own error indicator (Y drive channel shown in image) that will illuminate if there is a problem with the driver IC. Some error conditions are overheating or over current detection. If an error condition is detected and is persistent check all wiring is correct and connectors are firmly seated.

The voltage reference adjustment allows for setting the current output (up to approximately 2.4 Amps) of the driver channel IC. It is important to ensure that the output current matches the motor current rating to ensure smooth and correct operation of your stepper motor. If the values are incorrect, you may end up overheating your motors if the current is set too high or under-powering your motors if the current is set too low. This board also incorporates a handy voltage reference pad for each drive channel.

The limit switch connector allows up to two limit switches per channel to be directly connected to the Maker Shield. This is achieved by the Loop connector for the respective channel input.

The Clone axis header pins allow you to clone either the X, Y or Z driver channel. When you are cloning an axis, select the step and direction pins for that particular axis that you would like to clone. For more information on how to clone an axis, refer to the Component Assembly section of this manual on how to clone an axis.

It is highly recommended to provide adequate cooling (heatsinks and fan) for the driver IC’s during normal operation. These drivers can get hot enough to burn before they will shut down due to overheating and will not resume normal operation until the appropriate temperature threshold has been reached. Allowing the motor drivers to overheat may result in missed steps or poor performance. It is recommended to use the provided adhesive heatsinks to aid in heat dissipation.

The VMOT header pins provide an additional power output that is tied to the VIN voltage used to drive the stepper motors (Max 24V). These pins can be used to run a cooling fan to ensure better cooling and more efficient operation of your Maker Shield.

This board utilises the standard 2.54mm Dupont style header pins (as described in Section 2) for easy and convenient connection of external accessories. Ensure that the polarity of the header pins is correct before connecting peripherals.

The onboard reset button will perform a reset of the Arduino Uno compatible controller. Pressing this button during operation will cause you to lose the current workload that is running on your Arduino Uno compatible controller and halt the current operations. This reset button performs the same function as the Arduino Uno compatible controller's onboard reset button.

The motor power input connector (Blue) is located on the left-hand side of the board. This is where the main power from your power supply is fed into the Maker Shield. Note the polarity marked on the board. NOTE: Max input voltage is 24V.

WARNING: The Maker Shield supply voltage MUST not exceed +24V.


There are two assembly guides in this Manual; the bundled kit and the standalone controller. The bundled kit can be found here and the standalone controller Manual can be found here.

The Maker Shield CNC controller bundle contains all the electronic hardware that you require to wire and run your CNC machine/Laser or plasma build.

Part 1: Base Assembly

Parts Required:

Description Quantity
Laser cut base panel 1
10mm Male to Male Spacer 8
Arduino Compatible Controller 1
Maker Shield CNC controller 1
6mm M3 Nylon screws 8

The correct orientation of the base board is with the engraved writing facing you. It is recommended to peel off the protective backing at this stage. In this build tutorial, the protective cover has been left on to ensure that all components are easy to see.

  • The mounting points for the Arduino compatible controller will be the first to be mounted. Use the nylon screws to fasten the 10mm nylon spacers to the base plate as shown below.

  • Sit your Arduino compatible controller on the 10mm spacers, making sure that everything is aligned use the remaining 6mm Nylon screws to fasten the controller onto the spacers. The end result will be as shown below.

  • Sit the Maker Shield CNC controller onto the Arduino, making sure that the pins all align and are perfectly seated to ensure connections.

Part 2: Top Assembly

Parts Required:

Description Quantity
Laser cut top panel 1
M3 Nut 8
30mm 24V Fans 2
M3 x 16mm Button Head screws 8

The Correct orientation of the top panel is with the engraved writing facing you and in the bottom left corner.

  • Mount the fan with the fan blades pointing upwards. For ease of wiring, orient the fans so that the side with the wires is closest to the small square cut out on the top panel. This square cut out is highlighted in green and is shown in step 2 below.
  • Secure the fan onto the top panel by inserting the screws from the bottom. Loosely tighten the nut by hand and complete the other 4. After all 4 screws and nuts have been inserted, you may tighten them. Repeat this step for the other cooling fan.

Part 3: Top and Base Assembly

Parts Required:

Description Quantity
40mm Threaded Hex Spacer 4
M3 x 6mm Button Head Screws 8

Use the 40mm threaded hex spacers and button head screws to attach the top and bottom assemblies as shown below:

Part 4: Wiring

Wiring the Maker shield has been discussed in the previous assembly manual. Refer to the Component Assembly section. The wiring in this section is for the additional hardware that comes with the bundle.

Stepper motor wiring

In the Maker Shield bundle are a quantity of 4, 4 pin dupont connectors used in the wiring kit. These are to be used with either Nema17 or Nema23 motors. See the tables below for the correct wiring sequence:

Nema 17:

Motor Side 4 Pin Dupont Connector Side
Red Yellow
Blue White
Green Red
Black Black

Nema 23:

Motor Side 4 Pin Dupont Connector Side
Red Yellow
Green White
Blue Red
Yellow Black

Terminal Block Wiring:

The terminal block is used to join the cooling fans and the touch probe to the 2 pin dupont connectors which will then be connected to the respective male dupont pins on the Maker Shield.

The 2 fans come with an JST-XH connector attached, cut this off and strip the wires to feed into the terminal block.

The touch probe comes with bare leads and must be stripped to fit into the terminal block as well.

Preparing the wires:

Our recommended way to strip the wires is with a wire stripper. Strip about 5mm of shielding off the cable to expose the copper. Twist the exposed copper to prevent fraying as shown below.

After twisting the cable, insert into the provided terminal block. Follow the wiring schematic shown below. The touch probe and fans will occupy 6 terminations on the terminal block. You may use the remaining 6 to your discretion.


It is recommended to feed the wires in through the case using the pre-cut slots. This is to create strain relief and neaten the cables. The fans will cool the drivers more efficiently this way. In this instance, the cover is taken off to make it easier to show the correct terminations.

Stepper Motors

4 Pin Dupont Connector Side Maker Shield Controller
Red A1
Green A2
Blue B2
Yellow B1

Repeat this for the other 3 motors connections

Thread the cables through the slot and you may further neaten the cables by use of cable ties as shown.

Limit Switches

The correct orientation is as follows

  • ‘+’ = Red Wire. This is to be wired to the NO/NC terminal of the limit switch
  • ‘-’ = Black Wire. This is to be wired to the Common terminal of the limit switch.

You may further neaten this by using cable ties.

In this controller bundle are EDG-2P connectors. Use these to connect to the provided 2 core shielded cable for the limit switches. Connect the Red wire to the White wire and Black wire to the Blue wire.

Cooling fans

The correct connections for the cooling fans are as shown. The VMOT terminal is used for these connections.

  • ‘+’ = Red
  • ‘-’ = Black

You may use cable ties to loop the cable around to the terminal block.

Complete! Proceed to the Power Supply Wiring section here of this manual and follow the steps till the recommended GRBL Machine settings here to complete your build.

Below is a guide on how to assemble the Maker Shield controller.

While taking normal static electricity precautions, insert the Maker Shield onto the Arduino Uno, making sure that the Maker Shield pins are correctly aligned with the Arduino’s pins. Take care not to bend the pins.

Limit switches are necessary if you intend to home your machine and prevent your machine from running into the end of the gantry. We recommend using our 2 Core Shielded Cable to eliminate any potential noise.

There are 2 methods of wiring your limit switches; Normally Closed and Normally Open. The standard configuration in GRBL is the Normally Open configuration. If you wish to use the Normally Closed configuration, you will need to invert the settings in the GRBL settings by changing the $5 setting from 0 to 1.

As shown above our limit switches have 3 pins;

  • Pin 1: Common
  • Pin 2: Normally Closed
  • Pin 3: Normally Open

Normally Open Configuration: If you are using our 2 core shielded cable, connect the blue wire to the “Common” (Pin 1) and the white wire to “Normally Open” (Pin 3).

Normally Closed Configuration: If you wish to use the Normally Closed configuration in your build, connect the blue wire to the “Common” (Pin 1) and the white wire to “Normally Open” (Pin 2).

Method 1: Standard Normally open Limit switch Configuration.

Note that the images below are for illustrative purposes. The signal wire colour in this manual is yellow, use white colour instead as included in your kit.

See the wiring for the Normally Open configuration in the diagram below. This example is for the X axis limit switch. Repeat this step for the Y and Z axis limit switches.

Method 2: Loop configuration with 6 limit switches.

This method shows the connection for wiring two limit switches, this configuration requires the normally closed configuration. Repeat this step for the Y and Z axis limit switches.

Emergency stop switches are recommended for stopping your machine in case of an emergency. There are 2 methods that you can use to wire up your emergency stop switch; A power cut (Method 1) or a Pause/Hold function (Method 2). If you wish to use a power cut, you will need to put your limit switch in line with your V+ lead. When activated, this will cut power to the controller and all work/machine position will be lost. A Pause/Hold will put the controller in a hold state and the work process can be resumed after releasing the Emergency stop.

Method 1: Power Cut (Recommended)

The emergency stop switch is to be put in line with the +24V lead going from your power supply to the Maker Shield. This method cuts all power to the stepper motors and work will be lost.

Method 2: Pause/Hold

This method pauses the job. It is recommended if you intend to resume the job.

If your machine has a mirrored axis, also known as a slave axis, the axis will need to be cloned. In most cases the machines have a dual Y-Axis. See below on how to clone the Y-Axis. Insert a shunt in the YD and YS headers as indicated below:

It is important to ensure that your motors are wired correctly. Bipolar stepper motors have 2 coil pairs within them and therefore the wiring has to match these coils The coils typically have a labelling system that labels these coils, A+, A-, B+, B-. A+ and A- correspond to the first coil and B+ and B- correspond to the second coil. In the example shown below, green and black make up coil A and blue and red make up coil B. If these coils are mixed, the motors will vibrate instead of turn or turn in one direction only. For our Nema23 stepper motors, the wiring sequence is Red, Green, Blue , Yellow, for A+, A-, B+ and B- respectively.

Use 2 male to female dupont cables to connect the black wire to ‘+’ and red wire to ‘-’ on the probe headers on the maker shield (highlighted by the red square).

Insert the male portion of the dupont cables into the 2 female end of the EDG connector and the touch probe is to be connected to the male end of the EDG connector, matching red from be probe to red on the dupont lead and black from the probe to black on the dupont lead.

For information on how to configure this probe in software, check out our software guide here.

For the best performance, it is recommended to use the MeanWell 350W 24V power supply. Do not exceed the recommended supply voltage of 24V as damage to the components may occur. Ensure that V+ from the Power Supply is connected to V+ on the Maker Shield (red wire) and V- from the power supply to V- of the Maker Shield (Black wire. Our cable has white wire. The Black has been used for illustrative purposes.).

To get the best performance from your motor, it is recommended to tune your current and micro-step settings. See below for the settings.

As mentioned earlier, the SW1 on your control board corresponds to the enable pin for that particular axis. If you wish to use that axis, enable the axis by moving the dip switch to the UP position. The motor enable interface is shown below:

As stepper motors are current driven devices, you will need to finetune your current settings. Refer to the table below for tuning the current. Refer to the datasheet of your stepper motor to get the correct current rating.

Reference Voltage (V) Driver current Output (A)
0.1 0.2
0.2 0.4
0.3 0.6
0.4 0.8
0.5 1.0
0.6 1.2
0.7 1.4
0.8 1.6
0.9 1.8
1.0 2.0
1.1 2.2
1.2 2.4

To set the current for the driver, you will need the following:

  • A multimeter set to measure DC voltage
  • A small Phillips head screwdriver
  • 2 ended alligator clip.


Refer to the diagram below while you are following the steps.

  • Enable the motor drivers that will have their current adjusted.
  • Turn on your Maker Shield
  • Turn on your multimeter to read DC Voltage
  • Attach one end of the alligator clip to the screwdriver and the other end to the positive probe of your multimeter.
  • Attach the negative probe to the Voltage reference pad named REF highlighted with the Red square and insert the screwdriver in the adjustment potentiometer. Note that each driver has its own reference pad with the axis label next to it. There is also an adjustment potentiometer specific to the driver. For example, the Y axis Voltage reference pad is named REFY with the potentiometer just below the driver highlighted by the Green square.
  • Adjust the Vref to suit your motor. The Vref is 50% the current value. For example, if your motor is 1.0A, adjust the Vref to be 0.5V
  • Repeat this for each axis that you intend to use in your build.

Apart from current settings, stepper motors can be further fine tuned by means of setting the micro steps. Increasing the micro-steps increases your accuracy. The recommended micro step setting is 1/8th step. The table below will show you how to set the micro-step rate.

IMPORTANT NOTE: Follow the micro step numbering on the silkscreen on the board highlighted in the Green square not the dip switch itself as SW1 corresponds to the Enable pin for the relevant motor.

Micro Stepping Rates

Micro-Step SW1 SW2 SW3
1/32 ON ON ON

To set the micro step, peel off the orange protective film on the dip switches and set the dip switch to the desired setting. Flipping the dip switch upwards puts it in the ON position. Note that you may need to adjust the micro-stepping rate in the software as well, depending on the gcode sender that you are using. This guide uses 1/8th step so no further calculations are required as to the steps per revolution settings in GRBL.

Software and Programming

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. Adhere to the following steps: Download and install the Arduino IDE

  • Download the Arduino IDE here
  • Locate the downloaded file. By default it should be in your Downloads folder.
  • Double click to run the installation process. Follow the prompts to install.

Download and install the GRBL libraries.

  • Download GRBL V1.1 here
  • Note where the file has been downloaded and extract the .zip file titled grbl.
  • After the extracting, copy the extracted folder to your Arduino Libraries folder. (By Default, your libraries folder should be in: (C:\Program Files (x86)\Arduino\libraries)

Configuring your Arduino

  • Before uploading any code, you must configure your board in 2 steps; Selecting a board and selecting the port that the board is connected to.
  • Open the Arduino IDE and you will see a blank sketch such as below:

  • To select your board, click on Tools - Board - Arduino Uno/Genuino Uno.

  • To select the port, click on Tools - Port and choose that port that your board is connected to.

Flashing GRBL

  • To flash GRBL click on File- Examples - grbl - grblUpload and a grbl sketch will be shown. Upload the sketch to the arduino by clicking on the arrow button highlighted by the yellow square.

  • Upon a successful upload, the IDE will report “Done Uploading.

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

  • You can download GRBL Panel here
  • Locate the downloaded file. By default, it should be in your Downloads folder.
  • Unzip the downloaded file and copy the folder to your desktop.
  • Open the folder and locate the file titled GRBLPanel and double click to open it. You will be greeted with the user interface as seen below. Note that there is no board connected as highlighted in the red square.

Click to expand image

  • Connect the Arduino to the computer and press the Rescan button and select correct port in the drop down menu as indicated below. Click Connect and your arduino should be connected.

Click to expand image

  • Before jogging your machine, it is recommended to change the settings to ensure that your motors will run in sync and therefore accurately. You can configure the settings of your machine by accessing the Settings tab and changing the values in the Value column. Press the Enter key to save the changes for each value.

Click to expand image

Configuring and tuning your machine

  • After changing the settings to suit your machine, manually jog your machine and check to see if the distance traveled in the software matches the distance physically traveled by the machine. The image below shows the different sections of the panel that will need to be adjusted to your preference.

Click to expand image

  • The Red square sets the stepping distance from 0.01mm to 10mm
  • The Feed rate shown in the Blue square but can be overridden by the Feed rate in the Orange square
  • The Orange square has settings for milling.
  • As seen in the image, the Y axis shown in Green has been moved in the positive direction by 30mm. Your machine should move to 30mm. If it does not, change the appropriate settings $101 which is the number of steps per mm traveled by the motor to suit your machine.
  • Repeat for all your axes until the desired accuracy has been reached.
  • More information on using the GRBL Panel can be found here: https://github.com/gerritv/Grbl-Panel/wiki/Using-Grbl-Panel

Recommended GRBL Settings

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. 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. 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
  • electronics/maker_shield_cnc_controller.txt
  • Last modified: 2021/04/20 02:15
  • by Maker Hardware Team