Drawing Machine

This drawing machine is a small three-axis robot that controls a pen over a canvas.


Creative Commons Attribution Share Alike

Commercial use is allowed, you must attribute the creator, you may remix this work and the remixed work should be made available under this license.

Learn more or download attribution tags


cyul: https://www.thingiverse.com/thing:1514145 ; misan: https://www.instructables.com/id/4xiDraw/


This project was a learning process for learning to build a working machine almost from the scratch. However, since this was my very first assembled machine ever, I had to jump between several instructions and make a lot of extra work to understand every step they described. Therefore, I tried to include everything into these instructions for being helpful and convenient to create this machine even if you are a beginner.

This drawing machine is a small three-axis robot that controls a pen over a canvas. For moving the horizontal x- and y-axels, the machine uses a single belt and two stepper motors in a configuration called h-bot, and the third one for moving the vertical z-axel (pen) up and down. For drawing or writing, since the pen orientation is variable, it is possible to use regular ballpoint pens, fountain pens or felt-tip pens. For building the machine, I used 3D printer, recycled parts as much as possible, and ordered some of the parts from e-commerce. My operating system is Windows 10.

As a starting point, I used instructions made by cyul (https://www.thingiverse.com/thing:1514145) and misan (https://www.instructables.com/id/4xiDraw/).
In addition, the tutorial videos made by 3DMake (https://www.youtube.com/channel/UCRhkN6gZW62WmhAbPMKPoFA) and
MiguelBi (https://www.thingiverse.com/thing:2401997) were a great help during the assembling phase.
For sure, the greatest help and support I got from wonderful staff in FabLab Silkeborg (http://campusbindslevsplads.dk/index.php/fablab/), where this machine was built.

By making this drawing machine you can learn some basics of digital fabrication and robotics. The project develops an understanding of hardware, firmware, and software. It involves 3D printing, ordering or recycling materials, mechanical and electronic assembling including soldering and simple wiring, and setting and adjusting firmware and software.

Pay attention to rotate the 3D printed parts appropriate before printing since some of them seem to be in wrong orientation after uploading.

You can find all the information and exhaustive description of building this machine from KatPit Instructables page:


Materials and methods

Bill of other materials:

Electronics to control the machine:

1 x Arduino UNO shield with USB cable
1 x Engraver CNC shield V3.0 board (Also, KITs involving both shields are available)
9 x 2pin header micro jumpers (could be sold together with CNC shield, check)
3 x A4988 Stepper Motor Driver boards (with heat sinks, or you can use a cooler like I did)
2 x NEMA 17 stepper motors – height 40 mm could be perfect (mine are recycled from an old 3D printer being 48 mm tall and working ok)
1 x 12.0 V 2A power supply (mine is recycled, 12.0 V 8.0 A)
1 x Power Jack Socket 2.1mm PCB mount
1 x 300 mm Single core mounting wire 1.4mm (recommended to have 2x 100 mm black for ground and 1x 100 mm red wire for power)
1 x 28BYJ 12V Gear stepper motor for Z-axis
1 x 850 mm Cable Extender for 28BYJ Gear stepper motor
1 x Techflex Flexo PET sleeving for 28BYJ Gear stepper motor cables
1 x Heat-shrinkable tube 140 mm to cut and joint some cables
1 x 5V Cooling Fan 30x30mm
2x pieces of jumper wires with female pin connectors for cooling fan

Rods and fasteners to build X-Y-Z-axes:

4 x 8 mm smooth diameter rods by pairs in a length you want for X- and Y-axes
(I used 2x 340 mm-long for X and 2x 455 mm -long Y (recycled from printers and scanners), which gave me about 300(X) x 240(Y) x 23(Z) mm of the workspace.)
2 x 10 mm (3/8") threaded rods, in the same length than your X-axis + 2 cm (mine are 360 mm)
2 x 6 mm smooth diameter rods 60 mm for Z-axis (mine are recycled from an old scanner)
10x F623ZZ Double Shielded Flanged Ball Bearings for X- and Y-axes
2 x 16 teeth, 5 mm Bore Timing Pulleys for GT2 belt
8 x LM8UU Linear Ball Bearings for smooth diameter rods
1 x 200 cm 6mm GT2 Timing Belt Open
(if you change the length of axels, you will get the length of the belt by calculating [(X-axis cm + Y-axis cm) x2] + at least 10 cm extra for tightening)

I recommend making X-axis (including 2x 8 mm smooth diameter rods + 2x 10 mm threaded rods) longer than y-axis for making the machine more stable. I had only 360 mm recycled threaded rods, but I wanted to make the drawing area bigger so, my Y-axis is longer than X-axis, which caused that I had to make extra legs to make the machine stable.

Bolts, nuts, and washers

3 x M3 6mm screws (for z-axis 28BYJ gear stepper motor + pen holder)
9 x M3 8 mm screws (for NEMA 17 stepper motors + pen holder)
11 x M3 20 mm screws (for x- and y-axis ends)
4 x M3 30 mm screws (for x-y-configuration)
4 x M3 40 mm screws (for x-y-configuration / cable holder)
19 x M3 nuts (for x- and y-axis ends and x-y-configuration)
5 x M3 washers (for x-y-configuration + z-axis belt holder)
1 x M5 screw (for the pen on the Z-axis)
4 x M10 serrated nuts (for threaded rods)
4 x M10 nuts (for threaded rods)
4 x M10 washers (for threaded rods)

3D printed parts:

Since 3D printing takes some time, it is a good idea to start by printing the parts. I adapted some of the misan’s (https://www.youmagine.com/designs/4xidraw) and cyul’s (https://www.thingiverse.com/thing:1514145) parts to be 3D printed, but some of them I developed further, and also created and added some new parts. I had difficulties with the OBJ -format so, I opened the files in 3D builder and saved them as STL -format. All the original parts of cyul’s can be found and edited here.

From the cyul’s parts, I developed further both Y_Ends, to make them stronger and the y-axis more stable.
Developed_Y_End_1.stl (individual)
Developed_Y_End_2.stl (connected to z-axel)

To make the machine more stable, I made legs for x-axel:

I added also a Cable Holder for stepper motor cable going above the stage, and a Cable Keeper put inside the LEG for Arduino:

I will still develop Z-stage and the pen holder further at some point later on.



Issues are used to track todos, bugs or requests. To get started, you could create an issue.


8b1e6a269baaf3086874ad4c8bafe40b?default=blank&size=40ghostlyone added this to the to print collection ago
98177263ed37cba2a02ecd3d0bc866ad?default=blank&size=40murat sancar added this to the cnc collection ago
A0fcd5eb6bad6ce12a388cb812ff2eaa?default=blank&size=40nejdet added this to the Plotter collection ago
Mini 1381924 10202018947616223 1705938533 nLina & Thomas added this to the machines collection ago
Mini 1381924 10202018947616223 1705938533 nLina & Thomas added this to the fablab Silkeborg collection ago
76f18b3f2c4bb6075f0ec14d115f6383?default=blank&size=40KatPit published this design ago