A4 Pen Plotter

by JuanGg, published

A4 Pen Plotter by JuanGg Aug 28, 2017


Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag


Thing Statistics

114835Views 8695Downloads Found in Robotics


This is a pen plotter capable of printing on A4 paper sheets. It is intended to be similar to the Aritma Amagraph pen plotter, be as compact and robust as posible as well as reliable.
It is controlled by means of an arduino with a grbl shield, wich drives the x and y motors, and the solenoid used for lifting-lowering the pen in response to g-code generated in inkscape and sent through grbl controller. Scroll down for a gif of it working, bill of materials, instructions...

Whatch a video here: https://juangg-projects.blogspot.ca/2018/01/a4-pen-plotter.html

Interested in buying this thing? Help me making that possible by completing this form:

Print Settings


P3 Steel


0.3 mm




Depending on your printer, some holes may be drilled to make bolts fit. Big tolerances are used, so no sanding is required.

Here you have a gif of it working. (It is actually a lot smoother)

How I Designed This

First, the overall idea was drawn on paper.

Then, it was designed on the computer using FreeCAD, and after four versions and some trial and error, the final design was completed.Some features were added after the build like some holes for wiring and so on.


1) 3d printed parts (All files starting with "Print"):

Print one of each (ending in x1) or two (ending in x2). One needs to be mirrored as specified in its name.

2) Non 3d printed parts:

a)Metal profiles:
Stls included for dimensions. Material specified in their name.
In addition, two 6mm ID 30 mm long 0,5 mm thickness brass tubes are needed to act as
bearings between x carriage and the steel shafts.

b)Screws (and their nuts):
1 M4x20 mm
1 M4x40 mm
15 M3x12 mm
4 M3x30 mm
10 M2,5x8mm
8 2x10 wood screws
2 M4 wing nuts (optional)

1 Arduino UNO
1 arduino CNC shield (with drivers)
Mosfet circuit to drive the solenoid using the spindle pin(example included)
1 Enstop
1Power switch
1 Jack conector
1Red LED
1 470 Ohm resistor
Asorted wires
USB cable
A computer to generate and send the g-code to the plotter.

d) Actuators:
2 NEMA 17 x 35 mm stepper motors.
1 Spring loaded 12v solenoid (mine was from an old printer, use the one you have and glue
it in place.

e) Misc:
Paper rollers from an old printer (you can print them yourself)
Sand paper to glue on the 12mm alumninum tube to grip the paper
4 Ball bearings 4mmID 13mmOD 5mm thickness
Heatsrink tubing
Cable ties
6mm wide Belt and pulley
6 x 12 mm spring

And the compulsory one: Some free time.


1) Mechanical assembly:

Follow the photographs, drawings, and the assembly reference step file, it should be pretty obvious where everything goes.
Some hints:

  • Captive nuts that hold everything toguether are located on the inside of the holes where the profiles go (there is an hexagonal slot in which they fit), insert them and engage the screw BEFORE putting the profile in.

  • The 12 mm OD aluminum tube is fixed to the motor shaft in one end and to an M4 screw on the other end by means of three M 2.5 x 8 mm screws in a triangle arrangement (see photo gallery), with the nuts inside, so they press on the shaft. This allows to center it precisely. If you find it too complicated, you can always use lots of tape, but that its not very professional, neither reliable.

  • X motor screw holes are a bit enlarged to adjust belt tension.

  • There is one spring in the moving carriage that presses the pen against tha paper. This spring is kept in place between two small circular slots. The solenoid spring must overcome this spring force in order to push the lever up.

  • Sandpaper is wraped in a spiral way around the 12 mm OD tube in order to grip the paper. You can glue this with contact glue or similar.

Don't hesitate to ask any questions, and sorry for not providing step-by-step guide with photographs. I am not able to do that at the moment.

2) Electrical assembly

  • I assume I don't have to provide an schematic for the main power switch and LED.

  • The tricky part is the solenoid driving circuit. While you can use the schematic provided with a P-chanel MOSFET, I encourage you to use an N-chanel MOSFET so you can get rid of the transistor. Look for schematics online.

  • I added an LED to check whether the solenoid is powered or not and some buttons (Pause, continue, reset, e-stop) These are not necesary for it to work, but they come in handy.

3) Loading and configuring grbl

4.1) G-code generation (Vector files)

  • Use this for lineal drawings, or with dxf, svg...files.

  • You can convert bitmaps to vector on inkscape on path > trace bitmap.

  • To generate g-code, I used inkscape and jtech photonics laser tool (https://jtechphotonics.com/?page_id=2012).

  • This plug in needs some modifications in order to work for our needs:

    Go to C:\Program Files (x86)\Inkscape\share\extensions\laser.py, open it with your
    favourite text edditor (I used notepad ++) and make sure the following three lines look like
    in the photo below:

This will allow us to use custom g-code to turn the laser(in our case the solenoid) on and off.
Otherwise it will add laser power and more stuff. This way it worked for me.
I used the spindle enable pin on the cnc shield (m8 on, pen down, m9 off, pen up), but you can use the coolant pin as well.

4.2) G-code generation (Bitmaps)

  • Use this to print images like the submarine photo you can see above. Keep in mid that this will take much longer, depending on the resolution used.

  • For this, I used another plug-in for inkscape:
    This needs no modifications.

5) G-code sending

More from Robotics

view more

File Name



All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3d printing a 2d printer and then using it to draw the blueprints for itself is probably the coolest thing ever.

is there any video tutorial ?

and aliexpress links to buy what we need for this

Unfortunately not, and there won't be one soon. Use the photographs and the assembly reference file as a guide.
Aluminum profiles and screws can be purchased at a local hardware store.
Stepper motors any NEMA 17 shorter that 45 mm will do. And the arduino and grbl shield, any, buy the cheapest you can find.

I'm attempting this build. Can you please provide the schematics to implement the side buttons?
That would be awesome!

It is really simple, just wire the buttons between ground, and the appropriate pins on the grbl shield (marked as e-stop, pause, resume, etc...).
If confused, look for an schematic online. Good luck with your build!

Thanks, i'm almost close to completion; another thing not very clear to me is, how did you connect the Y axis tube to the bearing opposite to the motor?

It is done in a similar way to the other end: Three M2.5x8 screws in a triangular arrangement, with their nuts inside the tube secure a M4 screw, which in turn goes through the bearing, and it is kept in place by two nuts and a few washers on each side of the said bearing. On the end of the M4 screw, you can add a wing nut (see photos) so you can easily turn the y-tube manually to position the paper. Good luck with your build!

Hello JuanGg
Sorry for the English capital up I have to use Google Translate
Can you tell me how many parameters you are using Mospet and how many resistor values?

The resistor values can be found in the schematic provided. Almos any MOSFET will do. If unsure, look for schematics on the internet, should be plenty of them. Thank you for the interest and good luck.

So you are telling me i no longer need to buy ink cartridges?

That would be nice, given that you can build the entire plotter for the price of a cartridge set. And bic pens are really cheap.
Unfortunately, it is not as easy to use as a printer and it takes much longer. The submarine bitmap above took 15 minutes to print.
But it has its application for text-only papers or linear drawings. If you can find software that generates single stroke font, it can be used practically for that.

Thanks JuanGg, awesome work!

Cool design! I wonder if someone could add a more precise Y axis control, which would allow for varying thickness/darkness of lines with some media (like pencil or even a paint brush). Is it possible with vector images to encode a "thickness" parameter along a spline path?

You mean Z axis? You can easily add a servo motor to control the pressure, but programming it is more of a challenge. What you can do is generate g-code for each thickness in the drawing and use a different range of movement of the servo motor to achieve different pressure and thus thickness. Then add all the g.code in a single file. Or you can always change the pen in between.
Tell me if you achieve something. Good luck.

Yes, I guess I meant Z! I'm used to 3D animation/modeling where Y is up and XZ is the horizontal plane. I'm imagining something similar to a Wacom tablet with pressure sensitivity. So a line can start out one thickness, then get thicker and thinner over the length of the line to create more of a hand-drawn look. This is way beyond my ability, but just wanted to throw it out there hoping to inspire someone with the know-how.

I see. On inkscape, when you convert a bitmap to SVG or with a vector file with thickness, it takes the outline. If you are lucky, you can get some range of thickness based on how spaced those lines are.

I think it is very nice!

I do not know if you are aware of the user showcase of FreeCAD. Within the community, we have a place to show projects you have made with FreeCAD. I think a lot of people will be happy to see this project posted there. Take a look at this link:

Posting or not is up to you. I regularly check the site and this is the kind of things I like to see there.

Thanks for sharing it!!

curious...what did it cost in parts, printing time, and assembly time?

Cost in parts is hard to estimate (as i had most of them already), but should be around 50 - 60 €
Printing time depends on the resolution, but at 0.3 mm layer heights should be around 9-12 hrs.
Mechanical assembly should take about an hour, and at least another hour for electronics, cables...
Getting the software to work can take you from 10 minutes to 10 days.

For my part I use GRBL-PLOTTER which works very well; we can even transform images.
Have a good day

how would i send things to this. I mean what kind of file

In the "Thing details" section you have more detailed instructions on how to do that. Basically you take the file you want to print (vector, bitmap...) and use an Inkscape plug-in to translate it to g-code (wich is what the plotter understands). Once you have your g-code, you can use grbl controller (for example) to send it to the arduino. Make sure you read the instructions, and don't hesitate to ask any further questions!

Hello everyone
Here is my achievement with some minor changes the plotter works well I'm waiting for the solenoid to lift the pen
bravo to his designer

Great stuff!
Have you tried to insert a knife and to use it as a cutting plotter?

I have not tried it yet, and I wont be able to try it soon. It would not be difficult to do so, but perhaps the continous impacts could damage the knife. Feel free to try yourself!

Could I run a piece of PCB through this using a sharpie or similar? It could greatly reduce the cost of making custom PCBs.

I am sure you could, just slide the rollers so they grip the PCB. You will have to leave some margin so it does't fall out during printing.
I do my PCBs on another plotter, wich has a fixed printing platform, wich I think it is a better option. If you manage to do that, please post some pictures!

Could you please give more details of the solenoid? Basic dimensions would be useful, whether it's a 'push' or 'pull' solenoid, and what the armature throw is. Then I can search ebay for something similar!
Many thanks.

I got this solenoid from an old laser printer, so I cannot provide details on how to get it. Its aproximate dimensions are 26 x 20 x 30 mm. You can try to glue yours in place, or drill some holes and screw it in place.
In my setup (which is not the most reliable), the solenoid is a pull one, with spring return. When the solenoid is activated, the carriage's spring presses the pen against the paper. When the solenoid is released, solenoid's spring pushes a lever up, with in turn lifts the pen, overcoming the carriage's spring force. It works for me, but could be improved.
If you use 'liquid ink' pens (wich don't need to be pressed much against the paper to write as bic pens do) you can get rid of the carriage spring and use a much weaker solenoid.
Good luck with your build!

Hello sir
Thank you for your answer, I got to get something with my GRBL, but actually the X axis (by screw) is a little slow and noisy I will rethink my editing and inspire me with your X axis and its trolley door pen, if you allow it.
for Step files with freecad I found a solution with Freecad 0.17
to make a step clone, then after we can add elements and perform boolean operations.
Thanks soon may be

You are welcome!
I am happy that you found that usefull.
I will definitelly go with a belt (or even a string) for the x axis, it will be much faster, quieter and more precise (less backlash).
My x axis design is based on old "Aritma" plotters, make sure you check them, as well as the "Alfi" plotter.

Hello sir,
Would it be possible to have the Freecad files especially for both sides to be able to adapt according to the dimension of the aluminum profiles that one has. I think that I will adopt your assembly which at the level of the trolley is very simple and seems efficient. With many thanks.
Have a nice week end.

I am not going to publish FreeCAD files for now.
Find step files of every printed piece in the files section. You can import this in FreeCAD (on any other CAD program) and make the measurements or the modifications you need.
Good luck!

Thank you for your comment, excuse my English is a Google translation I only did Spanish first language and industrial design second at the time!
We do with, so I actually used axes and old printer rollers and the aluminum profiles of my 3d printer I did not finalize the pen holder nor his movement I wanted to test the displacement on the threaded rod of 8 the cart carries a few worries in the middle of the axis speed must be too fast, I think I'll review this training and opted for a belt.
Initially I went on the idea of making a tracer to A2 by turning the sheet of course. It was a "style exercise" to use the profiles and engines in my possession. I will get back to work thanks to you!
I will keep abreast of the evolution thanks again and have a good day.

Thank you for your answers, I allow myself to join the photos of my project it remains for me to solve the problems of soft management engine ...
if it evolves I want to know
Good evening

Your design looks great! Perhaps x axis will be a bit slow due to the threaded rod (do not use my grbl configuration for the speed, that would be too fast for a threaded rod). It looks like you have used some old printer parts.
I had my personal fight with grbl almost a year ago. I added some more instructions, make sure you check them. The links provided will explain everything better than I would do. If you decide to use limit switches, you will have to configure that also in grbl.
Good luck!

Hello sir
Thank you for your quick reply, here I started a plotter of my design with aluminum profiles that remained for the X axis I had opted for a screw of 8 but I have problems so I'm going inspire your excellent achievement. On the other hand I am having problems with GRBL I saw your instructions and I am going to study the grbl wiki carefully.
Please accept, Sir, my gratitude. Have a good day

Using threaded rods was one of my first ideas, but it would perhaps flex too much.
Good luck with your build! I will add some instructions soon.

Bonjour à tous
félicitations pour cette magnifique réalisation.
Est-il possible d'avoir le soft pour l'arduino?
Un grand merci bonne journée à tous

Merci beaucoup
J'ai utilisé le firmware grbl, j'ai ajouté quelques instructions, assurez-vous de les vérifier!
Bonne chance avec votre build!
Essayez d'écrire des choses en anglais, afin que tout le monde puisse comprendre!

Thank you very much
I used grbl firmware, I added some instructions, make sure you check them!
Good luck with your build!
Try to write things in english, so everyone can understand!

Currently this is the most compact and elegant plotter here on thingiverse.
This would be the first time I use a selenoid and I would need to get one from ebay or amazon. There are 5V selenoids available. I guess those would work aswell and I could skip the MOSFET?

Thank you!
Even with using a 5V solenoid, you won't skip the MOSFET, becouse they draw quite a few current (they have current 'peaks' at start).
And you will need a more powerful 5 v power supply than the arduino regulator. As the motors run at 12v, a same voltage solenoid is preferred.
Depending on the solenoid, you could even use a transistor. Don't be afraid of using mosfets, just do some research before (There are plenty of schematics on the internet) and if you use an N-Chanel MOSFET, you can drive it without a transistor. (I used a P-Chanel MOSFET becouse it was what I happened to have around) Don´t forget the diode, or you will fry your MOSFET.
Also I found usefull adding a led, so I could see when the solenoid was activated.

Great design! I would be very thankful if you could upload or send me the step files

Step files of all the printed parts are now uploaded. (ones starting with step, pretty obvious). Good luck with your build/remix/whatever and please publish some pictures/files/etc.

Would this work with Makelangelo software?

I am not familiar with that software, but it will work as long as it can generate g-code that can be understood by grbl. Or you could even use another board, or different firmware.

just start bilding this ploter. and will make it better. all those rods are difrent in diametar. why? and will pen up/down proces connect to servo motor, instead this solenoid. and will switch all motor to one side, so next project will make bigger/longer ploter easy proces.
Ploter is quit nice and compact. nice job JuanGg!:)

I don't know which rods are you talking about. They have the dimendions they have becouse that was what I happened to have around. Everything is like it is for a reason, a servo may seem easier to control (it is not, really, a solenoid can be driven using the spindle enable on pretty much any version of grbl) but will be much slower in operation and wear out much faster. Stepers are placed on different sides for space isues and to allow more air to flow around them, not concentrating heat on one spot (they do get hot, even in this light duty aplication). Having said that, I encourage you to make any changes you wish, and please make sure you publish them.

That's really nice design. Could you show us how you made it work with grbl and inkscape?

Un fortunately, I don't have much time as I am studying the whole year in another country, so I don´t have my 3d printer, neither the plotter. However, I will try to make some instructions. I use j tech photonics laser tool plug in for inkscape.

any update on the video of this working?

If you scroll down in the details page, you will find a gif of it working

Me gustaría imprimir las piezas para armar uno en una escuela técnica de Argentina.
Ademas de los dos Nema 17, lleva algun componente que sea complicado de conseguir? La electrónica es arduino, los chicos la conocen. Pero no se si tendremos acceso al resto de las varillas y demás.

Me alegro de que os sirva este proyecto. Hay una lista de materiales no impresos ( tornillos, varillas...) en las instrucciones, de todas formas, aunque esta diseñado para esas formas y materiales, no creo que hubiera ningún problema en usar varillas de latón o perfiles de madera, por ejemplo. Todo se puede conseguir en una tienda de bricolaje o en internet y si no, se podría hacer alguna " chapucilla" y adaptarlo. Espero ver alguna foto del proyecto completo. Suerte !

Excelente trabajo.Felicitaciones!

Muchas gracias!!

i'll be one of those looking to remix this! maybe make some end caps and definitely a size increase. definitely a great design, dont suppose you have a video of it working?

I am eager to see your future remixes. In the beginning, caps were intended, but I left it uncovered for heat disipation (stepppers and drivers can get warm) and for everyone to see the innner mechanism. Increasing widh is pretty straightfoward, just increase the length of all alu and steel profiles. Perhaps the alu 15 x 2 mm profile should be reiforced in large widths for it not to flex. I will upload a video or a gif of it working as soon as I can.

Awesome! I just found my next project.

I am looking foward to see some photos of your build. I will post assembling instructios as well as how to use inkscape for g-code generation as soon as I can.

Love the design. Expect some remixes for things such as working width as well as conversion from pen to inkjet print head not to mention different media types... think pcb media with Sharpie "etch resist" pens.

If you are willing to post them, the freecad files would be appreciated.

Thank you for the interest. If you wish, you can try that remixes yourself. In the very beginning, this was intended as a inkjet printer, but I wanted to make something simpler as a start. For now, I am not going to upload FreeCAD files, but I can post Step files of the parts instead.

I have become adept at converting STL files to something I can work with in the the couple/three 3d design programs I use. Thank you for the design.