Chinese penplotter at 55€ aka `CNC V3 shield toys DIY LY drawbot pen lettering corexy XY-plotter drawing robot machine for writing`

Few weeks ago I decided that I wanted to buy a pen plotter.

I’ve been following on twitter the work from @makio64, @florianzumbrunn, @mattdesl, @Julien_Espagnon and more…and I always been fascinated by those pen plotter.

One of the most popular choice seems to be AxiDraw V3. I was almost tempted to buy it…but just before doing it, I found a much cheaper clone on Aliexpress.

There are multiple sellers with the same plotter apparently

So I just gave it a go.

Few people asked me information and whether it’s worth it. I’ll just share here my experience:

I ended up buying from this seller: https://www.aliexpress.com/item/33003296007.html which claims “European duty-free Poland warehouse”. (Make sure to select Poland)

Payed € 85,99 total (with shipping+tax) and received it in less then a week ( the parcel shipped from Milan, not Poland 😲)

The plotter arrives in a DIY kit. No manual or assembly instruction were sent. Tried to contact seller but had no luck (A bot replied to contact him on WhatsApp on chinese number, which I tried, but no luck 😅)

After a lot of time spent on internet I found this manual. Some steps aren’t super clear and some pieces aren’t exactly like in my kit, but overall I made it.

Some parts are 3D printed, other are “metal-wood like” (probably laser printed?), other appears to be reused part from windows frame alloy.

The screws/bolts/nuts are in small plastic bags with handmade pen label (labels are very small, took me a while to figure it out!). I didn’t ended up using all pieces. I guess they are re-using those generic bags for other products or DYI kits…who knows 🤔

All the puzzle pieces

Once completed, It looks like this:

The electrical part is composed of:

  • Arduino UNO (well, a clone)
  • CNC Shield V3
  • 2x Stepper motor SL42STH34–1334A
  • 2x Pololu stepper driver A4988

After few try, I understood that the Arduino was running GRBL v0.9i, which is a firmware standard for CNC machine, so I tried to send command via the open source Universal Gcode Sender. It worked, but not really.

I couldn’t move the plotter on one axis, moving X was moving the Y at the same time and vice-versa.

After some time I understood the problem.

The machine is using a CoreXY kinematics system, where there is just one belt to move the two axis. So the two motor needs to work together with a specific math equation. It seems a common standard in 3D printer as well.

(I assume the Arduino shipped with a wrong firmware)

Investigating a bit, GRBL supports CoreXY. To enable it you have to manually re-compile and upload the firmware on the Arduino, changing the config.h file.

Info here how to compile it.

It went better, but still I had issues where one motor seemed to be “stronger” then the other, turns out the voltage on the stepper driver needs to be calibrated.

I used this guide: https://e3d-online.dozuki.com/Guide/VREF+adjustment+A4988/92

Now, to detect the correct VREF value to set, there is some nerdy math table and logic behind (https://www.pololu.com/file/0J450/A4988.pdf), but I just went with 0.6. YOLO.

I could finally move X and Y independently.

Next step I had to make the servo pen working, to do that I had to modify GRBL code source to add servo support. A friend of mine came to rescue, making this repo: https://github.com/lavolpecheprogramma/grbl-1-1h-servo

Last but not least, I had to change GLBR settings, more info here: https://github.com/gnea/grbl/wiki/Grbl-v1.1-Configuration

Here’s the final setting I achieved after many test:

By now, I had everything working, I could move the plotter left/right/up/down and move the servo UP and DOWN.

Creating stuff with code

To “print something” you need to send G-code, a very simple numerical control language.

There are several ways to convert “vectorial” stuff to G-Code.

I’m currently using a combo of canvas-sketch + gcode-file which allows to easily write canvas 2D, visualise on the browser, and easily obtain a g-code from it.

Few tips:

  • Use a good pen (for technical/architecture drawing), i’m currently using Artline 0.3mm
  • Make sure the pen is stable
  • Use a good pen
  • And make sure the pen is stable
  • Most important, make sure the pen is stable
Some would say “The intersection between code, art, nature and human”, but it’s just a scribble.
The code that generate the drawn above

3D pipeline

I gave a try printing 3D stuff, generated with Blender. I tried a tons of option, finally the best pipeline I found is:

Adding hard switch

Being a cheap plotter, it’s missing hard switch, which are little “buttons” on the axis limit, that allows to:

  • Homing (basically a fancy name to return at a consistent 0,0 each time, without manually moving)
  • Prevent the plotter from going when the rod is over

With some euro, you can buy some hard switches and mount them:

The mini switch I bought
The CNC shield have some pins on the right for “END STOPS” where you can plug the limit switches

After re-using an old USB cable, some hot glue and welding this is the result:

not so clean, but hey, it works.

Conclusion

After one week of usage I have to say that I’m impressed by the precision and the results given the price tag.

The process to make everything works wasn’t immediate, but I guess that’s part of the learning process when building your own CNC/plotter.

Thanks to my friend Alberto for some help during this adventure :)

Senior WebGL @activetheory