Home       About Me       Contact       Downloads       Part 91    Part 93   

Part 92: I Bought A 3D Printer!

July 11, 2014

Well, I'm not dead. But, from December through March, I don't think I slept more than 4 hours a night. That left me pretty zoned out during the day, and I did not accomplish much. After months of sleeplessness, I got seriously depressed and stopped working on anything.

I was feeling better in April, and started poking away at things again, working mostly on the GUI code. Then in May, I managed to injure myself and was back to sleepless nights due to pain. Sigh.

I feel like I'm coming back to life now and I hope I have the energy to do something more on this project. It's going to take me awhile to get back into it though. I'm still very vague and not motivated. I was telling myself that I'd start blogging again once I started accomplishing something, but that's just procrastination. Maybe I'll be more productive if I feel like people are waiting to hear what I'm working on.

To cheer myself up, I bought a couple of new toys. The first was an Oculus Rift Development Kit, which should arrive in July sometime. The second was a PrintrBot 3D printer.

Why Buy A 3D Printer?

At the end of the last part, I said I wasn't going to buy a printer. For the same price, you can print a lot of pieces with Shapeways, and they are much higher quality than anything produced on a home machine. But I also want to design my own models, not just print things from the net. And to do design, I need a quicker turnaround time. Sending something to Shapeways means I don't see the result for weeks.

How big are marbles, anyway?
I was designing a new case for my computer, which I've wanted to do for a long time. All my designs kept coming out ridiculously expensive though -- hundreds of dollars. I got the idea that I could build a lattice with holes, which would use less material and be much cheaper, then plug marbles into the holes. I was thinking of a large "brain coral" shape for the case.

I sent a test piece off to Shapeways and continued working on my design. Three weeks later, the test holes arrived, and I discovered that the whole idea was unworkable. The 3D printed plastic was strong enough, and subtracting a sphere from a plane gave me a curved inside edge that would hold a marble. The problem was that the marbles were all slightly different sizes. It had never occurred to me that a machine-made product would vary so much, but there is no single hole size that would work. I would have to measure all the marbles and have different sized holes for each.

Waiting that long to get an answer to a key design question was infuriating, and so I started looking for a printer I could afford. Of the cheap choices, the new PrintrBot Simple looked the best to me. It's not a closed system, there's a lot of advice on getting it to work properly, and has a reasonable print size. It's US $600 assembled.

PrintrBot has replaced their old wooden machine (also called the Simple) with a new metal one. The old one is renamed the "Maker's Edition". I guess the correct name of the new printer is just the "PrintrBot Simple". It comes in a variety of colors, so you order the "Simple Black" or the "Simple White", etc. This strikes me as a problem, since I want to Google "PrintrBot Simple" and get this version, but it returns all sorts of old models. Just look for "PrintrBot Simple Metal" though, since that seems to be what people are calling it.

In addition to making it out of metal, the new version has a larger 6" by 6" by 6" (150 mm) print area and a bed level sensor. Microsoft is apparently getting into 3D printing and specifically supports this printer. They also show it off in their 3D Printing Essentials Video. See the second part on hardware for a demo of this machine. Warning: the video is the dullest thing I've seen on the net in months!

The PrintrBot Arrives

At the beginning of June, I ordered a machine direct from PrintrBot. Amazon also carries the machine, and you can probably get a full refund if you return it. Direct from the company, you can only get 80% of your money back.

Since I'm close to their offices, the machine arrived the next day. Here's what it looks like, pretty much fresh out of the box:

This is the start of my second print, trying to get a good copy of the fan shroud (the funnel you see at right.) This screws on top of the small fan next to the red filament extruder and cools the filament after it's applied.

The printer did more or less work right from the start. The software setup was a bit fussy, and the filament was a bit stringy, but I got a recognizable print out of it.

For comparison, I printed the same piece of my Luggage model that I had printed on a MakerBot Replicator at the library. The results were pretty similar (on a machine that costs 1/3 as much):

The orange one is from the MakerBot (it's red where I attempted to paint it), and the gray from my PrintrBot. At top right, you can see a failed attempt which shows the internal structure a bit. I had read up on the forums and adjusted the thickness and flow rate for the filament, and got a slightly better print.

PrintrBot only includes a small reel of filament (the grey coil you see in the picture), so I also ordered a 1kg spool of white filament off Amazon -- SainSmart 1.75mm imported PLA Filament.

The printer doesn't come with any kind of reel holder. You can order one, or you can print a couple of different designs. I didn't like either of the designs, but a bigger problem is that both required more filament than they supply with the printer. So I built a simple reel holder out of some scrap wood.


Then disaster struck. I was printing the fan shroud for probably the fourth time, and hit the "home" button on the software control panel. I meant to hit "Home X", but "Home" centers all three axis. This meant that it centered X and Y, then proceeded to push the extruder down into the finished shroud still sitting on the bed. A simple user error, but forcing the extruder into a cold part broke the machine. The shaft coupler between the Z axis motor and the screw stretched and I could no longer get good prints.

Before and after

PrintrBot sent me a new coupler, but replacing the existing one turned out to be not so easy. Even with the screws out, it was really tight on the motor shaft (bottom in the picture) and did not want to come off. Once off, the new one did not want to go on. I got advice on the forum to take a Dremel tool and widen the shaft hole. Since I have nothing like that here, I ended up just heating the coupler in a sauce pan, after which it slipped right on the shaft.

I was able to print again, but things did not go smoothly. It took several attempts to get a decent fan shroud, and when I put it on, the fan promptly broke. I switched to using a desk fan, since I didn't really understand at that point what the small fan was for (it's to cool the plastic, not the machine.)

I was also concerned that the power supply and the stepper motor for the filament extrusion were running really hot. They just use a laptop power supply brick for this machine and I don't think it's the best choice.

When I started to print really large objects, other problems appeared. The firmware seemed to be just turning off the heat at random, letting the extruder cool down, causing error messages. Then it would heat it up again and overshoot. In fact, on some prints, the temperature would suddenly go crazy and wander up and down all over the scale, from too low to print (wasn't melting the filament) to dangerously hot.

The scale at right is degrees centigrade, and 250 is far too hot. The bottom graph shows in green when it is heating the extruder (blue line is average), and the top graph shows the measured temperature (orange line is average, white line is the target.)

I was also getting communications errors -- checksum errors, and "Line number not equal to last line + 1".... These happen at random every few minutes. The software resends the line and continues, but if you get too many in a row, the PC software stops the print. Which leaves you with a hot extruder sitting on the printed piece, melting it. You also have no way to restart and complete the piece, even if it took hours to get to this point.

Not only is this piece ruined by the melted blob, you can see at the base where a high temperature swing has burned the piece.


PrintrBot customer support seems to consist of a couple of guys who will send you new parts when you break the old ones. They try to diagnose mystery problems, but mostly send you to the forum they run on their site. These temperature swings and communications problems had everyone stumped. I got the obvious suggestions (Try a new USB cable! Try printing from an SD card!) and more alarming ones (Reflash the firmware! Maybe you have a broken wire somewhere. Check all of them with a meter.)

Finally, someone suggested a new power supply. The printer board actually has the same 12V connector as a PC motherboard. So I hooked up an old 380 watt PC supply and tried that. That seemed to help the temperature problem, but I still get communications errors.

The bottom line here is that after a month of owning the machine (can't even return it now...) I have spent most of my time trying to get it to print reliably. I still don't feel I can leave it alone to print, since it can stop abruptly and start burning plastic. With prints taking hours, that's a real nuisance.

I also have to say that the software situation could be better. Windows can get confused and refuse to recognize the serial port. A lot of people on the forums can't get past this first step. The "slic3r" software that creates the printer output from a 3D model sometimes makes gross errors and leaves out parts of your model. It sometimes forgets to close the tops of models if they are horizontal. It uses far too much filament, completely filling some parts of the model.

Trying to figure out my communications problem, I looked at the firmware. It could also be improved. I don't like to nitpick open source software (it is free, after all), but command parsing code should not look like this:

if(strchr(cmdbuffer[bufindw], 'N') != NULL)
  strchr_pointer = strchr(cmdbuffer[bufindw], 'N');
  gcode_N = (strtol(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL, 10));
  if(gcode_N != gcode_LastN+1 && (strstr_P(cmdbuffer[bufindw], PSTR("M110")) == NULL) )

Commands look like the string "N200" for line number 200. This code finds the 'N', just assuming there won't be another command in the stream, finds it again because it didn't save the result the first time, then reads a number (without checking) starting at the next position. If it isn't "gcode_LastN+1", it gives me this line number error I get all the time. Assuming that there isn't an "M110" command in the buffer somewhere. That command code is not listed as even supported and not handled anywhere else in the code.

The rest of the command parsing for a couple of dozen commands is spread all over the place and is similarly ad hoc. It just makes me itch to rewrite the entire top level of this firmware. Unfortunately, if I did that, I don't think any of the people working on this code would accept the changes. It works, after all...

Are We Having Fun Yet?

After building a reel holder and using a desktop fan instead of the broken extruder fan, and a PC power supply instead of the flaky laptop brick, my machine sort of works.

I've been trying to print a version of the Luggage model large enough to enclose an external disk drive. That makes the complete model about 8" by 5" -- too large to print in one piece on this machine. I've broken it into quarters. Of course, after printing these, at about 4 hours for each chunk, I discover they won't quite fit together without some sanding. The filament sort of widens as its printed, leading to a "kerf" of about half a millimeter.

I haven't had a day where I felt like listening to the machine all day to print the rest, but I will. (listen to someone else's machine here.) Then I have to glue it together, paint it, and hope that all the dimensions are right and the drive screw holes match up!

I don't know if I can really recommend this machine to anyone. It does work, and if I hadn't made a few mistakes along the way, would have worked right out of the box. On the other hand, support is minimal, I think they went cheap in a few places on the hardware, and the software could use a lot of work. In fact, I'm not sure PrintrBot has any software people of their own.

This project wasn't as much fun I was expecting. Hopefully, the Oculus Rift will be better. That will at least get me back into graphics programming.

Home       About Me       Contact       Downloads       Part 91    Part 93   

blog comments powered by Disqus