Ender 3 Pen Plotter Toolhead
by wazupwiop in Workshop > 3D Printing
491 Views, 6 Favorites, 0 Comments
Ender 3 Pen Plotter Toolhead


I started 3d printing during the pandemic, and I bought a few Ender 3 V2's to occupy my time. Because I moved on to a better printer, my Ender 3 was gathering dust. I started thinking to myself what I could do with that printer. I had a few ideas like turning it into a better 3d printer, but I didn't feel confident in my design skills. I am relatively new to CAD. I have done a few small projects in Fusion 360, but I wanted to see how far I could take my skills while also designing something cool. I thought it would be cool if I could use my Ender 3 as a drawing tool. Ender 3's are accurate to 1/10th of a millimeter or so, so it should be capable of very detailed pictures with the right software and pen tip.
I came across a YouTube video about the PLTR V2 -- another plotting toolhead for the Ender 3. There were a few issues with that design for my particular use-case. My design was inspired by certain aspects of the PLTR V2.
My Ender 3 is running a custom firmware called Jyer's Marlin, and I have it configured with a BL-Touch bed probe. I did not want to flash stock firmware to the printer, and I still wanted to use my BL-Touch. I designed a mostly 3d printed pen plotting toolhead for the Ender 3 V2. It should also fit Ender 3's as well. My toolhead is smaller than the PLTR V2, and it will allow you to use the BL-Touch, CR-Touch, or similar bed probe that is mounted on the left side of the gantry.
Because of these design constraints, my pen plotting toolhead is smaller than the PLTR V2 and will hold pens up to 11mm in diameter. This is big enough to support most pens and some smaller markers.
I am entering this Instructable in the 2025 Build-A-Tool contest. The 3d printed parts were entirely designed in Fusion 360. I have made the files open-source on my Github if you would like to download them.
Repository: https://github.com/mcglonelevi/PenPlotterToolheadEnder3
3d Models: https://github.com/mcglonelevi/PenPlotterToolheadEnder3/tree/main/parts
My design should be compatible with both the Ender 3 and the Ender 3 V2; however, I do not have a base model Ender 3 to test the fit. Newer models of the Ender 3 have a different plate on the gantry, and the baseplate would need some modification to support newer Ender 3 models such as the Pro, V3, etc.
If you want to try modifying the designs to fit your Ender printer, this model of the X gantry may be helpful for you:
https://www.printables.com/model/254422-ender-3pro3v2cr10-v1-x-axis-original-gantrymountin
Supplies


Materials
- About 25 grams of PLA or equivalent of your preferred filament.
- 2 3mm * 40mm steel rods. I bought these on Amazon and cut them down to size. You could also buy these pins that are pre-cut to size if you don't have access to a hack saw or rotary tool.
- 2 M3 brass inserts - I used these
- 4 M3 screws. I think M3x20mm should work for most cases.
- 1 M3 nut.
- 2 springs. I used 0.3mm x 4mm x 15mm - Something like these should work.
Recommended Print Settings
There are two parts to print in this build - the pen carriage and the base plate that attaches to the printer. I printed both parts with 4 walls and 40% infill. No support should be necessary, but there are a few overhangs. The size of the overhangs are very small. If your printer is capable of printing a Benchy, it should be able to print this toolhead without issue.
Recommended Tools
- M3 wrench
- Hammer
- Drill
- 1/8in drill bit. (or 3.25-3.5mm drill bit if your country uses the metric system)
- Vise or clamp of some sort
- Hack saw or rotary tool with cutoff disk (not necessary if you buy these pre-cut pins)
- Soldering iron
- PTFE or Silicone lubricant (optional)
Disassemble the Toolhead on Your Printer
The first step is to take the toolhead off of your Ender 3. The process for this may be slightly different depending on the model of Ender 3 that you have. You'll need to remove the shroud as well as remove the hot end from the printer. I will link a few videos below for the different printers:
- Ender 3 - https://youtu.be/c1Wo9KkZKNQ?si=9i4k9gFJFBe4uY88
- Ender 3 V2 - https://youtu.be/_bZ_ETKBipQ?si=HTAQPkAjc9Cq-dQv
The process for the Ender 3 V2 is really simple. There are only 3 screws to remove.
- On the back of the toolhead, there is a small screw holding on the plastic fan shroud. Unscrew that and the shroud should become loose.
- The hot end has 2 screws holding it to the gantry plate. Unscrew both of those.
- Optionally, you can use a wrench to detach the bowden tube from the extruder. If you plan to permanently modify your printer, you can detach the extruder motor and hot end connectors from your main board.
Brass Inserts in Pen Carriage

Assuming you have printed the parts, the first step on assembling the toolhead is to insert the M3 brass inserts into the 4mm holes on the front of the pen carriage. If you printed in PLA, I would recommend setting your soldering iron temperature to 525 fahrenheit or 200 celsius. If you used another filament, I would recommend setting your soldering iron temperature to the temperature you print with if possible.
If you have never used brass inserts before, my advice is to go slow and allow the iron to do the work.
If you would like a step-by-step tutorial for how to use brass inserts, here's a video by Geek Detour:
Cut and Test 3mm Steel Rods
I purchased 3mm steel rods from Amazon that needed to be cut to size. I used a hacksaw and a miter box to cut them to length, but it was painfully slow. Use a rotary tool with a cutoff wheel if you have one. You will need to cut the rods to 40mm in length. Cutting the rods is not necessary if you bought the steel pins of appropriate size.
Test the tolerances of the pen carriage. The rods should move freely in the small vertical holes of the carriage without much rocking around. Depending on the tolerances of the rods you have and your printer, you may need to use a 1/8in drill bit to widen the holes for the rods in the pen carriage. If you live in an area that uses the metric system, a 3.25mm or 3.5mm drill bit may be used if you don't have a 1/8in drill bit.
If the carriage is still a little sticky after widening the holes, you can use some lube on the steel rods and run them through the pen carriage a few times. I would recommend PTFE or Silicone lube. Whatever you have on hand will probably work.
Insert Steel Rods Into Baseplate

Insert the steel rods into the top of baseplate but do not push them all the way down. The tolerances on this part are designed to be press-fit. It should be pretty snug. If you have trouble inserting them, you can use a vise or a clamp and gently tap the rods into place.
Slide Springs Over Steel Rods

The springs will apply downwards pressure on the pen carriage, so we need to insert those around the steel rods before installing the carriage. If you bought the correct size of spring, they should very easily slide over the rods.
Insert the Pen Carriage


Compress one of the springs and gently place the pen carriage into the baseplate. Try to line up the steel rod with the vertical holes in the carriage and push it in as far as you can. You should be able to get one side into place, and then do the same on the other side.
Seat Steel Rods Completely

Now that the pen carriage is in place, try to push the steel rods all the way into the bottom of the base plate. If you cannot push it in by hand, grab a hammer and gently tap it into place. If the rods were cut to 40mm, they should be flush or close to flush with the top of the base plate. Again, the tolerances on the baseplate are snug and it should be a firm press-fit. Your completed assembly should look similar to the above picture.
Install Toolhead on the Gantry

The base plate has 2 holes for attaching the plate to the gantry. For the right hole, use an M3x8mm screw. For the right hole, stick a M3x12mm screw through it and the screw should poke through the back of the plate. Secure it with an M3 nut.
Calibration
Here are my recommended calibration steps. The exact numbers may vary depending on your printer. You may need to do a few test drawings to figure out what works best for you.
- Using the prepare menu, home all the axes on your printer. At the end of calibration, it's pretty likely that your Z height will be ~13mm unless you have specified a different home position.
- Using the Move controls on the printer, set the Z axis to ~0.5mm.
- Insert a pen and let it touch the build plate. Turn both screws in the pen carriage to secure the pen in place.
- Lift up on the pen slightly and slide of paper over the build plate. I secure the paper to the build plate with binder clips.
- Using the controls on the printer, you can manually move the head around for a quick test. Another option is to disable the stepper motors and move the gantry and bed by hand. Assuming the lines look nice and solid, your printer is calibrated.
If your pen doesn't make contact with the paper, rerun the calibration steps above but use a slightly higher number on the Z in step 2. 0.7mm or 0.9mm may work better depending on pen and paper thickness. If the paper tears or rips, you have too much pressure on the pen, and you could try 0.3mm or 0.1mm in step 2.
Gcode Generation


Now that the toolhead is attached, the next challenge to overcome is figuring out how to generate gcode files for the drawings you have in mind. There are a few options:
Option A: Normal Slicer
You can try to use your normal 3d printer slicer of choice. The workflow is something like:
- Make an SVG in Inkscape.
- Use CAD software to extrude that SVG to 0.2mm of height and 0.4mm width on any lines.
- Generate the file and run it like you would a 3d printed file.
Option B: CNC Gcode Generators
There are programs that are built for CNC machines that can accept SVG files and generate tool paths. If you use one of these tools, you'll need to modify the spindle/laser commands to move the Z height for your printer instead. This can be tedious.
Option C: Gcodeplot and Similar Generators
I have had decent luck with Gcodeplot for Inkscape:
https://github.com/arpruss/gcodeplot
Gcodeplot is an Inkscape extension that can convert SVG paths and objects to Gcode that is optimized for 3d printers. It's not perfect, but the results are decent based on my testing. The PLTR V2 user guide has some recommended settings that seemed to work well for my tests. See pages 18-29 here.
If Gcodeplot does not suit your needs, there are other options as well like inkscape-grbl. Do some testing and figure out what works for you.
VERIFY GCODE BEFORE RUNNING!!!
If you are using Inkscape or a similar program, make sure to set the document size to the size of your printer bed. In the case of the Ender 3, this should be 220mm x 220mm.
To prevent damage to your printer, I highly recommend verifying any GCode before running to make sure it will not do anything too crazy. I recommend checking the paths in NCViewer. It only takes a minute to do and could prevent damage to your printer from bad GCode.
Attribution
The clock photo in this step came from Peter Markley's Clockworth Repository on Github:
Debugging Gcode
Depending on which method you took to generate Gcode, you may have some debugging work cut out to fine-tune your drawing bot. I highly recommend Pronterface for this task. Pronterface has executables for Mac, Windows, and Linux. You can attach your Ender 3 to your printer via USB and execute commands on the printer directly as well as run snippets of problematic Gcode by loading files.
If you have a spare Raspberry Pi laying around, you might also consider running Octoprint. Similar to Pronterface, Octoprint will allow you to run specific Gcode commands as well as load entire Gcode files. It also allows for monitoring and recording of timelapse videos.
Marlin, the firmware that most Ender 3's run, has reference documentation for all supported Gcode commands: