Home       About Me       Contact       Downloads       Part 96    ...   

Part 97: Building A 3D Printer

July 21, 2016

Last summer, after finishing the 3D printed case for my computer (see last part), I was looking around for another hardware project to do. I thought of doing some robotics project, or perhaps building a quad copter. Then the Instructables newsletter included a project to build a 3D printer.

The printer was called the "Vulcanus" and was designed by a German teenager. There was also a scaled up version called the "Vulcanus Max". Both designs had some interesting features, but the best part was that it looked simple to build. Since I'd never been really happy with the PrintrBot Simple Metal I purchased, I decided to try building this design.

The Vulcanus

The Vulcanus Max

FDM Printers

The Prusa RepRap printer

First an overview of how these home 3D printers work. Generally, they are all FDM (Fused Deposition Modeling) printers. This means they draw a layer in two dimensions using hot plastic. Then they move up and do another layer. After many, many layers (usually 0.1 or 0.2 millimeters per layer), you get your finished part.

The extruder or "hot end" takes a filament of plastic off a roll, melts it and applies it to the layer. There's no valve or anything on the end -- to stop drawing, you back out the filament a bit, which drops the pressure inside the hot end. That hopefully stops it from applying plastic. In practice, they seem to drool a bit.

My PrintrBot and most other FDM printers have a platform at the bottom which moves in one direction. That's your X coordinate. Then there's a gantry or arm hanging over the platform. On it is the hot end which melts the plastic, and the extruder motor which pushes filament into the hot end. The extruder platform moves back and forth on the gantry. That's your Y coordinate. And then the whole gantry moves slowly up, to add new layers. That's your Z coordinate.

The Vulcanus is a bit different. As you can see in the images, it moves the platform down as layers are drawn. The extruder is always at the top. And instead of one axis on the platform and the other on the gantry, he has both X and Y axis at the top, using a cable system called Core XY.

I thought this was an interesting choice for a couple of reasons. First, the heavy motors are fixed at the corners and don't need to be moved. That should give you a lighter extruder platform and permit higher accelerations and faster printing. Second, it all looked pretty simple. Instead of two sets of rods, cables and motors, there's just the one (slightly more complex) arrangement.

Building the Vulcanus

I read over the build instructions and materials list for the Vulcanus. The first issue for me was that he appeared to be buying aluminum extrusion, screws and rods in long lengths and cutting them down. This drops his cost, but I don't have the tools to do that. However, Amazon has pre-cut lengths of everything. I redesigned his printer around the available lengths.

The second problem was the electronics. He was building his own controller from an Arduino CPU, Ramps board and individual motor drivers. I didn't want to mess with all of that. It's been 40 years since I soldered anything!

I also wanted a bed level sensor like my PrintrBot has, so that you don't have to manually level the bed. The sensor lets the software measure the height of the bed corners and compensate for any tilt. Since I wanted PrintrBot features, and was used to using that software, I just bought the electronics and bed level sensor from PrintrBot and used that instead of his design.

Finally, he was cutting some aluminum sheet to hide everything and built the printer with multiple "stages" to separate all the parts neatly. I didn't care about that, so I simplified the design a bit.

Starting with the Vulcanus overall concept, I built a 3D model of my design so that I knew all the parts had the right lengths. That also gave me some idea of how hard the whole thing would be to build. Once I was satisfied with the design, I ordered everything off Amazon. Since I hadn't noticed that the cheaper suppliers were all in China, it took three weeks for all the parts to arrive.

Not so fast...

My first issue was with fasteners. The aluminum extrusion is from a company called "80/20 Inc." and they also sell fasteners. They charge a lot though. The Vulcanus design seemed to be using ordinary screws and nuts. After I bought parts and went shopping for screws and nuts, I discovered nothing quite fits in the extrusion slots! And when I looked back at his design, I noticed he was filing the corners off all the 160 hex nuts he's using!

I found that square nuts would work, but just barely. To put the screw into the extrusion, you have to fiddle each of the nuts into exactly the right orientation. It was a huge nuisance. After messing with trying to assemble the outer cage of the printer, I realized there was another solution.

Instead of trying to get all the nuts in the right orientation, I could just print a small piece of plastic to hold them. The plastic slides into the channel of the extrusion. Then I can just screw parts in afterwards. Much easier!

Printed Parts

I had designed as much as possible with 3D printed plastic parts. I hadn't really thought about tolerances though. In the end, I just had to do it by trial and error. I printed a part, and if it was too tight or too loose around the bearings and rods, I changed the dimensions. This strikes me as a real liability of printed designs, since each printer is slightly different.

The other thing I hadn't counted on was how long it took to print all the parts I had designed. I hadn't made any attempt to make them light or quick to print. Each of my eight corners took 1.5 hours to print. The other large parts were similar, at an hour or two each. All of the little plastic strips to hold the nuts added up as well. In all, I think there might have been as much as 40 hours of printing to do. The PrintrBot actually broke a couple of times while I was creating its replacement!

With all the parts printed and the nut issue solved, the rest of the frame assembly went smoothly, and I had most of the printer built in a few hours.

The Hot End

I used the E3D Lite6 hot end. In the picture at right, you see the various parts. The little brass fitting at the bottom is where your hot plastic comes out. The aluminum block above it heats up (to around 200C or 400F) and melts the plastic. It also has the thermistor (temperature sensor) mounted into it.

The red plastic block has a cooling fan on the other side that blows air past the metal fins to cool the shaft full of filament. There's also a PTFE (high temperature plastic) liner down the center (see it at the top.)

The hot end comes as a kit and you have to assemble it yourself. Mostly it's pretty simple, but there were two fussy bits.

The thermistor temperature sensor is a tiny glass bead with tiny wires coming out of it. You have to cut insulation for the wires so they don't short against the heater block. In the (British, very polite) manual, it says:

The glass fibre sleeving can start to fray if the cut ends are not treated with care, and once it starts to fray it is hard to recover, so do take care. If the sleeving becomes frayed the best thing to do is to trim off the frayed parts with wire cutters.

What it should say is:

The glass fibre sleeving will start to unravel the moment you cut it. You have 30 seconds before it turns into a Q-tip and won't fit in the hole. Run!

The other problem is that you have to build this with the parts loosely fit, then heat it up to 245C and screw the parts together for a tight fit. Doing this wrong will result in leaks of plastic from your hot end, which leads to stray blobs of plastic dripping into your prints.

But of course to heat the thing up, you need to connect it to your driver board and get the firmware working correctly. For that, you need connectors.

Endstops and Connectors

Did I mention I haven't soldered anything in 40 years?

So far, I hadn't soldered anything. I wish the machine could be put together without soldering, but it's unavoidable.

First, you have to connect the two Z motors in parallel. That means cutting the connectors off and wiring both motors into one of the connectors and soldering everything.

The hot end does not come with connectors for the heater or fan, just the thermistor. The PrintrBoard wants a four-pin connector for the heater, so I used the extra motor connector I had cut off the Z motor.

The cooling fan needs to be on at all times, since if you don't cool the hot end, it will melt the PTFE lining and ruin the whole thing. I wired it directly to the power supply connectors so that the fan runs whenever the machine is on.

Finally we have the two X and Y endstops. These are microswitches that let the software know when the motors have hit the end of their range. It was no problem to solder wires to the switches and mount them into the frame. But each one needs a 3-pin Molex connector and I just could not find them online.

There are plenty of connectors for sale on Amazon, but I didn't know the exact part number. I ordered some 3-pin connectors, but they arrived without pins or wires, and were the wrong size. In the end, I just found some old 3-pin case fans and cut the connectors off those.

The Firmware

There are at least two major implementations of the printer firmware -- the "Repetier" firmware, and the one that PrintrBot uses, called "Marlin". Since I was comfortable with the PrintrBot system, I chose Marlin.

In principle, all you have to do is compile the code with some changes for your particular printer, and download the result. In practice, it's kind of a nuisance.

The most recent version of the Arduino development tools does not seem to compile the most recent version of Marlin. Instead, you have to find the old tools (I think I used the 1.0.6 Windows version) plus some library of plugins (I think it was "teensyduino.exe".) Install all of that and you can bring up the Marlin source and compile it.

The object code gets put in some random directory and you have to dig around for it. Then a tool called "Flip" will download the compiled ".hex" file to the connected board. To put the board in a state to accept new firmware, you have to move a jumper and reboot. Remember to move it back again and reboot before trying to run the printer!

The Marlin code is documented well enough, and there were instructions with the E3D hot end telling me which variables to change in the code to use their thermistor and heater. The only real snag was figuring out which motor directions to use with the CoreXY setup.

Unlike the conventional design, you don't have one motor for X and another for Y. Instead, the difference between the two motor directions controls the axis. It took several rounds of trial and error to get the right motor on the right axis, and get the directions correct.

Finally, the PrintrBot has its endstops at max Y and min X. I had mine at min Y and min X. It took a bit of Googling to find the spot to change in the firmware.

After this was installed, I could move the extruder platform around and run the heater on the hot end. That allowed me to heat and tighten the hot end. You have to grab a small piece of aluminum and a very small brass screw with pliers when the whole thing is at 245C, and tighten it up without dropping it in your lap. A challenge for a clumsy software guy!

And It Prints!

I named my design "Geyser", as a more modest version of the original "Volcanus". After all the work of putting this together, I had expected endless tuning to get the thing to print at all. To my surprise, once I had the extruder height correct, it printed perfectly from the beginning!

You can see in the image that this is a nice clean print, sharper than the output I was getting on the PrintrBot. I was very happy with this! I printed a bunch of test pieces, including some that had never printed correctly on the PrintrBot.


Most of these printers have cooling fans pointed at the tip of the hot end. The ideal is that your hot filament comes out, sticks to the print, and then instantly freezes. In practice of course, that does not happen. The plastic gradually cools, which allows the line you just put down to sag or even fall off the layer.

I confess I don't understand how these cooling fans help, although they clearly do. It seems to me that the filament is moving so fast that your fan is only blowing on it for a fraction of a second. I also don't understand why a desk fan pointed at the whole print wouldn't work as well as a fan pointed at the tip, but it doesn't.

I can't argue with results, so after I had the whole thing working, I went back and redesigned it with a fan. It puts so little air out through the funnel that I can't believe that it makes any difference. But it does.

The left print is with no cooling, and you can see some drooping lines, at the corners of the eyes, the base of the ears, and that nose area. That line is not in the model at all -- a bit of filament has just fallen off the face during the print.

The middle print is with my first version of the fan, which was a half-funnel that blew on the print without hitting the tip. And the right print is my final version that blows a tiny breeze through a funnel directly at the tip of the hot end. Go figure!

But Wait...

When I designed this, I wanted a large print volume. The PrintrBot supports 150mm by 150 by 150. When I built my 3D printed computer case, I had to break it up into pieces, since I couldn't print the whole thing.

With the new printer I was trying for 300mm by 300 by 300. I didn't quite manage that, due to the width of the extruder platform. More like 260 by 290 by 290. After the machine printed a few test parts, I tried to print something really large. And failed.

The problem was that the bed just would not level. The probe is used to measure three corners and get a rotation for the plane of the bed. For some reason, this just wasn't happening. I could get the bed level near the center, but on one side, the bed would be too low, and on the other, too high.

My first thought was that the aluminum bed was warped. I had purchased it from a company called "Discount Steel". It arrived with scratches on one side, and not looking like precision work. I also ordered the cheaper 1/8 inch "sheet" aluminum, instead of the thicker "plate". But I rotated the bed in the frame and the same sides were low and high. I couldn't see how a warped bed could do that.

The only other thing I could think of was that the rods which hold the extruder platform were not parallel. That would make the head travel in some sort of parabolic pattern. Imagine the rods seen from the side are an X. The far rod would be high at left (say), and the near rod would be high at the right, with the platform tilting as it moved. We're talking about a distance of perhaps 0.5mm over 300mm, so there was no easy way to check this by eye or with a level. I tried using the bed level probe to map the entire bed, but couldn't get that to work.

I then rebuilt the bed mounting with screws at the corners to make it adjustable. I still couldn't it to print at all four corners. Moving the motors at the corners up and down also had no effect. It just wouldn't go level.

I had a couple of other minor issues as well. One is this whole problem of the hot end oozing plastic. If you want a clean print, you have to wipe the drool away from the hot end just before it starts. I have the software set up to move the head to one side and raise it up so I can clean it. But with the arrangement of belts, rods and frame that I had, I just couldn't reach in there very easily.

And then there were the wires. There are two heater wires, two thermistor wires, two fan wires, three bed sensor wires and four motor wires. I had this all taped up as a bundle, but it dragged behind the platform. When I tried to print on the front right corner, I just barely stopped the machine in time before the hot end ran right into the wires!

A New Design

And so I redesigned it from scratch. One Google search found a CNC machine with what they called a "cable chain" on it. These are chain links with the wires running down the center. I found a Thingiverse model of a printable link and created a long chain of them.

To make the hot end more accessible, I put it under the rods, at the end of a plastic arm down from the platform. That also let me make the extruder platform a bit smaller.

The most radical change was that I put all the motors and belts on the platform, so that they moved up and down like the gantry on other printers I had seen. That let me put the bed at the bottom, completely stationary. It also meant that I could switch to something really heavy for the bed, like glass, polished stone, or thick plate aluminum with a flatness guarantee.

Unfortunately, this design was a bit of disaster. The cable chain stretches the wires out nicely, but it was also too long. The wires could no longer reach over the full vertical height of the movement.

Second, the long arm down to the hot end vibrated. The plastic printed extruder platform and arm just weren't stiff enough. On top of that, the weight of the chain dragged it and the platform wobbled slightly. The effect was to drag the extruder back and forth during prints, like a paintbrush applying paint. Every time it reversed direction, it shifted position. The print quality was terrible.

I also worried I was overloading the Z motors. The total weight of the platform, three motors, four rods, eight bearings and the spindles was over 3 kg.

Try, Try Again...

The chain had promise, if I wasn't using so much of it. It also really didn't work horizontally due to the weight. The extruder platform needed to be more compact, so that it didn't wobble. And if the hot end wasn't going to be sticking so far out, I needed to clear some of the clutter away so that it was reachable.

I went back to the motors-on-top design I had started with. But I didn't trust attaching them to the sides of the frame. Even though I wanted something that was basically a cube with guts inside, I gave up on that goal. I put the motors on top of the frame.

I assumed the aluminum extrusion was cut fairly precisely. I couldn't see any difference at all in their lengths, or feel any ridges when I lined them up. I figured that would keep the motors at exactly the same height. To allow me to adjust the rods, I put them in little U-shaped holes. I thought if they turned out to not be level, I could add tape around the rod and adjust the height that way.

To cut the clutter, I moved the vertical rods to the corners. I also rotated the whole design so that the open face of the CoreXY layout faced forwards, leaving the extruder easier to get to.

Put all of that together, and this was the final design:

It was easier to get to, and the quality of prints was fine. Either by design or chance, the bed is actually level this time and I can print on all of it.


And then it broke, after a couple of weeks of working perfectly! Print quality deteriorated dramatically.

When this happens in software, I know what to do. For hardware, I was kind of at a loss. It was still moving the platform, and nothing seemed sloppy. The first few layers would sometimes print well.

I decided the hot end was jamming. There was a warning in the troubleshooting page that you should be careful not to over-retract filament. I hadn't paid any attention to that. The settings I had been using for the PrintrBot called for 2-3 mm of retraction. I had pushed it up to 5 mm to try and stop the drooling of the hot end. E3D recommended 0.5 mm for the Lite6! Oops.

I figured I had worked the lining out of position with all those huge retractions, and so I bought another hot end, built it and installed it. No change. It continued to sometimes work and sometimes fail.

At one point while it was failing, I noticed no filament was moving into the extruder. I took it all apart and saw that the gear that pushes the filament seemed worn. I bought another one. That seemed to fix the problem, but made me wonder what could wear down a steel gear in a few weeks of printing. Forum members gave me the usual "made in China" grumble.

Then it failed again, the same way -- no filament being fed in. After taking it apart again, running it on the desk with all the parts marked, I could see that the bearing that presses the filament against the gear was not turning.

After I took that off and looked at it, I discovered the source of the entire problem -- a broken plastic arm. The crack was on the back where I'd never noticed it. Pull on it and it would gape wide. With no pressure on the filament, the gear couldn't force it down into the hot end effectively, and the printer was starved for plastic.

Once I reprinted the arm (with a stronger design!), everything worked correctly again.

What Next?

I'm happy with the quality of the output and the size of the print volume. As far as I can tell, the printer is better in every way than my PrintrBot. I've spent perhaps $650 on parts, which about the cost of my PrintrBot Simple Metal. The volume is double on every dimension. The larger PrintrBot Plus is $1200 for a smaller 250mm print volume.

I'm tempted to post an Instructable of my own on this version. There are a lot of comments on the Volcanus designs from people wanting more detail. Since my machine is built all of stock parts, there's no cutting to do, unlike the Vulcanus designs. If you had all the printed parts and knew what you were doing, you could build it in an afternoon.

There are some issues that keep me from posting my own design.

When I went looking for screws, the guy at the store growled "no metric", so I ended up using American-style 10-24 and 8-32 screws. I don't think those are easy to find outside the U.S. I'm using M3 screws to hold all the plastic parts together. I'm sure I could redesign this around M4 or M5 screws, if I can find square nuts in that size.

Next, I had to fit my printed part design against the hardware I bought. I'm not sure parts printed on another printer would fit the same way. Also, although the inside diameter of the bearings is part of the spec, the outside size isn't. A different set of bearings might not fit the printed parts at all. I would need another way to hold the bearings and rods that wasn't so size-critical.

Finally, it's just a lot of printing to make all these parts. With some work, I'm sure I could cut that down. For one thing, I could use metal fasteners from the 80/20 company instead of printed parts at the corners. That alone would cut the print time in half, for about $30 in parts.

In the end, this is a minor variation on the Vulcanus, so I don't really want to step on their toes. I also won't put up a design I haven't built. Fixing the problems means tearing this all apart again and rebuilding it. I'm just not sure it's worth it.

It was a fun project, but I think I'll stick with software.

Home       About Me       Contact       Downloads       Part 96    ...   

blog comments powered by Disqus