A small arduino CNC controller
Switch branches/tags
Nothing to show
Clone or download
D. Herrendoerfer
Latest commit 02a57bc Jan 10, 2018


Copyright (C) 2014,2015,2016,2017 D.Herrendoerfer

uCNC_controller: A small Arduino CNC

uCNC_controller is a small CNC G-Code interpreting controller for educational or home projects.
It supports small set of commands and can be configured to behave in several different ways.
Included in the Extras directory are sample files to replicate a controller circuit board and
3D files to build a small 3 axis CNC plotter.


It controls up to three stepper motors via the Arduino stepper library, as well as one servo, and
two general purpose outputs. It is programmed for simplicity and readability more than for being
a feature-complete g-code interpreter. It is intended to be a stepping stone for people intending
to learn about machine control.

The Extras:

Within the Extras directory there are tools, layout and schematic files, control firmwares to
extend the basic use example of a simple plotter. Feel free to delve.

Please read the included uCNC_controller/README.txt file for more information.
Please read the included LICENSE files and make sure you understand them before redistributing anything from this repo.

More Information

The original source code of uCNC_controller was developed for this project in 2013
Direct ink to PCB CNC Plotter

Also, feel free to check out my YouTube Channel all the source code and project files from the projects
featured on the channel are hosted here.

Ready to order PCBs for uCNC_Controller

The circuit boards for the uCNC projects are available for viewing at the EasyEDA online PCB design web site and can be ordered directly through JCLPCB from that site.

The direct link to my project space on EasyEDA is https://easyeda.com/dherrendoerfer


  • The beta directory contains pre-release versions of the controller firmware.
  • To build the uCNC_controller firmware the Arduino stepper library is required.
  • The firmware requires a 5V Arduino board with at least 13 digital and 6 Analog I/O ports.
  • Recommended are 32k of flash memory.
  • Among the supported boards are: Arduino Uno, Arduino Nano, Arduino Mega 2560, and many more.
  • This is work-in-progress. Check back frequently.