Engage reheat!

Yesterday, I wrote about the bad consequences of letting printed PLA get too warm – in summary, it softens and bends.  In the case of my 3D printer, it resulted in the print head getting out of alignment.  Thinking it over, it occurred to me that I might be able to fix the problem by reheating the plastic a bit and straightening it out.  To my surprise, it worked.  I boiled some water, put it in a bowl and immersed the distorted component.  After a few seconds I pulled it out and flattened the distorted area.  Easy.  It worked for both of the components I blogged about yesterday.

A little more experimenting shows that the water temperature can be a lot less than boiling (cool enough to dip hands in, which is convenient) and still soften PLA quite effectively, giving it a few seconds of pliability before it cools to stiffness again.  Even more interesting is the shape memory effect that I really wasn’t expecting.  Before I played with the critical parts, I took a simple printed bar of PLA, and dunked it in hot water.  While it was flexible, I bent it into a circle, and let it cool.  Then I dropped it back in the hot water.  It uncurled itself and resumed its original shape.  I’ve since done this with more complex parts, even screwing one into a ball.  I’ve put a video of this on YouTube.

It’s an entertaining but probably completely useless phenomenon.

The funny thing about thermoplastic…

… is that it melts when it gets hot.  “Well, duh!”, as my daughters would say.  PLA, the thermoplastic used in most 3D printers, is a very practical material.  It’s light, strong enough for most purposes, and melts at a reasonable temperature.  Which is why I’ve used it for many of the parts in my printer.  Most of these parts have no chance of getting hot, so the fact that PLA softens as it heats up is of no concern.

The one area that does get hot is the area around the hot end (“duh!” again).  This is expected, and the J-head hotend uses a high temperature resistant polymer called PEEK to isolate it from parts made of PLA.  So far, so good.  At normal printing temperatures the (PLA) hotend holder remains cool enough because of the PEEK insulation.  If, however, one accidentally sets the hotend temperature to 2110°C instead of 210°C (no, the software doesn’t stop you doing that) and it takes one a few minutes to notice, then the PLA can get substantially hotter.  Easily hot enough to deform, in fact.  And no, I didn’t let it get to 2110°C – I spotted the problem when the temperature got to about 240°C, at which point I panicked a bit and found the BRS.

The net result is a deformed pair of print head mounting components:

P1000751P1000753

The deformation isn’t hugely obvious (its around the small hole in the middle of the pink part, and on the further prong of the red one), but the net result is that the j-head is slightly loose, and is set at a slight angle to the vertical.  This may help to explain why some (but not all) of my prints are slanted.  I suspect that the print head offers more resistance to movement in one direction than in another, and this manifests itself in a number of missed steps on one of the stepper motor axes.  Each layer may thus be slightly offset from the previous, leading to the slant.  Objects which do not require many movements in the ‘difficult’ direction have fewer missed steps, and print more vertically.  Perhaps.  This is only speculation.  Rob’s printing me a new head (that sounds weird), so I’ll see if the result is straight prints.

Who ate too much Pi?

Calibration, that’s what you need.  If you want to be the best, if you want to beat the rest, oh-ho-ho, calibration’s what you need.  I apologise to anyone too young to remember the TV programme Record Breakers but i couldn’t resist.  Calibration of my printer proceeds apace.  Today I’ve been checking the vertical movement of each carriage independently, and guess what?  If I command them all to move 100mm, they all move slightly different distances.  I think this is down to variations in printed pulley size, but this time I can compensate in the firmware.  So I measured the distance each carriage moved, and calculated the effective pulley diameter which would cause this movement.  That value replaces the nominal one in the firmware, and all is well.

Or it would be, except that I noticed that the value of pi I was using in the firmware was 3.1515926 which as everyone knows, is wrong (it should be 3.1415926).  Yes, if you are picky it should be 3.1415927, but frankly an error in the second decimal place is somewhat more important.  It’s not a huge error (around 0.3%), but it just shows that when you check everything, you should check EVERYTHING.  I wonder how many more little errors are lurking in the system?

Having changed possibly the most fundamental part of the calibration definitions, I now need to go back over the whole printer calibration routine, because the chances are that some of the other tweaks have actually been trying to mask these errors.  What fun.

Eccentricity

Generally regarded as a Good Thing in an Englishman, eccentricity is rarely desirable in pulleys.  The drive mechanism of my printer uses six pulleys, all of which have themselves been printed.  In my ongoing pursuit of accuracy, I have discovered that some of these pulleys are not entirely circular, nor are they mounted entirely concentrically on the motor spindles (though exactly what ‘concentric’ means if the pulley is not circular is perhaps open to debate).  I’d really like to machine some small tolerance parts out of aluminium, but I don’t have access to a lathe (if you’ve got one, I’d love to use it for an afternoon…).  So how do I work with what I’ve got?  I need some way of ensuring circularity and accuracy of diameter.  The material is PLA, so it’s not too difficult to shape; I should be able to use the stepper motor itself as a lathe spindle, and turn the pulley in place.  My Idea is to print a bracket which will allow me to mount a dial gauge for measuring the pulley, and a makeshift cutting tool to pare it down.  I designed and printed one.

P1000705

Wonder of wonders, it printed pretty well!  I must be doing something right.  Now I can measure the variation in the pulley radius as it rotates:

P1000725

It turns out that the deviation is about half a millimeter over a full revolution.  Not, perhaps, a huge amount, but on a 20mm diameter pulley this is 2.5%. This does not mean that over a 100mm movement the carriage will move 2.5mm to much or too little – indeed, it’s possible that it could be completely accurate at specific points – but the linear motion will not be consistent with relation to the stepper motor steps.  Straight lines will wobble.  So now all (all?) I need to do is to drive the stepper motors at constant speed and pare down the pulleys to a constant and known diameter, than that’s one more inaccuracy removed.  We’ll see how that goes.

Concerning calibration

Or, Why You Should Always Listen To People Who Know More Than You.

There are many 3D printer designs out there.  I took ideas from some of them, and designed my own.  I’ve built it, and it kind of works.  My prints are dogged by a number of problems.  Principle amongst these has been a distinct slant to all the printed items (and by ‘distinct’, what I really mean is ‘45 degrees’).  This is not conducive to making precision parts for sundry other projects, which is the main purpose of the printer.  After fiddling round the edges for a while, and managing occasionally to get half-decent small prints, I realised it was time to do it properly.

In building my printer, I knew I would not have access to precision tools.  Any parts I made would be cut by hand with a saw.  Holes would be drilled with a hand-held drill.  High accuracy was not going to be the order of the day.  I naively didn’t think that this would be a problem – the machine is software controlled, after all, and it should be possible to account for misalignment of parts by judiciously tweaking the code.  It’s only software, after all.

This approach is feasible.  Software is flexible, and all sorts of hardware faults can be catered for in the software.  If, that is (and this is a big ‘if’) you know what they are.  Without accurate measuring tools, how do you know what errors need to be accommodated?  With the infinite flexibility that software configuration offers, it’s easy to get into a situation where more and more settings can be tweaked, but the settings become pure guesswork.  If something prints successfully, you don’t really know why, but you use those settings next time.  Post hoc ergo propter hoc

Also, adding all those settings involves time and effort.  Especially if you are using printer control firmware written by someone else, and you have to hack new tweaks into it.  This is labour that could be better used reducing the errors in the system rather than trying to accommodate them.

The better way

I’ve come to the staggering conclusion that it’s best to get the hardware as accurate as possible first.  To most people (including may writing on the web) this is blindingly obvious.  It took me a little longer to realise.  Having finally got the idea through my thick skull, though I set about re-engineering the hardware.  Firstly, I disassembled the arms and print head, and measured everything as accurately as I could.  It turned out that two of the delta arms were 1mm longer than the rest.  I picked one arm to use as a reference (and marked it) and reworked all the others so that they were as close to the same length as I could make them.  I estimate variation to be no more than +-0.1mm now.  Everything else seemed to be correct, so I reassembled it all.  Not much change there, really.  I then used a try square to adjust the print bed to be as perpendicular as I could to the vertical beams.  I had previously been adjusting this to try and level the prints, when really I should have been adjusting the print mechanism to move parallel to it.  Too many adjustment points, not enough logic.

The second part of the process is to use a consistent and structured set of steps to calibrate the system in a repeatable manner.  I found a nice article on how to do this sensibly, from which I quote: “First, and foremost, build your printer as accurately as you can.”  I second that.  In the article, much of the calibration is done with small adjustments to the carriage end-stop screws.  Well, my design doesn’t have them.  I can shift the end stops, but not under fine control.  I thought I would do this in software.  So I needed to add adjusters to my carriages.  How could I make them?  If only I had a 3D printer…

The nice thing about small, non-precision parts is that the calibration errors don’t show themselves quite so much.  So I was able to print three small blocks with holes to allow me to add adjustment screws to the carriages. 

P1000592

These are the first parts I’ve printed which actually form part of the printer itself.  A small achievement, but quite a satisfying one. 

P1000599

With the new adjusters in place (superglue is a wonderful thing), and following the calibration plan closely,  I’ve finally managed to print some things which are (almost) straight and (almost) the right size.  Here’s a print head, straight after printing and before tidying up.

P1000608

It’s not perfect.  I’ve still got some tweaking to do with feed rates, temperatures and so on, but the RepRap Wiki has an excellent guide to printing problems which should help me sort these out.  Things are definitely looking up, and I should be producing upgraded parts for the printer itself Real Soon Now.