GRBL Compatible Arduino CNC Shield

By the time you get to the point in a home CNC build where you’re adding control electronics you may be ready for the simplest means to an end possible. In that case, grab your Arduino and heat up that etching solution to make your own GRBL compatible shield.

This familiar footprint manages to contain everything you need for a three-axis machine. The purple boards slotted into the pairs of SIL headers are Pololu Stepper motor drivers. Going this route makes replacing a burnt out chip as easy as plugging in a new module. The terminal block in the center feeds the higher voltage rail necessary for driving the motors. The DIL header on the right breaks out all of the connections to the limiting switches (two for each axis), spindle and coolant control, as well as three buttons for pause, resume, and abort. There’s even a header for SPI making it easier to add  custom hardware if necessary.

This is a dual-layer board which may not be ideal for your own fabrication process. [Bert Kruger] posted his Gerber files for download if you want to put in a small run with OSH Park or a similar service.


33 thoughts on “GRBL Compatible Arduino CNC Shield

  1. Who follows Grbl, do you guys know what version it’s on currently? I have a tiny CNC rig I’ve been planning to put it on but did not like the serial comms in an early version (compared to implementation). Anyone here knows both to comment on differences between most recent versions?

    P.S. At some point it looks like stacking shields ontop of an Arduino becomes rather counter-productive. I would think that with the development that went into making this shield it might have been easier to just laid it all out on single PCB, including the Atmega chip. It takes a while to get a CNC rig setup and working and it’s virtually a guarantee that you would not want to pull Arduino from it once it gets going, so why bother with a development board? A flat(ter) PCB will make for easier mounting, too…

    1. Perhaps that’s the evil genius behind with the arduino being designed the way it was. More arduino basic boards sold, the more money for the non-profit has to continue it’s work. The licensing of this project allows you and anyone to take from it what you need to fork to the design you feel is more practical. I agree a single board is more generally practical. But that depends on the patience and skill of the designer

      1. It would seem relatively straight forward to integrate an Arduino Pro Mini or similar with a Pololu DRV8825 board, and integrate that assembly with the stepper it controls and a PSU to power it and you have a fully self-contained super-servo. It can have its own connections to its own limit switches and/or position feedback and connected back to the central controller with a four-wire I2C bus.

      1. For starters because they aren’t making the stepper drivers they are using Pololu driver boards. Probably because they are proven, fairly widely used and easier than doing all the work for the stepper drivers in house.

        Secondly because in the unlikely even that anything burns out it is probably going to be one or two but not all of your stepper drivers. So would you rather have the option of replacing just the bad driver(s) or having to potentially junk good drivers because they were integrated into the board?

        If it were me I’d be going modular too, especially when modular saves me time and money. Hope for the best, plan for the worst :)

        1. Plus as Pololu introduces more drivers you get the option to upgrade. That is why I like the DRV8825 pololu drivers cause it gives you the option of increasing the micro steppering to 1/32. More options basically… :)

      2. Good protection is non-trivial. The chips used on the driver modules claim both overcurrent and overtemperature protection. Though I haven’t used this particular chip, I’ve seen my share of others with similar features burn up when a fault occurs, even though they’re supposedly protected.

        In the end, it’s often nicer to go with a cheaper, replaceable module; at least until you get the bugs worked out.

    1. Chip? Which chip? Atmega is not interfacing with the steppers directly, the stepper drivers are on their own little (replaceable) boards. So, what prevents you from using an IC socket in case anything that can burn out really does? Anyway, if this was MCU you were concerned about, I don’t see how it’s any more protected if it’s on an Arduino board, given that you still need all the exact same connections.

  2. It would be nice if someone made something like this for 3D printing. Something that’s simple to set up, flexible, and could work with just about any setup. That way you could get started much easier, just mashing a few motors and a hot end together into a (possibly sort-of decent) homemade printer. The key would be making it simple like arduino, and flexible enough to make use of any configuration of combination (or lack there of) of hardware. Imagine being able to just get up and make a printer in a weekend whenever you feel like it, just like arduino projects!

    1. M,many 3D printer control boards run like that – RAMPS and RAMBo are the two I’m most familiar with. RAMPS is almost identical to the board above, except it also has MOSFET outputs for the HBP and nozzle heaters, a fan output, and thermistor inputs.

      RAMBo does what polytechnick mentioned above – takes 5 stepper driver chips (just the ICs, not full Pololu/compatible breakout boards), puts them on a single (4-layer) board with four thermistor input circuits, 6 MOSFETs (two for nozzle heaters, three for fans and one for the HBP, but that’s just how they’re labeled – use them however you like), fuses for the individual subsections (one for the motors and onboard 5V regulator, one for the fan and nozzle heater MOSFETs, one for the HBP MOSFET), and an Atmega2560 and Atmega32u2. Plug your motors, heaters, fans and thermistors in; fork/download Marlin; load Marlin in the Arduino IDE; upload; troubleshoot inevitable hardware, software and firmware inconsistencies and issues; start printing.

      johnnyr has done a great job on RAMBo, but if you want to look at some of what else that’s out there, has a list – I’ve played with the Sanguinololu and Azteeg X3 controls as well. I didn’t find either objectionable, just chose a different route.

    2. Making it simple and extendable is what I am aiming for. By using a similar setup to my More-Core Shield ( I can add specialized shields that take commands from GRBL and sub-manage tasks.

      #Things like a dedicated PID like heater controller that focuses just on the heating for a 3d printer. It could be made very accurate and with a manual override while the job is running so you can find the perfect temperature for each color filament or material

      # Probing systems to make setting up your machine super simple.

      # Closed loop Spindle speed controller that will keep a spindle at a set speed even while under load.

      ..and maybe some RGB LED’s to give you a visual state of the machine. (You need to have fun and be creative with these things… :)

  3. The buttons for resume and abort are a nice touch and mysteriously missing from some of the more commercial offerings.

    A 4th motor mount would have been nice for A-axis or 3D printer modification of CNCs…but I guess you can’t have everything in life and I should really just get off my lazy ass and design my own ;)

    1. That shield is a single PCB containing all the stepper driver ICs on it. If one the drivers dies you need to either buy/build another board or replace the IC yourself.

  4. Lets not forget the Sanguinololu.‎

    It is what I have been using for both my 3D printer (Prusa i1) and my eShapeoko. Single board with removable steppers.

    It is also the board used in the Cyclone-PCB-Factory that featured a few days ago.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.