Skip to main content
Version: ACS CC

Polargraph

A vertical drawing machine that uses a polar coordinate system to create pen-on-paper art

info

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

Diagram

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

DeviceUsagePrice
STM32 Nucleo-U545Main Controller (Brain of the project)[Owned]
NEMA 17 Stepper Motor (1.7A)Axis movement (2 pieces required)130 RON
TMC2208 Stepper DriverSilent motor control (2 pieces required)90 RON
SG90 Micro ServoPen lift mechanism15 RON
12V 5A Power SupplyExternal power for stepper motors55 RON
GT2 Pulleys & Belt KitMechanical transmission system40 RON
Breadboard MB-102Prototyping and circuit connections15 RON
Jumper Wires M-M / F-MConnecting components to Nucleo15 RON
DC Jack AdapterConnecting the 12V supply to breadboard5 RON
Capacitor Kit (100uF)Power spike protection for drivers5 RON

Software

LibraryDescriptionUsage
stm32u5xx-halHardware Abstraction LayerManaging GPIO for motor control, UART for G-Code streaming, and Timers for pulse generation.
embedded-halEmbedded Abstraction TraitsProvides a standard interface for peripheral drivers, ensuring modular and testable code.
micromathFast Math LibraryUsed for efficient fixed-point and floating-point square root calculations in the Inverse Kinematics engine.
cortex-m-rtStartup and RuntimeHandles the entry point and reset handler for the ARM Cortex-M33 processor.
panic-haltPanic HandlerProvides 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:

  1. 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.
  2. Path Optimization: The software generates a list of G-Code commands (G0, G1) which represent coordinates in a Cartesian system.
  1. DrawingBotV3 - The primary software for G-Code generation.
  2. Polargraph Physics - Detailed explanation of the inverse kinematics involved.
  3. TMC2208 Datasheet - Technical specifications for the motor drivers.
  4. Example - Working example