Arduino CNC Shield – 100% GRBL Compatable


Do it yourself CNC projects are popping up everywhere and we decided that we wanted to contribute to the growth.

Here are a few of our design goals:

  • Modular Design – We wanted to do more than just keep cost down. We wanted things to be reusable and up-gradable. (Arduino , Individual Stepper Motor Drivers and more…)
  • Compact Design – Squeezing a 4 axis design into a board the same size and Arduino Uno.
  • Opensource Software – 100% GRBL compatible (G-Code Interpreter)
  • Evolving Development – We are keen to improve on the design and welcome all feedback.

NOW AVAILABLE at our Ebay store…
… or in assembled from from

Arduino CNC Shield V3.10 – GRBL v0.9 compatible (PWM Spindle + Soft limits)Arduino_CNC_Sheild_V310_Populated

Arduino CNC Shield V3.00Arduino CNC Shield V3

Arduino CNC Shield V2.00Arduino CNC Shield - Pololu Stepper Drivers Installed


NOW AVAILABLE at our Ebay store…
… or in assembled form from

If you are interested in updates please add your email address to the following mailing list and we will send you more details as the shield develops.

Arduino CNC Shield – Mailing List

Board Layout

The following image displays the functionality of the Arduino pins as used by GRBL.

GRBL Pin Layout

GRBL Pin Layout

We have designed the Arduino CNC Shield to use all the pins that GRBL implemented. We have also added a few extra pins to make things a little easier.



Extra pins:

  • Limit switch pins have been doubled up so that each axis has a “Top/+” and “Bottom/-“. This makes it easier to install two limit switches for each axis. (For use with a normally open switch)
  • EStop – These pins can be connected  to an emergency stop switch. This does the same as the RESET button on the Arduino board. (We do advice that an extra emergency button also be installed that cuts power to all machinery. A REAL EMERGENCY BUTTON)
  • Spindle  and coolant control has their own pins.
  • External GRBL Command Pins have been broken out allowing you to add buttons for Pause/Hold , Resume  and Abort.
  • Serial Pins (D0-1) and I2C Pins (A4-5) have their own break out pins for future extensions. I2C can later be implemented by software to control things like spindle speed or heat control.
  • Version 3.00 of the board added a jumpers to configure the 4th axis(Clone the other axis’s or run from Pin D12-13), Comms Header(RX+TX , I2C) and a Stepper Control Header(All Pins needed to run 4 steppers)

Bill Of Materials

Assembly Instructions

Click here for the Assembly instructions for the Arduino CNC Shield V3.XX
Click here for the Assembly instructions for the Arduino CNC Shield V2.XX

GRBL Software/Firmware

GRBL is opensource software that runs on an Arduino Uno that takes G-Code commands via Serial and turns the commands into motor signals.

The GRBL source Code is located here.

I have also written a few turorials on uploading the firmware onto an Arduino Board:


  • Version 3.10+
    • Added Support for GRBL 0.9v with PWM Spindle.
  • Version 3.00 (4 Axis)
    • Enlarged board to add a 4th Axis that can clone the X,Y or Z axis. With a 4th option to use pin D12-13 to control it.(Setting up the 4th Axis)
    • Added a breakout header for all the Axis’s.
    • Added a communication header for UART(Serail) and I2C.
    • Added the a connector for an optional fuse.(Fuse not supplies as it needs to be selected for the current that will be used.)
    • Capacitors are mounted horizontally giving more clearance between them and the stepper drivers. Good for ventilation.
    • Added a pull-up resistor on the axis enable pins. This prevents the pin from being in a floating state.
    • Added 2 mounting holes
  • Version 2.02 (3 Axis)
    • Fixed High Voltage label
    • Removed Diode D1.
    • Reduced the number of Via’s.
  • Version 2.01
    • Added a 5V Breakout
    • Filled in both sides with Ground Copper
    • Moved RX/TX pins to the side so that 26-Pin header can be used. Same as the headers on a Raspberry Pi.
    • Small Text Changes
  • Version 2.00
    • First official version of the CNC Shield.
    • All pins used by GRBL has been broken out.

Gerber Files

  • Due to Chinese Clones being sold for less than $5 and pricing me completelly out of the market(and them not contributing to the project) I have decided to not publish future versions design files.

Arduino CNC Shield Ver2.xx – Gerber Files

License and Warnings

This is a work in progress design. All liabilities are on the users at their own risk and they take full responsibility for any harm that might happen to them or their property.

Creative Commons License
CNC Shield by is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Based on a work at

Extra Reading

  1. Nice looking shield. Any links to retailers, or better yet the board design?
    I can’t find it in your online store.

    • Thanks for the complements. We are in the process of beta testing the shield so that we can finalize the design.

      Would you be interested in being a Beta Tester?

      • Bert,
        Definitely, I have actually designed a board and made my own prototype shield, but yours is more compact and better laid out.
        Will even pay for it if necessary. Send a private e-mail if interested.

  2. Hi Bert!
    I have finished bild my cnc project and looking for control board. I plan to use Arduino Uno controller. You board is nice I could try to use device as a Beta tester .

  3. I also would like to be your beta tester. I am also prepared to pay for this.

  4. Hi, im VERY keen on your CNC board, Im going to turn my old mill into a CNC and also thinking about building my own CNC foam cutter for work. im happy to pay for this board, also happy to beta test. cheers Ben

  5. VERY keen to get my hands on this, i have a few CNC projects i want to build and this looks like it will be perfect. please email me about purchasing and beta testing.

    • haha… That’s exactly why I designed this little shield. I wanted a CNC board that’s modular and as reusable as possible.

      Also have a few more ideas for extensions but I will work on that after I have received so feedback from users.

  6. Pingback: GRBL compatible Arduino CNC shield - RaspberryPiBoards

  7. Pingback: GRBL compatible Arduino CNC shield | Blog of MPRosa

  8. Pingback: How to create an Open Source CNC | Alan C. Assis

  9. Hi, I am building 2 CNC’s. One for milling and one for Laser cutting, etching. I am using 5Volt Nema 17’s.

    This would be perfect if it could use the DRV8834 module.

    Can I be a beta tester or can you sell me a bare board or the files to have it made?

    • Thanks Robert… I have sent you an email with the details. At the moment there are a lot of people asking to be beta testers so I can only do one kit at the moment.

      I have also uploaded the Gerber files if you would rather get the boards made…. Kind regards,Bertus.

  10. Nice looking shield. I am a long time user of GRBL and one thing that comes in handy on a GRBL shield is a socket for an optional 4rth stepper driver that can be used for a second motor on the Y-axis. Jumpers that can slave this 4th driver to the standard Y-axis stepper signal, and ideally, an optional logic inverter on the direction pin for the 4th driver.

    • Yes… I was looking at that option, but I was running out of room on the shield. 🙂

      A nice option would be to have a jumper configuration of some kind that allows you to select what axis you want to double up.

      • How exactly does “doubling up” work? Does that mean that whatever steps are sent to the one driver are sent to the other, or what? If you wanted to have a fourth axis separate, like for an Extruder or something, you could have take the spindle enable pin, and the spindle direction pin, and make those direction and step.

        How hard would this be to do in GRBL? I know it would be doable outside of GRBL in your own sketch.

        (Also, I want to beta test, but the other post hasn’t showed up yet, and I don’t know why)

        • Thanks for the question. I have added a little section on Beta testing.

          By doubling up you are basically just connecting 2+ stepper drivers up to the same stepper and direction pins.

          Using those pins would be an option. But the way GRBL was designed will not make it easy. GRBL is very efficient at what it does and
          sends pin changes in one call. So stepping pins need to be on the same I/O port as I understand it. (The Spindle pins are not on the same port as the stepper pins)

          I however still think we need to work on adding I2C support to GRBL so that you can extend it with custom hardware till kingdom come.

        • I though about it a bit more. You might be able to get away with the current GRBL code as it is.

          By using the Spindle enable, direction and the coolant control pins for signals I can create a shield that activates an extra extruder stepper driver with the spindle enable pin. Set the direction of the extruder with the spindle direction pin and turns the extruder heater on and off via the coolant pin. You could also interact with the pause pins on GRBL to make the setup wait for the heater to reach the right temp before starting.

          It will take a bit of effort but its more than doable.

          The best solution though would be if we could enable I2C in GRBL. But that will take a lot of effort.

    • This is a hardware function and from looking at the code it looks like an interrupt is linked to the pin stopping the movement queue.

      • I see, gotta be careful with that then. Some operations are not meant to be stopped in the middle, with feed off and spindle (or whatever is controlled as a spindle) still running. If this is a real emergency, then I suspect the RESET is the right button for that. But if it’s a convenience thing, I would much rather see it stop at a preset point in the program.

        Do you know by chance if Grbl recognizes M-codes, and specifically M1?


        • Mmmmm it supports the following g-codes . From the looks of it it,it does not have M1… But it does have M0 that’s a program pause. What you also need to consider with GRBl is that it does not just take a g-code file and run it. You need to constantly feed it with new g-code commands.

          For that reason I designed a Raspberry Pi to Arduino Bridge shield.

          The Raspberry Pi is excellent for streaming g-code commands to GRBL and with a bit of effort you can create a nice Web-interface for the rPi that you can upload g-code files to and it will send it off to your CNC machine.

          • I do the same thing with my 3d printer, except I don’t use a shield, I just send it over USB. I use a to control the 3d printer. I just send it a stl file, and it slices it and sends it to the printer. You can also send raw gcode if you want to. I’d like to get one of those shields you are talking about and make sure BotQueue can work with it.

            I’m assuming these are the boards you’re talking about:

          • Yes, that’s the one. It should work because instead of pointing the to the USB serial port you just point to the rPi’s hardware serial port. Will send you an email in the next day or so about beta testing. Just remind me about the rPi Bridge if I forget about it.

  11. Pingback: » Shield CNC para Arduino -

  12. I have spare A4988 stepper motor driver carriers used on 3d printer Reprap RAMPS, will these work on the shield?

    I’m looking to use this board on a Sumpod 3d printer and a small hobby lathe I just got.

    • Thanks Mark, I have sent you an email. Like your website by the way.

      (I have always wondered if it was possible to hack cheap digital scales like you have done on your site. )

  13. If you have any more of these for BETA test I’d love to be involved.

  14. Add me to the list of beta testers please, already have the pololus that I never wound up using for the printer parts plotter/laser cutter because I got frustrated.

    • Email is on its way… Hopefully this will not be to frustrating. I a working on the assembly instructions that would also help alot. 😉

  15. Looking really nice. What sort of speeds can you get running a 3 axis machine?

    • Hard to tell… Should be in the same ranges as the speeds you can see on the Delta 3d Printers.

  16. Your shield looks really good. Can you post the schematics? I would love to take a closer look at your design.

    • Thanks for the request Jan. I have uploaded it for you… Please let me know if you have any suggestions on how I can improve the circuit.

  17. Pingback: Znowu o CNC czyli DIY Arduino CNC -

  18. Great sheild..
    Do you have the 2.01 Gerber Files as I would like to make some PCB for testing on my drill mill.

  19. I’m interested in beta testing, if there’s still “space.”

  20. Pingback: Microcontrollers & Boards | Pearltrees

  21. Very interested in this shield for testing. Our cnc is finished, just choosing electronics. Please give me more info on getting one of these.
    Thank you

    • Hi Dustin.

      We are currently waiting on a few of the components for the boards. I will be in contact as soon as its available again.

  22. Hi!
    I want to build my own cnc machine with arduino, and this is a very interesting board. I want to make a PCB for me, so can I get the more details in e-mail?

    • Hi Daniel,

      I have sent you a quick email. Most of the stuff has been covered with this webpage. The GERBER files is the important stuff you need to get the boards made.

    • Thanks for your comments…. The Stepper Shield was one of my first inspirations.

      Interesting… Can you provide a bit more details on your setup. I have seen lots of machine with double-stepper Z axis.

      I have also seen that you can run 2 stepper motors from one Pololu Driver. Could that solve your issue or do you need to run two separate Pololu stepper drivers on the Y axis?

  23. excuse me, i can’t open the file, can you post the download’s link of the program?

    • Hi there….

      Its pretty easy. It depends on the driver you use. A4988 – if you scroll halfway down the page to “Step (and microstep) size” you will see a table with M1,M2,M3. The table explains how to set the micro stepping.

      For Example having all three jumpers inserted will give you the smallest micro-stepping your driver can do. Removing all the jumpers will remove micro-stepping and the driver will run on full steps.

      The DRV8825 works on the same system but has a bigger range of micro-stepping.

      Does that make sense?

  24. Hi Bertus
    Really like this board and I have downloaded the gerber files.
    Being new to milling pcb boards i have no idea what software works best to take your files and generate g code for milling. Not even sure what program you used to create the files themselves. I downloaded eagle and seems it cant open the drl file.
    Is there a better software you use to drill and cut the pcb? or am i stuck making a cnc board using another process? I would love to cnc mill this board using a grbl cnc.

    any help would be greatly appreciated.

  25. johan..
    i want to know where i can buy this arduino shield for the cnc
    and what are the cost for shipping to the netherlands

    I hope for an answer

  26. Is the v3 board available for sale yet? Can I buy the PCB only (no components)

  27. Pingback: Protoneer CNC Shield | CADduino

  28. I just got mine soldered and it’s working perfectly! Goodbye messy wires!

  29. Hi Bert,

    I have a question about the GRBL controller.
    What for a GRBL controller to use you?
    Your new shield (v3.0) has the option for X/Y/Z end stop and spindle DIR/EN, but I have no idea what for a software work and supported these options.
    MACH3 use a shield which support the parallel port (no compatible with arduino), and the GRBL controller (v3.5) not supported these options.
    Do you have a configured or a special software?
    It´s fantastic if you can help!
    The shield I have buy over eBay and if it´s received I will use this with my cnc mill.

    Thank you in advanced!


    • Hi.

      I use a software called universal Gcode sender to send commands to my GRBL board.
      GRBL is the firmware that runs on the Arduino board and you can send it special G-Code commands that enable the spindle pins. The end stops are
      little switches that you connect to the pins on the board and they will stop the machine if it reaches its maximum capabilities.

      Hope this helps.


  30. Hi,

    I am just checking out the GRBL shield V3.
    I use the board together with 3 polulu DRV8825 stepper drivers.
    On the polulu website I found out that in order to use the driver, the reset and sleep input should be put high. Based on the GRBL shield schematic I think the normal operations is low for reset and sleep. Does anyone know if I can configure something or set a jumper in order to get them high?

    Thanks in advance,


    • Hi.

      The DRV8825 driver works with the V3 board and does not need any modification. Just make sure you use the second version of the DRV8825 as the first one needs an extra resistor to be compatable with the A4988 footprint.

  31. hi witch one one of the drv8825 is the sec version i have one with md20b is this the newer version
    and if this is not how can change to let it work
    ps is there of de version 3 a schematiclayout i see onely version 2 schematic layout on your site

  32. Pingback: BLOG | New Product Post – 3D Printer Accessories

  33. Hello, can I use the Pololu A4988 and 5V Stepper Motors like this


    with it ?

  34. Hi , recently I’ve bought one of your amazing shield to use it with DRV8825 polol driver . and when testing the steppers with shield by making them rotate only once , the motor rotate for half a rotation then vibrate then continues to rotate .

    Can you please suggest a solution for this issue .

    • Hi…

      There could be a few issues. You will have to play with the max speed and acceleration or steps per mm in GRBL. It could also be that you are not giving it enough current. Using full stepping can also cause this issue(Try 1/2 step or less if thats the case).


    • I had a similar symptom when using the same setup and Nema17 4800g/cm steppers. The problem went away with a very slight load on the stepper shaft. I’m picking that, under no load, the current draw is at it’s minimum, and that’s not quite enough to bring the stepper into the next step (that bump you feel when rotating the shaft by hand) It then appears to sit there and bounce between 2 steps, giving off a really disconcerting buzz/vibration. By applying a small load, the current draw is increased, and the motor starts to behave.

  35. I have set this up to slave the A to the Y axis and am getting movement on A but not on Y. If I remove the A driver and send commands to the Y/A I just get a hiss but no movement. I’ve shifted the Pololu DRV8825 from the A to the Y and no change.

    Any suggestions?

    • Hi. The A axis can only clone other axes or run of the D12 and D13 pins. Hissing is a good sign cause that means the drivers have been enabled but is waiting for stepper signals. Are you using GRBL or writing custom code by the way?

  36. Hello,
    I have the 3.0 version.
    The stepper on the x axis moves much slover as the one that is on the y or z axis.
    If i connect the stepper from the x to the y or z axis with the same driver it turns normal.
    If i clone tbe x axis to the A axis it is the same Problem.
    Hope you understand what i mean 🙂
    Do you have any solutions for the problem?
    Best regards.

      • Hi,
        This is it!
        I found it out yestetday evenig.

        Must be a long time ago, where i hab changed it *confused*
        But now it works pretty well.
        Thank you for your help 😉

  37. Hello there

    I have just started playing with the CNC shield version 3.03.
    I’m currently struggling with the end stops:

    Until now I only managed to stop the axis when one of the end stop switches is reached. Then I have to reset the board which is fine. After that the axis will move to both directions. I think that’s a bit odd.
    Wouldn’t i be more convinient / safe in this cenario if the axis would only be able to travel away from the reached end stop?

    For example:
    – The X-axis travels positive and reaches the positive end switch
    – The X-axis is being stopped
    – I press reset
    – The X-axis is enabled to travel to the negative direction only as long as the positive end stop is still active.

    Is this possible with the current shield? Am I missing something?

    Kind Regards

  38. This is a very good board. I am using it very successfully for about 3 months with my Shapeoko 2. 4-Stepsticks and Nema17 70oz/in motors @ 12V (pc power supply) driving a dremel tool as the spindle.
    I plan to upgrade to 8825’s to drive Nema 23 140oz/in motors @ 24V shortly to support a much bigger Dewalt 611 router. It is nice to be able to use the same board/firmware. I have used GRBL 0.8c and 0.9b successfully. The shipment got to me in the US without any problem or delay.
    The assembly was very easy and followed the supplied directions perfectly.
    My Shapeoko build log is here:

  39. Hi, i bought the 3.03 on ebay, it works great, but endstops doesn’t works.
    I try with normaly open contacts, like this ( X+ ._. dots are connectors and _ a wire, so normally the motor X+ stop but not mine)
    Do you have a schematic or a picture to wire it ?

  40. Pingback: Cheap Chinese Laser Cutters – Buying one |

  41. Pingback: Sneak preview : LPCDuino |

  42. Pingback: Protoneer CNC Shield + Alamode + Raspberry Pi CNC Controller |

    • Hi. The limit sits with the Stepper drivers that you use… The A4988 and DRV8825 Max out at 2Amps. So they will only work efficiently with motors in that range say a Nema17/23. For bigger motors you can still use the board will have to use the headers on the left side that breaks out the stepping and direction pins for each axis.

  43. I’m a cnc machinest and I recently stumbled on the ardunio and related info. I am very interested but want to finish the research before I jump in. Looking at the Nema 23 from Phidgets # 3307. But how do you supply power to 4 stepper controls? Do you use a 24 volt w/ 6 amp power supply with 4 taps of only about 1.5 amps out for each or do you use a 6 amp and connect each shield in parallel? and hope that everything equals out!
    Thanks for the help. I’ve been hoping something like this ardunio and GRBL etc would come along for a long time. I want to play at home on my stuff.

    • Measure twice cut once… 😉 To driver 3x 2A motors I suggest you get at least a 6-8Amp power supply. Need to add the max current per stepper driver times n-number of drivers. Extra amps will ensure the Power supply does not get stressed to much. The shield has a single power input for the stepping driver side of it and the logic bit gets powered by the Arduino. 2A Nema 23 is about max that the Pololu Driver can run. For more you will have to look at external Stepper drivers like Gecko’s… But that gets very expensive and multiple power supplies might be needed.

  44. Pingback: Arduino shield for CNC-machine with GRBL | Swedish Prototype

  45. I need to be able to enable X and disable A and/or enable A and disable X. I am making a 4 axis table top router and will be “faking” rotery (A). The A drive will be a built in drive running at the same time that X is. I need to disable X so the table doesn’t move and hit the limit switches. If I apply 5 volts to any EN pin, will that disable all four drivers? Thanks, Carl

    • Hi Carl,

      One of the artifact with GRBL is that because there are a lack of pins on the Arduino Uno one pin enables/disables all of the stepper drivers. So yes, driving the EN high will disable all. You can however cut the enable track on the A-Axis and control that individually.(A 10K pull-up resistor would be good to keep it stable and and extra control pin will be needed to drive it.)

      • Thanks for your answer. I was also thinking that if I cut off the EN pin from the driver board and solder it sticking up I could use it like a male plug and wire that to an EN switch. I hate to cut your board. Thanks, Carl

      • I have the enable pins working fine now. I pulled the en. pins from the driver boards and put them on top as a male plugs.
        I do have one more question, WHAT DOES G R B L stand for? I can’t find the meaning anyware. Carl

    • This shield is more targeted at the CNC side and will require some modifications to make it capable of also doing 3d printing work.

  46. Hello. the shield is great! works fine with nema17. But I need to upgrade to nema23. I have a 24v 30A power… with nema 17 works fine, but when i change the stepper…. when I put the nema23 don’t work… I am frustated… any idea???
    thanks all.
    sorry for my english

    • Thanks for the question. Are you sure you have connected the cables correct? Are the steppers making any noise? What amps are the steppers rated?

  47. hello! thanks for anwser…. the problem was ldo steper wiring!!! Ldo has 3 different datasheet with different wiring colors!!!! Now move!

    Another questions…. with me pololu a4998 I can only use 2A…. Nema23 is 2.8A per phase…. another compatible driver????

    Thanks for all
    great project!!!!!! works fine!!!

    • The A4988 will driver the 2.8Amp steppers. The next bigger step is to get external drivers like Gecko drives but they are very dear and might be an over kill. (The breakout pins on the left were designed for external drivers.)

  48. Pingback: Raspberry Pi Alamode CNC Controller -Use Arduino for Projects

  49. Pingback: Axis Motion: Design Choices II | CNC Design Blog

    • Hi Titus,

      The shield is a little more complex with it being able to control 3-4 stepper motors. Code wise its not that hard to control and will use similar code to the library you mentioned.(All that the codes does is sent an enable pin, direction pin and then toggles a step pin to create movement.)

      Sounds interesting 🙂 let me know if you need help.

  50. I am not a technical guy. How do I connect this shield to the computer and how do I connect the steppers to the shield.
    I would very much appreciate a tutorial with the necessary info to assemble the whole thing.

    • Hi Ed. I would start by paying around with Arduino’s. Once you understand how they connect to your computer it would make much more sense.(They just plug into your computer like a printer via USB cable). My little shield/board plugs into the Arduino Micro Controller. On top of my shield/board are headers to plug in stepper more to drivers made by a company called Pololu. The Stepper motors them self plug into my shield/board. From there all you have to do is open up a serial terminal app like putty or even better with GRBL you can use Universal G-Code sender that will allow you to easily connect to the CNC board. Hope this helps. There are also plenty of tutorials online, just google GRBL or shapeoko .

  51. i am interested in using this and i am willing to beta test it. my big easy drivers keep burning out and im sick of wasting money so you just might have an answer. at 2 amps this should easily run my steppers. correct me if im wrong but i believe it states that your board runs at a max of 35v? thats plenty for me but i was wondering if it can go higher? (my psu is a 50v 1.5A) if not it is fine. i will just step it down a bit. this is a cnc im using for a school robotics team so a quick reply is requested.

    • Hi Joshua, the rated voltage on the board is for the supported Pololu A4988 drivers that can take a max voltage of 35v. ITs likely that you are supplying your Easydriver to much voltage as they are rated up to 30v.

  52. Hey!

    I’m trying to install a micro servo on a CNC shield V 3.03, But I do have a problem, I don’t know where to put the 3 pin connector on the board? I’ve already watched some youtube vids to get to know some of the basics, however our main problem is where to connect the signal wire. Could you help me out?

    Thanks in advance!

    • GRBL is the software I use with the shield and it works with Stepper motors instead of servo’s. I would suggest this shield if you want to drive servo’s ->

  53. Pingback: [News & CNC] Elle est enfin là (et ça promet du lourd) | Skyduino - Le DIY à la française

  54. Pingback: GRBL compatible Arduino CNC shield | Hackaday

  55. Pingback: GRBL firmware & stepper driver esterni » Indie Gear Lab

  56. Pingback: CNC Projects | Pearltrees

  57. hello, I have this shield with drv8825. the question is: 12v 15AH computer power supply, works well one nema17 if I turn 2 or 3 nema17 they do not work. If i used power supply 24v 15AH 360W, on 3 nema17 they works, but the drivers get very hot and high temperature. how can I have the drv8825 working with 3 nema17?

    • The drivers are constant current drivers and will get warm. Heat sinks and a fan will increase current they can run at be fore they cut out(They have thermal cut-off). Check the 12V power supply, might be faulty.

  58. Pingback: Stepper does not turn | CL-UAT

  59. Hello, I just bought one of these shields and 4 drivers. I’m trying to make them work but I wont use g code. I want to make my own code cause I wont use it for a cnc. I put only one of the drivers and try to simply put the enable pin (pin 8) on LOW, the X direction pin (pin 5) at any stage and give a pulse on X step pin (pin 2) but the motor didn’t do anything. I have the new version of the DRV8834. Could you give me some advice?

    Thanks in advance!

    • Hi Ernesto, what you are doing sounds right. Pin 8 and direction pin low. Then Pulse the stepper pins on and off say every second to start at. Be sure to keep the voltage down as the DRV8834 drivers are low voltage.

      • I would like to see someone try this shield on a Intel Edison with a Arduino interface. Seems like you could get much better performance.

      • Hi Bertus,
        I am in the same seat as Ernesto. Not for a CNC, using an Arduino Uno and I want to use the 4 DRV8825 drivers independently for a robot. I love the small size of your board.
        I have X,Y,Z working correctly but can’t see how to use the A axis other than as a duplicate of the other 3.
        Can you please tell us how to adress that A driver ? what pins can be used on the Uno and how ? FWIW, I don’t need the pins for coolant, spindle and limits switches.
        Thanks for your help

        • Answering my own question :
          Just install the 2 jumpers labelled D12 and D13 above the Motor power connector. That will connect the Digital pin 12 and Digital pin 13 (normally used for the spindle) to the Step/Dir pins of the A driver. Driving the A motor is then just like the other motors. And now, on to the software … 😎

  60. Hello,
    How would I install GRBL 0.9g in place of 08c?
    I want to try the newer code and test the claims on Github.
    Have you tried it?

  61. Hi. Are the DRV8825 drivers overheating maybe? I know they are very sensitive to heat and the thermal cut-off works to well some times. Might be worth dailing them back a bit if they are very warm.

  62. Awesome design.

    Where can one buy this Arduino shield for the CNC and what would the shipping costs be?

  63. Hi,

    What end stops would you recomend?
    Could i use 6 outer limit switches (N/C) seriesed up with the E-stop
    as a fail safe, and then use 3 inner endstops for homing?

    Thanks for the great write up, very helpful.

    • Hi the end stops need to be in parallel. The also need to be N/O for the standard software setup. Keep an eye on noise. There might be an issue if the wires are to long and to many. Caps could get rid of the spikes.

  64. Greetings. I received your CNC shield 3.03 kit, assembled it, and tested it with a single Polou driver (A4988) using an Arduino mega and a NEMA 17 stepper on the x-axis. I used my own Arduino program to do the testing and everything works that I’ve tested so far.

    I installed GRBL per the instruction on your site, but sending x-axis commands does nothing. I’ve beat myself silly running around various links on your site but can’t find anything useful to get GRBL setup to use your shield and the Polou driver. I think I need something like “CNC Shield For Dummies”

    Can you provided more detailed information on how to exactly get your shield to work with GRBL?

  65. Hi Bertus, I want to build a hot wire foamcutter and use the arduino cnc shield for it to control the 2 x-axis and 2 y-axis. Its perfect that the clone function is build in, but it is just for 1 axis.

    Is it possible to remove/disconnect the connection of the z-axis(step and dir)to/from the arduino and connect the y-axis step and dir also on z-axis. So that the signals for the y-axis will be send to the stepper driver of the y and z-axis?
    Regards Paul

    • Hi Paul. I can think of two ways. First would be to do it via software. Have you tried send commands like “G0Y100Z100”. That should clone the Y movements to the Z aXis. (Python can be used to transform your G code scripts to do this.) If you want to do it with hardware it will be more drastic and you will have to disconnect pins D4, D7 and add jumpers connecting Y.Step>>Z.Step and Y-Dir>>Z.Dir .This will clone Y to Z and then you can clone X to the 4th socket.

      • Bertus, thx for the reply. I go for drastic way, so that its idiotproof and I can not make mistakes. Maybe gbrl will get a function to slave an axis in the future.
        Regards Paul

  66. Pingback: HexScan – part 01 | Spielplatz

  67. hi !! i ‘m wont to built my cnc cutting machine and i’m confusing about choosing the right stepper driver to run (2 motors for axes x) ,1 for axe y and 1 for z !! can you help me to get it !!

  68. I’m trying to remove false limit switch triggering. There are some different RC low pass circuits, but i’m not sure which one to use, also, how to correct use with your shield.
    I suppose that I have to install the RC filter between the arduino and the CNC shield. Is that right?
    Please, you can draw the correct connection, and the values of resistors and capacitor, to make this right with this CNC shield?

    Also, it’s possible to make this connection in Normal Closed? If yes, how?

  69. I got the protoneer board to use on my shapeoko 2 and now I’m looking to switch to grbl 0.9g as well.
    the main change if I read well is the arduino port A5 now used for probing (automatic zeroing) and the switch between A11 and A12 (z limits and spindle/PWM).
    Is arduino A5 routed on the protoneer board ? Can we use the SCL pin on the protoneer board to connect the probe (and the metalic plate to the ground) ?
    If A11 and A12 are switched, should we wire Z-limit and z-homing switch in parallel on SpnEn ? Should the new spindle enable/pwm be connected on z-axis limit ?

    • Hi Christophe, Thanks for the question. The A5 is routed to the SCL pin as you mentioned and can be used for the probing function. With regards to the the D11 and D12 pins, by default GRBl compiles to the tradition pin setup as per my board. But if you want to use PWM you need to compile GRBL for that option. Our next version of the board will take these changes in consideration and should be available in a week or so.

      • To summarize (for beginners (like me)
        SCL (A5) was nothing, it’s now probing
        Z+ and Z- (A11) was z-limit it’s now spindle-PWM
        SpnEn (A12) was spindle-enable it’s now z-limit.

        On my side I have not tried yet the probing functionnality, nor have I and pwn-able spindle 🙁
        I connected my z limit switch on the SpnEn pins. It seems to work fine.

        I would advise to update/add a paragraph on your article so anybody can use latest grbl with the board by using this wiring trick.

      • just an additionnal comment on my previous comment : even though I have not recompiled GRBL, I had to connect my z-limit switch on SpnEn.

  70. I’m preparing to setup a Shapeoko 2 CNC router/mill with your v.3 board. Will it function with an Arduino Mega board or with the UNO only?

  71. Hi, I do have a question just to be sure. I have a cheap CO2 laser using a controllerboard called Moshi. That Moshi board only communicates with software I do not want to use 😉

    On the internet I find a lot of ‘hacks’ that replace the Moshi board by Arduino with Ramps. I do have a few Ramps on stock and a few CNC v3 shields.

    In all of those ‘hack’ instructions they remove the poly fuses and diodes to make it possible to use 24 volts. I do not like removing things like fuses 😉

    As I understand it the CNC shields v3 I have got support 24 volts and will not regulate it down to another voltage. Is this assumption right?

    Do you (perhaps) know of someone using the CNC shield to control a CO2 laser?

  72. Hello,
    I have one of this great CNC Shield V 3.00, already assembled.
    Tested with 24v motors (at 12v for now) and all seems to work fine.
    Of course I will use the shield it with 12/24v motors, but for now I already have a “little CNC” made with old CD Drive motors that works at 5v (now working with a diy L293D H-bridge shield on a perfboard 🙂 ). Can I try to use this CNC with these little motors? If yes is the answer, I have to feed the shield with 5 or 12v?

    Thanks in advance for your help and sorry for the dumb question 🙂
    Best regards

    • Hi Piero, Pololu Drivers need 8v or more to function. I would go for the 12V but keep the current as low as possible. You can also look at some of Pololu’s low current drivers… Just make sure that the steppers are bipolar steppers(4wire) that will work with the Stepper Drivers.

      • Bertus,
        thanks for the quick response 🙂
        the end use of the shield, when I will complete the structure of my CNC, will be with three Mitsumi M42SP-7 ( stepper motors . Today I tried the steppers with the shield and they work well. Is the shield good for this kind of motors?

        My previous question was only for the curiosity to try the shield on the mini cnc (I already have it) using the stepper motors from cd drive (5V, 0.24A like these: The steppers are bipolar and work with both H-bridges and Easydrivers.

        Do you think that if I supply 8v to shield I can burn the little motors? Is not a really important try, it’s just to better try GRBL (L293D H bridge that I use now on mini cnc are not the best thing for GRBL.. :-))
        Thanks again also for your time,

        • The stepper should be fine as long as you don’t exceed the rated current. First sign that things are not going well will be steppers that goes very warm. With the small steppers I would go with low current Pololu drivers because the normal A4988 drivers will be hard to adjust for 0.24A. Voltage is not really that big a deal cause the Pololu drivers are Chopper drivers that will adjust the voltage till the adjusted current has been supplied. GRBL does not support H-Bridge… 🙂

          • Thanks Bertus,
            ok, thanks for the advice, I will not try the shield with my small steppers, and I will wait to have my CNC structure ready.
            GRBL does not support H-Bridge, I know… there a workout here:

            but does not accept all GRBL commands, this is why I bought your CNC shield 🙂

            thanks again and best regards

  73. Pingback: Arduino CNC shield version 3.0 with GRBL v0.9 - DIY Projects

  74. I used your board to control a generic 3-axis Chinese CNC mill. I bought mine on eBay for $650 but it had a parallel port controller. They sell USB controlled models but they are about $200 more expensive.

    The only issue I had was the DRV8825s I got were set to max current. They overheated despite being well ventilated. Funny thing was it almost always happened at the same part of the G-code file and so I was wondering if it was a grbl bug. I blew a couple of 8825s trying to get a reference voltage. I found it easier to set the step idle delay (grbl $1) to 255 and measure the motor current directly when adjusting the drivers.

    Overall I was very happy with the board. There’s a pic at the link bellow

    • Hi Michael, Nice Build!!! I usually turn the steppers down to the lowest current and then adjust them little by little till the steppers don’t jitter/get stuck anymore. This works well when the steppers are matched for the drivers. I usually run 1.8-2A steppers. I also use micro stepping as it is usually smoother when running but can be slow depending on the CNC process used.

  75. Pingback: SHAPEOKO 2: ELECTRONICS AND EXTRAS | maxdesign1990

  76. Pingback: PVC CNC Machine Build Results In A Great Learning Experience | Hackaday

  77. Pingback: PVC CNC Machine Build Results In A Great Learning Experience | Ad Pub

  78. Pingback: PVC CNC Machine Build Results In A Great Learning Experience | Hack The Planet

  79. Pingback: PVC CNC Machine Build Results In A Great Learning Experience - zeax blog (

  80. I would like to drive some big step motors.
    Is there a way to increase the modules power handling capabilities e.g. by adding external FET’s?

      • Bertus, I am new to this thread and am currently building a 6’x10′ CNC plasma table and plan on using the larger NEMA 34 steppers with the DM860A Driver (and forgive some of my terminology if I misspeak here and there). Anyhow my exact questions were particular to using the above mentioned breakout pins in particular with the DMA860A. When using the breakout pins for multiple external drivers (all using separate power supplies) is it necessary to have the DRV8825’s all installed on the board still or are they to be removed? ( as i am under the impression that they cannot be powered without a load connected to each one.) Also would you possibly have any guidance on any specifics to attaching external drivers to said breakouts? Thank you in advance, again I hope I am not to vague or incorrect in my terminology. ( still relatively new to CNC with arduino)


        • When using the break-out pins on the left under the reset pin, the Pololu Stepper drivers are not needed as the Arduino micro controller is the unit that generates the signals. The breakout pins are consists of the step , direction and enable pins for all axes. To connect it to a DMA860A it will need to connect to the GND, selected axis’s step , direction pin and enable pin.(Enable pin and GND pin is shared with all stepper drivers.)

        • Actually Levi, you don’t need an Arduino or shield. What you need is a simple breakout board. Using a Arduino just needlessly complicates everything by requiring more programming and hardware.

          I’m sure Protoneer has one that will work.

  81. Hi, greetings for your work. i am waiting my shield v3 to arrive and im wondering if i could use it with grbl 0.9i . Thanks in advance

  82. Pingback: TinyG, TinyG V2, Arduinos | Late Thirties, Tools, Electronics, Life

  83. I’ve been debating on getting one of these and using it with my UDOO board. one thing i’m wondering is if the return logic to the Arduino (for the limit switches, ect) is 3.3v or 5v logic?

    The UDOO’s Arduino side only supports 3.3v return logic. So i need to know if i have to use a couple resistors to pull the voltage down on those input pins.

    • The limit switches are powered by the Arduino processor, so if your UDOO is providing it will run at that level. The Stepper drivers are also compatible with 3.3V logic.

  84. Hi , i want to ask if understand this right .Under the A4988 the shield has 6 female headers.The three of them are pinouts of the modules for microstepping the other three are ground?…So with a micro jumper you ground the pin and make them low ?
    Also i saw the shielduner reset button has pinouts like X.STEP /DIR …etc this are pinouts that actully goes to the arduino pins?But the shield have the same pinouts above the power terminal ?..Both of them to the same work?

    • The pins under the stepper driver sets the micro-stepping and takes up to 3 jumpers. Yes those pins go to Arduino pins. The pins above the power sets the A-AXIS to clone one of the other three axes.

  85. I am sorry but this does not really help. It is obvious that GRBL is used and it is obvious that you would suggest your own board. But the question is how, where or what would be the best solution to modify the firmware to control a servo and therefore which pins would suit best.

  86. Hi !
    I had bought a V3.00 from you 2 years ago … it’s working great, I like so much to have 4 stepper motors (2X, 1Y, 1Z) for my CNC.
    Having upgraded to GRBL0.9 recently I managed to connect all my switches and stuff to the board but I bought the new card straight away considering it will be much easier and it’s cheap (major decision factor).
    Thanks and keep up the good work !
    Christophe (France)

  87. I came to my a cnc shield but i noticed one thing and i think its weird .The thing is that i have installed two drivers in x and y axis socket with microstepping and i provide 12Volts on 2Amps controlled by GRBL when the y axis motor is moving to any direction the x axis motor makes a high frequency sound and im sure its gets power but doesn’t move but if i do the opposite x moves y dont the doen’t make any noise it this normal ? I think it might the a fault driver .

    • That sounds normal. As soon as the enable pin activates all the stepper drivers activate. The stepper drivers are called chopper drivers cause they raise the voltage till the current is up the set value. This chopping produces a high pitch noise and depending on the current setting will vary in volume. It might be that the one driver is set higher than the other causing the difference in volume.

  88. I am having trouble with my limit switches, using NO type switches and have one set of leads going to each pin (NO/COM) but it’s giving me a false trip or just locking up GRBL entirely. I read a bunch of stuff about the pins being switched so I’ll try that, and also something about wiring the hard stop switches (one on each side) in parallel.

    If In parallel, which pins do I connect to (+ or -)

    • The CNC shield has the end-stops already in parallel(2 per axis). Make sure you use shielded cables and that the machine is properly grounded.

  89. What would be the recommended board to pick the Arduino CNC Shield V3.10 or Raspberry Pi CNC Board Because I dont know what is the best option?

  90. for what i understand in cnc Shield v3 it needs to be swaped the pins for grbl 9 is this possible to do on the code of grbl or it needs to do changes on circuit to swap the pins 12 and 13?
    also can u tell me what is the coolant pin for, and also if is possible to use other drivers like tb6600 on cnc shield v3?

    • No…. For the PWM Spindle to work they had to change the pin because not all of them support PWM. Coolant pin is for misters and liquid pumps to keep the cutting surfaces cool. The breakout pins on the Left of the shield can be connected to external drivers like the TB6600.

  91. What’s different electrically with ver. 3.10 and ver.3? The “Spindle Enable” still connects to pin D11, right?

  92. I’ve made a small 3-axis CNC machine for engraving with a small spindle and 300mW laser diode. I want to engrave raster images and added a Laser Diode Driver with TTL modulation. I am not sure how to connect the TTL, -ve goes to ground but which pin on either the Arduino CNC shield or Arduino UNO will provide the modulation for TTL +ve?

    • Are you talking about the PWM? The V3.10 and up boards supports the PWM spindle control out of the box and uses the GRBL 0.9 firmware. All you have to do is connect ground and the spindle pin.(Ensure the Laser Diode is the right way around.) To activate the PWM function set the “S” command to 0-1000. Don’t forget to also use the Spindle commands to switch it on – > M3-5.

    • Hi Ivan,
      Can I ask which laser diode solution have you found ? (I’m hoping to modify my shapeoko 2 to have laser … but I’m looking for a cheap and comprehensive laser solution)

  93. Question about the CNC Shield and compatibility with Due. The folks at Synthetos are porting TinyG to run on the Arduino Due, and it is compatible with the old 3 axis grblShield.

    Would it be possible to run the CNC Shield on Due with the TinyG firmware? I’m thinking it should work, since you are really just extending the Arduino pins to the shield and incorporating the driver circuitry.

  94. Greetings,

    You have done a nice job with this board and the instructions. In looking at the schematic I have a concern when using the DRV8825 from Pololu.
    The 8825 has a pin labeled nFAULT. This is an open drain output from the 8825. Your board has the pin tied to +5V. If the 8825 signals a fault will this not cause a short of the 5V power and potentially destroy the chip?

    Ron Wensley

  95. I’m looking at combining this, four DRV8834 drivers, and an Arduino Mega2560. With the UNO and Mega2560 both being shield-compatible, are there plans to support the Mega2560?

  96. HI i noticed that if i move only y axis the heatshinks on x,z get hot and on the y doesnt why this is happing?//It’s normal?

    • That is normal. GRBL uses one enable pin to enable all the stepper drivers. A stepper driver will keep an axis in position when standing still. With Micro stepping this is more obvious because both coils of the stepper needs to energized to stay in a position.(More heat when not moving)

    • Hi. Best to ask the supplier of the shield(We stopped making the V3.00 and now only have the new GRBL 0.9 compatible version). Its likely a bad soldering joint that needs to be fixed.

  97. Hi… thanks for your post. One question: looking for reliable retailer here in Slovenia or at least near to us, but if there is anyone (perhaps) you with local store to see pysicall products. Regars and thanks

  98. Pingback: Arduino shields and stepper drivers – Jason Conway

  99. I noticed that Elecrow is selling a 3.03 and a 3.50 version of the Shield. Could you explain what is the difference between the boards beyond grbl.8 and grbl.9 support?

    • Version 3.10 and up is GRBL 0.9 compatible. V3.5 has bigger pins at the back making easier to solder. The next version will have noise filters and the probe pin will be labelled better.

  100. Pingback: Controladoras GRBL | SuperCNC

  101. Hi,

    I have a grbl controller 3.0 and universal gcode sender.
    In the moment I use the Universal gcode sender, but I think that the grbl controller is better.
    It´s possible control the axis with keyboard in Grbl Controller?
    Because its more easy control the axis with keyboard.

      • hi taks for te feedback, the driver idd works on 5v. but in al the example wiring of the shield the connect het step/dir pins an de ground, my driver needs step/dir and +5v. is this reversed polarity ? ore am i wrong, i don’t want to burn the drivers so haven’t tested it jet

        • Best to ask the Stepper Driver supplier then. I would also get the drivers working on it’s own before connecting to any other board. (Separation of concerns)

  102. Hi Bertus,
    I have this cnc shield with grbl v0.9, nema 23 ,36v power supply,drv8825;there is one motor that rotate in only one direction while the others work good.
    I think the software is fine , can it be a problem of the shield?have you ever had this problem?

    • Hi there, that sound like a direction pin that is not making contact. Check the bottom of the Pololu stepper driver to locate the Direction pin. Then use a multi-meter to check of the pin changes state when you send it direction commands.

      • Check your leads. try swapping them around to see if the problem moves to another motor

  103. Pingback: Photon Printer——微型激光雕刻机 | 3D打印模型分享与经营交流

  104. Is there an online forum for this board? I am having some issues and am wondering where the best place to ask questions is.

    I have everything hooked up but so far no motor motion. The motor is good and I even have 5V at the enable pin on the arduino and at the drivers. Nothing.

    I have tried switching Arduinos with no luck. I have tried all three axis. I have the jumper configured for micro stepping and the jumper set for the default end stop behavior. I am running 12V power and the drivers are set for 1A.

    GRBL has been sent to my arduino and the universal g code sender seems to see and connect to it.


  105. I figured it out. The default baud rate on was set at 9600 by my Arduino and my G code sender. However, in the config.h file for it is defaulted to 115200. It can be a little confusing because the GRBL docs I found all said 9600.

    In any event, easy fix.

  106. How do I connect a larger motor which uses a controller? For example a MA860H.

  107. Regarding EndStops: I am guessing that that ‘X+’ and ‘X-‘ forms pairs across horisontally, so that X- (left and right pin) is one switch at one end of X-axis, and X+ (left and right pin) is another switch at the other end of X-axis.
    Am I right? – Or are the pairs done vertically?

    Morten Stenbaek

  108. Pingback: Fabrication – enrique gallar

  109. Pingback: CNC | Pearltrees

  110. Pingback: Arduino Home Automation X10 |

  111. Pingback: Arduino Home Automation X10 |

  112. Pingback: Budowa zdalnego sterownika do obrabiarek CNC | Kolo Naukowe Obrabiarek CNC SGGW

  113. Pingback: Digital fabrication – portfolio

  114. Pingback: Piloter une CNC avec Arduino et GRBL | Letmeknow

  115. Pingback: boldenone cycle

  116. Pingback: Zenbot Resurrection – Part 1 – My Maker Addiction

  117. Pingback: legal clomid

  118. Pingback: CNC Shield Setup and Software – the amateur maker

  119. Pingback: Máquinas CNC | Aprendiendo Arduino

  120. Pingback: buy ansomone hgh

  121. Pingback: CNC GRBL

  122. Pingback: CNC | Pearltrees

  123. Pingback: My CNC table build - Pirate4x4.Com : 4x4 and Off-Road Forum

  124. Pingback: Arduino | Pearltrees

  125. Pingback: Cnc | Pearltrees

  126. Pingback: Machine – Project Ernest

  127. Pingback: How To Spherebot Print With An Arduino Uno R3 | Best Hair Spa Guide

  128. Pingback: How To Spherebot Print With An Arduino Uno Datasheet | Best Hair Spa Guide

  129. Pingback: DIY CNC Router - Post 5: Electronics and Software - Floating in the Clouds

  130. Pingback: Saber Más… | Aprendiendo Arduino