Introduction: Building a 300mm Big Size Ultimaker Style 3D Printer

About: I am a maker-designer.

Hi, makers!

I am glad to share all the design features and the assembly process of the ‘Atomic U300’, a 300*300*300mm size Ultimaker Style 3D Printer.

I hope this tutorial will be helpful to you, especially for those who want to build her/his own 3D printers, to understand the full process of 3D printer building.

And I believe there are useful design items in this project, such as Ultimaker Style Printhead for E3D V6, brackets for 2020 aluminum profiles, and dual Z-Axis gantry brackets. So if you are interested in 3D printing, this tutorial will give you a fun experience.

I designed all 3d models with Autodesk Fusion 360. Fusion 360 was an excellent tool for me to complete this project. I provide all the design components such as parts list(BOM) and the STL and STEP files.

And also, I made video tutorials of all the assembly processes for each step of this instructable. I tried to explain all the details of the design characteristics and assembly process.

Design Purpose

The design purpose of the ‘Atomic U300’ project can be summarised in two ways.

The first objective was to make a 3D printer with bigger printing volume and smaller machine size. I wanted 300*300*300mm size build-volume in an as small frame size as possible.

And the other is to utilize open-source and off-the-shelf components. The original ‘Ultimaker 2’ has particular design specifications. The controller board is a specially designed component that uses 24-volt electronics. And the filament size is also another big difference from other 3D printers. Ultimaker uses a 2.85mm filament system in contrast with 1.75mm filament that most of FDM 3D printers use. So I wanted to develop a 12V RAMPS based ‘Ultimaker Style 3D printer’ with 1.75mm filament for more compatible and expandable design.

So, I made design principles and objectives as follows.

  1. Cost under 600$
  2. Build volume 300*300*300mm with minimum machine size
  3. Utilize the most popular RepRap based parts
  4. Easy to upgrade and change parts

Previous designs inspired me to start this project.

• You can find all the open-source files about ‘Ultimaker 2’ on GitHub.

• In May 2015, ‘jasonatepaint’ introduced his ‘Ultimaker 2 Aluminum Extrusion Clone’ on You can check this at

• A modified design from ‘Ultimaker 2 Aluminum Extrusion Clone’ by ‘CorrugatorSupercilii’ in December 2015 uses RAMPS 1.4 board as the main controller.

• ‘HyperCube Evolution’ by ‘SCOTT_3D’ introduced in April 2017 is a ‘CORE XY’ mechanism 3D printer. Although it is not an ‘Ultimaker’ style 3D printer, there are lots of useful design tips in 3D printer designs.

Key Features

‘Atomic U300 3D Printer’ has key features as follows.

(1) Ultimaker style XY-Axis: Crossed XY printhead linear shaft, closed-loop belt

(2) Bigger build volume with smaller frame size compared to other 3d printers:

300*300*300mm printing volume with only 420*420*500 frame size

(3) RAMPS-Based Fully Open-sourced Electronics: Maximizing compatibility by adopting RAMPS 1.5 board with the 12-volt power system and 12-volt heated bed and other off-the-shelf components

(4) 1.75mm Filament Extruding System: Lower cost and higher compatibility

(5) E3d V6 Hot-end Parts: Maximizing compatibility and low cost

(6) Belt-Drive Dual Z-Axis: Providing longer moving distance and more stability of Z-Axis at the same time.

(7) Z Probe Sensor & Auto-Leveling: Higher usability and easier maintenance

Components Diagram of Atomic U300 3D Printer


You can check the BOM and 3d-printed parts list in the links below.



I attached the design files in corresponding 'Steps'.

Step 1: The Frame

The main structural feature of Atomic U300 is an open frame with aluminum extrusion profiles, whereas the original Ultimaker 2 has a closed case made of aluminum composition panel.

The aluminum extrusion profile is not only less expensive but also easy to expand and modify.

  • Left: The Original Ultimaker 2+
  • Right: Atomic U300

The Size of the frame is 420 * 420 * 500mm. I think this is nearly a minimum size to print a 300 * 300 * 300mm object.

The table below shows the higher build volume ratio of Atomic U300 design.

For more efficient assembly, I designed a 3way corner bracket for the bottom of the frame. This 3way corner bracket makes it easier to assemble three aluminum profiles in a perpendicular position to each other.

The assembly of the frame starts with bottom corner brackets. Next, fastening inner brackets and corner brackets of the topside.

You can see all the details of the frame assembly process in the following video tutorial.

Step 2: X-Y Axis Mechanism

The Ultimaker's mechanism of the XY axis movement is genius. I hope you can understand the characteristics of the Ultimaker-style X-Y axis movement after reading this step.

XY Axis Brackets

In the original Ultimaker 2 design, the case panel has holes for ball bearings. Each hole holds a ball bearing for a linear shaft inside.

The jasonatepaint’s ‘Ultimaker 2 Aluminum Extrusion Clone’ introduced a separate XY-Axis bracket. This bracket holds a ball bearing inside. Because attached under the 90- degree angle corner, it consumes some space of X-Y axis motion length.

  • Left: Original Ultimaker 2 - Ball bearing and a bearing hole in the panel
  • Right: ‘jasonatepaint’s ‘Ultimaker 2 Aluminum Extrusion Clone’ - Bracket for the ball bearing

I designed a new bracket for the XY-Axis ball bearing in a space-efficient way. By the side attaching design, these new brackets can be much smaller and also work as corner joint brackets.

And by this design, I could shorten the distance between the frame and the linear shaft.

In the following video tutorial, you can learn how to assemble the XY axis brackets.

XY Axis Linear Motion Parts

I think the closed-loop timing belt is very crucial to the stability of the XY motion system. After some research, I found out the optimal length of the GT2 closed loop timing belt available in the market. As in the BOM files, it is the 760mm GT2 closed loop belt.

For the sliding block, Atomic U300 uses the original Ultimaker 2 sliding blocks. You can easily find these parts in many online stores.

I used shaft lock collars to fix the position of the linear shafts, as you can see in the picture below.

The following video instruction shows how to assemble the Ultimaker 2 sliding block in detail. And then explains the Ultimaker XY axis mechanism and full assembly process.

I think this tutorial is the only video instruction for assembling the Ultimaker 2 XY-Axis linear motion parts.

If you are interested in building a DIY 3d printer or learning the mechanism of 3d printer, this tutorial will be helpful for you to understand it.

Step 3: The Printhead

I spent a lot of time and effort in designing and improving the new Printhead because most of the 3d printing quality depends on the Printhead. And also, the design of the Printhead affects the moving distance of the X-axis and Y-axis. And it restricts the X and Y printing size in the same frame length. I had redesigned and fine-tuned the Printhead design more than ten times.

At the beginning of the design, the ‘HyperCube Evolution’ by ‘SCOTT_3D’ gave me an inspiration for a hot-end attaching structure. On that base, I added design elements one by one: linear bearing carriages, cooling fan holder, Z-Probe holder, and wire-organizer on the top.

I deliberately separated the X-Axis and Y-Axis bearing carriage to minimize the support structure when 3D printed. And as you can see in the picture below, I positioned the hot-end cooling fan inside the Printhead to minimize the width of the Printhead.

  • Left: CORE-XY Style Printhead of HyperCube Evolution by SCOTT_3D
  • Right: Ultimaker Style Printhead of Atomic U300 by MakeTogether

I believe that this is one of the most compact Printhead design for the Ultimaker style mechanism.

In the following video tutorial, I will show you how to assemble a newly designed Ultimaker mechanism Printhead for E3D V6.

Step 4: XY Motor Bracket

For the Ultimaker style XY mechanism, you should connect the X and Y motor to the linear motion shaft with a closed-loop timing belt. So we need brackets to attach the XY motor onto the 2020 profile frame.

I designed a bracket for XY Axis motor. X and Y motors use the same bracket. You can apply this bracket design in other projects when you connect NEMA 17 stepper motors to 2020 profile frames.

  • Left: Stepper motor and the motor bracket
  • Right: Motor and timing pulley connected with 200mm closed-loop GT2 timing belt

By locating the XY motors outside the frame, I could minimize the X and Y frame size.

Because the timing pulley is linked to the motor outside of the frame, a longer linear shaft, 450mm, is needed. And also, the backside X-Axis and Y-Axis bearing brackets are modified to give a little space for the timing pulley outside.

The following video will show you how to assemble and attach the XY motor brackets.

Step 5: Z-Axis Gantry

The key features of the Z-Axis gantry design of the Atomic U300 are dual Z-Axis and belt-drive lead screw system.

Dual Z-Axis

Each side of the dual Z-Axis gantry has three brackets that hold two linear shafts and one T8 lead screw. And all the left and right side components are 100% symmetrical.

I designed all the brackets as an integrated body to prevent any distancing error for the two linear shafts.

Electronically, I chose to operate the dual Z motors in parallel mode. And for this purpose, I used a 'Dual Z motor adapter' when wiring the Z motors to the RAMPS 1.5 board.

  • Above: Dual Z motor adapter

The Belt-drive Lead Screw System

Before I developed a new belt-drive connection for the Z-Axis motor and the lead screw, I tested two types of methods for connecting the motor and T8 lead screw.

The more popular type is using a coupler. It is cheaper and more versatile. You can link any length of T8 lead screw to the motor. Another type is using a T8 lead screw integrated stepper motor. This integrated motor provides ultimate stability. But there are only a few options in the length of the lead screw. So printing height can be restricted by the length of the integrated stepper motor on the market.

  • Left: Stepper motor connected with T8 lead screw using a coupler
  • Right: Stepper motor with an integrated T8 lead screw

In addition to these shortcomings, the height of the motor itself consumes the Z-Axis movement distance in both cases. So there is a waste of space in machine height.

So I developed a new synchronization mechanism with a closed-loop timing belt. I designed an integrated bottom bracket that holds the T8 lead screw and stepper motor. And the lead screw and motor are linked with a 110mm closed-loop belt. The most challenging thing is to make a simple and sturdy structure for securing the T8 lead screw rotation. For this purpose, I used timing pulleys, ball bearings, and shaft lock collars.

  • Left: The belt-drive connection for the stepper motor and T8 lead screw
  • Right: The mechanical parts securing the T8 lead screw

The following video tutorial shows how to build this belt-drive dual Z-Axis bracket system.

Attaching the Dual Z-Axis Gantry

For the bottom and the top brackets, attaching at the exact position is critical to the printing quality. So I designed position-marking jigs to locate the brackets on the precise point.

In the picture below, you can see the position-marking jigs in red color.

The mid bracket works as a carriage for the printing bed. The two aluminum profiles between the mid brackets form a printing bed frame.

I used a 380mm 2020 aluminum extrusion profile as a frame to attach the top bracket onto it.

In the following video instruction, you will see the attaching process of the gantry brackets in detail.

Step 6: The Electronics – Controller

Every 3d printer has an electronic controlling system like your laptop computer or an ink-jet printer. And the 3d printer controlling-system consists of a few sub-modules.

As follows, I summarized the specific components that I selected for these sub-modules.

  • Main Controller Module: Arduino Mega + RAMPS 1.5 + DRV8825
  • Display module: 12864 Full Graphics Display
  • Power supply: 12V-30A SMPS(switched-mode power supply)
  • Stepper motor: Nema17 HS4401
  • Extruder: E3D V6 clone + E3D Titan clone
  • Heated bed: 310mm *310mm aluminum heater bed(12V, 15A)

In the video tutorial below, you can learn about the electronic components for Atomic U300 3d printer.

Power Supply Module

Before you buy a power supply unit, you should know the total electric power that your 3D printer consumes, and there should be a little headroom for safety. For the Atomic U300 printer, I calculated the minimum current, 20 Amps, and I chose a 360 Watts(12V, 30A) SMPS.

And you NEVER wire the 310mm heated bed directly into the RAMPS board. Because the heated bed terminal of the RAMPS board can only handle less than 11A, you will burn it down if you directly connect the 15A consuming 310mm heated bed. You must use a power expansion module for the 310mm heated bed. I explain more detail about this in the next chapter.

I attached the power supply to the backside frame of the printer using a 3D printed attaching bracket.

The video instruction below will show you the wiring process of the 360-watt power supply module and the main power switch.

Main Controller Module

You need three separate electronics parts for the main controller module: the Arduino Mega, RAMPS board, and the DRV8825 stepper motor driver chipsets. You can check these parts in the picture below.

The RAMPS 1.5 is an upgraded model from the RAMPS 1.4. It is not only visually more compact but also electronically more stable than 1.4 version.

For the stepper motor driver, I prefer DRV8825 to A4988 because DRV8825 provides more reliable printing output and makes less noise than A4988.

The current setting for the driver is complicated and also critical to the overall performance of the 3d printer. You will understand this process after watching the following video tutorial.

I designed a frame-attachable case for the main controller module. You can use it for any other 3D printers if you use the 2020 aluminum profile frame and the RAMPS board.

This case has a power switch and a cooling fan for the RAMPS 1.5 and DRV8825 chips. The cooling fan is connected to the power line directly and so continuously running.

Display Module

I chose the ‘128*64 Full Graphic Smart Display’ module. You should download, install, and activate a library file,'U8glib.h', into your Marlin firmware. If you don’t install this library file, your Arduino cannot recognize this display module. You can check this in the Marlin firmware configuration in Step 9.

For the 12864 LCD, I designed a case-bracket package. You can use this case design for any other 3d printers which use the 2020 extrusion profile frame.

Limit Switches for XY End Stop

For X and Y-Axis limit switch, I picked a horizontal version because it can maximize the movement distance of the Printhead. Make sure that you should use the upper side model in the picture below.

In the video tutorial below, you will see the assembly process of the main controller, power supply, and 12864 LCD module.

Step 7: The Electronics – Heated Bed

I use a 310mm * 310mm aluminum heated bed that has 12V heater wire inside.

There are two ways of wiring the heated bed. One is to solder four wires directly to the terminal of the heated bed. Another method is to use a 4-Pin connector. There is no difference in performance.

  • Left: Wires directly soldered to the terminal
  • Right: Ch3.96 4-Pin Power Connector soldered to the terminal

To attach this heated bed, I use supporting brackets and adjustment spring sets.

In the left picture below, you can see the bed brackets on four corners.

There are many materials for enhancing the adherence of the printed object to the heated bed: blue paper tape, Kapton tape, and glues. In my experiences, the ‘Original BUILDTAK bed sticker’ shows the best performance and durability. So I use a 304mm * 304mm BUILDTAK bed sticker.

When you use a 310mm * 310mm heated bed, which draws 15A of electric current, you MUST use a Power Expansion Module. Because the heated bed terminal of the RAMPS 1.5 board can handle only 11A of current, you will burn the RAMPS 1.5 board If you wire the heated bed directly to it.

The power expansion module makes an electrical connection between the power supply and the heated bed. And a power switching transistor(MOSFET) on this module will be controlled by the electrical signal from the RAMPS board. This power expansion module can provide 30A of electric current. I designed a bracket for this module to attach to the 2020 aluminum profile.

  • Left: The Power Expansion Module
  • Right: Wired Power Expansion Module attached to a bracket

The video tutorial below will show you how to wire and attach the 310mm heated bed.

Step 8: The Electronics – Hotend and Extruder

The Printhead of the Atomic U300 holds ‘E3D V6’ style hot-end, 50mm cooling blower, and a Z-probe inductive sensor. I fine-tuned the design to maximize the movement distance of the Printhead along the X and Y-Axis linear shafts.

Z-Probe and Auto-Bed-Leveling

I included the ‘Auto-bed-leveling’ function in the Atomic U300 3D printer. To activate the auto-bed-leveling, you should use a kind of Z-Probe. I use an inductive distance sensor. It will be more convenient if you choose 5V NPN type because the 12V type needs more complicate wiring works.

For Z-Probe and auto-bed-leveling, you should carefully configure the Marlin firmware. I summarize it in Step 9.

The following video tutorial will give you instructions for assembling the Printhead with hot-end, cooling fan, and Z-probe sensor. And for wiring them to the RAMPS board.


There are two types of extrusion mechanisms of the FDM 3D printer. One is the ‘Direct’ extruder system in which the set of a stepper motor and extruder gear is mounted on top of the Printhead. So the Printhead weighs more and moves slower than the other method, the Bowden extruder. In the Bowden extruder system, the motor and extruder gear set is remotely located and pushes filament through a long and thin PTFE Bowden tube.

  • Left: Direct extruder system of Prusa i3
  • Right: Bowden extruder gear set of Ultimaker 2+

Ultimaker style 3D printers use the Bowden system to make the Printhead lighter because it can print faster if it is lighter. But the Bowden system can cause severe trouble in 3D printing, such as jammed filament. The root cause of the Bowden system troubles is unstable, or insufficient power resulted from an indirect long-range pushing mechanism.

The key is to adopt a more powerful and robust extruder gear set. After I had tested various kinds of gear sets on the market, I chose a clone of E3D Titan extruder gear. E3D Titan extruder multiplies the motor power three times by utilizing the ‘3:1 ratio’ gear system.

I attached the extruder at the front side of the printer because it is more convenient for handling filament.

In the following video instruction, you can learn about the ‘E3D Titan’ style extruder. The parts list, the assembly process in detail.

Step 9: The Firmware - Marlin Configuration

For RAMPS 1.5 board, you should customize and upload the ‘Marlin firmware’ with the Arduino IDE. It is not necessary to learn the Arduino coding or C++ language. However, it will be helpful if you know the basics of the Arduino.

In this chapter, I share all the customization items for the Atomic U300 3D printer. For the ‘Atomic U300’ 3D printer, I changed several items in ‘configuration.h’and ‘configuration_adv.h’ file. The tables below summarize those configurations. For a more detailed explanation, I will make another tutorial later.


Marlin Firmware Files

You can check the configuration setting list in the link below.



Step 10: Wiring Completion and Test Printing

The final component for making the ‘Atomic U300’ 3D printer is a filament spool holder. The filament spool holder looks very simple, but it can be a source of printing troubles if not correctly designed. If the spool holder does not rotate smoothly, it may add a burden on the extruder. So the design and the position of the filament spool holder are also essential.

Test Printing

I fine-tuned all the details of the printer to print a 300mm diameter circle with 2mm ‘SKIRT’ outside. A ‘304mm * 304mm’ print-range is realized.

I printed a 300mm-wide lamp shade for testing. As you can see in the picture below, there is no adhesive structure on the bottom.

The biggest challenge in setting 300mm wide printer is securing the flatness of the heated bed surface. The auto-leveling of the ‘Marlin’ firmware is not perfect for that. So I tried to adjust the bed spring to minimize the bed level differences among the leveling points.

My purpose in writing this tutorial is to share the experiences from the design and development process of the ‘Atomic U300’ 3D printer, a big size, affordable Ultimaker 2 style 3D printer. Especially, for someone who wants to build his or her 3D printer, I hope this tutorial can provide more detailed explanations about RepRap Open-source 3D printers.

Thanks for reading this tutorial and watching the videos.