Skip to content
Advanced 8 hours

Arduino-Powered CNC Pen Plotter

By Amit1379
July 13, 2026

A pen plotter moves a drawing instrument in X and Y axes under computer control, reproducing digital vector designs with mechanical precision. This project uses two NEMA 17 stepper motors, an Arduino Uno running GRBL (a popular open-source CNC firmware), and a servo to raise/lower the pen. You can import any SVG or DXF file and send it to the plotter via Universal G-code Sender. The drawing area is approximately A4 (210×297 mm).

What You’ll Need

  • Arduino Uno
  • CNC Shield v3 for Arduino Uno
  • 2 × A4988 stepper motor driver modules
  • 2 × NEMA 17 stepper motors (1.8°/step, 200 steps/rev)
  • SG90 servo (pen lift mechanism)
  • 2 × GT2 belt and pulley sets (for each axis)
  • 2020 aluminium extrusion or timber rails for the frame
  • Linear bearings or plain PTFE bushings
  • 3D printed or laser-cut parts: gantry carriage, pen mount, motor mounts
  • 12 V / 2 A power supply
  • Universal G-code Sender (UGS) or Inkscape with gcode plugin on PC

Step-by-Step Instructions

  1. Flash GRBL: Download grbl-servo (a GRBL fork that adds servo support for spindle output). Flash to Arduino Uno via Arduino IDE.
  2. Assemble frame: Build a rectangular frame from 2020 extrusion. Mount X-axis rail across the top, Y-axis carriage below. All dimensions to achieve ~210 mm × 297 mm travel.
  3. Install motors: NEMA 17 for X-axis drives the gantry belt. NEMA 17 for Y-axis drives the pen carriage. Tension belts to remove backlash.
  4. Wire CNC shield: Plug A4988 drivers into X and Y slots on the CNC shield. Set microstepping to 1/8 (MS1+MS2 jumpers). Wire limit switches to X-min and Y-min pins for homing.
  5. Wire servo: Servo signal to Z-axis spindle PWM output on shield (GRBL controls it as the “spindle”). Configure servo pen-up/pen-down angles in GRBL settings ($33, $32).
  6. Generate G-code: In Inkscape, install the “Inkscape to G-code” extension. Open an SVG design, run the extension to generate G-code. Alternatively, import DXF into UGS.
  7. First plot: Load G-code in UGS. Home the machine (move to 0,0 manually if no limit switches wired yet). Set work origin, lower pen to paper height, run G-code. Watch your drawing appear.

Safety Notes

  • Moving gantry parts can pinch fingers — keep hands clear during homing and cutting operations.
  • Ensure the power supply is rated for both stepper motors running simultaneously (~1.5 A each = 3 A total minimum).

Tips & Troubleshooting

  • Steps/mm calibration is critical: GRBL default is 80 steps/mm for 200-step motors with GT2 2 mm pitch belt and 20-tooth pulley. If drawings are wrong size, measure a 100 mm move and adjust $100/$101 accordingly.
  • Pen pressure consistency: use a rubber band to apply gentle downward force on the pen when lowered, and the servo lifts it against spring resistance. This gives consistent ink flow.
  • Try plotting with a fibre-tip pen on card, a ballpoint on paper, or even a felt brush with ink for different artistic effects.

Leave a Comment

Your email address will not be published. Required fields are marked *