Gantry Printer

Purpose

This is one of my more "interesting" projects which I worked on during quarantine from 2020-2021. I was inspired by Michael Reeves who made a "surgery robot" and I wanted to do something similar, just without all the safety violations. With this, I decided to create a printer using a gantry system which would be able to print on bigger surfaces than traditional printers and could potentially be used to substitute hand written work. (I'm not saying that I've been using robotics to cheat in classes, but I can emulate handwriting with this)

Process

CAD - Designing

By far the most important process of the engineering design process that I learned is to ALWAYS have a design created in CAD prior to working with physical material. In previous projects, I would often have an idea in mind and jump immediately to sourcing materials and assembling which would often result in me getting stuck on certain issues and never creating a functional product. With this project, I was able to model my idea prior to working with physical materials which ensured that I would have a functional prototype. 


Assembly

After I was satisfied with the CAD model, I moved on to assembling the robot. I had to get rather creative at times when sourcing my materials, much of which came directly from my bed frame. I opted to use stepper motors to power the robot because of its precision and relatively simplicity to use. For the microcontrollers, I decided to use two Arduino Uno boards which served as the bridge between my python code on my laptop and the motor controllers. Assembly was a particularly difficult part of this project because I lived in an apartment and did not have access to any power tools at the time. This meant that everything had to be done with either a handsaw or a screwdriver. 

Programming

For this project, I mainly programmed in Python and Arduino and utilized the serial port as a way of communicating between my computer and the embedded system. My Python code served as a "backend" where a user could upload an image which would be transformed into a series of commands which would be sent to the Arduino microcontrollers. The Arduino code was programmed to receive these actions and drive the motors accordingly. An extremely important but frustrating barrier that I faced while working on the code was making sure that both motors were synced. Due to limitations with the Arduino microcontrollers, each board could only drive one motor which meant that I needed to make sure both boards were always synced. If either board was off-sync, there would be delays in when each motor moved and would cause issues with my design which required both motors to move simultaneously. 

Demonstration

First Test

This shows me testing the printing functionality on a block of wood (that came from my bed frame).

Fully Functional

A short video showing the printer in action with a low PPI (pixels per inch) image.

Result

The end result of the second video. This took about 5 minutes to print.