All work

Project 07 · Machine build · GRBL motion control

Custom CNC Machine

A CNC machine I designed and built from repurposed 3D-printer parts, with the motor-control side wired and configured by me: external stepper drivers on an Arduino CNC shield running GRBL. It cut acrylic for the projects that came after it.

Period
Aug — Dec 2025
Role
Independent engineering project
Tools
GRBLArduino CNC shieldStepper driversCAD3D printingAcrylic fabrication
Development
100+ hrs
Firmware
GRBL
Controller
Arduino
Cuts
Acrylic

§ 01

Why build it

I needed a machine that could cut acrylic for the projects I was working on, and I'd rather build the tool than buy it. So I designed and built the CNC machine myself, repurposing 3D-printer components instead of starting from a kit.

The part I cared most about was the control side. I wanted to wire and configure the motor control myself rather than plug in a prebuilt controller box, which meant designing the interface between the drivers, the Arduino, and the machine.

Fig. 07.01The machine in CAD: sheet-metal frame, linear rails, printed brackets, spindle, and the electronics enclosure

§ 02

Mechanical design

The motion hardware came out of 3D printers: stepper motors, timing belts, and linear guide rods. Around that I designed my own frame and brackets in CAD, 3D printed the parts that had to exist, and assembled the axes by hand.

The lead screw couples to its stepper through a flexible coupler, which absorbs the small misalignments you get when a frame is built by hand instead of machined square. A lever-arm microswitch at the end of the rail marks the axis limit.

Fig. 07.02One axis on the bench: parallel steel rails, lead screw, carriage plate, printed end blocks, and the travel-limit microswitch

§ 03

Electronics & motion control

Motion control runs on an Arduino CNC shield with GRBL — open-source firmware I configured and integrated, not something I wrote. The work was the interface around it: adapting external stepper drivers to talk to the shield, and laying out the power and wiring to run them.

The drivers, switching supply, and Arduino live in an open tray I built for them, so the whole control stack stays accessible when something needs reworking.

I also printed and wired a handheld pendant with abort and resume buttons, so the machine can be stopped and restarted from the bench instead of at the computer.

Fig. 07.03The control tray: three stepper drivers, the switching supply, and the Arduino under its CNC shield
Fig. 07.04The handheld pendant I printed and wired: abort and resume

§ 04

Result

After over 100 hours of development and testing it became a machine I actually use: it cut acrylic for the projects that came after it, including parts for the rocketry work on this site.

Video

First iteration

The bare gantry running a full axis stroke: the carriage travels the length of two polished steel rods, driven by a timing belt. No spindle and no workpiece yet — this is the motion working before the rest of the machine existed.

Next project · 08

Rocket Project v1