Mouse-Controlled Pen Plotter

2025

Category: Individual project for a class

I've always thought that it would be interesting to have a printer that used a pen to print your document because it would feel more unique. I've wanted to make a pen plotter like this for a while, so I decided to work on it as my project for ME430 - Mechatronics.
However, building the mechanical components, wiring, and firmware for parsing G-Code (the language of CNC machines) was outside of the scope of the timeline for ME430, so I decided to focus on the circuitry and mechanical design and instead focus on a simple control method.
In my original sketch for pitching the project I planned on using rotary encoders, but I discovered that older computer mice that use the PS/2 connector rather than USB are easy to interface with on an Arduino.

Project Inspiration

After completing the circuitry for the mouse input and motor controller output, I focused on designing the mechanical structure. Using laminated particle board and steel linear rails, I designed the frame to be robust. Before designing the servo actuation mechanism, I ensured that the general structure worked and that the main gantry moved according to the input from the mouse.

The Process

The microcontroller provided for ME430 was the Arduino MEGA 2560. Due to the timeline of the project, designing a custom PCB did not seem feasible - so, I assembled the circuit on a perfboard that acted as a "hat" to sit on top of the Arduino. My first steps for soldering the "hat" were to connect to and verify the functionality of the mouse, then focus on connecting the stepper motor controllers.
On the perfboard, the pin headers connected to the board controlled the stepper motor controllers, mouse, and servo motor, while the power for the stepper motors was provided separately from a 24V power supply.
Once I verified the movement of the gantry, I started the design of the pen actuation mechanism. I found a small linear stage and used it as the base of a rack-and-pinion system actuated by a servo motor. Because there is not much force required to hold the pen onto a piece of paper, and I did not want to add extra bulk to the gantry, I chose to use a MG90S micro servo. This servo motor, coupled with a small gear that meshes with the rack holding the pen, provides more than enough force to hold the pen onto the paper.
Overall, the project was very successful. The pen plotter responded quickly to the mouse movements, and the servo actuating the pen was able to ensure good contact with the paper. The only parts of the machine that I was not able to implement within the time frame of the project was a repeatable method of mounting paper onto the baseplate as well as the implementation of limit switches. However, I think that despite those limitations the mechanism serves as a good stepping stone into the project that I want to make, and I am already working on the next phase of development.

The Result

For the next iteration of the Pen Plotter, I'd like to have it be CNC Controlled. I've begun putting together a schematic and laying out some components for the PCB. In this iteration I plan to implement the limit switches, have a small display on the machine that shows its status, and run on an IC that is a bit faster and has more memory in order to allow for the parsing of more complex G-Code.
Additionally, I plan to add some expandability on the PCB for the future in case I want to add other functionality, like a tool changer. This framework could allow other tools, like a drag knife, to be installed.

Next Steps