Multipurpose 3D Stage

In this project, we design and build a 3D stage for multiple purposes, such as 3D scanning, 3D printing, engraving, etc. After through discussion and careful verification in SolidWorks, we bought material and built up the stage one time successfully.

By utilizing Grbl for Arduino CNC Board, the spindle of the stage can walk along the designed route under the control of an Arduino Mega Board and a computer. Because Grbl is designed based on G-Code standard, it is easy to use a normal CNC software to send a G-Code sequence which represents the expected route from the computer to the Arduino board. Then, the Grbl program running on the Arduino board interprets the received G-Code and controls a bunch of signals that control three step motor drivers, protection switches, optical grating encoders, spindle switch, etc.

Tech Spec

  • Spindle Moving Range: 70cm x 70cm x 50cm
  • Screw Pitch of Rod: 5mm
  • Step Motor Theoretical Accuracy: 0.78 $\mu m$ (Step motor: 57mm, 200 pulses/r, Step Motor Driver is set to 32-microstep.)
  • Optical Grating Encoder: 360 lines/inch (accuracy: 70.56 $\mu m$)
  • Practical Accuracy: 0.1mm
  • Four axes: one for X, one for Y and two for Z
  • At the both ends of each axis, there is a limiting switch to protect the working stage from collision.
  • Working stage supports mounting different objects for different purposes.

Grbl Key Parameter

  • $\$$100 = $\$$101 = $\$$102 = 1280 ([X,Y,Z] steps/mm)
  • $\$$110 = $\$$111 = $\$$112 $\leq$ 1500 ([X,Y,Z] Max rate, mm/min)
  • $\$$130 = $\$$131 = 700, $\$$132 = 600 ([X,Y,Z] Max travel, mm)

Send command '$\$\$$' to check Grbl setting.

Grbl Command


Circuit Design

The Arduino Uno board runs the Grbl program and the Mega board is responsible for decoding the signals of three optical gating encoders to provide more accurate position information.


UniversalGCodeSender for Windows and macOS

UniversalGCodeSender is based on java. So, it can run on nearly all platforms supporting java. In the archive above, we provide a bat file for launching UniversalGCodeSender in Windows and a packed App for macOS.


  • projects/xyz_stage.txt
  • Last modified: 12 months ago
  • by daizhirui