

This was seen in practice whilst developing this project, with false triggering causing the Grbl controller to go in to an unintended alarm state, especially when the spindle motor was powered on. The CNC Shield board used here (a version 3.00 board as these are the most commonly available) does a good job of meeting the requirements of driving the stepper motors, but has some short-comings when end stops (limit switches) are used due to false triggering. This board can run any version of the Grbl firmware and also has the advantage of having the CNC Shield expansion board, designed to control three stepper motors for the X, Y and Z axes of a CNC machine using Pololu style stepper motor driver boards, giving a choice of stepper motor driver ICs including the A4988 (used here) or the DRV8825.

The project is based around the commonly available Arduino Uno, which is one of the core boards that Grbl was originally written for. For that reason, it was decided to document the project development and publish it here as a fully tested and working solution. Whilst carrying out research on the web prior to designing this project, it was found that many other people have tried to put together a similar system and have run into similar problems as this project did in its development.

For the CNC Shield to be able to meet these requirements successfully, it needs some small modifications and also some additional external circuitry, in particular a pulse width modulation (PWM) capable DC motor driver. A further requirement of this project was that it should also be able to control a variable speed spindle motor and support limit (stop) switches on all three axes. A solution based around an Arduino with the Arduino bootloader installed would fulfil this need.Īn Arduino Uno can easily be used to control the three NEMA 17 stepper motors that control the X, Y and Z axes of the CNC 1610 if it is used in conjunction with a CNC Shield, readily available on Amazon, eBay or AliExpress. Although ways can be found around this by using an external AVR in-system programmer, this would not satisfy the requirement to be able to do this quickly and easily. This was found to be difficult to do with the Woodpecker based circuit board supplied with the CNC 1610 machine as the firmware cannot be flashed through the USB interface. A particular requirement was the ability to quickly upload different versions of the Grbl firmware, up to and including the latest 1.1h version. This project was conceived as a test environment for Grbl based firmware and desktop computer based software that interacts with CNC machines.
