Plotyx - Open-source COREXY Plotter

I’ve always been interested in CNC machines, 3D printers and plotters, so I decided to build my own drawing plotter based on the COREXY design. The goal was to create something that was both functional and open-source, so others could build or modify it for their own projects. At the time all the alternatives were quite expensive.

Why a COREXY Plotter?

After looking at different plotter designs, I settled on the COREXY configuration because it offers some nice advantages. The COREXY design uses a belt system that keeps both motors stationary, which means less moving mass and potentially faster, more accurate movements. This seemed ideal for a drawing plotter where precision is important and I also wanted to make use of linear rails.

The Electronics

For the brains of the plotter, I went with an Arduino Nano. It’s small, cheap, and has enough processing power to handle the movement calculations. For the stepper drivers, I chose TMC2208s, which are known for being quiet and offering good microstepping capabilities.

Electronics.jpeg

One of the main challenges was figuring out how to control the pen up/down movement. I ended up modifying GRBL (an open-source motion control software for CNC machines) to include servo control for lifting and lowering the pen. This wasn’t trivial since GRBL doesn’t natively support servos, but there were already others who solve this with GRBL Servo.

Designing a Custom Shield

I decided to design my own shield in KiCad, very much inspired by Nebulus.ink . He had built a similar project and was kind enough to share a lot of his learnings and actually gave some of his Shields already ready to plot. I don’t think this project would be active without his help. Thanks Nigel!

The shield connects the Arduino Nano to the TMC2208 stepper drivers, handles power distribution, and includes connections for the servo and a fan.

Version1 Revision1

V1R1.jpeg

Version1 Revision2

V1R2.jpeg

Designing PCBs in KiCad has a bit of a learning curve, but it’s really satisfying to see your circuit board come to life. After a few iterations I sent the design off to be manufactured at Oshpark. Only to noticed a mistake after the board was already shipped! Doh! So had to comeback and revisit the design and actually just took the opportunity to simplify it. Ver1Rev2 is at least funcional! In the future I might upgrade it and allow the connection of two limit switches, for easier homing. For the revision 2 board I actually ended up using JLCPCB.

Building the Mechanical Parts

For the frame and mechanical components, I used a mix of 3D printed parts, aluminum extrusions and linear rails and bearings. The 3D printed parts include motor mounts, pen holder, and various brackets. I designed these in Fusion 360, trying to make them both functional and printable without supports where possible.

The COREXY belt configuration takes a bit of planning to get right. You need to make sure the belts are properly tensioned and aligned, or you’ll end up with skewed movements. After a few adjustments to the belt path and tensioners, I got it working smoothly, but it still amazes me how two motors allow for movement in 2 directions.

Software and Calibration

With the hardware assembled, the next step was getting the software configured. I flashed the modified GRBL firmware to the Arduino Nano and connected it to my computer. For sending drawing commands, I initially used Universal Gcode Sender, which is a simple interface for controlling GRBL-based machines.

Calibration was a process of trial and error - adjusting steps per mm for both axes, testing the pen up/down movement, and fine-tuning acceleration settings. Eventually, I got it to a point where it could draw smooth lines and shapes with good accuracy.

Plotyx App

This is something that is still in development, I wanted a standlone app where I could upload SVGs and place them on the “artboard” and allow the plotter to process and plot it. It needed to process the SVG and cover the paths into GCODE. I managed to one-shot a simple version with Cursor, but still need to improve it.

app1.png

Making It Open Source

One of my main goals was to make this project open source, so others could build upon it or modify it for their own needs. I’ve put all the design files, the modified GRBL firmware, and build instructions on GitHub. It includes:

Future Improvements

While the plotter works well in its current form, there are several improvements I’m considering:

  1. Creating a more user-friendly interface for sending drawings
  2. New shield that allows for two limit switches

Final Thoughts

Building this COREXY plotter was a fun project that combined electronics, programming, and mechanical design. If you’re interested in building your own or contributing to the project, check out the GitHub repository. I’m always open to suggestions and improvements!