3D printers have become incredibly cheap, you can get a fully workable unit for $200 – even without throwing your money down a crowdfunded abyss. Looking at the folks who still buy kits or even build their own 3D printer from scratch, investing far more than those $200 and so many hours of work into a machine you can buy for cheap, the question “Why the heck would you do that?” may justifiably arise.

The answer is simple: DIY 3D printers done right are rugged workhorses. They work every single time, they never break, and even if: they are an inexhaustible source of spare parts for themselves. They have exactly the quality and functionality you build them to have. No clutter and nothing’s missing. However, the term DIY 3D printer, in its current commonly accepted use, actually means: the first and the last 3D printer someone ever built, which often ends in the amazing disappointment machine.

This post is dedicated to unlocking the full potential in all of these builds, and to turning almost any combination of threaded rods and plywood into a workshop-grade piece of equipment.

Taming Shaky Frames

The age of the shaky Mendel threaded rod frame is long over, it has been replaced by the age of shaky single-sheet Prusa i3 frames. Decent printing results require a darn sturdy frame, so add brackets and stabilizers wherever you can.

If you’re building a cube-style printer from aluminum extrusion, use angle brackets to stabilize the frame. If you’re building a Prusa i3 variant, make sure you’re either getting a frame with stabilizers or add stabilizers later. If you’re building a classic Mendel, add stabilizer boards to the cross struts.

Facing 3D printed parts

PLA is a horrible material choice for the 3D-printed portion of a DIY 3D printer, first for it’s low melting point, and second for its brittleness. Almost any material will perform better, but at least ABS parts can last forever. Print them really hot – at least 255 °C to get a good layer adhesion and they will never fail on you. Nevertheless: Always keep a set of spares, because you can. It needn’t be a 3-pack.

Yet, the absolute accuracy and surface quality of 3D printed parts isn’t generally as polished as the aluminum extrusion and sheet materials they attach to. When you attach a 3D printed part to a flat surface using screws, you have basically two options to get a solid connection: Make the screws very tight – which almost always breaks the 3D printed part – or use a fine grit sandpaper to flatten the contact surface of the 3D printed part to get a good contact between the two. Once the screws apply a reasonable amount of pressure, the static friction between the two surfaces takes over and provides a high resistance to shearing forces.

Unsanded left, sanded right, belt holder for Prusa i3. The static friction between flat contact faces provides higher resistance to shearing forces. Unsanded left, sanded right, Z-motor mount for Prusa i3 rework.

Drive systems

In conjunction with a rigid frame, both belt drives in various configurations (except for the H-bot) and spindle drives can achieve a repetitive accuracy that exceeds the requirements of FDM in the X and Y direction by magnitudes. However, the quality and longevity of any drive system depends a lot on the quality of the involved components. Eccentric pulleys or couplings, as well as components that introduce backlash, are the most common pitfalls here. Grinding belt teeth can cause vibrations, so make sure all belts are running in the center of their pulley and idler tracks. Use flanged idlers or at least washers to prevent the belts from rubbing against other parts of the printer.

Eccentric, wobbly, low-quality GT2 pulley with backlash (left) / high-quality GT2 pulley (right) Flex couplings (upper right) work just fine, but their flex affects the positioning accuracy. Cardan joints (bottom) compensate for small offsets without flexing.

For the Z-axis, it’s worth mentioning that the quality improvement you may expect from a stepper motor with integrated ACME lead screw shaft over the common threaded-rod-on-a-flex coupling solution is pretty insignificant – even in terms of longevity. Stainless steel M5 threaded rods in the Z-axis allow for great printing results and last for many years, even when exposed to the steady stress of auto bed leveling. In this case, the budget solution may be good enough. Of course, large and heavy printer assemblies do indeed require proper leadscrews.

Linear guides

As long as your build doesn’t exceed the typical size and weight of a desktop 3D printer, avoid using linear ball bearings in the X and Y axis, as they are a very common failure point. Their quality varies greatly depending on the manufacturer, and even if the cheap shot works seemingly great in the beginning, they won’t last for long. 3D printed plastic debris and even fragments of their own assembly will sooner or later cause them to block. Tribological, polymeric slide bearings are the way to go here. They are self-lubricating, maintenance-free and virtually last forever, at least by the standards of linear ball bearings. They are also available in Japan standard compatible form factors as drop-in replacements for the commonly used LM8UU.

The LM8UU and its tribological counterpart Two Prusa i3 rework X-carriages in comparison: LM8UU (left) and polymeric slide bearings (right) Instead of two LM8UU, one LM8LUU is often the better choice.

Don’t use multiple linear bearings in line to increase the angular stability of a carriage. There are prolonged versions available for almost every linear bearing type , for example, use the LM8LUU form factor instead of two LM8UU.

Motors and drivers

Even if you’re on a budget, think about using stepper motors with a 0.9° step angle instead of 1.8° for the X and Y axis and for any ungeared extruder. They will probably cost you $2 or $3 more a piece, but they double your mechanical resolution, which can be extremely visible. Microstepping is great for reducing vibrations, but – contrary to popular belief – does not increase the effective printing resolution. The following images of Yoda heads show the quality difference quite clearly. They are printed at 0.1 mm layer height on the very same Prusa i3 from the very same G-Code — the only difference is the physical step angle of the motors.

0.9° stepper motors, 8x microstepping, 3200 pulses/rev, 80 pulses/mm 1.8° stepper motors, 16x microstepping, 3200 pulses/rev, 80 pulses/mm

0.9° stepper motors, 8x microstepping, 3200 pulses/rev, 80 pulses/mm 1.8° stepper motors, 16x microstepping, 3200 pulses/rev, 80 pulses/mm

The rated current of your stepper motor drivers must be able to deliver the rated current of the stepper motors, as the stepper motors will only deliver their full torque at that current. Leave a margin of 20% to prevent constantly maxing out your drivers. Even if some retailers ship Pololu-style driver modules (i.e. A4988 and DRV8825) with (wrong-sized) heatsinks and thermal adhesive pads (of questionable quality), these heatsinks usually do more harm than good. Leave them out and stick to the 20% current margin, and you will always get the full torque.

Besides that, don’t wire multiple stepper motors to a single driver, especially the tiny Pololus. If you can’t get your hands on a proper port duplicator with buffer capacitors for each driver, a cheap and fully useable workaround is soldering female headers to one Pololu driver, add male headers for the motors, and backpack a second on top of it.

Controller Board

The particular choice of 3D printer controller board mostly depends on your individual requirements in terms of pure functionality. If you want a plug and play machine that works every time in any environment, avoid clones of Arduino based boards or other products that use cheap usb-to-serial bridge replacements, such as the CH340/CH341. They may eventually work, but long term plug-and-play driver support for all major operating systems might be something that’s worth paying for since it eventually becomes part of the user experience.

Thermistors And Thermocouples

Know your components and only use temperature sensors that come with a trustworthy datasheet. Otherwise, the measured temperature will just be a slightly better guess. Make sure the sensor has a good thermal coupling to the heated bed or hotend heater block to allow the temperature controller to keep the temperature steady. Thermal compound is the way to go here. NTC Thermistors typically don’t survive temperatures above 300° C required to print some engineering plastics, you’re locked in with thermocouples. Besides that, whether you measure the temperature of the heated bed and hotend with an EPCOS NTC, a Vishay NTC, a Semitec NTC or a welded tip K-type thermocouple does not necessarily matter, they are all accurate enough.

LCD Controllers

An LCD controller with SD-card reader turns your 3D printer into a stand-alone factory. The classic RepRap Discount SmartController with a non-graphical display will absolutely do for most configurations. There are clones around that work just fine when used with the provided RAMPS adapter, but some of them have their connector column flipped 180°, so pay attention when you hook them up to boards with dedicated EXT ports for the display panel, such as the RUMBA.

The click-and-scroll menu most firmwares provide for the common LCD controllers may be a bit cluttered and dissatisfactory to use, but that can be fixed quite easily and we’ll cover that later in this post.

OctoPrint

A Raspberry Pi loaded with OctoPrint, maybe even with an LCD touchscreen, greatly improves the usability and productivity over the sparse LCD controller. It lets you send G-Code directly from the slicer to the printer over the air and allows you to conveniently control your printer through a pleasant user interface. However, it does add several failure points to the machine. While the SPI connection between the SD card and the microcontroller is pretty much bullet proof, you will almost certainly experience a frozen Raspberry Pi or a hung OctoPrint sooner or later. It’s still rare, but if you are using OctoPrint to stream G-code to the printer, make sure you add

M85 S30; activate 30-second idle timeout

at the very beginning of your start G-code to activate the idle timeout and

M85 S0; deactivate idle timeout

at the very end of the end G-code to deactivate it again. The 30-second timeout will kill the printer and shut off all heaters in case the OctoPrint host freezes or otherwise stops sending commands before the print finishes as scheduled.

Hotend

ABS layer bonding at 280° printing temperature is strong as hell and makes printing large, tough ABS models without cracking and warping on the first attempt a breeze. Full metal hotends are the way to go here, as PEEK insulators and PTFE liners that reach down to the melting zone start degenerating at much lower temperatures. So, use a full metal hotend and at least a 40W cartridge for fast heatup time. Make sure the hotend sits rock-solid in it’s mount on the print head.

Extruder

Bowden extruders do have a certain backlash, but that’s not necessarily a problem when printing ABS, PLA and Nylon. Yet, the 1.75 mm variants of flexible materials such as (insert distinctive term here)Flex are pretty much incompatible with Bowden extruders and at best extremely troublesome. If you’re planning to work with these, use a direct drive extruder. Even when using a direct drive extruder, make sure the filament is delivered to the extruder through a Bowden tube that is safely attached to a tube fitting on the spool holder. Setups, in which an extruder on a flimsy linear guide pulls the material right off the spool typically deliver poor results as the pulling force unpredictably deflects the print head during the print.

Most 3D printed extruder assemblies, such as Wade’s extruder or AirTripper’s Bowden extruder work just as well as the more expensive ones you can buy. The most important factor for the consistency and reliability of the extrusion is the drive gear. Go for a high-quality, hardened steel drive gear or hobbed bolt, with sharp teeth and good grip.

Heated Bed

Long heat up times are a productivity killer, and to reach the temperature fast – within 3 minutes or so, a regular PCB heated bed needs to have a power density of about 1+ W/cm2 (6.5 W/in2). To reach 110° (230 °F) under normal conditions at all, a heated bed should deliver a minimum power density of about 0.3 W/cm2 (2 W/in2). If you want to print materials like ABS, that require a high bed temperature, take the necessary wattage of the heated bed relative to its size into account.

Single sided PCB heated beds tend to breathe up and down, due to the non-uniform thermal expansion of the copper traces and the board material, which can result in a surface finish that is affected by banding patterns. The animation shows the issue quite clearly:

Since high-quality prints rely on a Z-positioning accuracy in the tens of microns, even minor temperature fluctuations can cause a single sided PCB heater to introduce unwanted artifacts. Use double sided PCB heaters or other alternatives that don’t suffer from this issue (i.e. silicone heater mats attached to a solid slate of aluminum), along with a well-tuned PID control loop.

Modern heated beds, such as the Prusa MK42, achieve a more uniform temperature distribution by compensating non-uniform heat losses with a non-uniform power density, which helps a lot with making large structures stick to the build plate in its corners. In any case, always use a thermal cutoff fuse attached directly to the center of the bottom side of the heated bed.

The heated bed must be mounted rock-solid to the frame or carriage it rests on. Don’t use loose adjustment screws with wobbly springs to mount them, as they will seriously affect the printing quality. Ideally, bolt the heated bed down as straight as possible and use auto bed leveling for the fine adjustment.

Enclosed build chamber

Enclosing your printer in a box prevents draft and the retained heat allows you to print larger objects from ABS with fewer distortions. The enclosure itself can be anything from a large enough box or a beautiful acrylic printarium. As long as the heat stays inside, it will just work. Keep the electronics of your printer outside the heated build chamber to prevent overheating of the motor drivers and power supply. Mind that actively heated build chambers also require actively cooled hotend-heatsinks.

Don’t add insulation material to the underside of your heated bed, since it decreases the overall heat output. Passively heated build chambers without excessive insulation can easily reach about 40° C or more, just by retaining the heat from the heated bed. Keep maintenance easy by making sure the enclosure can be removed without disassembling the whole thing, and well, a door would be nice. In any case, avoid draft. When printing ABS and HIPS, even an improvised enclosure or just a little cabinet is better than none at all.

Printing Surface

Regular window glass plates or mirrors are indeed able to withstand high temperatures, but at 110° C the slightest impact lets them shatter. If you print on glass, which works great for materials like PLA and PET(-G), use borosilicate glass. For printing ABS, HIPS, and also PLA, a Polyetherimide (PEI) printing surface is rightfully celebrated as the best option. ABS sticks to it rock-solid during the print, and still just pops off afterward. HIPS and PLA work just as well.

However, not only is PEI an expensive material with kilogram prices in the hundreds of dollars, it is also in low supply, which led to increased use of thin PEI adhesive films. These films do offer the same great adhesion and printing experience but are quite fragile and easily get damaged. For heavy workshop use, use a 1/8“ PEI sheet instead. It might be slightly more expensive but will last forever and can even be re-faced on a CNC mill once it shows wear. For an even printing surface, the PEI sheet must be stabilized, preferably by gluing it to a sheet of borosilicate glass or aluminum with the help of a heat resistant transfer adhesive tape.

Don’t use heated aluminum printing plates with only a thin film of PEI or Kapton on them. The high heat conductivity of the aluminum overshoots the goal of keeping the contact layer at temperature and heats through the entire print object to a point where it usually gets too soft to support itself.

It’s worth mentioning that the best known printing surface for Nylon is still Garolite (aka. Tufnol). Nylon adheres well to it and even larger Nylon parts can be printed reliably on Garolite.

Auto Bed Leveling / Automated Mesh Bed Leveling

While the classic servo-deployed probe always worked somewhat good enough, the most versatile, accurate and reliable sensor type for auto bed leveling is the contactless capacitive distance switch. Many builds, especially ones with a metal build plate (i.e. the Prusa MK42) or carrier, still use inductive sensors, but these sensors ignore non-metallic printing surfaces (such as a sheet of glass, PEI or Garolite) and only respond to the underlying metal sheet. While this can, of course, be accounted for with an offset, that offset is rarely constant and uniform. Besides that, all contactless distance switches have a certain accuracy, typically about 10% relative to an adjustable trigger distance. Mount them with a short trigger distance, ideally 1 or 2 mm, to get the maximum accuracy. Of course, any sensor needs to be mounted rock-solid to the print head for accurate probings.

Firmware

There are several great firmware projects out there, with the most celebrated ones being Marlin and Repetier. Marlin and Repetier have quite different approaches when it comes to their configuration. Marlin clones from a GitHub repository with two well documented and commented configuration files, one for the basics and one for the advanced settings. Repetier in contrast uses a website that lets you compose your firmware settings in a graphical web interface and download the pre-configured sources. These sources also contain configuration files, but they aren’t quite as well documented as Marlin’s counterpart.

When it comes to features and functionality, Marlin offers fewer features, but a rock-solid highly configurable and reliable platform worthy of a workhorse 3D printer. In contrast, Repetier offers many experimental features, including but not limited to virtual extruders for color mixing. It’s the ideal firmware for exploring the frontiers of more exotic 3D printing applications. Although, not all of its plentiful features are always well documented, which is bound to cause trouble if you’re just looking for something clean and reliable for workshop use.

Temperature Control Algorithms

Only a steady temperature lets you print high-quality models without banding and artifacts. A simple bang-bang temperature control switch does not provide the necessary temperature stability. The easiest and best way to achieve a steady hotend and heated bed temperature is a PID control loop, and both Marlin and Repetier offer that option. They also offer a PID autotune program, which will iron out any ripple in your temperature curve without compromising heat up times or overshooting too much. Repetier also offers an alternative dead time control algorithm, which in many cases works just as well. However, the accuracy and effectiveness of a dead time control loop depend on the ratio of effective dead time and the polling/update interval of the control loop. This results in poor temperature stability on high-power heating elements that happen to have a dead time in the tens of milliseconds. Just use PID.

Cluttered LCD controller menus

The standard Marlin or Repetier firmware with activated display support makes almost every control option available through the scroll-and-click menu. It’s complete, but also cluttered, and lets you navigate through four levels before you can move an axis.

For workshop use, only a fraction of the entries are actually required. Just remove unnecessary entries in the firmware source code. In the source of Marlin, that can be easily done by commenting out unnecessary items in the rather self-explaining ultralcd.cpp.

/* DISABLING "CONTROL" MENU MENU_ITEM(submenu, MSG_CONTROL, lcd_control_menu); */

You can also simplify the move menu to skip the feed rate selection:

/* DISABLING ORIGINAL MOVE MENU static void lcd_move_menu() { START_MENU(); MENU_ITEM(back, MSG_PREPARE); if (_MOVE_XYZ_ALLOWED) MENU_ITEM(submenu, MSG_MOVE_10MM, lcd_move_menu_10mm); MENU_ITEM(submenu, MSG_MOVE_1MM, lcd_move_menu_1mm); MENU_ITEM(submenu, MSG_MOVE_01MM, lcd_move_menu_01mm); //TODO:X,Y,Z,E END_MENU(); } */ // ADDING CLUTTER-FREE MOVE MENU static void lcd_move_menu() { START_MENU(); move_menu_scale=0.1; MENU_ITEM(back, MSG_PREPARE); if (_MOVE_XYZ_ALLOWED){ MENU_ITEM(submenu, MSG_MOVE_X, lcd_move_x); MENU_ITEM(submenu, MSG_MOVE_Y, lcd_move_y); MENU_ITEM(submenu, MSG_MOVE_Z, lcd_move_z); } END_MENU(); }

Fire Prevention

It’s rare, but 3D printers can catch fire. Use the safety features provided by the firmware, but don’t solely rely on them. Both plain MOSFETs and solid state relays typically fail in their conducting state, which can result in runaway heating with disastrous outcomes. Thermal cutoff fuses are $1 components, but they are well able to prevent a runway heated bed from turning your workshop into a crater.

External Factors

Uninterruptible Printing

If your mains power line is unsteady, or if highly inductive power equipment happens to be turned on in the same workshop – cheap handheld plasma cutters for instance – it’s a good idea to operate your printer from an UPS (uninterruptible power supply). Even a short power failure during the printing process ruins the print, and a small cheap UPS will help you out in that case.

Filament Quality

Apparently, making great filament is a little more complex than feeding pellets into a heated something with an auger. It requires accurate measurements and a closed feedback loop to actually keep the tolerances low. Filament defects I found in cheap, low-quality filaments range from trapped air bubbles, variations in properties, color, and diameter. I even found a spool of ABS that faded into PLA half-way through. All this does not contribute to reliable high-quality printing, and if half of the prints fail, it’s not even cheap. So make sure you get a good filament that benchmarks your machine’s capabilities.

The Extra Mile

One great advantage of DIY printers is maintenance. The availability of spare parts and documentation makes it possible, but it should also be fun to work on the machine. Tidy wiring, cable guides as well as a consistent color code for voltages and signals across the printer will save you a lot of time, frustrations, and magic smoke as soon as you need to revisit the internals of your machine a year or two after you initially built it.

I hope you enjoyed this compilation of learnings from more than 20 unique 3D printer builds. Most open source projects maintain a detailed assembly manual but miss out on the details that make a machine a great, reliable, and fun-to-use piece of workshop equipment. The article has grown long, but hopefully fills enough of the gaps to turn any DIY 3D printer project into a success. It’s also bound to be incomplete, so add your own findings in the comment section!