Tales of 3D Printing

Fig. 1

Several of my projects uses 3D printed parts, like those shown above, and I have received emails asking about what I use to make them. This is a kind of blog about my exploration into 3D printing. One thing is for sure - I'll never buy another plastic knob again!

Fig. 2

When personal 3D printing first came on the scene with the advent of open source RepRap machines, I was quite intrigued. The idea of additive machining and the lure of being able to dream up a part of arbitrary complexity and have it appear in my shop in a few hours was pretty enticing. Toward that end, I starting building my own 3D printer in 2013 - a RepRap/Marlin/Ramps machine, a Cartesian design that I called the "Gilbert," described here. Not one of the parts used were 3D printed, since I didn't have one yet. In retrospect, its 12x12 inch build area was a bit prescient, as there weren't any heated beds that size yet, but it was really rigid! One of these days I should go back and finish it.

Fig. 3

Before completing the Gilbert I got sidetracked into pursuing a different printer configuration, the delta style printer. One of the first deltas to become well known was the Kossel, built by Johann Rochall, which was based on his earlier prototype, the Rostock. Two other friends, Allan Reeves and Bill Plemmons, and I built a similar delta that provided a larger build area. This printer we called the Autotroph, shown above. It used an Arduino/Ramps 1.4 card. With this machine we had many adventures and I made many of the parts shown in my other projects.

Fig. 3

More recently (Spring, 2018) I decided to try a "consumer" type printer, so I purchased a Creality CR-10 Cartesian printer, which was getting quite good reviews. Like many others, I had a very good "out of box experience" with it - within 10 minutes of unpacking the machine I was leveling the bed. Shown above is what it looked like about 30 minutes after I opened the box, sitting next to the delta. Most of the 30 minutes was spent cutting and inserting the blue plastic runners in the extrusion slots. I already had a Raspberry Pi running Octoprint for the delta, shown above between the printers in the small gray box, so I also used it to drive the CR-10. There are lots of YouTube videos out there covering the installation of the CR-10, so I won't dwell on it here.

I was warned that the glass sheet that comes with the unit is not very flat, so I used a 12 by 12 inch mirror tile (a carton of 6 of them for $10 at Lowe's, shown on the left) in its place. To this mirror I applied a TH3D build surface, the EZMat, which I had also pre-ordered. I have no "arrangement" with TH3D, I am just a customer, but I have printed many hours with the EZMat now and it's just print and go - no tape, no glue, no hairspray. Objects with a small contact area usually need a brim in any case, and this is still true, and objects that have a large contact surface can be a bit hard to remove, but the majority of pieces I have printed stayed on the mat just like you want them to. The sharp steel scraper that comes with the CR-10 will gouge the surface of this material, so a plastic scraper works better. Everything else you see is stock.

The printer uses a 12v DC power supply to drive the 110 watt bed heater, so it takes a while (six minutes, actually) to heat up the 12x12 bed to 60 degrees. Larger objects come off the EZMat much easier if the bed has cooled down first, so I am going to use a couple of the other mirrors with their own build surface, so I can swap surfaces easily with minimal reheat time.

They do make 750 watt heaters that use 120 volts to replace the stock heater, which makes it heat up much faster. The stock heater can bring the bed up to 50 degrees C in about 4.5 minutes - the 750 watt heater gets there in 27 seconds. Also, the stock heater just can't provide enough heat to even reach a stable 100 degrees, whereas the 750 watt heater can get there in 1 minute, 47 seconds, so I may consider upgrading the bed later when I start printing materials that need a higher bed temperature.

Fig. 4

Here is the printer about 12 days after getting it. I've added many upgrades, which I've numbered:

1. Larger thumbwheels for bed leveling. The first time you try to level the bed, you are going to want to make these. There are many such things on Thingiverse, and I went with these by idig3d that just slip over the existing knobs, and then used a marker to fill in the numbering. Much, much better.

2. Bed leveling is a snap using a dial indicator. This holder by Laumann is just a friction fit around the stock hotend fan shroud, and of course is removed before printing. Just go to all the corners and the center and adjust the wheels until the same reading is achieved in all places. Do this after you've made the wheels above.

3. I use Octoprint (running in the Raspberry Pi on the right) which makes nice timelapse movies if you plug in a USB webcam. The one shown, a Logitech C270, needs to be attached to the bed somehow. I used this bracket by dpetsel and it works well.

4. The CR-10 control unit has a slot in its side for a micro SD card. Although I mostly print via Octoprint, I do sometimes like to print off an SD card, especially for things that will need more than one copy. The micro card, however, is small enough to make getting it in and out of the small slot on the side a problem, and more than once I needed to use tweezers to get it out. Also, I think those card slots are not really designed for constant use, more like once a month or once a year. Using an SD card extension cable ($7) I can not only make this slot easily replaceable, I can convert it to a full sized SD card which I find easier to handle and already have several on hand. I printed this unit by RioT_3D that attaches to the side of the CR-10 control box, which also provides a few slots for some spare full sized SD cards.

5. Having a knob like this one by ReplayMD on the extruder not only allows you to make sure there is easy flow from the nozzle, but provides a positive indication of the extruder working. There are several other ones out there - take your pick.

6. The printer is fairly rigid, but when doing tall prints, the sliding table begins to impart a slight sway to it. This Z brace by DrSteve42 provides all the rigidity that is needed, and then some. It called for 8mm threaded rods, but I substituted 5/16 threaded rods and nuts which worked well without any needed modification. I also slipped some 1/2 inch heatshrink over the threaded rod to get rid of the rough threads as well as make it look a bit better.

7. This one you might think a bit silly, and you may not need one, but this is a simple indicator by trudeau144 to remind me which way the wheels turn to move the nozzle higher or lower over the bed.

8. The filament reel isn't quite the right height for the extruder for the more common lower Z positions, so raising the whole control box lines the filament up with the extruder better. These legs for the control box by suhaenes work great and look nice, too.

Thanks to all the designers named above for sharing their improvements with me!

I do like the EZmat. You can see two spare build surfaces already applied to mirrors kept under the printer for easy replacement while another part cools.

I am still wondering if there is a better filament reel holder to be used, though, as well as I need some better lighting for the camera. Still thinking about those.

The printer does have a few issues to think about, though. One of those is thermal protection support. The factory firmware ships with this disabled. This means that it is possible that after a part failure, like the thermistor or one of its wires fail, energy can continue to be sent to the hot end until it glows red. Since it is in contact with the plastic, which burns, a fire can result. This isn't hypothetical - there are pictures on the web of homes burned from a 3D printer that caught fire. Just search "3D printer fire".

This issue results in some practical advice - have a working smoke detector in the room where you print, have a fire extinguisher near, and use a 3D printer that has oveheating detection installed. The latter point brings us to the CR-10s. It doesn't provide what is more formally called "thermal runaway" protection, even though the base software it uses - called Marlin - does support it. Why Creality would turn off this important feature only they know, but the conjecture is they used undersized capacitors on their controller board that caused erratic readings from the two onboard thermistors - one for the hotbed, and the other for the hotend. These erratic readings caused the runaway code to trigger and halted the printer, so they disabled this protection. Many CR's shipped this way.

By the way, the majority of 3D printers in the world use Marlin firmware inside them, and Marlin is due to work of many people, but mostly to Scott Lahteine, Roxanne Neufeld, Bob Kuhn, and Erik van der Zalm. More than just thanks should be due them - you might consider sending a few bucks to Scott's way at this link.

Into this situation stepped TH3D, which not only provided better capacitors to stop the erratic readings, but also provided a service to fix this for you if you mailed your controller board to them. They also provided more recent versions of Marlin that re-enable the thermal runaway protection that could be used across almost all of Creality's printers. He called it the Unified Firmware Package, which he made freely available along with how-to videos for making the change.

Funny thing is, my CR-10s does not appear to have any erratic readings - every time I use it, the temperature changes for both the hotend and the heated bed move within the specified window, and the target temperatures are controlled to within 1 degree. I presume Creality has responded to the capacitor fix in its more recent shipments, but they also didn't change their firmware to reflect this. I've heard that they farmed out the software part of their printer, so possibly keeping up with firmware changes is not their strong suit. I do like their hardware, though.

Another thing is that CR-10s has a power fail recovery feature that is supposed to work like this: the printer is printing and suddenly the power fails. When the printer is brought back on line, it sees a file on the SD that tells it there was a print in progress, and reads the file for information telling it where to resume the print, hopefully with no visible effect on the print.

I will believe it when I see it, but there are a host of problems to overcome. I believe the way Creality does this is by constant writing of position and temps to the SD card, which will shorten the SD life by a lot. Also, stopping the print, moving to home, and then going back to the same location is usually not perfect. This error will not just result in a local blip on that spot, but will be a whole layer shift for the print. Apparently, the Resume Print function does work, where the power is shut off and the nozzle hasn't moved, and you execute a Resume Print command to take off running again. In both of these cases, though, when the heated bed cools the print is prone to detaching from the bed surface, which will make a mess upon resume. All in all, I still think its best to address the power fail issue by 1. Making a cover for any easily tripped power switches to prevent an accident and 2) getting a UPS for the printer (and OctoPi perhaps) to sidestep the whole problem to begin with.

Fig. 5

Ok, here's the beast two years later. A big change I made was fixing the spool holder issue, shown at rear left. In the 2019 issue 4 of Nuts and Volts magazine there was a design for a spool holder (thanks to Ed Andrews) that has a strain gauge in it that measures accurately the weight of the spool, which allows an arduino and a display on its base to show the length of the filament currently left on the spool. Since you know the length as soon as you put the spool on the stand, and you slicer tells you the length of filament needed for the print, you immediately know if you have enough.

This allowed me to ditch the feet I had to elevate the control box, and place the control box under the printer. To do this, I printed some other feet (thanks to Pestkowiec) to elevate the printer, without taking up more all-too-precious table space. The squash balls did quiet the printer a bit while printing. I also tucked the Octopi under the printer, and added a 2x16 line display to the Pi that displays Pi status, like the completed percentage of the current print. I also replaced the EZmat with the magnetic build surface from Creality that allows large prints to be easily removed from the surface by removing it and flexing it so that the print just pops off.

I also updated the Marlin with THD's United Firmware Package while adding their EZ-ABL bed leveling sensor. That, coupled with using the BedVisualizer add-on in Octopi, makes knowing your bed's position and what to do about it way easier, and my prints have never been better.

Saving the best for last, I also upgraded the heated bed from 12VDC to 120VAC and wow. The bed now gets to 60C in half the time it takes the hotend to jump up to 200C. I used one of those 750 watt heaters made for the CR10 with a DC-AC relay.

Shown on the build surface and in the ziplock bags are some face masks that I printed with my Inventor Forge maker space that we contributed to local hospitals during the coronavirus outbreak.

Fig, 6

I'm a 1950's science fiction fan, so I made this print, which is a good example of how it's printing today. Very little touch up or sanding was done. (Tip: you do have to make sure the fins are lying flat on the bed in the slicer.) The windows are printed with "transparent" filament (more like translucent) in vase mode. I liked the paint job done by the original poster (ionmakes) so I tried to duplicate it. Not exactly the same, but I like it. I thought the PLA nose tip that I printed would just be too fragile, so I used the tip of a knitting needle with a bead on the end. You can use the PLA one if you want to keep it 3D pure.

Comments may be directed to gary at liming daught org.

Thanks for viewing this log! Other build logs may be seen here.