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.

Saturday, 11 February 2017

The $200 usable ARM-based printer

We interrupt our (ir-)regular post of trials and tribulations with my Mendel90 to bring a short commercial:

There is a usable, open $200 3D printer on the market. The Monoprice MP Select Mini sounds like quite the coup if you're looking at getting started. This Hackaday review finds few issues with it, mainly poor temperature control, and also points out that it is the first cheap open 3D printer with a 32-bit processor. The time of Arduino-variations might be over. That's probably what's most exciting about if, apart from being a good cheap printer. There are new developments to be made.

The fact that unlike numerous other commercially-made printers this is compatible with all the standard 3D tools makes it extra interesting for hackers on a budget. The 120 x 120 x 120mm build volume is not huge, but frankly almost all my prints so far have fit within that.

Ok, so this is news about a year out of date, but only now saw it, and I frequently get asked about what a decent printer costs. Now I have a good answer: $199. And watch out for those ARM-based accelerations.

Note: I didn't get anything for this commercial. Monoprice doesn't even know I exist.

Sunday, 15 January 2017

Tales of a Pi Installation

With the new mount in, I needed to upload new firmware - even though slic3r can take a Z offset, it seems the heating position doesn't take that into account and just goes to Z min, which is now about 7 mm below the plate.

Unfortunately, new security software on my laptop blocked some of the sub-programs used by Arduino, so I figured it was time to switch to the Raspberry Pi I got for the same purpose. Hook up a monitor, a (German) kezboard, and a mouse (I am still amazed that you can plug in random things in USB and they just work and know what they're supposed to do), and up and running.

Except not quite. The Arduino in rpi is rather old, so I decided to try a new one with proper board management and all, compiled from scratch. Took a while to install all the dependencies and everything, but I got it. Except... the Marlin firmware isn't compatible with Arduino 1.5+ :( So back to the old one (with an interregnum of a Chromium update making it fail and requiring a kernel update, and various crashes when I asked too much of my little Pi).

I did update to a newer version of Marlin, though getting that to compile right was tricky. I don't have the Melzi definition installed and remember installing it as a frustrating task, but some sites say Sanguino works as well - and it does! (Specifically ATMega1284p 16MHz). I set the Z_MAX_POS to 200 but allow it to go to -1, in case the frame expands. The Z axis is exceedingly slow, though, until I changed the steps to 200.0*16/1.25 - that's what I had before, I'm honestly not sure where the calculation comes from. I might be able to speed it up... nope, that caused a crash! I'll keep it low.

The bed height when manually calibrated turned out to be 1.1mm above 0, a bit higher than I hoped for, so let's reduce the height to 199mm.

The newer firmware version seems in particular to have better autolevelling support, which I want to include soon. Also, it connects immediately rather than after about 5 seconds, which is nice.

I also need to recompile Slic3r, of course. And somehow it seems every app involved uses a separate set of languages and libraries, so each time I install something 20+ other things get installed. Sigh. But the strangest thing will have to be this requirement for Slic3r:

$ sudo apt-get install libopengl-perl
The following packages will be REMOVED:
  cura gstreamer1.0-plugins-bad libalien-wxwidgets-perl libgl1-mesa-dev
  libgl1-mesa-glx libglew1.10 libgltf-0.0-0 libglu1-mesa-dev libgtkglext1
  libopencv-calib3d2.4 libopencv-contrib2.4 libopencv-core2.4
  libopencv-features2d2.4 libopencv-flann2.4 libopencv-highgui2.4
  libopencv-imgproc2.4 libopencv-legacy2.4 libopencv-ml2.4
  libopencv-objdetect2.4 libopencv-video2.4 libreoffice
  libreoffice-avmedia-backend-gstreamer libreoffice-base libreoffice-base-core
  libreoffice-base-drivers libreoffice-calc libreoffice-core libreoffice-draw
  libreoffice-gtk libreoffice-impress libreoffice-math
  libreoffice-report-builder-bin libreoffice-sdbc-hsqldb libreoffice-writer
  libvisual-0.4-plugins libwx-perl libwxgtk-media3.0-0 libwxgtk-media3.0-dev
  libwxgtk2.8-0 libwxgtk2.8-dev libwxgtk3.0-0 libwxgtk3.0-dev openjdk-8-jdk
  openjdk-8-jre python-opengl python-pyglet python-wxgtk3.0 python3-uno
  raspberrypi-ui-mods vdpau-va-driver xserver-xorg xserver-xorg-core
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics
  xserver-xorg-video-fbdev xserver-xorg-video-fbturbo

I was not done with those! In fact, I just specifically installed libwx-perl to make Slic3r happy. I'm sure stuff is going to break stuff. And it doesn't make Slic3r run, it wants both wx and opengl, but those two cannot live together. What's with that?

Huh. Despite setting the height to 199mm, it still hits the bed at 1mm Z height. Maybe that's because I didn't actually change it.

It seems sometimes the Z movement is a lot slower than normal. It would be nice if Pronterface had a display of what it thinks the state of the world is - where the axes are and how fast they're moving.

Truly, language-specific package managers are a pain, a pestilence, and a pox upon the Linux world. To get slic3r to run, I've been led a merry chase between installing Debian packages, installing CPAN packages, installing Debian packages because installing the CPAN package failed without it, running slic3r again to find another package is needed, etc etc. Only to get to where slic3r runs for two seconds and then segfaults.

This is probably caused by, and can be cured in the same way by not having the plater. I only occasionally use the plater, so that's ok.

Since I don't feel like digging up the standard (if any standard exists) way to install a Perl program, I'm just pointing at the build dir for now, so my slicer command is /home/pi/src/Slic3r-1.2.9/ --gui --no-plater $s --output $o  --load "/home/pi/3DPrint/Slic3r/filament/Simple Mode.ini" --load "/home/pi/3DPrint/Slic3r/printer/Simple Mode.ini" --load "/home/pi/3DPrint/Slic3r/print/Simple Mode.ini". Slic3r is a rather quirky program, all told.

An unfortunate side-effect of switching to a Linux system is that I can't use Google Drive as my shared filesystem any more. But I can mount my home directory from my main machine, which in turn contains a Google Drive mount. Using afpfs, that was pretty simple, except Slic3r without a plater doesn't automatically slice like it used to, so I have to "Quick Slice and Save As" until I find the right commands. Update: No, I just needed to remove the -gui argument.

Trying to print - and no heat. I probably missed a thermistor setting. Or not - the hotend thermistor is definitely the right setting, and setting the bed to something that looks sensible (some numbers have changed) gave wonky results. Trying again, they both heated.

Now I got it to print (with a cold bed), but oddly the print was done a full centimeter above the bed! The new firmware is nice, though, that it heats the bed and extruder while homing. Much time saved. The print is absolutely 9.95mm above the bed, desipte the settings saying Z offset of 0. Odd.

Friday, 13 January 2017

Switching mounts in the middle of the ford

When last we met our intrepid 3D printer, there were signs of trouble: The Settlers pieces came out more and more jagged, for unknown reasons, and the proximity sensor holder was quite wobbly. This was followed by some test pieces showing semi-systematic shift in Y mainly:

Not good. Was my belt too loose? No, it strums nicely. Was there a piece of junk interfering with it? Well, there were two pieces of metal sticking out of it:

But that wasn't it, either. Just when I was about to despair, I noticed that the hotend was wobbling back and forth during a print. I should have known - it had once again come loose, probably when hitting the side of that piece that warped up. Alright, that's it, I'm switching over to the new extruder holder I printed earlier, the one that has nophead's sneakier mount system.

Fiddling around with that took a bit of time, but wasn't so horrible. I have to mount the hotend before putting the extruder on the carriage, but it's at least solidly mounted now. Also lots of nut traps.

When testing the mount, it turns out I've lost about 5 mm of build height - oh noes! Had to recalibrate X as my fiddling around had moved things. What's worse, and somewhat strange, is that even after setting a Z offset in Slic3r, it goes several mm too far down when the head goes into position to heat up. It appears to be ignoring that offset, I should probably make the firmware have the right limit instead. Not tonight, though.

You can see here how the new mount works: Three screws with washers (two visible here) hold the top of the hotend into the hole. As long as the washers hold up, this will be very solid - possibly solid enough that I should worry about what part would break instead if there was a bad head crash. The 5 mm less height comes from the mount having a much shallower hole, for not having to have space for screws under the top of the hotend.

Overall a better mount also in other way - nut traps rock my world.

I'm also concerned that the Z rods are noisier and more wobbly than earlier.

Tuesday, 10 January 2017

Printing this and that

Printing some Settlers of Catan pieces for fun. Works nicely, though I forgot to take off a skirt of one print so some roads got a little funny. I'm printing one set in purple, but the spool is almost out, so here's some numbers to make sure there's enough:

One meter of 2.85mm filament contains 1000 * pi * (2.85/2)^2 cubic millimeters = 6379mm^3. I have 9 windings of filament left, each roughly 100mm diameter, so 9 * pi * 100 mm ~= 2800mm, Totally I have about almost 18k mm^3, which is plenty, Slic3r thinks the remaining pieces (after printing roads) take 12k, and after printing I have 4 coils left, so my calculations were pretty accurate. And these pieces are totally adorable!

The Aztec set done in white is less interesting, though if I brush up my miniature painting, I could make the cities look like there's the blood of 50000 sacrificed slaves running down the sides;)

I also designed some little clip-on markers for the standard IKEA glasses, so we can keep track of which is whose rather than having to break out new ones all the time and wash them. In the design of those, I confused radius and diameter at first, ending up with some rather thin ones and being surprised that my printer would be off by that much.

I've also been designing a spool for USB cables, since I have a lot of those lying around. The trick with those is that USB cable doesn't like to bend nearly as much as headphone cable. This makes in particular fastening the end of the cable difficult. I have yet to come up with a good solution for that.

Returning to the dog bag issue way back, I decided the rods holding up the sides of the bag were just too thin and bendable (3mm rods). I got some 5mm tubes instead and made little end pieces to make them not sharp and potentially sew-in-able:

In random other prints, I did a new extruder holder adapted to the E3Dv6. The holes came out on the small side, so I since invested in a small round file.

I also got a proximity sensor from +Richard Jørgensen and printed a holder for that. Unfortunately, it looks like my Y belt is under-tensioned, see how the cylinder has wobbles on it:

Tuesday, 27 December 2016

Testing an inductive proximity sensor

Let's take at the sensor I got from +Richard Jørgensen. As I mentioned, it's a LJ12A3-4-Z/BX, and came with this little extra print board to pull it down to 5V:

Now I don't have all my normal stuff with me, but I found a 12.6V battery in a drawer, which should be enough to power it. Plus it has an LED in it to show when it's detecting something. So if I just wire it up right (maybe reusing part of that board), I should be able to get it to light up.

According to this video, the wiring is: Brown = Vin, Black = Signal, Blue = Gnd, and I can just use a 9V battery with Brown on + and Blue on -. Didn't work with the 12.6V battery, but I don't know the state of that. With a fresh 9V, it works! It detects the copper tape at about 2mm distance, nice. I guess the '4' in the name is the maximum sensor distance (at full voltage?), which is nice for keeping it somewhat away from the bed.

There's an Instructable on how to enable auto-leveling with Marlin. I don't think I want the full auto-leveling to adjust for the shape of my bed just yet, just getting the height right is the important part. Plus I think I would rather work to get a level bed than have the print adjust, I expect a properly flat bed gives a better result than adjusting the Z axis during printing.

I'll clearly need a mount. I've been pondering various sneaky magnetic ways to raise and lower the sensor, though with the measurement distance being so long, I can probably just mount it close to the nozzle and still avoid crashes. There's this one by DanielBull which is just an add-on, or he has a full X carriage with a built-in probe mount. I'm not about to change out my carriage, that's a larger operation, though it might eventually be useful in order to properly mount an E3D and bed fan and probe. My one concern is that the probe would come loose enough during printing that it starts to offset itself. We'll see.

This video goes through the process very nicely. He warns against using PLA, since it melts at fairly low temperature. Maybe that's a good time to use that sample of PETG I got.

Marlin only supports three-point and grid levelling (tramming). Given that I need to put copper tape on the bed to measure it (unless I switch to an aluminium bed instead of glass), I can't have the points be on the middle of the bed. 

Do I want to replace the normal Z-endstop, or use the option to have them both on one input? I'm thinking the latter is more complex and prone to weird interactions. Some talk on how to connect to a Melzi here and here. Since this is an NPN, I shouldn't need extra components, which is nice (though I do like the PNP feature of a failed sensor counting as being triggered).