Skip to content

Machine Building

~The Machine~ nop! Call her Belty !

Hero Shot

Group Assignment Page.

Individual contribution:


For this week Assignment we have decided to build a belt bed plotter. This is a first Spiral of a belt 3D printer design for The lab.

I was responsible of the electronic and the firmware part and designing the Servo carriage as second option to the Z axis with stepper motor my Colleague Adéoke designed.

  • I Have then worked on the Electronic board (Choice and assembly and firmware setup)
  • Wiring
  • I have also 3D Designed and configure the Servo mount of the Machine.

Working and communicate effectively in a team and independently

For this week assignment we have set individual tasks goals and deadlines for each of Us. For effective teamwork and communication we send progress and issues at least once every 24H in a whatsapp group for inputs and comments. Seeing regularly what the other are doing help each other check if what tey are doing is going in the right direction and confirm how thing will go together. Team member, also regularly check-one each others progress.

Hardware and firmware choice

First I have looked up my options regarding hardware. Either using a simple CNC shield with arduino uno or an Arduino Mega and Ramps or an SKR board. For the first iteration we decided to go with a simple plotter so just a CNC shield would do the trick for now.


For the stepper drivers I used Stepstick DRV8825 Stepper Motor Driver. Our plotter have two set up:

  • Two Nema 17 Stepper motor (For X and Y Axis) and 1 Servo for the Z tool head
  • Three Nema 17 Stepper motor for each axis X Y Z. to make this lighter we used a Pancake Stepper Motor on the Z Axis.

Wiring diagram


The hardware chosen let’s move to the Firmware.

Flash and configuring the Firmware

Since I have already experienced with marlin and klipper I have decided to go for a GRBL firmawre.


I have started with the GRBL wiki

To flash the firmware I have used these following:

  • “Arduino IDE” from


  • The Grbl_Pen_Servo Library From
    • I have chosen it because its interprets normal Z variation in GCODE to servo actions.
    • Any time the work Z is above 0 the servo will move to the pen up position. If it is below 0 it will be in the pen down position.

Simply put we can use this and not having to upload a different firnmware while changing tool (Z Axis with Stepper or with Servo motor).

I have also used Universal Gcode Sender UGS to send the Gcode to Belty et configure the Grbl board.

GRBL Config

First, I hae connect to Grbl using the serial terminal from arduino IDE or Universal GCode Sender UGS. The baud rate for the Serial Connection is 115200. and used $"Parameter"="Value" and $$ to check the new value. Holder

>>> $$
$1 = 25    (Step idle delay, milliseconds)
$0 = 10    (Step pulse time, microseconds)
$2 = 0    (Step pulse invert, mask)
$3 = 0    (Step direction invert, mask)
$4 = 0    (Invert step enable pin, boolean)
$5 = 0    (Invert limit pins, boolean)
$6 = 0    (Invert probe pin, boolean)
$10 = 1    (Status report options, mask)
$11 = 0.010    (Junction deviation, millimeters)
$12 = 0.002    (Arc tolerance, millimeters)
$13 = 0    (Report in inches, boolean)
$20 = 0    (Soft limits enable, boolean)
$21 = 0    (Hard limits enable, boolean)
$22 = 0    (Homing cycle enable, boolean)
$23 = 0    (Homing direction invert, mask)
$24 = 25.000    (Homing locate feed rate, mm/min)
$25 = 500.000    (Homing search seek rate, mm/min)
$26 = 250    (Homing switch debounce delay, milliseconds)
$27 = 1.000    (Homing switch pull-off distance, millimeters)
$30 = 1000    (Maximum spindle speed, RPM)
$32 = 0    (Laser-mode enable, boolean)
$31 = 0    (Minimum spindle speed, RPM)
$100 = 100.000    (X-axis travel resolution, step/mm)
$101 = 63.000    (Y-axis travel resolution, step/mm)
$102 = 840.000    (Z-axis travel resolution, step/mm)
$110 = 500.000    (X-axis maximum rate, mm/min)
$111 = 500.000    (Y-axis maximum rate, mm/min)
$112 = 500.000    (Z-axis maximum rate, mm/min)
$120 = 10.000    (X-axis acceleration, mm/sec^2)
$121 = 10.000    (Y-axis acceleration, mm/sec^2)
$122 = 10.000    (Z-axis acceleration, mm/sec^2)
$130 = 200.000    (X-axis maximum travel, millimeters)
$131 = 1200.000    (Y-axis maximum travel, millimeters)
$132 = 200.000    (Z-axis maximum travel, millimeters)

I have also noticed I could have change the in the library file defaults.h so every time I flash a new board it have the default configs.

Generating Gcode for the plotter

To generate to GCode for our machine I have used InkScape. The process is simple I create a vector our path of what I want to draw and then I use the embedded G-code Tools extension.

First we defined the origin using the tool, then we specify tool and tweak parameters we need to tweak and generated th Gcode to a specified folder. Holder






Plotting With UGS :


Servo Carriage mount design

Servo Head 3D render


Servo Head Assembled Design


Testing servo movement

Testing servo Head with a Maker

Issues and troubleshooting

As usual there were few challenges but nothing we couldn’t figure out:

At a point our hardware stope working : no motor movement. Even with power supply ok; driver change, arduino swap but only with cnc shield swap. So we figure there was an issue with the cnc shield taking the power to the drivers.

CNC shield fuse blown

blown fuse Holder

temporary fuse fixe Holder

opportunities for improvements in the design

  • For the next Spiral we will Improve on the structure and Add a 3D printing tool head to it.
  • The z axis Tool head need to be made more light for better movement control and speed.
  • We also need to add more convenable conveyer belt (We have ordered one)


3D design F3z File and STL

Arduino GRBL Library :