Polargraph
A vertical drawing machine that uses a polar coordinate system to create pen-on-paper art
Author: Alexandru-Vlad Bîrsan
GitHub Project Link: https://github.com/UPB-PMRust-Students/acs-project-2026-vldxndr
Description
Polargraph - Vertical Plotter
The Polargraph is a vertical DRP (Digital Reconstruction Plotter) that operates on a polar coordinate system. Unlike the traditional plotter or printer that works on a X Y axis the polargrah transforms polar coordinates into coordonates on the paper by using two motors fixed over the paper that hold wires that have variable lenghts so they can position the drawing tool where it needs to be.
Motivation
The idea came to me because I have previously studied architecture and have always wanted to have something that could draw using real writing utensils, because while a printer can draw exactly what you want using pin point accuracy it lacks the soul of a hand drawing. This project aims to have the accuracy of a printer while portraying a hand rendered drawing.
Architecture
Log
Week 27 - 30 April
Wrote initial documentation and made the first diagram while ordering the parts. Decided to use preexisting software for transforming drawings into lists of instructions.
Week 12 - 18 May
Week 19 - 25 May
Hardware
The Polargraph is powered by an external 12V DC source to ensure constant torque for the stepper motors. For development purposes, the STM32 Nucleo is tethered via USB for real-time G-Code streaming and debugging
Schematics
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| STM32 Nucleo-U545 | Main Controller (Brain of the project) | [Owned] |
| NEMA 17 Stepper Motor (1.7A) | Axis movement (2 pieces required) | 130 RON |
| TMC2208 Stepper Driver | Silent motor control (2 pieces required) | 90 RON |
| SG90 Micro Servo | Pen lift mechanism | 15 RON |
| 12V 5A Power Supply | External power for stepper motors | 55 RON |
| GT2 Pulleys & Belt Kit | Mechanical transmission system | 40 RON |
| Breadboard MB-102 | Prototyping and circuit connections | 15 RON |
| Jumper Wires M-M / F-M | Connecting components to Nucleo | 15 RON |
| DC Jack Adapter | Connecting the 12V supply to breadboard | 5 RON |
| Capacitor Kit (100uF) | Power spike protection for drivers | 5 RON |
Software
| Library | Description | Usage |
|---|---|---|
| stm32u5xx-hal | Hardware Abstraction Layer | Managing GPIO for motor control, UART for G-Code streaming, and Timers for pulse generation. |
| embedded-hal | Embedded Abstraction Traits | Provides a standard interface for peripheral drivers, ensuring modular and testable code. |
| micromath | Fast Math Library | Used for efficient fixed-point and floating-point square root calculations in the Inverse Kinematics engine. |
| cortex-m-rt | Startup and Runtime | Handles the entry point and reset handler for the ARM Cortex-M33 processor. |
| panic-halt | Panic Handler | Provides a simple panic strategy that halts the processor in case of critical software errors. |
Host Software & Toolchain
To transform digital images into physical drawings, the project uses a multi-step toolchain:
- Vectorization/G-Code Generation: I use DrawingBotV3 (or Inkscape with G-Code extensions). These tools allow me to convert standard images (JPG/PNG) into paths using algorithms like Squiggle, TSP (Travelling Salesman Problem), or Stippling.
- Path Optimization: The software generates a list of G-Code commands (
G0,G1) which represent coordinates in a Cartesian system.
Links
- DrawingBotV3 - The primary software for G-Code generation.
- Polargraph Physics - Detailed explanation of the inverse kinematics involved.
- TMC2208 Datasheet - Technical specifications for the motor drivers.
- Example - Working example