Simple CNC cartesian X-Y plotting machine controller
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 2 commits ahead of lukeweston:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



The Freetronics CNCPlotter board is an Arduino-compatible embedded machine which incorporates two bipolar stepper motor drivers, suitable for CNC experiments and other robotics and mechatronics applications.

The board incorporates the following hardware features:

  • Atmel ATmega32U4 microcontroller, compatible with the Arduino Leonardo firmware, and USB connectivity to the PC.
  • 20x4 HD44780-compatible alphanumeric LCD display
  • Micro-SD card socket, for example usable for the execution of stored programs without connection to a PC.
  • Connector for a small (hobby RC aircraft style) servo motor
  • Two onboard DRV8811 bipolar stepper motor driver ICs
  • Inputs for three "limit" or "home" switches (or switches with any other kind of software-defined functionality!)
  • Connector for a cheap 4-wire resistive touchscreen, such as a Nintendo DS compatible touchscreen
  • Power supply input voltage range of 9-30V. (At least 1A current capacity is required to run the stepper motors.)
  • Output header for an optional third stepper motor driver IC, enabling three-axis CNC applications.

Assuming you're using an Arduino Leonardo bootloader, the following is the mapping of Arduino pins to hardware functions.

D0: UART RXD (not used, broken out to spare header) D1: UART TXD (not used, broken out to spare header) D2: LCD Strobe (Data loaded serially from AVR into 8-bit latch. Same as Pebble LCD hardware.) D3: LCD Data D4: LCD Clock D5: Z-axis direction (not used in most cases) D6: SD Card SPI chip select (active low). Standard SPI hardware (MOSI, MISO, SCK) used for SPI communications with SD card. D7: Z-axis limit switch input (not used in most cases) D8: Y-axis step signal D9: Y-axis direction signal D10: X-axis step signal D11: X-axis direction signal D12: Servo motor PWM position signal D13: Z-axis step signal (not used usually)

A0: Touchscreen 1 A1: Touchscreen 2 A2: Touchscreen 3 A3: Touchscreen 4 A4: Y-axis limit switch input A5: X-axis limit switch input