Sunday, October 7, 2012

Drew's Rostock: The long quest for a successfull print.

With a working extruder, and after MakerFaire a reel of black 1.75mm PLA filament, it's time to try printing.  So I drew up a standard 20mm calibration cube in AutoCad, sliced the stl into Gcode with Slic3r, and sent it to the printer in Pronterface.

It was, of course, an absolutely terrible print.  The block was spongey, with severe filament starvation, wavy and not even the correct size.  About what you'd expect of the first print of a scratch-built printer of a novel design.  I was just happy that it was printing at all.

The filament starvation was the first thing I tackled.  I noticed that starting about a minute into the print, the extruder motor would start stuttering, jerking back slightly about once a second.  ON a tip from the Deltabot message group I tried turning down the motor current.  There turned out to be a very narrow range where the extruder would work properly - too little current and it would stall, too much and it the stepper driver would cut out in thermal shutdown.  Keeping a large fan pointed straight at the driver board was mandatory.  I suspect my extruder might be a bit tight, taking more force to push the filament than it really should, or maybe it's the tightly coiled Bowden tube that's doing it.

The second calibration cube I printed was at least solid, but still had problems.  It was somewhat undersized, had bizarrely wavy sides, and a top that was concave and significantly upturned at the corners.  During bed-leveling tests I had noticed that my printer was acting as if the bed was bowed - the print head had more clearance over the bed in the center than at the sides.  I was fairly certain that my print bed - a sheet of borosilicate glass clamped to the heater with binder clips - wasn't actually bowed downwards, so I suspected something was wrong with my geometry.

When I had originally printed the six connecting rods, I hadn't checked to make sure their length was correct.  I removed and measured them one at a time.  Sure enough, all six of them were a few millimeters shorter than they were supposed to be.  I found I could mostly fix their length by slightly unscrewing the threaded rod holding the two halves of each rod together.  It wasn't quite ideal since I was still limited by pitch on the screw threads in how closely I could get the length to the required 250mm.  I am planning on replacing these rods with carbon-fiber ones eventually.

That fixed some of the distortion.  The test prints were still somewhat wavy and undersized.  At this point I switched to using a hexagon, designed to be exactly an inch across from flat to flat, with a three-eights hole through the center.  The part as printed was about 0.95" across, and had somewhat wavy sides.  The hole through the center was about 0.3" across, and distinctly oval.

While fixing the connecting rods, I had noticed that the carriages weren't very tight.  Whether through inaccurate measurement on my part or poor accuracy on the part of the Makerbot I had printed on the parts on, the V-groove roller bearings weren't pressing against the Makerslide rail rightly enough.  The carriages were actually shifting back and forth slightly as the printer ran, which translated directly to positional error of the print head.

I really didn't want to print any more parts at work to replace these without trying to fix the ones I had first.  I tried clamping the sides of one of the carriages with a big old C-clamp I had to press the bearings closer together.

This worked as far as eliminating the slack in the bearings - I was easily able to adjust the clamp to the point where the carriage rolled up and down smoothly but was rock-solid against rotation or sideways movement.  Obviously, I couldn't print with the clamp on there, it interfered with the movement of the rods and was really, really heavy.  I also didn't have three clamps like that.  I considered removing the carriages and bending them over heat to permanently reshape them, but then noticed that there was just enough room between the bearings, Makerslide, and belt, for a small threaded rod.

One trip to the hardware store, some cutting and drilling, and I had tie-rods that didn't interfere with the carriage movement yet held the bearings firmly against the slides.  It's not pretty but it works.  I have already redesigned the carriages to have adjustable bearing pressure, and will be printing out a complete new set of parts with that feature eventually, but this mod will get me printing for now.

With the tie-rods on he carriages my one-inch test print measured about 0.97".  The test block also had upturned corners and blobbing which suggested that too much plastic was being delivered - or rather, the head wasn't moving as far as it should for the amount of plastic being printed.

There didn't seem to be any looseness in any part of the mechanism, and even when I printed the test hex at agonizingly low speed the size was still off.  Furthermore, careful tests with commanding the head to move a known distance and measuring the actual distance moved suggested that something was wrong with the actual geometry of the printer.  A bit of measurement suggested that my Makerslide rails weren't located exactly right.  The wooden frame I'd built didn't have any way to adjust the rail position, unfortunately.  That will be something I correct in the next version, but I really wanted to get this one working without having to do a complete rebuild.

I took a look at the software instead.  The modified Marlin software has a handful of added settings describing the overall geometry of the delta platform.  One of these - DELTA_SMOOTH_ROD_OFFSET - described how far the drive axis were from the center of the print area.  With some trial and error I determined that if I changed this from the standard 175 to 178, the objects I printed would be within half a percent of their correct size.  That's good enough for now, but I still need to design a way to make fine adjustments to the rail positions.

When printing the test blocks, I had noticed strange, consistent wavy patterns on the sides of the blocks.  Turning the printer speed down below 30mm/sec eliminated them.  Initially I though that this was due to flex in the plastic rods, and expected it to go away when I replaced them with carbon-fiber ones.  While testing some larger prints and gradually increasing the speed, I noticed that when printing long straight lines the print head was actually stuttering, slowing down for a fraction of a second at certain spots, which was causing the wavy spots to appear as the plastic would be delivered unevenly across the line.

I had read on the Deltabot message group that other people had seen this too.  The modified Marlin firmware chops straight lines up into many small segments, since the amount of movement required on each axis is constantly changing as the head moves across the platform.  At higher speeds this can overwhelm the buffer which the firmware uses to plan moves, resulting in momentary pauses in the movement as the firmware struggles to keep up.  Changing a setting - BLOCK_BUFFER_SIZE - in the firmware from 16 to 64 fixed that problem.

The printer head seemed to be able to move in long straight lines accurately at a high speed now.  The next hurdle was getting proper adhesion to the print bed.  I found on larger prints that if any part of the print didn't stick to the bed properly, it would curl upwards as the part printed.  Eventually this would cause the head to jam against the part, causing one or two of the drive motors to skip a step, which would completely ruin the part.

When you have a motor skip a step on a delta printer, it doesn't just shift the layers above the skip sideways like it will on a normal cartesian machine.  It can result in the layers above the skip being shifted and tilted, making for some very strange-looking ruined parts.

One thing that helped is keeping the bed clean.  Any skin oil on the bed can result in failure to adhere.  I have very oily skin, so I've been cleaning the print bed with windex before every print.

Adjusting the bed height is critical.  The Rostock lets you adjust the bed level by turning the small screws on the tops of the carriages which press the upper travel limit switches.  This also seems to shift the center point of the print area, since you're effectively rotating the print volume around the home position.  I also have adjustable screws at the corners of the print bed which let me independently adjust the bed level and height.

The J-head seems to be very prone to making long, fine threads during a pause in extrusion.  Cleaning the hot end before every print seems to help.  I tried adding a silicone wiper and setting the printer to wipe the head before each print, but that seemed to hurt more than it helped.

Despite all this, I'm having trouble getting consistent height across the entire bed.  The printer is still acting as if the bed isn't properly flat, with parts of the print being too high and not adhering, and parts being so smashed down that the extruder stalls when trying to print the base level.  I think there are still alignment issues with the printer geometry, uneven placement of the Makerslide rails and uneven rod lengths, so I'll be running more tests to identify and fix those problems.

At the moment, the printer seems to work at least as well as the Makerbot Thingomatic at work, with a much higher top speed but adhesion problems with any part more than a few inches across.  I still have more work to do to get it working properly over the entire 200mm build area.


  1. What kind of head speed are you achieving?

  2. At the moment, I'm running 50mm/sec perimeters, 100mm/sec infill, and 300mm/sec non-printing travel. I expect I can get it to go faster than that. Once I have the bed level issues worked out and the carbon fiber rods, I'm going to gradually ramp the speed up and see what it can handle.

    The motors are capable of 720mm/sec, but I think the software stepping rate limits me to 360mm/sec movement. I'll be quite pleased if I eventually manage to get it printing reliably at 150mm/sec.