Monday, 28 December 2015

The key to success: Tighten your gear shafts!

Got a suggestion to print from an SD card instead of over the USB link, so I acquired a plain 32GB card, and after poking a bit at Linux got it to work. Except that the Marlin doesn't recognize it at all (and the USB connection resets whenever I insert the card).

Looking a bit more at what the two jumpers do. JP14 atop the board appears to be the Autoreset, necessary when uploading firmware, but might interfere with the SD card reader due to a shared reset pin. Taking it off doesn't change the reset behaviour, though, so I'll leave it on.

JP15 switches between power from USB and power from the PSU. According to this, having it away from the connector blocks means USB power, and I have it towards the connector blocks, so that should be OK. But just because I'm paranoid, I'll try a print with the opposite JP15 setting.

Once again, the extruder gets set to 200C and the bed does not get set. Also, the X axis got stuck moving towards home. That is with an admittedly slack belt. Tightened somewhat and restarted.

An annoying thing about Slic3r taking over the heating and homing is that it does the heating pause by inserting a long pause. During that time, the print cannot be aborted.

X axis problems got worse, now it can't home at all. Time to check if the motor rod is properly attached. Inspecting a stuck Home command with a flashlight shows that the rod does turn while the gear doesn't. That's one mystery solved. Unfortunately, I have no small enough hex wrench in the house. Fortunately, a tiny Philips works in a pinch.

I expect the motor would be more stable if the rod has a flat side, but alas it doesn't. I suppose I could grind it down with my Dremel (leaving tiny pieces of metal all over the place:) For now, I will just retighting and see what happens.

Again the heated bed takes quite a while and/or several attempts at setting it before it started heating, and the extruder temperature got set to 200 despite the Slic3r settings. The result looks unsurprisingly somewhat soft in the corners, presumably because there's time for a little bit extra filament to ooze out:

Tried running Slic3r on the command line, inspecting the resulting gcode. Even there, it ignores the settings, but running the Slic3r UI takes it into account. Noticed that the --load command allows multiple files to be specified, adding the ~/.Slic3r/filament/Simple Mode.ini file got the temperature right. So apparently the presets section doesn't load the right thing. But there's also a simple.ini that gets generate along with the slic3r.ini, which contains all the right settings. Pointing at that instead.

Found a hex bit set that was a gift from Ric a year ago, which contains tiny hex bits. Tightened X and Y considerably. Thanks, Ric! I still think a flat-side shaft would be better.

Took a couple of tries before I got this right - turns out it now heats the bed first, then homes and heats the extruder. Except sometimes the bed seems to get confused and either not heat or keep heating. Also, using simple.ini is not a good idea, but pointing at the three Simple Mode.ini files works (as long as you quote the arguments with spaces instead of backslash-escaping them). The entire command line is

/home/lars/Slic3r/bin/slic3r $s --load "/home/lars/.Slic3r/filament/Simple Mode.ini" --load "/home/lars/.Slic3r/printer/Simple Mode.ini" --load "/home/lars/.Slic3r/print/Simple Mode.ini" --output "$o"

Ok, so now it heats up the bed first, then the extruder, then waits for a minute before printing. Also, it's harder to trick into not printing in the middle. Ah, well. The skew is utterly gone now, to be replaced with a stringiness that I at first guess would say temperature or extrusion amount problems.

The temperature is easy to test, and I got decent results with 200 before, so let's go there.

Stringiness persists. Odd. Looks like too little filament. Tried extrusion multiplier of 1.1:

This was abandoned partway through as no filament was coming out. I marked the filament and made it extrude a set amount, but nothing came out.  Then I turned off the motors and pulled out the filament. It was stripped along one side:

Reinserting it and running again gave pretty nice results:

It looks a little blobby in the corners, and the top layers hang down a bit. I'll try at 190. After that I can attempt increasing the acceleration. This time, since it's been a bit hard to get off the print, I'm adding a raft, just to see how that works.

Raft was hard to get off. Not trying that again until I see a real need for it.

Upping the acceleration to 1/2 of the original:

#define DEFAULT_MAX_ACCELERATION      {1000,1000,150,2500}

#define DEFAULT_ACCELERATION          1000

This definitely helped on the corners, I'll try putting it all the way back up. The lid of the cube still sags a bit, and there are gaps between the lines. 

I wish I could add more skirts, it only barely gets to start extruding, and if any drooling happens while it waits for a minute in the corner, that's likely to get stuck in the main print, as can be seen in the bottom-left corner above.

Trying with a 1.1 extrusion multiplier.

Apparently the thing I can add is a "brim", but that actually connects to the object, not what I want. Also in this print tried lowering the temperature to 180 (185 for first layer) to see what effect that has on the corners and top sagging. It still has one corner with issues, and there's a bit of ridginess to one side:

Reducing extrusion multiplier again. And because it's getting late and this will probably be the last print of the day, I'm doing an actual useful thing: A wire clamp for the back of some LED tubes, with a nut-and-bolt arrangement for affixing a back plate. It's a continuation of the earlier design by Thomas Riedl. Also looks slightly like a space ship:

And finally, a progression of the prints that have brought me here over the last few days:

Sunday, 27 December 2015

Day of the living skew

Suggestions from last episode, to be tested against the standard 20mm cube:
  • Slow down the print, down to as low as 15 or even 10 mm/s.
  • Reduce max acceleration.
  • Twisting the motor wires to reduce interference (maybe near the controller, but otherwise it's the same setup as for many successful Mendel90s).
  • Maybe the gear is not solidly on the motor shaft.
  • Check if power supply voltage drops, it may not be powerful enough.
  • Check if the X gears are properly perpendicular.
  • Adjust X steps (somehow, maybe, as a last resort).
    First a sample print as baseline, with XY pots reset to the starting values, checking the power supply voltage at various steps over the black/yellow multiwires.

    Voltage at start: 11.76
    Voltage while homing: 11.69
    Voltage while heating bed & extruder: 11.00 (varying a bit at first)
    Voltage during print: 11.10 - 11.60
    Voltage when 12V is disengaged from the Melzi: 11.79

    Compared to the numbers in this post, getting so far down could be a problem indeed.

    The baseline print, as expected, came out skewed, even some of the infill is skewed:

    I halved the speed of everything in the Slic3r settings, but curiously the estimated time to print is the same, even after I made sure to reslice by removing the gcode file. It doesn't seem any slower, and there is still noticable skew, though not as bad. On the other hand, there is more coiled-rope effect:

    I do like that the Slic3r includes homing, getting to the plate, and heating at the same time. 

    Third attempt, setting the Slic3r speeds back to normal but halving the print speed in Pronterface. This does seem to have more of an effect on the speed.

    I just saw the print head get stuck on a piece of print. Interesting. Entirely possible then that I have lowered the start height too much, so it squishes out clumps early on. It also looks at time as if it's running through a mud of half-melted filament when doing infill. The result is clearly horrible:

    Going on the theory that the extruder bumping into things is bad, I raised the Z start level by .3 mm. Let's try again, at full speed. The tape in the center is getting rather abused, and I don't have any spare here. I should get some, but it would also be nice to have a way to have the prints randomly distributed.

    Starting this print, the printer got stuck while heating (maybe because I set the print speed after starting the print), so the head got up to 200C before I noticed and turned it off. Restarting the print gave good adhesion at the start, though, so the height is probably ok.

    This one came out no worse than the first few, but the coiled-rope effect is back in full force:

    The alignment of the X motor rod might actually be a little bit off, but it'll be tricky to affix something to make it less off.

    Also, at one point during this, the Slic3r settings reset themselves. Not pleasant.

    There's a failure mode with this setup that I hadn't considered: Strings or pieces of plastic landing on the Y rods, getting into the linear bearings.

    Tried reducing the max acceleration in Marlin by a factor 10 for all but Z. Had some problems getting started, the bed didn't want to heat, and the extruder temperature was set to 200 for no apparent reason. Retrying had the bed not get set until I did it manually. Why so flaky? And when it started printing, it didn't extrude anything for quite a while, missing half the first infill.

    It sounds different now, with the lower acceleration, much more relaxed. The result is actually rather nice and crisp, except for the X skew:

    Trying again with the reduced acceleration and half speed. Worked reasonably nicely, though the first few layers looked dotted, as if the thread was falling apart. Only a little X skew, and once actually skewing the other way, until the X belt fell off:(

    That's probably a sign that I should give up for tonight and go to bed.

    I notice the left corners, even when not skewing, look a little blobby, as if too much is being extruded. A retraction problem, mayhap? I haven't kept an eye on whether it actually retracts.

    Saturday, 26 December 2015

    Slice3r _is_ nic3r

    Maybe Pronterface/Skeinforge is just not the thing. There are other print controllers and slicers out there. Let's take a look at some.

    Mattercontrol: Though available for Linux, it's based on Mono, and starts up by explaining how the accompanying script will uninstall the version of Mono that the system has and install another from a different source. Not acceptable.

    Netfabb: No longer has a free version, so I'm skipping it for now.

    Cura: Starts out asking a bunch of questions before letting me download. No like.

    Slic3r: Can integrate with Pronterface, so I don't have to relearn a UI.  Reasonably easy to install and set up.

    Slic3r does a Home at the start of the print, which takes quite a while for me. Then it lowers Z to a bit above the bed at 0, 0, heats up the nozzle for the first few layers (interesting), then moves to the center. I will need to move the clip off the corner, or it will run into it.

    The print does look a lot nicer. I suppose I should have adjusted Skeinforge rather than Pronterface. This first print ended up being done at the edge of the tape, and the non-taped parts are curling up, so the tape is a good idea.

     Sliced with Skeinforge. Notice how the layers are loose and seem to tumble down the side.

    Sliced with Slic3r. Still skewing, but the layers themselves are much crisper.

    This print is much, much better, with thinner layers that actually hold their shape. This is not to say that Slic3r is better than Skeinforge for everybody, but it was easier for me to get a good result with it.

    The X and Y skew still happens. I turned the pots up half a turn. Also moved the problematic corner clip around the corner. Skew is still bad, possibly worse, there was a single-layer skew of an entire item width. There was audible skipping.

    Turned the pots down to 1/8 turn below original setting. Skew is now less at a time, but still prominent.

    Some new suggestions here:,202292:

    Slow down the print, down to as low as 15 or even 10 mm/s.
    Reduce max acceleration.
    Adjust X steps (somehow, maybe, as a last resort).
    Twisting the motor wires to reduce interference (maybe near the controller, but otherwise it's the same setup as for many successful Mendel90s).

    Also maybe the gear is not solidly on the motor shaft.

    If I am to ask for help, I should use the 20mm hollow cube.stl as my sample print.

    Friday, 25 December 2015

    Maybe I should give this up and become a sailor

    Digging into the X-axis thing some more. Possible explanation include:

    • Need oiling - just reoiled now with sewing machine oil
    • Rough rods - were initially smoothened with iron sponge, but it may not have been enough.
    • Bumping the previous layer - ought to be the same slip for a given part, which is not the case.
    • Motor overheating - they're cool on the outside, so probably not that.
    • Loose bed - that would show up in the Y direction.
    • Loose belt - they strum somewhat, as can be heard in the video below, but I don't know what they should sound like.
    • Slipping belt?
    • Back-pull from the print?
    • Gremlins?
    Tried increasing layer height to .5/.72 mm. Clearly can't be more than that, since that's my nozzle diameter. Doing the wire holder again, this is clearly not a good idea, it looks like cable loosely tossed together. Reducing to .35/.6mm.

    When trying this print, it did the corner print again. When trying to center after homing, the X-axis didn't move at all. So I did some tests noting where the extrude rhead was and then running 10cm back and forth repeatedly. In the beginning, there was some difference at the end, but after a few more runs, it wasn't noticably skewed.

    I strummed the belt, and didn't quite like the sound of the X:

    So I tightened it about one full turn of the screw. Then I noticed the belt was rather disaligned with the pulley and re-aligned that:

    Once printing, it comes back out somewhat almost immediately, though. After increasing tension, it comes out even more, almost coming off.

    After leaving the machine standing for a while, it seems to lose contact with the thermistors, and the readings just stay there. Disconnecting and re-connecting fixes it, but it's a bit annoying.

    After tightening the X belt, I got a much better print. No skew in X and at most a little bit in Y. It still looks very sloppy, though. I've tried to look at whether the nozzle is too high, so the thread can fall to the side, but it's difficult to tell.

    Here are the last two prints, both after tightening. You can clearly see the coiled-rope look of it, and on the last (on the right) there's notable X-axis skew again. Sigh.

    Extrusion tests: Temperature, height, and extrusion width

    Increasing the Z height by .5mm to try for better bed adherence. Annoyed with the constant disappearance of the text in the Arduino UI, I tried the newest version, and the Marlin 1.1.0 RC3 firmware, but so far has been blocked by various incompatibilities. So for now I use the new Arduino version as the editor but the old one for uploading.

    One annoying thing is that homing to Z takes a long time, and I have to do that every time I've disconnected, which will happen a lot while calibrating. I suppose I could add a second Z stop lower down.

    I cannot yet predict if it prints in the center or where the head happens to be. This time, I moved it a bit away to do a new print, yet it moved back. Moving XY manually does do the trick, though. Maybe it recenters after having done one print, but not after a cold start.

    Bed adherence is better, but it's still just as blobby. Lowering by another .5mm. Calibrating for the new filament shows it's at a fine size. This lowering (increased Z height, really) made the initial layer not come out at all, so that was too much at 202.5. Trying at 202.2. The adherence looks good now:

    Could this be a temperature problem? Whether this PLA likes a different temperature, or the thermistor is off, it could make it too melty or something. Trying at 195, but for some reason it didn't want to heat up to that. Actually, it looks like the reading is stuck, it doesn't cool off when turned off, either. The extruder has also been "drooling". Trying at 175 now. Worse adhesion, but the layers look better.

    Retrying this starting printing at the corner. What's up with that? Apparently it thought it was centered.

    The tape in the middle is getting a bit frizzled. Manually moving a bit away from the center.

    Setting extrusion width down to 0.72 from 0.9. Not sure what I should expect from this, though.

    Trying at 170 C gave really bad adhesion. At 180, it worked rather well. Still having X precision issues, which makes it hard to troubleshoot entirely. It might also be too thin a layer, it looks rather squishy.

    Here's from left to right prints at 185, 180, and 175. With the variability in X movement, it's a bit hard to tell exactly what difference is due to temperature and what is due to X movement errors.

    Is it normal that the initial adherence takes a bit? The perimeter consistently starts partway through.

    I'm concerned about the sound of my X axis. Here's a video of it running with nothing else going on, it seems kinda rumbly to me.

    Enough for now, it's time to go enjoy the sunshine while it lasts.

    Thursday, 24 December 2015

    Katamari Damacy

    Fiddling some more, because what else is there to do on Christmas Eve while waiting for the food to be ready (don't worry, I'm doing my part of the food prep)?

    The suspected bed gap is not an issue, I literally can't get a piece of paper under the nozzle when it's at minimum height, but I can still move the bed by motor.

    I trying running the X motor back and forth somewhat, and while it rumbled somewhat, it didn't grow warm at all. After marking the initial settings, I adjusted the pot a bit up and down, listening for skips, but it rumbles just as much when at a higher setting as when at a lower. Since it seems to have had problems with the filament getting slightly stuck, I'll increase power by 1/4 turn. Didn't help much, still getting random skews, now in both directions.

    Trying with layer height 0.3 and width 0.55. I don't quite get why the width is a constant ratio of the height. I should think, once the height is less than the nozzle diameter, the extra material would squeeze out to the side. But I guess the interface is smart enough to adjust the feed rate accordingly, that might just put extra strain on the output. Not sure.

    With 0.3 layer height, it was clear that the nozzle didn't get close to the bed initially, and the first layer only stuck a little bit, so any kind of sticking to the head made it start to clump up again and eventually gather the whole thing up, like a Katamari Damacy. Grumpf.

    Printing things that are actually things, almost

    Since I've gotten the mechanics to work, I expect I will spend more time with the printer just doing its job while I can do something else, so I took it home over the holidays, it can stand in a corner printing holiday cheer:)

    I bought some grey PLA from, 1kg of it. Since it's not the same size spool as the spool holders that came with the Mendel90 kit, I just put a stick across the back plates, as shown here:

    I got a nice test case from Thomas Riedl, a small piece for holding wires in a LED tube. I did some modifications to make it more rounded, but otherwise it's the same. I also did an extended version that allows mounting a backplate with M6 bolts. I printed one, and it came out slanted.

    Just to check that it wasn't a problem with my redesign, I printed one of the originals. When starting that, despite the pronterface saying the extruder temperature was at 185C, the firmware prevented cold extrusion. Odd. Then I got disconnected.

    Turning back on and heating properly. Despite what I thought, it will print from wherever the heads are in X-Y, so I need to always center before starting a print.

    The initial outline has trouble sticking. I suspect I need to lower the Z target a smidgeon.

    In the second print, I don't see the same skewing until at the very top, but the layers are sloppy. I probably need to adjust somewhere what the extruder diameter is. Simplify3D's troubleshooting guide has a nice illustration of what's wrong when prints look like crap in various ways, I'll let that guide me.

    So three apparent issues:

    Poor attachment at the beginning - adjust start height
    Wrong extrusion thickness setting - find the place in Pronterface that sets this
    Skewing - unsure, possibly from the motors being right at the edge of getting enough power.

    Here's Thomas' print and my first two attempts at doing the same:

    Saturday, 12 December 2015

    I'm making a note here: Huge success (relatively)

    After last time's successful measurement, I adjusted the extrusion speed to match reality. Time to find a test print!

    Since I didn't get the kit, I don't have a presliced Android gcode file on the SD card. Instead, I go to Thingiverse to find some plain test cups. The first few I try don't get accepted, but the stack trace from Python is so long it takes me a bit before I realize that it's just not finding Skeinforge. Setting the external commands to point to the proper place helps. Grab a test cup, and slicety!

    Slice... slice... slice... and boom! " object of type 'NoneType' has no len()". Hum. Could be a bad STL, let's try an egg cup. That one worked, but is estimated to take an hour. I was hoping to be home earlier than that. Grabbing a simple vase instead. 12 minutes, using 65 cm of PLA. Sounds good. I grab about a meter and switch out the small piece I tested extrusion with.

    Pressing print! Things are moving! Things are printing... but not really sticking to the surface. Most likely forgetting to heat the bed is the problem. Resetting, homing, heating, printing again. It goes all the way out to the max corner when printing, that's silly. Let's see how to get things to the middle.

    Aside: The Ubuntu version of the Arduino software has a weird bug that scrambles the text some of the time. It gets better if I resize, but worse again when I scroll or type. Annoying.

    Changed to

    #define X_HOME_POS (X_MAX_LENGTH * -0.5)  
    #define Y_HOME_POS (Y_MAX_LENGTH * -0.5)

    That did not help. Also, the clamps in the corners get in the way when Z is low. Trying with brute force:

    #define X_HOME_POS (0)  
    #define Y_HOME_POS (0)

    Now centering is proper, but it won't go any further. 

    Let's do this properly. The centering seems to go to (X_MAX_POS - Y_MIN_POS) * 0.5, so set X_MIN_POS and X_HOME_POS to 0, similar for Y. Now it homes nicely to 0, 0, and centering brings it to center, while allowing movement over the whole surface. Final settings:

    #define X_MIN_POS 0
    #define X_MAX_POS 190
    #define Y_MIN_POS 0
    #define Y_MAX_POS 200

    #define X_HOME_POS (X_MIN_POS)  
    #define Y_HOME_POS (Y_MIN_POS)

    Note to self: Printing doesn't wait for the extruder to heat up.

    Printing again, and this time it (mostly) works. The outline got loose, but the base seems to stick ok, even though it printed over some of the loose strands. However, the walls were trying to build on some of the initial loose stuff, which doesn't work too well. It also seems to slide in the negative Y direction. Then partway up, it either decided to just shift itself sideways, or X got stuck on that loose thread sticking up and got out of sync.

    I can reasonably stop this here:)

    Trying again, the outline gets loose here, too. Aborting. 

    Applying Kaftan tape just to see if it makes a difference. Last print for the evening, but it's definitely sticking better. This might work. It still leaves that little gap between the outline and the bottom, though. Huh! It actually goes back and (sorta) fills in that gap once the rest of the bottom has been laid. How odd. But again it offset on the X axis, while the filament was bonking against the frame. I'll leave it be for the rest of this filament and see if it happens again while the filament is standing free.

    I wonder if that odd jump before was due to the filament getting stuck up top and putting too much resistance on the X motor. I should probably set up the filament holder. And order some filament of my own.

    Here are my first four prints, in printing order left to right:


    Things I should probably do next:

    Order some filament of my own and mount it on the reel holder.
    Mount the fan.
    Adjust the potentiometers for the X and Y motors in particular to make sure they have appropriate power.
    Somehow calibrate the layer height.
    Print more!

    Sunday, 6 December 2015

    In which we _finally_ manage to extrude

    Time to test the flat cable. Found some small cables and a multimeter, and the extruder part of the flat cable works - yay! Also, there is proper connection through the little PCB. So what's wrong? Well, there's connection through all four outputs on the PCB. That's not so good. Not the case with the flat cable, so (unsurprisingly) the PCB is a little over-eager in connecting things.

    Took out the PCB and wired in some nice cables. The solderings look nice, so I'm not sure what could be the problem. And, as it turns out, there is no problem The PCB is perfect. But when I put it back in and measure (without the motor or Melzi connected, there's connection between black and green, between black and blue, and between green and blue.

    Rechecking the male and female D-Subs, the female does indeed show connections between pin 15, 7, and 14. I must have held the cable just wrong when crimping it. Sadface.

    After checking carefully that pin 8 of the D-Sub is not used, I decided rather than wait to get a new one, I would cut the last 5 wires off the flat cable and connect them directly. In order to make it be disconnectable, I wired them up to male/female single connectors, like this (but with some tape to keep it from getting entangled in everything):

    With these connections in place, I should be able to run the extruder. Aaand... it stutters:(


    To debug this, I first switched back to direct connections, then one cable at a time to the flat connection. Already the first one (red) broke the nice, smooth extrusion movement.

    Looks like the wiring wasn't quite as I saw it. The flat-cable wire I thought was blue is actually red. Which means I've cut some unrelated cable, possibly for the fan since both heater and thermistor works.

    Finally got through all the wires and it now extrudes with the correct connections and nicely taped up.

    Added some filament and did calibration: Started with a mark at 100mm, then told it to extrude 50mm at 60mm/min. Afterwards, the mark was at 67 mm, so it extruded 33 mm instead. Important difference.

    Here's a bit of extruded filament hanging down, as proof:

    Tuesday, 1 December 2015

    Out with the new, in with the old

    Attempting to avoid the problems from last time, I soldered all the wire ends going into the Melzi before wiring the old board up again. Well, half of them. The other half were hiding so well I missed them until wiring time and then didn't feel like going back to soldering.

    Add power, and all systems are operational (though some wired a little funny)! Woohoo!

    Removed the new Melzi and re-mounted the old one. No thanks to for still selling the old 10K ohm version of the Melzi.

    Tried connecting through the normal wires to the extruder motor. It reacts, but stutters rather than move, probably some connection is bad. I can now either try to fix that or try extruding something. Since I have little time left tonight, I certainly can't extrude something real, but I can try feeding some filament and adjusting the potentiometer. Here's how to adjust the potentiometer, not too difficult.

    The resistors say R110, so that's .1 ohm. My motors are of two different kinds: The extruder motor came with the extruder, while the other three came from elsewhere. So quite possibly the extruder motor needs a different amount of power.

    But I'm running out of time for today. Maybe over the weekend I'll have a longer stretch of time. Especially if that Civ game doesn't get more players than have replied so far.