GRBL-Powered Belt-Driven Linear Actuator from Scratch
Commercial linear actuators in the 500mm+ travel range cost $400–$2,000. We're building one for under $80 that handles the same loads — using aluminum extrusion, GT2 belt, and a NEMA23 stepper with a $12 GRBL board for control.
This design is perfect for CNC gantry axes, automated doors, pick-and-place machines, or any project where you need controlled linear motion without paying industrial actuator prices.
Design Goals
- Travel: 600mm (adjustable by extrusion length)
- Speed: Up to 200mm/s
- Repeatability: ±0.1mm with closed-loop feedback
- Load capacity: 15kg horizontal, 5kg vertical
- Cost: Under $80 total
Parts List
Total: ~$78
Step 1: Mechanical Assembly
The beauty of V-slot extrusion is that it's both the rail AND the structure. No separate linear guides needed.
Motor Mount
The NEMA23 mounts to one end of the 2040 extrusion using a 3D-printed motor bracket (or you can cut one from 3mm aluminum plate on a bandsaw):
- Motor shaft faces inward along the extrusion
- GT2 pulley press-fit onto the 8mm shaft
- Four M5 bolts secure the bracket to the extrusion T-nuts
Idler End
At the opposite end, the toothed idler sits on a 5mm shoulder bolt with a tension adjustment slot. This lets you tension the belt properly — too loose and you get backlash, too tight and you wear the belt prematurely.
Belt Routing
Motor End Idler End
[M]──►[Pulley] [Idler]
│ │
└──── Belt (top run) ──────────┘
┌──── Belt (bottom run) ───────┐
│ │
[Gantry plate clips belt here]
The gantry plate has two belt clamps (printed or machined). The belt wraps around the motor pulley, runs along the top of the extrusion, around the idler, back along the bottom, and both ends terminate at the gantry plate.
Step 2: Belt Tensioning
Proper belt tension is critical. Pluck the belt like a guitar string — you want a low "thrum" around 60-80Hz. Too tight and you'll overload the motor bearings. Too loose and you get 0.5mm+ backlash that ruins precision work.
The idler end-plate has a 15mm slotted hole. Set the idler roughly centered, install the belt, then push the idler outward and lock the bolts.
Step 3: Electronics
The CNC Shield V3 stacked on an Arduino Nano gives you:
- GRBL 1.1 firmware (industry-standard G-code interpreter)
- Step/Dir outputs for the A4988 stepper driver
- Limit switch inputs (add inductive proximity sensors for homing)
- Spindle/coolant outputs (useful for triggering pneumatic grippers or other actuators)
Wiring is straightforward:
- Stepper motor 4-wire to the X-axis driver slot (A+/A-/B+/B-)
- 12-24V power to the CNC shield Vin
- USB to your computer for G-code streaming
GRBL Settings for Belt Drive
$0=10 (Step pulse, microseconds)
$1=25 (Step idle delay, ms)
$100=80 (X steps/mm — 200 steps * 16 microstep / (20 teeth * 2mm pitch))
$110=12000 (X max rate, mm/min = 200mm/s)
$120=500 (X acceleration, mm/sec^2)
$130=600 (X max travel, mm)
The steps/mm calculation: 200 steps/rev × 16 microsteps ÷ (20 teeth × 2mm GT2 pitch) = 80 steps/mm.
Step 4: Adding Closed-Loop Feedback (Optional)
For applications requiring guaranteed position accuracy, add a magnetic encoder strip along the extrusion and an AS5311 linear encoder on the gantry plate:
- Encoder strip: Magnetic pole-pair strip, adhesive backed, runs full length of travel
- AS5311 sensor: Reads position with 0.5μm resolution
- Feedback loop: Arduino reads encoder position and corrects for any missed steps
This turns a $78 open-loop actuator into a servo-grade closed-loop system for about $15 more.
For most applications (CNC routers, 3D printer axes, automated doors), open-loop GRBL is perfectly adequate. Only add closed-loop if you're doing pick-and-place or precision measurement where ±0.05mm matters.
Step 5: Mounting and Integration
The 2040 extrusion has T-slots on all four faces, making it trivial to mount:
- Horizontal: Bolt directly to a table/frame using T-nuts and L-brackets
- Vertical: Add a counterweight or gas spring for gravity-loaded applications
- Gantry-on-gantry: Stack two actuators perpendicular for X-Y motion (this is literally how most DIY CNC machines work)
What's Next
This single actuator is a building block. Combine multiples for:
- X-Y gantry: Two parallel Y-axis actuators + one X-axis spanning between them
- Pick and place: X-Y gantry + Z-axis (shorter actuator) + pneumatic gripper
- Automated storage: Vertical actuator + horizontal actuator = warehouse robot
Once you're coordinating multiple axes and need a proper HMI to control it all, that's where io.codes comes in — design a control panel, map your axes, and run automated sequences without writing low-level G-code by hand.
Ready to automate this build?
Design the control system, wire the HMI, and simulate the process — all in your browser. io.codes gives you the same tools factories use, without the $50K license.
Open in io.codes →