MegaMax 3D Printer
MegaMax as he looks right now, soon to change again...
Update added at bottom of this page- scroll down or click here.
After following developments in 3D printing for years, I finally got
the opportunity to do something about it in 2012. That is when I
joined the Milwaukee Makerspace and suddenly gained access to
expertise, tools, and equipment that was previously unavailable to
me. If you like to work on projects- ANY kind of project- I
strongly urge you to find your local makerspace/hackerspace and pay
them a visit. I would not have been able to accomplish what I
have without the makerspace.
The first thing to decide about 3D printing is what sort of material
you want to print with and how big an object you want to be able to
print. A survey of the available options for printing at home
quickly narrows to plastic -PLA and ABS are the two most popular (and
therefore readily available) options. New materials are
constantly being experimented with and tested, so expect the choices to
expand rapidly. Printing in metal is possible on industrial
machines, but VERY hard for a DIY rpoject. OK, so plastic it is...
You can buy a ready made printer such as a Makerbot Replicator, or a
kit such as a Printrbot, or you can build from scratch. When I
started my project I set a goal of printing full-size human skulls
using models extracted from CT scan data sets. I looked at the
kits that were available and found none that could print objects more
than about 150mm on a side, not nearly big enough to print a
skull. I decided that if I was going to print skulls, I was going
to have to design and build the machine myself. At the time I had
no idea how to create printable model files from CT scans and had no
knowledge of precision machine design. I was literally starting
from zero. If I can do it, you can to. All it takes is
persistence, determination,a lot of time, and a little money.
MegaMax has a 12x12.5" print bed and can print objects up to about 11"
high. This meets my original goal of building something that can
print a full-size human skull with plenty of margin.
MegaMax's first print.
I estimate I've spent about $1000 on MegaMax, and have invested
hundreds of hours in the design, construction, and debugging process.
A final note about buying 3D printers or kits. Don't believe any
of the hype that says you can just plug it in and hit the go button and
it prints. 3D printers are NOT that reliable or user-friendly
yet. Plan a spending a LOT of time getting to know the machine,
the software, and the materials. Plan on a lot of failed
prints. That's just the way it is and the way it is going to be
for a while.
3D printing- how it works
All 3D printers, no matter what material they use, build objects up in
thin layers. Most hobbyist type machines melt plastic filament
then precisely lay it down on top of a previously deposited layer of
plastic, usually building the final object from the bottom, up.
This process is called fused deposition modeling (FDM). The part
of the machine that melts and lays down the plastic is called an
extruder. The extruder is like a motorized hot melt glue gun-
room temperature solid plastic filament goes in, hot, liquid plastic goes
out. The rest of the machine exists to position that extruder
nozzle as precisely as possible. Most machines use familiar
cartesian coordinates (X,Y,Z) to prosition the extruder nozzle.
Other machines (delta printers) use a slightly different approach that uses spherical
The printer mechanism has a controller that reads commands stored in
GCODE files to tell the motors in the machine where to position the
extruder nozzle and how much plastic to put down. Cartesian
coordinate machines require at least one motor per coordinate axis plus
a motor for the extruder. The GCODE file contains a series of
"tool-paths" for each layer in the object to be printed. A
tool-path is the instructions that tell the machine how to draw each
layer using plastic "ink".
GCODE files are produced by "slicing" software that uses a 3D CAD model
file in STL format as its input. The GCODE is always specific to the printer
and filament being used to print, so you generally can't take a GCODE
file that has been generated for one printer/filament and use it on
another printer/filament, unless the other printer/filament is
identical to those for which the GCODE was originally created.
The slicing process involves setting a lot of options that affect the
final print quality- another reason the GCODE files are not very
portable. Popular slicing softwares are Slic3r, Kisslicer, and Cura, and new ones are made available all the time.
3D CAD model files of objects to print can be downloaded from on-line
repositories such as Thingiverse, YouMagine, many other sites around the web, or created using CAD software.
There are dozens of choices for CAD software- some professional
packages cost many thousands of dollars, but there are a lot of
free packages ( Sketchup, DesignSpark Mechanical, FreeCAD, SolveSpace, OpenSCAD, etc.) and on-line CAD programs that can run in "the
cloud". AutoDesk has several free products that can be used to
design 3D printable objects, some of which run on your computer, others
cloud based. The CAD program you use must store files in STL format
for 3D printing.
The whole process (workflow) of producing a 3D print goes like this:
produce or obtain a CAD model of the object to be printed, run slicing
software to cut that model into slices and produce tool-paths for the
extruder and save it in a GCODE file. Then you tell the printer
controller to print using the GCODE file, load the filament, and wait
for it to finish. FDM is typically a slow process. It can
take anywhere from about 30 minutes to print a small object, or in my
case, 24-48 hours to print a full-size skull.
How MegaMax was made: Mechanical
Knowing nothing about designing or building a 3D printer, I started by
looking at the designs of other machines for clues on where to begin. After looking at a lot
of them, I decided that the RepRap design looked like the easiest to
scale up and put together because of its mechanical simplicity.
It had a large, active development community so help would be available
if and when needed. The control electronics was readily available
off-the-shelf so I wouldn't have to spend a lot of time on that.
few machines I had seen in person and on web pages that used laser cut
plywood for the structural frame of the machine did not impress me.
I found that relatively light hand pressure was enough to cause
the frames to flex. Also, my experience with restoring wood
cabinet table radios from the 1930s told me that time and heat are
enemies of plywood. It always warps and delaminates. My
thinking was that you need a rock solid structure to control movement of
the extruder nozzle to get the best possible print quality. That means metal to metal bolts or welds.
Thus began the search for hardware. A couple guys at the
makerspace had built a CNC router using 8020 aluminum extrusions and I
found it met my criteria for sturdiness. I learned from them that
used 8020 was available from a local machine scrapper for about $2 per
foot. That was all I needed to hear. I bought about 75 feet
of the stuff in various lengths and started designing the frame of the
I quickly figured out that I
would need stepper motors, belts, pulleys, guide rails, etc. The
Makerspace has always had a good sized "hack-rack" full of junk that
members are encouraged to use in building their projects. I spent
some time digging and found two identical linear positioning assemblies
that came out of some surplus junked machine. As soon as I saw
them I knew I had a difficult piece of my printer just waiting to be
used. I also found some motors, 1/2" guide rails and bushings,
belts and pulleys, all of which would have cost several hundred dollars
if I had to buy them new.
I started by designing the bottom part of the frame. I cut some
8020 as square as I could then bolted it together. Ugh! My
cuts were nowhere near square, so I had to learn how to square the
ends of the cut pieces. One of the machines available at the
makerspace is a mill. I learned the basics of how to use it and
milled the ends of the cut pieces of 8020 square and tried again.
Perfect! Once I had the base of the frame, I added supports for
the Z-axis positioners.
MegaMax's original base frame.
The next trick was to come up with a way to hold the guide rails
parallel to each other. After a couple false starts, I figured it
out. Once again, the milling machine saved the day. I was
able to drill holes precisely in some aluminum angle brackets then
mounted them on an 8020 spine. I used this method for the X and Y
CAD drawing fo the X axis guide rail supports
MegaMax at completion of the original frame.
Z- Axis DesignIn
the RepRap type design, including MegaMax, the entire X axis is lifted in the
Z axis. One of the first useful things I found were two
identical linear positioner assemblies on the hack rack. With a little
modification I was able to use them for the Z-axis in MegaMax.
are the linear positioners I found on the hack-rack and modified for
use in MegaMax's Z-axis. I cut off the flanges and pins, and removed
the motors and their mounts.
lot of printers use two motors to drive the two Z-axis positioners.
Using two motors allows the possibility of the two getting out of
sync if one turns and the other doesn't, which can happen in many
ways. Every time it happens, you have to realign the X-axis with
the Y and Z axes. I decided to use a single motor and relatively
expensive gear belt to drive the Z axis to ensure that the two ends
would always be in sync, and I have never regretted doing it that way.
Left side of Megamax showing Z axis positioner, X -axis guide rails/support/idler.
Right side of MegaMax showing Z-axis positioner, X-axis motor, dive belt and guide rail support
zero point limit switch and adjustment screw. MegaMax printed
those parts and many others that have been used and sometimes discarded.
Top of MegaMax showing Z-axis belt path, motor mount, and filament spool supports.
Y- Axis DesignThe
print bed moves back and forth in the Y-axis. My goal was to
build a machine with a 1 cuft build envelope, so the bed had to move at
least 24" . I found some 1/2" round guide rails and brass
bushings, motor, pulley, and belt on the hack rack and started
designing around them. I quickly figured out that I would have to
do some precisse drilling to keep the rails parallel and settled on a
design using a couple pieces of aluminum angle stock. By setting
them up on the milling machine I could precisely locate and drill the
holes. It worked perfectly on first attempt. The bushings
proved to be very noisy when printing, so they were replaced with some
linear ball bearings mounted in printed pillow blocks. The
undercarriage that holds the print bed went through several design
changes over tha last couple years. I used a NEMA-23 size motor
to move the bed because I figured the large mass of the bed would
probably be too much for a NEMA-17 motor to push around.
Original undercarriage with brass bushings, all quickly replaced.
Later undercarriage design, also quickly replaced.
This is the undercarriage shown in the CAD drawing above.
Newer undercarriage using ball bushings spaced further apart to more controlled motion.
Original Y axis belt tensioner, later greatly simplified.
Most recent Y-axis belt tensioner.
Most recent Y-axis showing
undercarriage with PTFE blocks to support the print bed, terminal
blocks for electrical connections to the bed heater and thermistor,
limit switches, and linear bushings riding on the guide rails.
Print Bed Design
Next came the print bed design. The print bed would have to be
heated if I were going to print with ABS. I originally intended
to use a 12" x 16" bed. Then reality struck and I couldn't find a heater that size, but 12" square heaters were
everywhere. I decided to compromise and use a 12" square bed and
heater. The bed has to ride on some
bearings and I didn't want the bearings getting heated up, so I made an
aluminum undercarriage to attach the bearings and drive belt, with the
print bed stood up off of it using ceramic spacers. My initial
print bed was a tempered
glass plate with a silicone encapsulated heater stuck to its bottom
side. I figured the
glass would put a nice, smooth finish on the bottom of the printed
objects. Mounting the glass was a little tricky. I settled
on gluing some magnets to the glass and their opposites to the tops of
screws that would allow me to level the printbed.
Original glass print bed with silicone heater.
Ceramic standoff with magnet sitting atop bed leveling screw. This proved to be functional, but noisy, and was replaced.
Magnet epoxied to edge of glass print bed next to silicone heater.
of glass print bed showing magnet and silicone foam that was used to
reduce noise produced by glass bed bouncing on the magnet when the
Y-axis reversed direction.
using the glass bed for a while I realized its shortcomings- it wasn't
very flat, and didn't conduct heat well so there were hot and cold
spots. The glass bed had to go! For starters, I changed the
material to cast aluminum tooling
plate- it is milled flat and sold with a guaranteed
flatness spec of +/- 0.01" over the entire surface, though it is
typically much flatter than that. I also got
rid of the magnets. I found that when the print bed motion
reversed direction the momentum caused the bed to bounce on the magnets
making a lot of unpleasant noise. Finally, I replaced the
silicone encapsulated heater with a much lower mass Kapton heater.
I also learned that ABS likes to stick to kapton tape, so I
covered the new print bed with it.
Current print bed- 1/4" cast aluminum tooling plate covered with kapton tape. The three holes are for the bed leveling screws.
Underside of the print bed showing kapton heater and thermistor.
The frame of the machine is supposed
to hold the X, Y, and Z axes orthogonal to each other. If they
are not orthogonal, a cube won't print as a cube and a sphere won't be
spherical. No printed object will be right if the axes are not
orthogonal, so I took great pains to ensure they were. Bed
leveling is another matter. Bed leveling cannot make up for
nonorthogonal axes. The sole purpose of leveling the print bed is
to allow the first layer printed to stick to the bed. The plastic
has to be squished down onto the bed everywhere in the first
layer. If the bed isn't level, the plastic may not stick and your
print may come off the bed before it's finished, wasting time and
Most printers have square or rectangular beds with adjustment screws at
each corner to allow the bed to be leveled. When I saw that it
didn't make any sense- three points define a plane, so why use four to
level the bed? Furthermore, with four leveling screws in the
corners, whenever you turn one screw you affect the bed level in two
dimensions. I figured out that if the bed is supported at the
center of the axes instead of at corners, the bed could be leveled with
just two adjustments which are mostly independent of each
glass bed used that arrangement and it worked well, so the aluminum bed
used a similar arrangement. This time instead of using magnets to
hold the bed down I used stainless steel screws. The screws go
resistant PTFE blocks that are screwed to the undercarriage. The
bed is supported on springs trapped between the bed plate and the PTFE
blocks. Leveling the bed is very fast and easy and only requires
two adjustments with a screwdriver. The frame of the machine is
so sturdy once I level the print bed I don't have to touch it again
unless I take some critical parts off the machine and put them back.
the top: print bed with kapton tape, spring over bed leveling screw,
PTFE block, undercarriage plate, Y axis drive belt. Adjustment
must be done from the top using a screw driver because I can't access
the bottom side due to the drive belt. New undercarriage design,
not yet installed, will have a thumb screw adjusted from the bottom
side of the undercarriage.
X axis moves up in the Z-axis while printing. The extruder
carriage moves back and forth on the X-axis. I used a smaller
version of the Y axis design for the X-axis, namely a pair of guide
rails spaced and held parallel by aluminum angle pieces bolted to an
8020 "spine". I started with brass bushings but quickly replaced
them with linear bearings as in the Y-axis. I used a smaller
NEMA-23 size motor for the X axis because it had much lower moving mass
than the Y-axis.
X-axis motor mount, guide rail support and extruder carriage on brass
bushings. All the brass bushings in the printer were quickly
replaced with linear ball bushings due to the noise produced by the
brass bushings chattering on the guide rails.
Far end of the original X-axis showing idler pulley, guide rail support and extruder carriage on brass bushings.
recent far end of X-axis showing idler pulley and guide rail support.
The green part is a "flag" that bumps the limit switch.
Thermal Enclosure Design
One of the problems with making large
ABS prints is delamination. Delamination occurs when prints try to
pull themselves apart due to stresses caused by the printed plastic
shrinking as it cools. The larger the object you try to print,
the bigger the delamination problem. Stratasys, a company that
makes industrial 3D printers, solves this problem by printing inside a
low temperature oven. I made an enclosure for MegaMax and found
that I was able to print large objects without delamination. The
enclosure keeps the heat from the printbed inside the box without using
an extra heater. I let the box get to about 40-42C
during printing and so far have had no delamination problems.
If I had been aware of this problem earlier, I would have
designed MegaMax to go into a box from the beginning. Live and
learn! The enclosure is made from sheets of PIR foam held together by printed clips.
Print showing delamination a few inches above the print bed. This print is about 4" tall.
MegaMax inside thermal enclosure made from PIR foam insulation sheet held together with printed plastic clips.
MegaMax thermal enclosure with the door closed (before I installed the window).
Large blue object, about 6" tall, was printed inside the thermal enclosure at about 45C with no delamination.
How MegaMax was made: Electronics
I chose the same off-the-shelf electronics to control MegaMax that is
used in other RepRap printers. It consists of an Arduino Mega2560
board with a RAMPS v1.4 motor controller board and an LCD/encoder/SD
card interface. I also got a couple cheap switching power
supplies via ebay, a 12V one for the electronics and a 24V one for the
printbed heater. One reason I added the LCD interface was to
improve reliability of the printer. I had some early prints fail
because the laptop I was using to drive it would go to sleep or do some
other silly thing part way through a print and mess it up. Now I
almost always print files stored on an SD memory card without
connecting a computer to the printer.
I quickly ran into some problems with the firmware (a freely
downloadable project called Marlin) because I had trouble getting the
Arduino IDE to compile the Marlin configuration files. That
eventually got sorted out with the help of an expert at the Makerspace
and I was able to get the machine up and running.
It seems that the latest version of the Arduino IDE has no problems compiling the Marlin code.
When I changed the printbed to aluminum tooling plate I got a more
powerful heater and it quickly destroyed the 24V switching supply I
started with (my fault for pushing it too hard). Now I power the heater from a 24VAC transformer
that is controlled by a solid state relay that is driven by the RAMPS
board. Eventually, the 12V supply failed and I replaced it with a
high quality, (surplus) linear regulated supply.
How MegaMax was made: ExtruderThe
extruder has been a never-ending source of frustration. I
funded a Kickstarter project for an extruder and waited for it to
eventually show up while I worked on other parts of the printer.
Once it arrived, I was only able to make it work by heavily modifying
it right from the start. It took a loooong time and a lot of
messing around to get it to work reliably and I still don't quite trust
QUBD extruder after a LOT of modifications. The bearing on the
spring loaded lever pushes the filament against the drive gear on the
motor shaft. The metal parts were eventually replaced with
printed plastic parts.
The original extruder used to jam a lot,
and I never could figure out why, but I did manage to fix it. All
it took was adjusting the tension of the spring on the lever that
pushes the filament against the drive gear on the motor shaft. If
the tension is too low, it doesn't push hard enough and the drive wheel
chews a divot into the filament. Once that happens, the thing
loses its grip and can't push filament any more. By tightening
the spring the pinch wheel pushes so hard that it overcomes whatever
resistance was preventing the filament from moving and it (mostly) never
I have done a lot of experiments with different extruder
designs, using parts from the original extruder. I've made
dual drive extruders with two motors pushing the filament, and most
recently a design for a 3mm filament
extruder that drives the filament into the hot-end using counter-rotating
nuts. I call it the SnakeBite extruder because the way it works
reminds me of the things kids do to each others arms when the grab and
twist their hands in opposite directions. The SnakeBite extruder
can produce a lot of down force and I am hoping it will
eventually be jam-proof. I have made some test prints but there's
still a lot of work to be done on the design. Click here to see
the info and get the stl files for the Snakebite Extruder. You can see it in action here: SnakeBite test, SnakeBite printing. I plan to return to SnakeBite extruder development in the near future.
One of my early dual drive extruder designs that used two motors to push the filament.
Here is the dual drive extruder in action.
updated dual drive design that used a single lever to allow easy
loading and unloading of the filament. Originally made in
aluminum, then made using printed plastic parts.
Dual drive extruder from CAD drawing above.
SnakeBite extruder design using printed plastic motor mount.
Gears came from American Science and Surplus. The two posts
with the gears tended to flex under the torque from the motor, so I
added a plastic bridge between them.
Newer and slightly smaller version of the Snakebite extruder bolted to a hot-end for print testing.
Smallest version of the SnakeBite extruder.
First print with the Snakebite extruder. Note the blebs between the two parts signaling retraction problems.
Large print made using the SnakeBite extruder- overall quality is excellent, but strange loop blebs evident.
Close up of the loop blebs. These are a symptom of retraction not working properly, a problem that remains to be solved.
Alternative Print Bed
Early in my 3D printing odyssey I noticed that a Stratasys 3D printer
at the Makerspace printed on an unheated foam block. The owner of
the machine told me that it was some sort of polyurethane
for which Stratasys charges about $70 per 10"x10"x1"
piece. In that machine
there's no bed leveling to do- when it prints it just buries the
extruder nozzle about 1mm into the foam and prints. I liked the
simplicity of it so I borrowed the foam and tried it on my machine and
it worked well. That started me looking for a substitute that
would be cheap and readily available. I found a foam that is used
for roofing insulation in commercial buildings that is able to
withstand the high temperature of the extruder nozzle (~240C) without
melting or producing toxic vapors or smoke. You can buy it at Home Depot and it's cheap!
It is called PIR (polyisocyanurate) foam.
You can get a 4'x8'x1" sheet for $15. DON'T get the pink or blue
stuff! Those are polystyrene and will burn, smoke, and produce
toxic vapors when the hot extruder nozzle touches them.
A bearing block printed on PIR foam.
I tried the PIR foam on my printer and it worked great! Prints
stick, you don't have to level the bed, and you don't need a bed heater
or power supply. You can print multiple times on a single piece
of foam- you just set
the Z offset in your slicing program to bury the nozzle in the surface
of the foam and it will print fine. At about 50 cents per 12"x12"
piece, it is cheap enough not to matter.
In a printer like mine, with a large, moving printbed, using foam
reduces the moving mass and allows you to print much faster.
What do you give up? You dont get a shiny-smooth bottom surface
on your printed objects, and you have to print on a raft. Does that matter? Most of the time, no. No
matter what surface you print on, the bottom surface of your
print will never be the same as the sides or the top. I am really
wondering why I've gone to the trouble of setting up a heated print bed...
Underside of the bearing block printed on PIR foam.
More photos of MegaMax can be seen here: MegaMax photos
New AdventuresI recently rescued a screw drive assembly from a scrapped industrial
machine and I've been working on building it into MegaMax to replace
the belt drive Y-axis. I got a couple used linear guide rails with
bearing blocks via ebay and they are going into the Y axis as well.
Such linear guides provide for extremely well controlled motion.
I'll also be redesigning and building the X axis using a linear guide
This XY table from a pick and place machine yielded two ball screw assemblies, guide rails and bearings, and 200W servo motors.
I will soon be replacing the Arduino controller and RAMPS boards with a Smoothie Board controller.
old Arduino and RAMPS boards will be used to make a machine to rewind
filament into spoolless rolls that can't tangle or get knotted.
Screw drive soon to go into megaMax's Y-axis.
CAD drawing of the screw drive Y-axis showing standoffs made of aluminum tubing.
Another view showing the undercarriage plate that will ride on standoffs.
Update January 5th, 2015
In the last few weeks I replaced the Arduino/RAMPS controller with a SmoothieBoard, installed the screw drive Y-axis, a high torque motor to drive the screw, and a DSP-based driver and 32V power supply to drive the motor.
had some problems with the SmoothieBoard at first- print layer
registration kept shifting in the X-axis, not the Y-axis where I had
expected problems due to the high moving mass and drag caused by the
X-axis layer registration problem.
tried every combination of speed, acceleration, junction deviation,
motor current, microstepping, and even swapped driver channels on the
SmoothieBoard to see if it was a hardware problem. Nothing worked
until one of the developers of the board suggested, via IRC,
that I try a different uSD card (the SmoothieBoard comes with a uSD
card containing the firmware, configuration file, and documentation).
I swapped the card, loaded fresh copies of the firmware and
config files and booted the board. All problems disappeared!
of the first things I realized after I installed the screw in the
Y-axis was that I could no longer just push on the print bed to move it
for leveling or doing work on the undercarriage, etc. The new
motor has a flatted shaft that extends through the back of the motor so
I designed and printed
a crank handle for it so I can quickly and easily move the print bed
manually. The crank just press-fits onto the motor shaft.
It fits so tightly I have to use a screw driver to pry it off.
Motor crank for moving the print bed without having to power up the printer and computer.
Front view of the printer with the screw installed. The Y axis is a little longer than it used to be...
view- you can see a rat's nest of wiring connecting to the
SmoothieBoard in the lower left. Don't worry, the mess will be
straightened out once I get through with the rest of the planned
modifications to the printer.
supply for the Y-axis motor. Under load it delivers about 32VDC
at 4A. There isn't much to it, just a transformer, bridge
rectifier and filter capacitor. That's all you need for a stepper
motor. I built an identical power supply for the X-axis which
will also be driven by a DSP driver.
The X-axis redesign has
been on-going, even through the initial SmoothieBoard problems.
The two round guide rails are being replaced by a single linear
guide, and the whole thing made neater and more compact. I'll be
using a ribbon cable to connect the extruder to the rest of the X-axis
with a couple circuit boards to handle the transitions to cables at
Current state of the new X-axis showing printed belt tensioner and motor mount.
view of the X-axis. The large holes allow access to the nuts on
the screws that hold the linear guide on the aluminum tube.
This is the printed idler pulley/belt tensioner.
This is what the inside of the idler pulley/belt tensioner looks like. The
screws on the right side are used to adjust belt tension and the
pulley's axle tilt to prevent the belt from walking off the
pulley as the extruder moves back and forth.
After a lot
of research I decided to upgrade the extruder and hot-end to what I
believe will be very reliable parts. I got a BullDog XL extruder that
has a gear box to increase torque and is capable of pushing 1.75 or 3mm
filament either directly or as a Bowden type set-up. I chose an E3D V6
all-metal hot-end because it is capable of printing with materials like
polycarbonate that require very high temperatures.
still have to build the circuit boards that will connect to either end
of the flex ribbon cable and then rewire the whole machine so the
electronics can be kept outside the printer's thermal enclosure.
Then, I think I'll be ready to get back to development work on
the SnakeBite extruder and a few other projects I have in mind.
You can email me here: