CNC Control Box Timeline

This page lists a timeline of the various CNC control boxes that I’ve built. To view videos in the playlist press the icon with the three horizontal lines and arrowhead at the top right corner of the thumbnail. A dropdown menu will appear listing individual titles from oldest to newest. The latest control box build is at the top of the page, going back in time further down.

  • 6th CNC Control Box (2021)

    This is the basic controller I build for the Moot Three CNC machine – I’ve linked to the section of the video overviewing the controller with some detailed photos below.

  • 5th CNC Control Box (2020)

    The controller I build for the Moot One CNC Machine.

  • Planning for the 5th (2020)

    I began working on a test rig using the newer firmware version – which now has conditional g-code enabled on the Duet platform. This was a good chance to learn how to programme different behaviours for the CNC machine. In this video use a simple code which changes the LED lights from yellow to warm white depending on the axis homing state. I later discovered that I can transfer the code to the daemon.g file in the system files where I added additional behaviours.

  • 4th CNC Control Box (2019)

    I was using reprap firmware version 2.05 and the later versions are now very different, but at the time this were the reasons I went with the controller, and some of the issues I raised.


    • Good quality controller with fuses and lots of terminals.
    • Drivers have advanced features including stall-guard and interpolation.
    • Good support and forum.
    • Easy to programme using System Directory and Macros.
    • Ability to set up dual axis homing – used to square machine.
    • Programmable input triggers
    • M291 can be used as a safety feature to add second click before executing macro.


    • Requires external PWM to analogue converter for frequency drive RPM controller.
    • No programmable spindle enable pin although reported in next firmware version.
    • Web interface does not cater to CNC use.
    • Macros or commands in the web interface load into series and perform one after the other – which doesn’t feel safe.
    • Resume button doesn’t behave as expected if running interpolated G-code.
  • CNC Workflow

    This workflow is for a GRBL based controller and software. I am using the Gradus M1 Pro and Candle for the interface between my computer and the controller board. And I use Vectric Aspire to create the code.

  • 3rd CNC Control Box (2019)

    Playlist of third control box.

    A driving factor from moving away from this controller was I used tiny fans on the enclosure which made too much noise.

    Also there was a permanency to how I soldered stuff together which made making changes very difficult. The buttons was a good example. In the latest build I use buttons which are modular and can be separated into a sprung head mounted onto a contact block mounting clip. I can then choose a normally open, normally closed or illuminated block to snap into place.

  • What I Wish I Knew… (2019)

  • Troubleshooting & Debugging

    • 00:29 – Measure between limits by enabling hard limits
    • 00:55 – Setting steps on drivers and in software (b-CNC)
    • 04:01 – Three of the four motor couplers do not hold when machine is in idle
    • 06:21 – Stepper motor delay when Estop pressed
    • 09:27 – Check how square X and Y axes are and adjust
    • 11:01 – Installing wasteboard
    • 14:29 – What I edited in GRBL V0.9 Config.h
    • 15:43 – Re-wiring Estop
  • 2nd CNC Control Box (2017)

    Playlist of second control box.

    This control box was a more sculptural objects – with backlight opal windows where different buttons and components were mounted. I used the Phoenix CNC controller which is a GRBL based system build by Hayri with the latest version available on Tindie. It is still my favourite controller although later I tried others. There were major changes to in this build compared to the previous one – including using a metal backing plate, and a contactor unit to act like a no-voltage release switch. I also used voltage dividers to stop the signal down from the proximity sensors but later replace that with opto-isolation board. Another big part of the build was using a variable frequency drive and learning to wire that up correctly both so the spindle rotates based on speed settings in the g-code, a toggle switch to go between the potentiometer on the VFD and the g-code speed settings, plus wiring an emergency stop button that breaks the steppers and stops the spindle at a quicker speed.

    Gallery: The photos below are some closeup of the enclosure during the build.

  • 1st CNC Control Box (2016)

    Playlist of first control box.

    I built this controller with a 3 axis control board called gshield that was mounted directly onto an Arduino Uno. It was supplied with the original x-carve, which I upgraded and tried to improve (impossible task). The original controller didn’t have an emergency stop and operated a small 24v spindle. I installed the dual channel relay module to operate a mains powered router spindle, and turn on a dust extractor. I also tried to install a laser but with a selector switch but this was a very cheap set up and I still had problems with how the device behaved. In reality this was a terrible controller as it had inherent safety problems. I also didn’t have a common grounding plate to help shield components from interference and the laser and steppers shared the same power supply – which can cause other problems.

    Gallery: The photos below are some closeup of the enclosure during the build – it’s entirely for reference and not to be used as a guide – unless the lesson is to not build a controller like this.