Levente's Personal Webpage

CNC stuff

Published on

I run a 3 axis CNC router. I opted for the cheap Arduino based controller, but it was a mistake.

I had lots of trouble with it.

  • The USB/UART interface was a nightmare. It was stopping after a certain amount of time, and reseted itself. I’ve read that similar issue was found with the other Arduino implementation.
  • Direct connection from the MCU to the drivers. The MCU shall supply the current for the opto-isolators at the stepper driver.
  • Direct connection from the inputs. No low pass filter, and EMC filters.
  • Not enough GND connections.

I designed a CNC control board. The original idea was to use a 32bit controller and load the GRBL-HAL firmware, but, as always, I want to be fast. So I now stick for the AVR based GRPBL.

GRBL controller


  • GRPBL compatible
  • Wide input voltage range (15-40V)
  • Power input filtered
  • Reverse polarity protection
  • Low pass filters on all inputs
  • On board high capacity (16A) relays for coolant and spindle
  • On board high power 12V 3A voltage regulator for external devices, such as cooling fan (which I use)
  • User selectable interfaces: USB (FTDI232) or Serial (RS232)
  • TVS diodes on all external input lines (limit switches, probe, USB)
  • Power LED
  • Designed using KiCad

Unlike the Arduino, this device doesn’t have a bootloader, so you have to use a ICSP to program the AVR.

It is designed for the TB6600 driver. It has common anode connection for the driver outputs using a transistor array. With this method the CPU is not driving the driver inputs, only the transistors.

Schematics is available here.

The box

I designed the box using FreeCAD. Here are some screen shoots of the model.

GRBL controller

Fan and power connection/switch:

GRBL controller

I’ve successfully tested my setup, and it seems working. The box is made out of leftover laminated floor pieces. The front and the rear panels was machined by the CNC itself.

GRBL controller

GRBL controller

It currently uses the serial port, but the USB interface is also available, and tested.

GRBL controller

The machine

The machine is a cheap 6040 from eBay.

GRBL controller

On the top-left corner, there is the power supply for the spindle. The problem is that it doesn’t handle inrush current of the motor, so I can’t use the relay of the controller to switch on the spindle automatically.

If you have any comment or suggestion, please share.