Designing my first pen plotter from scratch
Recently I really got into sewing and sewed some designs from https://freesewing.eu. While I enjoyed the overall process I really disliked printing the sewing patterns on A4 paper and assembling them into larger patterns by painstakingly cutting and gluing all the pages. I dreamed of owning a plotter that could simply take large rolls of paper and create the designs in one go. A second reason for owning/building a plotter was that I could create large artworks like big signs, maps and so on.
While large format plotters can be had from brands like Vevor for around 300€, I opted to build my own plotter. For the hacker credibility, for gaining mechanical design skills and also for seeing how far I could get without buying any new parts.
I had a large box of old 3D Printer parts, a functioning 3D printer and a lot of free time I could invest and so I set out to build my first plotter.
The goal of the whole design process was to get a working plotter, but the larger goal was to gain experience with mechanical design and plotter design to be able to build a larger better plotter down the line and all sorts of other machines and robots.
Base Design
I opted for a moving paper design in order to be able to plot huge sewing patterns and artworks. (For an exhaustive list of design variants and examples see Matt Widmanns site).
The design is able to move a pen carriage on the Y-Axis. The carriage mounts the pen and has some mechanism to lift it up and down. The paper is moved by feed rollers on the X-Axis giving me a canvas size that is theoretically only limited by the size of the paper roll. Practically of course there will be tracking issues with the rollers and the system will lose precision eventually.
The width of the design and thus the paper that could be used was set by the available linear rods I had for the Y-Axis. The design is able to work with paper up to a width of roughly 30 cm.

Components
Slider / Y-Axis
The Slider for the Pen Carriage was the easiest part to design. I used precision rods, linear bearings and linear bearing holders I still had from dismantling my first 3D-Printer. I used a GT2 Belt I also still had lying around.
To fix the belt to the carriage I used a solution that was a little bit janky. The belts get looped and lock themselves on their own teeth and then get inserted into the 3D printed part at the back of the carriage. Bolts are then put into the loops and the belt is tightened, so the bolts are immobilized by the friction. I tried to design the belt holder in a way, that there would be pieces of 3D printed plastic to stop the belts from moving, but I couldn't get the shape and dimensions right and they always snapped off. For the next design I would of course try to come up with a smarter solution.

To tighten the belt I recreated a tightening mechanism I saw online. Tightening a nut pulls in the part of the mechanism that is connected to the bearing guiding the belt thus tightening it. I printed the static part of the mechanism in two parts, so the part would have optimal strength from the layer lines.

To mount the stepper motor I designed a simple bracket that screws both into the Frame and that the stepper can be bolted on.

Pen Lifter
The Pen Lifter is connected to the Slider and is used to lift the Pen up and down from the paper. I designed two iterations of the Pen Lifter because the first one didn't work out.
The Base Constraint for Both Iterations was that the Pen Lifter must be able to mount a Sharpie and that if the pen is down, it is actually pushed down by a spring. This way the pen doesn't get destroyed or jam the paper if there is some imprecision in the build, but simply moves a little.
First Iteration
For the First Iteration I opted to also use linear bearings to have the pen mount move up and down. Because I didn't have any precision rods that were small enough and also neither tools nor desire to cut the rods I had, I went to the hardware store and bought 8mm aluminium rods. Those I could cut easily.
I designed a system where the rods were mounted to the Slider Carriage for the sideway movement and a smaller carriage for moving the pen up and down was fixed to the aluminium rods. I also placed springs around the rods, to push the carriage down.
I designed a slider-crank mechanism and used a fairly large servo I had lying around to drive it. In the animation below you can see, how the whole thing worked.
The design had several problems. The first problem was many points of slack in the whole manufactured design. The aluminium rods allowed the pen carriage to wiggle in the X/Y-Plane. I also had no bearings for the slider crank mechanism, so there was a lot of play in that part. The other big problem was, that the servo was unreliable. It was not able to consistently overcome the pressure of the springs and lift the pen carriage up.
Second Iteration
Because the whole slider crank design was so unreliable and the servo seemed unusable I bought a new smaller servo and did a new design around that. Because I also realized I can't get away with the types of loose linkages I had used in the first design I utilized small bearings I found in my mechanical parts stash.
The second design is a lever based design. When the servo is not engaged a spring pushes the pen side of the lever down. When the servo engages and pushes on the other side of the lever the pen gets lifted up.
I have the gut feeling people who know basic lever physics might have come up with a better design, I will look into that for the next iteration. But maybe I will also try to come up with a third completly new design.
After all it works and I am happy that I was able to design my first small mechanical system.
Feed System
The Feed System is used to feed the paper through the machine. It is one of the design elements that differentiates this plotter from a classic CNC system like a router or a 3D Printer. Thus I wasn't able to find many reference designs or even off-the-shelf parts and instead had to design the whole thing myself.
The Feed System consists of a motorized Drive Roller that moves the paper and Pinch Rollers, that press the paper onto the Drive Roller.
Drive Roller
I manufactured the Drive Roller from 28mm stainless steel tube. I knew the roller had to be pretty straight in order to work well and the tube seemed suitable. I glued sandpaper to the tube to make it grippy and designed adaptors to mount the tube in my Frame and attach it to a servo.
The sandpaper was cut in a parallelogram shape, so there wouldn't be one straight seam where the paper could slip.

Pinch Roller
The Pinch Rollers need to exert pressure on the paper that is fed through the machine. I designed an arm with two roller bearings that would make contact with the paper and added a spring to exert constant pressure on to the bearings.
I tried to be smart and designed the thing in a sort of flat pack style to save printing time, however that made an already janky design even worse and thus the Pinch Roller is pretty wobbly, hard to orient right and one of the main pain points of the current design.

Frame
In order to keep the whole design cheap, I made the frame out of wood that I got cut at the hardware store. The frame cost me 12€ this way and I could easily add mounting holes using a cordless drill. While I am certain that aluminium extrusions would have been the nicer choice, this frame got the job done and was appropriate for a first design.
Electronics & Software
For motors I used unlabeled Nema 17 Servo Motors I had lying around from my first 3D-Printer. A friend gave me a GT2560 Board with reprap stepsticks for driving those. I also used an Arduino UNO to generate the appropriate signals for the servo motor, because I couldn't get the GT2560 board to do so.
As a firmware I used GRBL Mega and vibe coded an additional command into the firmware, so I could trigger the Arduino UNO to lower and raise the servo.
The plotter is connected to a PC via a USB Cable. I used Universal G-Code Sender for preliminary testing and GRBL-Plotter for plotting.
I ran into a small issue with my pen lifting command. Lifting the Pen takes some time, but GRBL doesn't know about that and simply keeps running through the motion commands after processing the pen lift command. Thus I had to add a little wait command in GRBL-Plotter, so the plotting would be fine.

Running the whole thing and Issues
Running the plotter is pretty straightforward. The paper is fed between the two rollers, the carriage is moved to the outer most point (no endstop yet) and the zero point for plotting is defined. Then GRBL-Plotter does its thing and a design is plotted onto paper. However there are some issues.
One of the main issues I already hinted at is the Paper Drive System. The pinch rollers are wonky, the sandpaper glued to the tube might introduce irregularities and the tube itself might not be mounted completely parallel to the Y-Axis, due to the wood frame construction. All of these issues compound and lead to the paper skewing after roughly 80 centimeters of feed. This may be mitigated in the future by using an aluminium extrusion frame and designing better pinch rollers. I have not found any alternative to my tube with sandpaper approach, but that is also an area that could be improved upon.
Another issue is, that putting the pen in the holder and adjusting it for the right height is fiddly. When it works it works well, but when not done right the paper jams or the pen simply doesn't reach the paper. This is an area that could be improved upon to increase the quality of life when using the plotter.
The last big design mistake I made is that the pinch roller is too far away from the pen. This way the paper can buckle between the pinch roller and the pen and thus make the final result worse. The fix is obvious.
See the plotter working in the video below.
Conclusion / Outlook
Overall I am happy with this first plotter. I proved to myself, that I am able to design and build a mechanical system and I was able to use the plotter to plot some larger designs.
The main thing for the next design would be to make it wider, to be able to plot larger formats. Preferably A0.
For a follow up design improving the feed roller is the main thing. Besides working on the obvious things I mentioned above I believe it would also be nice to have a paper roll holder parallel to the feed roller. In the current design the roll simply lays on the floor.
The Pen Mount was also a pain to use, but maybe simply using a Knurled Screw to fix the pen can fix it. Plotters from the 80s by HP used a voice coil actuator to move the pen up and down, and if one would want to get fancy, a system with a voice coil actuator and a position sensor could automatically home any pen, by simply checking when the pen collides with the paper. However voice coil actuators are not that easy to source and making them also requires new materials and skills.
I would also source a new driver board, that can run pwm directly, so I can forego the added Arduino UNO solution. GRBL seemed like the right choice, but I would somehow need to get my Pen Lift integrated into the motion pipeline to run more efficiently.
Software wise, I would imagine that for a moving paper design it would be wise to minimize large paper movements, in order to minimize drift issues. I could write a little G-Code Generator that takes this constraint into account.
To add new features one could add an optical flow sensor, to measure the drift of paper. However it is unclear how that information could be used and it is probably wise to invest as many resources as possible into building a perfect paper feed mechanism.
Another quality of life feature to add would be one button that simply turns the feed roller one rotation, to easily load paper into the machine.
- ← Previous
Using different shades of fruit as pixels