Sunday, 19 March 2017

La pieces des resistances

Continued a bit with the red filament, but it didn't go long before there was underextrusion. After +Tim Hatch pointed out a possible electronics problem, I carefully checked the filament after pulling it, and indeed there wasn't really any sign of stripping, nor did the bolt have filament pieces on it. Time to see if I have a loose connection.

Occurs to me I've occasionally had the Z axis move surprisingly slowly, only to go at full speed again shortly after. That could be a microstepping error on the Z axis.

There's not that much information on the microstepping setup on the Melzi, but judging from +nop head's comment on this video, the Z axis microstepping is controlled by R20, and the E equivalent is R24 (Melzi board diagram).

Looking at the resistors up close doesn't reveal any obvious flaws, but if Tim is right, this is just slightly flaky, and that's unlikely to show up.

Interestingly, neither X nor Y has shown any problems like this. I guess I will have to try soldering these two as carefully as possible.

If I can't get them soldered, my alternative is to get them at least into a stable state - by cutting them. That, I think, will turn my 1/16th microsteps into 1/8th, losing some precision in the process. (Or would I need to replace with a different resistor?) I would need to adjust the steps per mm, which is reasonably easy, but would it make the motors run hotter? Require more amps? Make them be able to go faster? I don't know.

Monday, 13 March 2017

Reasons to strip, #4: Misalignment

As mentioned, printing to close to the bed stripped the filament again last night. While I was (and somewhat still am) suspicious that the white filament strips more easily than the red or purple, I just noticed a curious thing when about to clean the hobbed bolt:

Notice how the white parts, the filament stripped into pieces making the teeth slip, is not evenly distributed across the the teeth? That's probably because I have taken off one of the washers from the gear mount, and now the teeth are not aligned with the filament any more - which means less pulling power and more stripping. That can explain quite a bit - and it's amazing I got the fan duct as far as I did.

See the bolt at the top? Not aligned at all. A wonder anything worked.
So the filament might not be to blame. To paraphrase Dr. House: "It's not the filament! It's never the filament!"

So the right procedure for mounting the hobbed bolt and idler is:

Put in bolt with gear.
Check that the teeth align with the holes for the filament (they didn't) and add/remove washers as required.
Mount bearing and fixating nut on the other side.
Put in filament (loosely mounting the idler can help)
Mount idler.
Tighten idler screws to where the windings are almost touching.

Also: A stovetop cleaner held loosely but moved quickly is great for popping off stuck prints.

Today's calibration is 0.5mm Z offset with 21C, 1022 hPa, 85% humidity.

Saturday, 11 March 2017

My greatest fan!

With a beautiful test cube under my belt, it was time for total hubris: Printing the duct fan. Also, one possible explanation for the stripping is that the fan blows on the hotend, cooling it down and causing back pressure. This is my first 4-hour print and it worked, until towards the top it started to underextrude, and then eventually, right at the very top, it stripped. Le sigh.

It's my greatest fan... duct.

Total strippage
The nut traps were just about perfect - I had to hammer in a couple of the nuts, but then they would fall out.

Around the nozzle, the print was into thin air, and it shows.

More amazingly, this bridge was built across nothing, and it worked. Printers are magic.

This is the crazy backup solution in case the printed one doesn't work: Cut two old ones to match up.
Somewhat bummed by the renewed stripping, I decided to try attaching this duct anyway. It was fiddly work, with very small tolerances. I had to add a washer on the inner screws due to the stripping having cut a bit off the height. Otherwise, the X belt would hit the top of the duct. But it actually fit.

Now is the time for... another cube, of course. Yes, it looks nice. The printer has not suddenly become fatally broken. More interestingly, another boat.

Benchy McBenchface, fan duct edition.

The boat came out much better this time, only one weird strip on the hull, only slight cracks on the foredeck.

Still these cracks in top surfaces, like the boxes

You can almost tell what it says
In other news, I am using half-round sticks for hanging posters, with magnets holding them together. For that purpose, I need precision-drilled holes, no more than 3mm deep, right in the center. The obvious thing to do is to design and print a guide. Took me about 2 hours to design a highly parameterized one. I'm getting used to OpenSCAD.

Since I need my laptop for other purposes, I went all the way with the Pi and just started OctoPrint, then uploaded some pieces and started printing, first the guide. Problem with this is that when you start a print from another room, you might forget details like Z calibration and hairspray. All the more reason to get the calibration automated. And of course I need to mount a webcam that can look under the duct. I have the cam, just need to design a thing it can sit on.

Sunday, 5 March 2017

New and exciting problems! Well... not so exciting it turned out in the end.

Printing journal (I hope)

Printing glass marker. Temp 22C, 999hPa, 48%, Z offset 0.5.

Whether due to me interfering with the early stages of a print, or something fatally breaking, I don't know, but the printer now doesn't take commands. I had done calibration, and before starting a print, I turned off the extruder and on the bed. The print started as normal, except when it had heated the bed and gone into heating position for the extruder, it didn't set the extruder temperature.

Several variations of turning things on and off later, the extruder temperature still didn't get set, and occasionally even homing didn't seem to take. The temperature is measured fine, though.

Now keeping careful log:

Closed Pronterface and kept the printer off for 5 seconds. Connected, which took seconds, then it didn't register homing.

After I had written the above, it homed. I started a print, it went straight into heating position, then didn't set temperature.

RepRapPro has a lengthy article about what can go wrong related to temperature. However, I can set temperatures manually, so it's not fully dead.

When I turn on debug communications, I get wrong-looking output:

>>> M105
T:22.5 E:0 W:?

There should be more in there - also the temperature listing on the left is missing the target, it shows the same as above. The graphs show about 20C for the extruder, though

Manually set extruder to 120 and bed to 60. No apparent increase in temperature.

Tried lifting the Z axis to better feel the extruder, but it didn't budge. Homing didn't work either. Turned off everything and went to have brunch.

Later I used my laptop for a print, and it went totally smooth (the print process, not the print itself):

It's a piece that fits on a standard IKEA glass so we can tell which is whose

Coming back even later. Z offset 0.5, and I was able to set the temperature for that (since I don't want old filament on the hotend to influence the offset). Temperature 21C, humidity 994hPa, moisture 36% (outside). When printing, no temperature gets set. Weird. Maybe Pronterface is just being stupid and it's time to try...


I already installed it a while back. Starting it gave a webserver at port 5000, with a security check (http only, though, so not that useful). The settings are pretty nice, but there's no obvious way to set a Z offset, which I need until I get autocalibration in. Homing is split between X/Y and Y. I copied over the start/end commands, and added commands on connection to prepare for calibration.

There's a Slic3r plugin on GitHub, but right now I'll just reuse the GCode.

Like Pronterface, this doesn't like to say where the printer currently thinks it is. Again, no heating happens. The following commands were sent:

Send: N0 M110 N0*125
Recv: ok
Send: N1 G28*18
Recv: ok
Send: N2 G1 Z5 F5000*6
Recv: ok
Send: N3 M107*38
Recv: ok
Send: N4 M190 P60*89
Recv: ok
Send: N5 M104 P220*99
Recv: ok
Send: N6 G28*21
Recv: ok
Send: N7 G1 Z5 F5000*3
Recv: ok
Send: N8 M109 P220*99

The N* is just line numbers. The M190 P60 is setting bed temperature, and the *38 is a checksum. So that looks fine. (Yes, it homes twice, due to extra start GCode I pasted in). Sending it manually does nothing, nor does the temperature controls work. There's still temperature data coming back, though.

Tried powercycling the printer in case it had got into a stuck state (waiting for a temperature that never goes anywhere?). Now it won't connect. Restarting Octoprint doesn't help. 

Restarted Pi and printer both. On start, it nicely connects, gets ready to calibrate, and shows the actual temperature and targets after M105 commands. I can use the controls to set the target, and that works (OctoPrint doesn't poll that often, so the curves are more jagged, but it doesn't do the confusing autoscale).

Sending the commands above in sequence worked fine, until N4, where it just ignored it. Still sending back full temperature reports, though. The N8 M109 P220*99 command is the killer. The argument apparently should be S220, not P220, according to RepRapWiki. That's Slic3r's fault - which makes sense, then, since the laptop uses a different version of Slic3r.

And there, in one of the printer settings, lies the answer: It was set to a different GCode flavor. Why this happened now, I have no idea, but after switching it to Marlin, it works perfectly. Another cube came out just right:

Still slight gappiness in the top, but otherwise nice.

Saturday, 4 March 2017

Moving to extruder #2

Just printing some prints:

GlassMarker - a small piece designed to sit on the rim of a water glass, so we can tell which glass is whose. I'm trying for a fit that makes it not move along the rim.

And now the white filament stripped. Curiously it can still extrude in reverse, but stops when it extrudes forward to a certain spot. But as promised earlier, this means it's time to switch to the mount I paid for.

Getting the support out was relatively easy, certainly more so than with my own print. A bit of digging around the edges, then push, and it went pop. The flat nut trap was a perfect fit. However, the deep nut traps were a different issue - they were just slightly too small on the sides, on the order of 1/10th of a millimeter. This is well within the promised spec, but a problem here. Dremeling it out didn't work well, so I went and got a set of tiny files from Conrad. It took a bit of work, but not onerously much, and now the nut traps are perfect. Apart from one I filed a bit too much, I'm never going to get those nuts out again.

Assemble, assemble, I know how this goes, so of course I forget to put in the nut under the motor. Disassemble, disassemble, nut, assemble, assemble. Hm, that cable looks messy - oops, I turned the entire thing 360 degrees and now the cable is twisted. Fortunately it was easier to fix this, and I took the opportunity to at least affix the cables:

With everything in, a first test just extruding into thin air looks pretty good. Time for a test piece. Today's Z offset: 0.4mm. Today's weather: Pressure 1018, humidity 63% (outside), temperature 21 (inside). Result:

Slightly overextruded still, I will need to go back and twiddle the Z_STEPS_PER_MM. That was at 0.5 extruder multiplier, trying again at 0.4 just because. Came out with really nice sides, but the top still a bit overdone. And the corners are flattened, maybe my acceleration is too high:

Doing one at 0.3 just to see how far down I can go. Cutting 25% off the material ought to be plainly visible... but no! Curiously, lowering the extrusion multiplier even more doesn't change the amount of filament used. And by now, neither does increasing it - even though further up in the log I see other values: The first (at 0.5) used 190mm, the rest used 158mm.

Interlude: Test extrusion art

Later: Mystery solved. I was setting the Z offset when I thought I was changing the extrusion multiplier, because they both ended up at 0.4. Good thing I didn't print with that.

Acceleration is actually set rather low already, compared to the Marlin defaults. I should use the M201 command to vary them.

Updated the firmware to not have a fudge factor on E_STEPS_PER_MM, and set extrusion multiplier back to 1.0. New Z offset in the evening is 1.3 (!), at 20C, 1007 pressure, 51% humidity.

And I couldn't really wish for a better print. Time to try a boat - 3DBenchy (McBenchface?) seems to be all the rage for a tougher test. Slicing it took almost 8 minutes, I suspect the slicing speed is the weak point of the Pi, and should be offloaded onto something else.

First boat print came off partway through the print:

Another try at boat didn't stick at all. Double-checking the amount of filament extruded gives... odd results. At first it's pretty close, then after more tests it becomes less and less precise, and eventually I end up with a correction factor of almost a factor 2. After that, it measures consistently correct. For now.

Another boat. The problem, now that I observe the print, is that the overhanging corners tend to curl up, and then they eventually cool down, harden, and get bumped into by the next layer. Pop! goes the print... but not this time! Bogons work.

Most discussions of curling is about curling at the bed, not at overhangs. Some suggestions are more fan (mainly), better cooling, and maybe less infill/printing faster (!). Possibly the fan blowing all over causes the print head temperature measurement to be off, which can make things really unpredictable. Maybe I should get back to the fancy fan ducts.

Some boat details:

I'm pretty sure there shouldn't be holes like that.

The first layer was more or less printing into thin air. I'm amazed it stuck.

Monday, 20 February 2017

Three, count them, three different extruder mounts

[Note: This post is not in chronological order]

After my previous failures, I decided it was time to get this mount right. So let's try no less than three ways to get a good mount!

Way #1: After drilling out the filament hole with a 4mm drill, use a heated metal stick to smoothen the inner surface. Would have been easier if I had had an exact match. This might make my self-printed mount smooth enough that it doesn't drag the filament, but I doubt it - it might simply be too wide by now, so there's room for the filament to bend a bit and cause extra friction. Giving this a try, I noticed that the extruder heat setting was 200C, not 220C as I usually use. Weird. So I delve in a little more, and find that it's been using some default settings rather than the ones I changed - the changed ones were still correctly changed, just ignored. Computers! Slic3r's config system is still the most horribly overcomplicated and confusing one I've seen (outside of the BIOS/Xorg/Window Manager stack which is mysterious beyond belief).

Changing the settings to think my filament is not 1.75mm but 2.85 - which it is - made a print that smacks of over-extrusion:

Cube #57: Look at that oozing!
Cutting the extrusion multiplier to .75 reduced the overextrusion a bit:

Cube #58: Somewhat oozy
And getting down to .5 brought me to a very nice piece, quite acceptable:

Cube #59: Ooze-b-gone! Nice and straight, maybe a tad extra on the corner here.
So it's entirely possible that that was the problem, together with some early clogging and dragging. That's what I get for switching extruder mount and computer and firmware version and Arduino app version and Pronterface version and Slic3r version at the same time. Don't do that.

Way #2: Order a print online. I went to and had a print made using ABS (technically PCABS, which is a Polycarbonate/ABS blend, but I just wanted the heat resistance and solidity of any kind of ABS). This got done by Kinamico's Hub on a Zortrax M200, much more expensive than mine, for €17 + €12 (!) shipping (international shipping, even from not that far away, adds up, alas). The service was really good, calling me back quickly after uploading and asking pertinent questions. Getting it took a while, though, partly because I delayed answering some of the questions, partly probably because the security conference in Munich caused chaos. I got it one working day late (unlike an Amazon package which got delayed by three working days. So much for Prime). But what a beauty! Smooth, solid, and all the holes totally on the spot.

New extruder, with various nuts and bolts fitting perfectly.
Look at that built-in support piece neatly not touching the side of the hole.
If I get any trouble with my now-working extruder mount, I will switch immediately to this one. Until then I'll just cuddle up with this little beauty when going to sleep at night:)

If you want to order from 3DHubs, you can follow this link to give both me and yourself a $10 printing credit:

Way #3: Here's the interesting variation. The black mount I got from +Thomas Riedl  worked quite well as long as the mount was secure, but the mounting mechanism with two cross screws just didn't work well (hinc illae irae). Inspired by +nop head's mount that uses three bolts from the bottom and washers to keep the E3D in place, I decided to see if I could convert this piece. Actually adding three such bolts would have been infeasible, so instead I got a 1mm thick strip of steel and cut it to shape using my trusty Dremel. Getting the outer shape and bolt holts in was easy:

Slightly trickier was figuring out where to drill the filament hole, until I remembered the trick of using a nail to mark through a hole. Bang! A precise marking that's also a good start for the drill.

Dot never, ever marks the spot

So I'll drill a slot from one side wide enough for the neck of the E3D (gotta love having a proper diagram), and the two bolts holding on the motor will also clamp the plate to hold the hotend. The only remaining part is having a 16mm stop-gap piece above the hotend because this mount design is deep:

Check out that deeposity

That I could actually cut out of wood, it shouldn't get very hot up there. Or I can use washers. But given my success with approaches #1 and #2, I'm disinclined to further pursue this venue until conditions require it.

Since I have pinged +nop head anyway, I will direct his attention to my note at the bottom of my previous post about the nut traps for the idler screws not keeping the screw from getting turned further and digging into the extruder motor.

Saturday, 18 February 2017

Printing woes with my self-printed extruder mount

Of course Slic3r had put config files elsewhere. Merging them together made everything make sense, and I was able to print again!

...with severe under-extrusion (and poor adhesion due to no hair spray). Changing the speed settings back to what they used to be didn't change anything (so once this is sorted out, I should change again to the more modern settings).

Symptoms are those of total stripping. Probably there is enough error in the width of the filament hole to push back and cause stripping. Alternatively there is more resistance in the gears., but that should cause gear skipping if it was too much for the motor.

G0 Z80 is appropriate for taking off the gears.

After opening: No sign of stripping, but the extruder idler was really hard to get off. Switched it out for the one I'd printed.

If there's no skipping and no stripping, we should be getting an even amount of filament out, but the first print was good in the beginning and then pretty crappy afterwards.

Let me calibrate extrusion - yes, way too little filament gets taken in. Something is wrong with either my E_STEPS_PER_MM calculation or the way it's used. It extruded 1.5 mm where it should have extruded 5. Wut??? I just copied over my old calculation. Just to see if it reacts properly to changes, I changed my correction factor by a factor 3. That got it pretty close. Weird.

Printing a test cube with this caused actual, confirmed stripping. Sigh.

Nice print suddenly stopped due to stripping.

I have to admit, the Pronterface UI works a lot better under Linux, the Mac version has weird UI issues.

I don't know what possessed me to think that, with all the screw holes in the extruder mount being too small, the filament hole would be the right size. I drilled it out with a 4mm bit, and now it seems to have the same amount of space as the old one. Just need to get the drilled-out bits out of there. First a couple of cold pulls, then hopefully I won't actually have to remove the whole thing again - though there could be a rim at the bottom that will need drilling from the other side.

After three cold pulls and checking that the hobbed bolt wasn't too full of red filament, I made this (double-height) test cube:

The clogger/stripping is not in evidence, but the amount extruded is not perfect - it is severely and systematically underextruded. Now that could either be because the extrusion multiplier is wrong, or because there's enough pushback to prevent full extrusion. Giving the consistency of the piece, I'm thinking the former. I thought I used to have an extrusion multiplier of 1.1, but it was showing up as 0.9. Increasing to 1.1 to see what happens. And what happens is ... stripping. Ok, time to take this bugger apart again and make it as smooth as possible on the inside.

As I feared, the nut traps holding the other end of the idler screws are not holding the screws fixed, when I mount the idler the screws turn back into the motor, which is probably not good. A nut trap with room for a nylock nut would have worked better. There is almost but not quite room for a nut on the motor side.

The mount is a lot easier to take off and on than the previous one, and the hotend mount part is pretty damn solid and easy to get aligned, if a little problematic if the nuts can't go far enough into the nut traps.

I'm concerned at how easily it strips. I was trying to calibrate the extrusion rate, and it pretty much stripped immediately, possibly due to too little idler pressure. If I can't get that to stop, I'll probably order a professionally printed mount off Thingiverse, to be sure my print quality isn't getting in the way of being able to print.