High Speed H-Bot 3D Printer
Simply put, I want to build an optimally fast and modular 3D printer. For the last few years, I have been working on a custom built and designed H-Bot 3D printer. I built an iteration of it in summer 2017 and had a few successful prints. However, I was generally unhappy with the result - although, I formed a lot of new ideas throughout the building process. This second iteration is going to be much improved, and generally better designed for manufacturing and assembly - even though it's only being built at a scale of 1, I appreciate good industrial design and try to integrate it when possible.
Print as fast as possible with commercially available hardware
Create a sturdy frame and bed
Create a modular printing system
There are essentially 3 aspects to printing fast using an FDM 3D printer. In order from the least limiting to the most limiting, these are computation, motion, and extrusion.
For more simple motor designs (i.e. dedicated motors for movement in X, Y, and Z), 8-bit controllers like those based off of the Arduino Mega, can handle any G-code command without slowing down below reasonable specified feedrates. But the Delta or Core-XY kinematics require significantly more computation on the controller-side in order to translate X, Y, and Z into steps.
The H-Bot kinematics are computationally identical to those of the Core-XY, though there is a subtle mechanical difference (the belts can be co-planar). Using this type of motion, high enough feedrates (especially on complicated motions like arcs) can become unachievable - using an 8-bit processor can cause a 'speedwall' for the printer.
Click to zoom: A wiring diagram of the Azteeg X5 mini. The board is pretty minimal, but has just enough functionality for what I want to accomplish with my printer.
In the last few years, however, 32-bit boards like the Smoothieboard and those based on the Arduino Duet have become available - these are more than capable of handling any complicated high-speed kinematics while simultaneously adding functionality to printers. I will be using the Azteeg X5-mini running Smoothieware as my controller - a WiFi enabled 32-bit board with 4 motor inputs and several auxiliary inputs.
The most intuitive requirement for fast printing is fast motion. Since Z-axis movements occur much less frequently than X/Y movements, the speed of the Z-axis isn't as important here. Stepper motor speed is not extremely limiting either, though the torque can be important for improving acceleration. The most important factor is moving inertial mass.
Using a bowden setup takes one motor off of the gantry. The downside is that the distance between the extruder and the hotend gives the filament a lot more room to bend and twist, causing inconsistent extrusion. Stiff materials are normally unaffected, but this can cause some issues with more difficult filaments - like flexibles. Using the dual-drive Bondtech extruder will mitigate some of the typical bowden performance issues by driving the filament from both sides.
Left: A typical FDM extruder system with a single hobbed gear and a smooth idler used to drive the filament. Right: The Bondtech extruder uses gear mechanisms to drive the filament equally from both sides.
Additionally, the H-bot configuration takes away another moving motor from the motion system when compared to a Cartesian XY motion system as seen in most consumer printers. Most box-frame (as opposed to open-frame Prusa style machines) use one motor to drive Y-motion, and an attached motor to drive X-motion - meaning that every movement in Y requires moving an extra stepper motor worth of weight.
In order to truly maximize performance, I am using carbon fiber X-axis rods and Igus polymer bushings - a 1/6th and 1/8th weight to a typical steel rod and metal linear bearing setup, respectively. However, the Y-axis will run on an extra sturdy 12mm rod with long linear bearings. Since the Y-rods are stationary, this doesn't affect moving mass. This will allow for extremely high accelerations and top speeds - and the effect of the extra torque added from the H-Bot belt configuration will be greatly reduced.
Left: a rendering of the Carbon Fiber X-axis rods on the machine. Center: A rendering of the Igus polymer bushings being used on the X-axis rods. The large E3D Volcano heater block is also of note. Right: A rendering of the Bondtech extruder being used on the machine.
As an over-the-top final measure, I plan on using Aluminum screws and nuts once finished prototyping, and plan on using a shape optimization study in Fusion to reduce the mass of printed parts.
An animated rendering of the X-axis homing procedure.
For a well designed and equipped printer, the rate which the extruder and hotend combination can deposit filament is the most limiting factor of print speed.
For the extruder, using a gear reduced Bondtech extruder is about as good of a compromise between gripping strength/torque and speed as it gets - an extruder without a gear reduction would be able to turn faster, but not grip the filament as well. I will be using 3mm filament, which will extend the capabilities of the extruder because pushing filament at the same speed will result in about a 2x material feed rate increase over using 1.75mm filament. For the hotend, it's all about the heater block and the nozzle. A big heater block will be able to melt filament much more quickly, and therefore I will be using the E3D Volcano to get the most out of my printer. The only drawback is that you essentially have to print fast using this hotend - if you don't, you will burn material. This is why the nozzles used on the Volcano are typically bigger (0.6mm, 0.8mm, 1.0mm etc.); because if you use a 0.2mm nozzle, for example, you will have to print extremely fast to keep the filament from being too hot for too long. Ideally, this printer will be able to cope with this well by being fast in every respect.
A Sturdy Printer
Perhaps the most important factor in print quality is having a sturdy machine. The box-frame design helps in this respect. I am using a 20x20 Aluminum extrusion based frame connected with all metal components. For 3D printing, this level of structural support should be plenty. But if I do end up converting the machine to a CNC at some point, It will need to be able to withstand much higher loads. However, the frame is designed in such a way that 30x30 or 20x40 extrusions could easily be swapped in for the main vertical extrusions and several horizontal extrusions.
For the bed, I have gone through several different designs possibilities. One thing that I know I don't want to deal with is the inconvenience of leveling screws - typically used to make minor adjustments in the plane of the print bed in order to provide a perfectly flat surface relative to the hotend. The alternatives to leveling screws are mesh bed leveling or multiple lead screw systems.
Mesh bed leveling involves the use of either an inductive sensor or a mechanical endstop to check (usually) 9 points across the build platform. The firmware uses this data to create a mesh plane and compensate for height changes through g-code adjustment to Z-axis movements. Fortunately, the software side of this is figured out. My dilemma is adding the weight of one of these sensors to the inertial mass. Despite the fact that these sensors are pretty light (they would likely only contribute to 10% of moving mass), adding unnecessary moving mass goes against the objectives of the build. I have played with the idea of using a pick-up/drop-off sensor, perhaps using magnets to attach the sensor to the carriage to perform mesh leveling and detaching it for printing. But I'm not sure if that will be necessary.
Multiple lead screw systems are difficult to design for. Driving 2 or 3 leadscrews is challenging enough - I decided to use a single motor with 3 leadscrews attached by a single belt in the early design shown to the left - but accommodating for those screws in the mechanical design is even more difficult. For this reason, I have chosen to use a single lead screw with 2 12mm diameter supporting rods (much stronger than typical 8mm diameter rods). The bed will be a single sheet of 1/4" waterjet cut aluminum and a single leveling screw will be used to set the Z-axis zero.
A rendering of the 3 belt-driven leadscrew design. Each screw is driven by a GT2 belt, and the looped belt is tensioned by an adjustable idler pulley (blue). The leveling screw (red) is also shown,
A rendered animation demonstrating the movement of the Z-axis in a homing procedure.
Ever since I started learning more about 3D printer design, I have wanted to build a variety of different variations and types of CNC machines - a linear rail driven 3D printer, a lead screw driven printer, a laser cutter, a CNC engraver, and others. However, it isn't practical for me to make different frames or even different motion systems for all of these ideas. So, I decided to make the entire system modular.
One level of modularity is in the tool head of the high-speed H-bot build. Unfortunately, news of the awesome E3D Tool-changer came out shortly after I had the idea, but I plan on implementing it nonetheless (and designing a riff on their tool changing system some for another build). The idea was to use plungers to locate the tool head:
A 3DS Max animation of the tool-head assembly (this one for an E3D v6 hotend) and the function of the carriage swapping mechanism.
I plan to make a CNC router tool, a laser engraving tool, and others that can be easily swapped in and out easily - or even mid-process.
The cassette is a more significant layer of modularity. This part is the mount for all of the XY motion components of the system, and it can be removed using just 4 screws. Airwolf3D uses a similar concept in the manufacturing of their printers for the purpose of making part-replacement more simple since most printer issues revolve around the XY motion system. However, after interning there I got the idea to use the cassette to support different motion systems. I could make a belt-driven rod-based printer (like this one), a linear guide-based printer, a leadscrew based-printer and more all on the same frame. This design also makes assembly much more simple.
An animation of the disassembly of the cassette motion system from the frame.
Work in Progress
I am currently in the process of prototyping parts for the build. I'm close to beginning a final assembly but still need to fine tune some fits and make some plywood prototypes before I'm ready to make the final parts.
A rendering of some of the jigs I'm using to iterate on the fits for major components of the design.
I'm excited to share my design and see how the final product turns out. It's easy to allow feature-creep to happen as a perfectionist. But I'm happy with how my final design looks and I'm ready to bring it to life.