3D Printer

The 3D printer was based on a Core-XY design, where the print head moves in the X and Y direction and the print bed moves in the Z direction. The gantries are largely 3D printed and move along rods with linear bearings. It’s controlled from an Arduino Mega and a RAMPS shield with Repetier firmware, using Cura Engine as a slicer to generate G-code.


Anthony Z.

Area of Interest

Mechanical Engineering


UC Berkeley


Incoming Freshman

Reflection/Bill of Materials

Overall, I learned an extremely large amount from BlueStamp. Through working hours on firmware and electronics, I now have much more confidence in working on projects from their initial prototyping to a final product. Furthermore, I’m grateful to now have the skills necessary to pursue and build any of my future projects.

For any future reference, a full BOM can be found here: https://github.com/Anthonyyzhou/3DprinterBOM

It includes 3 seperate models, with V3 being the most cost-effective and BOM that I used in the end.

Final Milestone

For my third milestone, I combined both the electrical and hardware aspects of my 3D printer. Through running Marlin and using Cura as my slicer, I was able to finally finish a print. I printed an XYZ cube to calibrate X, Y, and Z steps/mm and printed a hollow cube to calibrate E steps. I also calibrated my extrusion multiplier. 


Some issues that I had to overcome were layer shifting on the prints and motors jittering a lot. I fixed these by adjusting the voltage limiter and acceleration settings on my printer. Furthermore, I had issues with homing, and eventually fixed those by swapping firmwares from Repetier to Marlin and moving my endstops to the left side of my X gantry. This helped to solve a problem with mirroring about the X axis. 


Second Milestone

 My second milestone was definitely more complicated than my first. It involved wiring stepper motors, endstops, an inductive sensor, a power supply, fans, and a hotend to my RAMPS/Arduino Mega board. Furthermore, I had to install firmware to eventually run 3D prints on, although it is possible to run motors and other devices through simple Arduino programs. With my current setup, I can run motors and devices off of my LCD display or Repetier-Host.


A few challenges I encountered were the onboard voltage regulator on the Arduino Mega could not handle the 12V from the PSU, so I had to desolder that and put a lm7805 voltage regulator on. Furthermore, I had to adjust the current limiting on my stepper drivers to allow enough amps to my motors. Most of my time was spent reading through firmware and debugging settings and motor speeds.

First Milestone

For my first milestone, I assembled most of the X, Y and Z gantries. I left out many of the electronic components such as the heated bed, the endstops, the hotend, the fan, and most of the motors since I need to test those separately in my electronics setup. Furthermore, since I did not add most of the motors, I did not rig the belts up for the system so the three gantries are all free-moving. The X-gantry consists of a 3D printed carriage that holds linear bearings and provides mounting for a hotend and fan. The Y-gantry consists of 2 carbon fiber rods and 2 joiner pieces that allows the X-gantry to move. The Z gantry consists of a lead screw and 2 steel rods upon which an aluminum extrusion bed moves on. The heated bed will later be mounted to this base.


The most challenging aspect of the assembly was likely leveling the print bed and solving issues with the X gantries binding. The linear bearings for the X axis would often bind on their carbon rods due to being oriented slightly off-axis, Furthermore, if the rods were too close or too far apart or too close together, they would press against the walls of the linear bearings and bind. In leveling the bed, the flex coupler posed issues in aligning the bed. Furthermore, the linear bearings had to be on the same line as the brass nut, which was difficult to align.

Starter Project: The Temperature Sensor

The starter project I chose used an arduino to control a temperature sensor and display the current temperature on an LCD display. The temperature sensor has 3 pins, one for input voltage, one for ground, and one that outputs voltage based on the current temperature. It connects to an analog port that reads a value between 0 and 1023 based on the output voltage of the temperature sensor. This value is then scaled, with 0 being 0 degrees celsius and 1023 being 100 degrees celsius, which is according to the manufacturer. 


A potentiometer also connects via an input and ground pin, and a third pin outputs voltage based on how a knob is turned. This pin is connected to the contrast pin on the LCD, which lets the user to control how bright the LCD is displaying by turning a knob. The LCD is also connected via an input and ground pin, and digital pins tell the LCD certain settings related to its read/write mode and enabled/disabled mode.

STEM Summer Camps Coding & Robotics Classes For Kids San Francisco Coding & Robotics Classes For Kids New York Coding & Robotics Classes For Kids Denver Coding & Robotics Classes For Kids Palo Alto STEM Summer Camps For Kids in New York STEM Summer Camps For Kids in Palo Alto STEM Summer Camps For Kids San Francisco STEM Classes For Kids in New York STEM Classes For Kids in Palo Alto STEM Classes For Kids in San Francisco Code Classes For Kids Code Classes For Kids in New York Code Classes For Kids in Palo Alto Code Classes For Kids in San Francisco STEM Summer Camps For Kids

Leave a Comment

Start typing and press Enter to search

Bluestamp Engineering