Unless you’ve been hiding under a rock on another planet for the past few years, you’ve undoubtedly heard all the hoopla regarding 3D printers.

“CNC” (computer numerical control) machines have been around for many, many decades, but those hawking the virtues of 3D printers tend to push that fact under the rug.

My curiosity got the better of me, and I bought one of the first PrintRBot Simple Metal machines. I’m not singling out this particular product, per se, although it deserves criticism. My experience so far is that 3D printing is far more hype than reality.

These 3D printers, like the hobbyist CNC machines that proceeded them and in turn the industrial CNC machines that proceeded those, all rely on the anachronistic approach of converting the CAD data into toolpath G-code. The G-code provides a very long list of basic movement instructions that the printer machine blindly follows in order.

The idealized four-step process to 3D printing consists of:

Step 1: design the object in CAD

Step 2: convert the CAD file into a “3D” format such as a “.stl” file

(Steps 1 and 2 are, for many/most users, just downloading someone else’s work off the Internet)

Step 3: “slice” the 3D .stl file into G-code

Step 4: use software to feed the printer machine with G-code, one instruction at a time

Now, for the disillusioned reality:

The raw data in Step 1 is converted in Step 2 into a less sensible format. All objects in an “.stl” file are represented as a construct consisting of myriad of triangles. So, for example, the purity of a circle is diluted into a piecewise construction of triangles. This alone isn’t the end of the world, but it is an example of the strange world in which 3D printers operate.

All intelligence is placed in the software used in Step 3. The “slicing” software attempts to correctly infer the object (now represented as a bunch of triangles) and write a suitable tool path file. It is a tall order for any software, and it is all too likely that the object might be incorrectly inferred. One won’t necessarily find this out, of course, until after one has attempted to print it and found the resultant object to be flawed.

Step 3 further depends upon the human operator judiciously choosing from a bewildering array of configuration options. Manufacturers do not seem to provide recommended settings for their particular printer. Each individual user has to resort to speculatively trying many settings, making lots of failed prints in the hopes of learning what parameters are appropriate.

What I find so utterly offensive is Steps 3 and Step 4 ensure that Step 4 is a completely a “dumb” operation. The printer machine has no intelligence of its own and blindly follows orders.

For example, suppose the tool path G-code generated in Step 3 commands the printer machine to perform an operation faster than it is capable of. The printer machine will fail at this task, and the printed object is ruined. Meanwhile, the printer will continue failing throughout the entire failed job.

Sure, a human operator can try slowing down the entire machine to playback the G-code more slowly, but this requires a human operator to watch the machine like a hawk, and it indiscriminately slows down all instructions (both those that do need slowing down and the vast majority of other instructions that don’t). Like the weakest link in a chain, a single failed operation can ruin an entire job.

Another example is the extruder operation. A stepper motor feeds raw thermoplastic material into a “hot end” that melts the plastic prior to it being forced out a narrow aperture.

The extruder is where things go horribly wrong. The extruder on the PrintRBot Metal Simple jams over and over again. Each time, the job is ruined and things must be taken apart to put it right before attempting the job over again.

Anyone who has every used a hot melt glue gun knows that as one applies pressure to the trigger, one can sense how molten the glue is (and what the possible flow rate likely is).

However, in the 3D printer world, all decisions about rates are cast in stone in Step 3.

If anything anomalous occurs in the extrusion process, the printer blindly feeds material into the extruder beyond its capability, jamming the printer machine. Of course, the printer machine is dumb, so it just continues on its merry way, further jamming the material as it continues to print in hot air instead of material.

Further disillusionment comes in the form of warping.

The dirty truth about 3D printers is that the plastic shrinks, sometimes dramatically, after it has been extruded from the “hot end”. The shrinkage is very uneven. The edges of the object cool more severely than those in the center, and those edges tend to bend upwards. There are claims on the Internet that this is specific to ABS plastic, and isn’t applicable to PLA. They are lying.

Even worse, the object doesn’t necessarily adhere well to the printer bed surface. Frequently with the PrintRBot Metal Simple that I purchased, each little piece of the printed object becomes detached moments after it is printed. As a result, the printed object is stillborn before it even gets started. (To further aggravate things, the printer is, of course, dumb, so it just proceeds to print more plastic on top of hot air.)

The net result is that getting an object to print at all is a challenge, and if my some miracle it does print, it tends to be too warped to be useful for anything other than decorative objects.

Adhesion to the printer bed surface is a particular annoyance. There is NO WAY that the designer of the PrintRBot Metal Simple didn’t know this was going to be a problem. It seems they deliberately released a product that would fail.

Moreover, retrofitting a solution is problematic because of design decisions. PrintRBot Metal Simple uses a hall effect sensor to judge the distance of the extruder from the printer bed.

Hobbyist attempted solutions to 3D printer adhesion include using a glass surface that is heated. Of course, glass isn’t metal, so unless the glass and heating element are paper-thin, the hall effect sensor on the PrintRBot Metal Simple would attempt to drive the extruder through the glass. (Again, 3D printers are dumb, so it will just blindly destroy itself until the motors burn out.)

I don’t honestly know what I’m going to do to remedy the dreadful bed adhesion with the PrintRBot Metal Simple. I’ve had limited success installing sticky tape upside down with the sticky surface upright. It is enraging that I’ve spent a non-trivial amount of money on something that functions so poorly.

I’ve mentioned the “dumb”-ness of 3D printers, and I’ll mention it again. Seeing that we are well into the 21st century, the use of G-code to operate these machines seems madness.

For example, all prints begin with an instruction to set the extruder “hot end” temperature and wait until that temperature is reached. The controller will not accept a single additional instruction until the current one is completed. This can be a multi-minute operation, but the dumb printer will just continue being dumb.

This isn’t just a mere inconvenience. I’ve already mentioned how a printer will tear itself apart trying to execute G-code beyond its capabilities. Suppose one sees an impending operation that one knows is going to damage the printer. (This is particularly true of the PrintRBot Metal Simple, as they did idiotic things like change the motor direction between firmware revisions.) There have been too many times already where I see the extruder is jamming. I hit the button to pause, but the current G-code instruction goes on forever (as the extruder stepper motor proceeds to worsen the jam by attempting to force even more material in). The only way to abort an operation is to pull the power cord... and then one has to remember to re-“home” the coordinates of the machine (as the equally dumb host software is not necessarily aware of the interruption of power).

If there is any justice, the manufacturer that produces a 3D printer machine that works (rather than being fueled by hype) will be massively successful and squeeze out the charlatans.


back to main page contact