Sunday 24 May 2020

Prints That Go Boom in the Afternoon

More work on the temperature tower, since I want to calibrate that for PLA as well. Also, I should probably calibrate it separately for separate nozzles sizes. Anyway, feeling too lazy to change all the numbers in Bob long if-clause, I change it to this:

; For Fast_Informative_Temperature_Tower, 10 levels at 8mm
M104 S{230 - (4 * int((layer_z / 8)))}

While this doesn't show the exact temperatures at each level, it is a lot more concise and easy to adapt to other temperature combinations.

Printing the temperature tower with the 0.25mm nozzle takes a lot longer than with the 0.8mm, but it actually looks nice, and doesn't wobble eerily when printing the top. This minimal tower is rather unstable.

The PLA tower with 0.25mm nozzle is simply... perfect. At all temperatures from 230 to 190, no stringing, no change in the quality. I had to go into the gcode and double-check the output from above to convince myself that it was doing the right thing. 

No, it's not twisted, that's just the perspective.

A PETG tower with the 0.25mm nozzle (Z offset -1.05) and temperatures from 250 down to 210 gave me an entirely new experience: An exploding print. I was sitting next to the printer when I head this sound of plastic bouncing around, and this is what I saw:


Look in the background, there's where the parts landed.

The pieces collected. A part of the foremost pieces has also fractured off, but stayed put.

At too low a temperature, the print simply fractured - probably from the stress of being pulled back and forth. It's really difficult to see the stringing, but I think 230 is about the right temperature. Unless I am missing a chunk, it broke off while printing the 224°C layer. So my previous test with the 0.8mm nozzle giving the best result at 220°C doesn't work well here.

I'm surprised that this would happen with PETG, it's supposed to be less brittle that PLA.

Friday 22 May 2020

From large to small

Having had a lot of fun with the 0.8mm nozzle, I decided it's time to try out some other nozzle sizes - small one! I got both a 0.25mm and an experimental 0.15mm (!) nozzle. I'm starting with the 0.25mm one, as that has a preset in PrusaSlicer. Swapping was not a problem (when done right and not trying to unscrew the nozzle without holding on to the heater block like I did on my old printer), and the calibration strip came out fine, best at a Z offset of -0.8mm. A test block with insane overhangs came out like this - almost all the overhangs just feel off:


According to the Prusa page on different nozzle sizes, the advantage of a smaller nozzle lies mainly in flat details, like printing your own business cards. They have an example of printing miniatures with 0.4mm and 0.25mm nozzles, and they show little difference in detail. However, they both use the same layer height, and a 0.25mm nozzle should be able to achieve even thinner layers. As a virtual test, here are some snapshots of the slicing at different nozzle sizes and layer heights, using this skeleton warrior that has plenty of detail.

Unsliced version, look at that chainmail detail! Also notice the width of the sword

Similar to the example on the nozzle size page, 0.25mm nozzle with 0.10mm layer

The same with a 0.4mm nozzle - roughly same detail in the chainmail, but the sword is thinner!?!

The finest preset for 0.4mm is 0.05mm - some more detail in the chainmail

The same with the 0.25mm nozzle - I would say the chainmail is better here

If the 0.4mm nozzle can do 0.05mm layers, surely the 0.25 nozzle can do 0.025mm layers?

Thought experiment: 0.015mm layers

Here some shots of actual prints:

0.10mm:



0.05mm:



0.025mm:



I can't say there's a huge difference in quality. 

Having a small nozzle again also lets me print another couple of things for the printer itself that need to be a bit finer than the 0.8mm nozzle can do:

A filament filter, to prevent dust from entering the nozzle. This is particularly important with small nozzles, so it's high time. Having it integrated with the extruder assembly is a very nice approach.



Just for the cuteness, an extruder motor movement indicator. There are many such available, I opted for a gear. It's theoretically possible to have a full gearing that would give a purely mechanical usage gauge, but since the connection to the motor is only with a tiny magnet, that would probably take more torque than can be provided.


And finally, a nifty little bolt-o-meter:

Numbers hand-painted with a sharpie

Note: This post is backdated to the 22nd because all the prints except the smallest head was from then, and there\s a certain sequence to the posts.

Tuesday 19 May 2020

Temperature Towers and other tweaks

As mentioned in the last post, I did some temperature towers (using Bob's sneaky gcode) and found better settings for PETG. The standard towers are a little too detailed to work well with the 0.8mm nozzle, but I tried anyway. Here are the Fast Informative Temperature Tower, at 4 different retraction rate settings (default 1.4, 2.0, 2.5, and 3.0):


String galore, but less so at about 220°C and 3mm retraction. I don't think I want to retract more than that, I see several sources saying it can lead to hot plastic getting too far up towards the PTFE tube.

My 0.4mm nozzle was pretty full of PLA. I didn't want to scratch it using any kind of metal tool, instead I heated it up in a candle flame to get the PLA soft enough to run out. I would have preferred a butane lighter, but ours was out of fuel. The PLA didn't run out on its own, but I was able to attach a piece of filament and 

For PETG, I'm using the steel powder bed, as the smooth one just doesn't let go of the print, and for the 0.8mm nozzle with 0.4mm layer height, I have calibrated it to a Z level of 1.150. The layer height does make a difference for that. 

I'm using the stealth mode more. It is really a lot quieter (average 46dB instead of 52, measured with a phone app, the phone lying right in front of the printer) and only minimally slower, but it turns off crash detection, which I definitely want to have on when starting a print and leaving. When I'm watching the print, it's not so bad.

Printing at large

With the new powerful 0.8mm nozzle in place, it's time to print more things!

First thing: Feet for our shoe bench. Its current height is such that the Roomba can almost but not quite get in there, and might well just get stuck. So I designed some simple feet, rounded and flanging out towards the bottom. My goal was to make it slope non-linearly, but I started with the straight slope and did a test with that. Doing a draft print using minimal infill and thin walls, I was still able to not just sit on the corner it was supporting, I could plop myself down with force, and all it would do was creak.

Having confirmed the design, I added a simple function to curve it. The trick to that is to create a function that goes from 0 to 1 but with a slant. Good candidates for this are square and square root, this is what I ended up using:

/** A function that given i from 0 to max starts at 0 and ends at max,
    but slopes inwards in between. */
function inSlope(i, max) = i * (sqrt(max/i));

Note that I give it not a value between 0 and 1, but two values that combine to give that. That makes it easier to plot into an existing design. This gives a pleasant volcano-like shape:


With the 0.8mm nozzle, I can print two of them in 1h18m, using 68g of filament. With a 0.4mm nozzle and the default 0.2mm Speed setting, it would take 3h3m but only use 53g - the difference in filament use probably due to the infill being twice as thick without there being half as much of it.

While printing the second pair, the printer did something amazing that I never expected to see. Part of the edge of the first layer had curled up on itself (probably should tune the Z offset separately for each layer thickness), so when the hotend came back to that spot on the second layer, it hit this bump. At which point, it said "Crash detected", moved the hotend off to one side presumably to wipe it clean, then moved it back and simply continued printing! More simplistic printers would either have torn off the print, leading to a messy blob on the hotend, or at least have pushed the X axis out of whack. I had at most expected it to detect the crash and stop, not to fix it itself!

Here's the final result in action:



Next thing is a hook for our fly zapper, which has otherwise had diverse less-than-optimal homes and which also has a rather strange loop for hanging it, so normal S-hooks tended to fall off when removing it. We happened to have some shelf railing pre-installed in a tiny side room to our kitchen, so hacking up some hooks for that was simple. The prints did end up being larger than would fit, so I had to redo it a few times. I guess the 0.8mm nozzle is too imprecise for this kind of work, but with a few adjustments it worked:


I was also looking at doing some auto-watering boxes, but the size I wanted turned out to make it use more filament than I found reasonable.

For the dresser next to Mickey's comfy chair, I made some simple hooks fitting the top edge, allowing her to hang some bags there:

Weird-eye view of the hooks

And finally, in preparation for getting more filament (the white already ran out), I printed two master spools, so I don't have to contribute to plastic waste with the empty spools. It's enough that I contribute with failed prints. The astute observer will notice a veritable spider's net worth of stringing here. Those can be melted away relatively easily with a flame, but it would be better without them. I did some temperature towers (using Bob's sneaky gcode) and found that a combination of printing at 220°C and 3mm retraction gave much better results.

With default settings

With 3mm retraction, 220°C

Saturday 9 May 2020

Bigger is better!

Last episode: I broke it :(

This episode: I fixed it! :)

Turns out the heat assembly works much better when you assemble it according to the instructions rather than just in whichever order. In particular, the nozzle should go in first, then the heatbreak, not the other way around.

Because I've been wanting to try it out, I replaced the old nozzle (which needs cleaning) with a 0.8mm one. That, of course, is an entirely different beast, whose main purpose in life is to squirt out as much hot PLA as it possibly can. Without breaking things, that is. Having little idea how much that actually is, I searched and found this wonderful site crammed with useful information: http://projects.ttlexceeded.com/ (a.k.a Muppet Labs). Several pages there are dedicated to how to work with different nozzles (which he likens to using different lenses on a DSLR, in particular that it's an important feature and if you're not using it, you're not getting the best out of your printer).

The first thing is calibrating volumetric rate. The Maximum Volumetric Speed is MVS = Extrusion Width X Layer Height X Speed, and is supposedly 15mm^3/s. I'm going to follow Bob's instructions on how to calibrate, which requires manual control. I've connected the printer directly with USB using Pronterface. Ah, a familiar face. In some cases you just need full manual control. Pronterface lists the extrusion motor speed in mm/min, the default being 100mm/min. The cross section of 1.75mm filament is 2.405mm.  Then 100mm/min = 2.405 * 100 / 60 mm^3/s =  4 mm^3/s, noticeably lower than the possible amount.

Bob says to use 60mm of filament per test. I'll start on that once I get up near the limits, at first I'm just checking that things work (including that there's no filament oozing out around the heater block). Finalizing the nozzle insertion, I first run a PID Autotune (M303) which has the printer figure out how the heating behaves - a nifty trick I hadn't heard of before. Since I usually run my filament at 215°, I should tune it there. I happened to first just do the default 5 cycles at 150°, then following this page on reprap.org did 8 cycles at 200°, then used the built-in autotune from the menu. The original values, as told by M503, were Kp: 16.13 Ki: 1.16 Kd: 56.23. At 150°, the final values were Kp: 21.45 Ki: 2.20 Kd: 52.33. At 200C, they were Kp: 20.45 Ki: 2.07 Kd: 50.46. So there was definitely a difference from the original.

It's unclear if the time needed to heat up from ambient temperature figures into the PID values, so I let it cool down to 39° before the 215° run, though I don't remember if I did so before the 200° run. The 215C run gave Kp: 20.85 Ki: 2.06 Kd: 52.64. I ran one the next morning from totally cold, which gave Kp:20.46 Ki:2.00 Kd:52.25 It automatically stores it when run this way, so that's easier (as expected). And given how little variation there was between the last runs, I'll just take what the built-in autotune set.

Next step is heating to 285° and giving the nozzle a final slight tightening. I wish I had an electric screwdriver with torque limit showing actual Newton values.

Now for the extrusion speed test! With heat at 215°, starting at 100mm/min, increasing by 100 at each try, I got clicking at 500mm/min, but was able to extrude at 490 without clicking, an impressive 19.6 mm^3/s. However, from 250mm/min and up, it would increasingly curl up on itself after an initial straight line, a sign that it's not able to heat it to full temperature. Trying again at 200°, I accidentally ran it at 3000mm/min, which unsurprisingly it wasn't too happy about. Instant stripping. Whoops. Fortunately, the filament wasn't broken, so I could help it unload and then reload.

Running at 300mm/min shows some curling of filament, at 400mm/min it curled enough to twist back on itself and hit the hotend. I suspect that while extruding, it doesn't apply nearly as much power as when heating, because it just tries to keep the temperature steady, but doesn't take the amount of filament fed through into account. I can see it being difficult to adjust correctly, but also leading to much faster printing if done right. There's probably other problems I haven't considered, lots of smart people have thought a lot about this.

In any case, I was able to start printing again, and at about twice the speed of the 0.4mm nozzle.

Monday 4 May 2020

Nothing good lasts forever

Hot (or rather, not so hot) on the heels of boasting of my many successful prints comes a tale of woe and sorrow! Woe! Sorrow! Or at least some technical problems.

While printing a faucet filter tool of presumably the right size for ours faucets (I was too lazy to measure), my white filament ran out. Supposedly, the printer should handle this nicely, running an unload procedure immediately. For whatever reason, it didn't, just letting the filament continue through until it was past the drive and thus the point of no return. Apparently, but I didn't know at the time, it's feasible to just feed in more filament immediately, but I tried re-running unload, then pushing the filament piece further down. To no avail, it was stuck.

Opening the side (which hinges up nicely), I found a lot of white debris (it had ground down the end of the filament). After vacuuming most of it up, this was the sight that greeted me:


Taking a closer look with my proper camera, it was clear that the filament sat in a PTFE tube and wasn't a giant blob or anything.



So I tried pushing some more, at higher temperatures, but it wasn't budging. Eventually, I had to take the hotend assembly out, and since I'd probably need to take out the nozzle anyway (one page suggested removing the nozzle and then heating), I would swap to my 0.8mm MegaNozzle shown below (banana for scale):


After getting a set of inverted hex bits (very useful!), it was easy enough to unscrew the nozzle, but that didn't help with the blockage. Fortunately for me, they had designed the whole thing so that taking out the hotend is relatively easy, and I was able to unscrew the heatsink and heatblock. They advice against unscrewing the heatblock, but I didn't see how to avoid it, since it's not really accessible. Anyway, with that out, I was able to heat it in the oven and carefully puuuull out the filament until it went "plop" and popped out. This was essentially the classic cold pull, though possibly a bit too cold due to not having the right tools right at hand at first. The PTFE tube needed replacement, but fortunately my kit came with two spares - how prescient!


So I reassemble the whole thing and run a test without filament - after all, I need a nozzle in there first, which requires 285C. Alas, the heating is bad - it heats up, but very slowly, at 100C about 1C per second. I didn't let it run for long enough to get up to full temperature, it took over a minute to get to 135C. To check that it wasn't the thermistor misreading it, I poked an old PLA print at the heat block, but it only deformed slightly, so it definitely wasn't doing runaway heating. That's something at least, overheating could be quite dangerous. But I'm still stuck with bad heating. I double-checked the wiring in the board, and the resistances and voltage were correct. So either there's a loose wiring in the heatblock end, or... something else.

Many good prints done

Using PETG from Beta2Shape on the steel dust surface, I calibrated it to -1.09mm. Prints still fell off unless I used 3dlac. When I tried the flat surface, I was hardly able to get the print off at all. There is also a lot of very fine stringing when I use the default Prusament PETG settings. I'll try some of the tips in https://all3dp.com/2/petg-stringing-3-easy-ways-to-prevent-it/ to improve that.

For PLA, I couldn't use the steel dust surface, instead I use the flat one calibrated to -1.0mm. The PLA from DasFilament has done good by me. Curiously, after switching to the powdered surface and back, the calibration changed to -0.8mm. Clearly recalibration is a good idea after switching surface.

The printer has been quite busy. I joined makervsvirus.org and printed 50+ face shield holders:

I look super derpy in this shot, but it shows how the face mask works, just add a sheet of clear plastic.

50 of them delivered to our local hub.

I printed tools for my coworker Ilham for taking off the faucet filter (in German a "Percolatorschlüssel"):

Generic version that works on many faucets 
Version for a specific size of inner teeth - I didn't even know there were inner teeth! This was the size that Ilham needed, but difficult to get a good grip on

A version with better grip, but too large for our faucets. 


Some other things against Coronavirus:


My wife is doing a bunch of masks, but ran out of bias tape - as did all the suppliers. So I printed this nifty bias tape folding device, it works quite well.
Another thing for masks, this holds the straps instead of your eats getting pulled at. Unfortunately it slides downwards, and so does the mask.
And another couple of useful things around the house:

I got a used bike trailer of a kind I've previously used for the Monachium war chariot, but this one came with an attachment that tried to fill the same space as my disk brakes. Since physics has some stern words to say about doing that, I made an adapter for the other kind of attachment, printed in PETG (which is less brittle and more heat-resistant) and somewhat over-dimensioned. It works nicely so far.

For working from home, I found my WiFi connection utterly inadequate, so I decided to lay Ethernet into my room. These are Cat6-compatible clips that can be stuck onto the wall. I now have a pretty well routed wire, firmly attached. 

The new PrusaSlicer 2.2.0 has some nice details to it, like when an SD card is detected, it will add a button to write to the SD card and after that another button to eject. Now that's a UI that helps smooth the common path. Too many engineers in particular forget to do that, presumably thinking that it's enough that the functionality is available, there's no need to duplicate it. Kinda like the mathematician reducing a fire to "a known problem."