I got hooked into 3D printing late last summer. A problem that cropped up after the first couple months of tinkering and relatively error-less printing was an issue with thermal runaway. Something I could correct for short periods of time, but never make totally go away...
The Setup
I have what I'd refer to as an "entry level" Ender 3 printer. I picked it up on recommendation/nudge of someone who is substantially more advanced in the realm, so the recommendation meant something to me. The price point (under $200) was also nice...and at that price not something I'd need to personally justify with "having a problem to solve."
I really enjoy my Ender 3. While I like it...there have been some times I've wanted to throw it out the window which I think is true of everyone who's tried 3D printing. If you haven't been frustrated, you're not doing it right (or are just damn lucky).
At any rate, one morning in the middle of a ~20 hour print job I heard the dreaded alarm...and when I went to look it had shut down due to thermal runaway.
Thermal Runaway?
Most available 3D printers now have a safety feature for a thermal runaway, and that's a good thing. It's a safety switch to keep the device from melting down (or catching fire). There are some terrifying videos of what happens in a real thermal runaway/meltdown situation...and when this first happened to me I figured it was the same problem.
I was wrong, but I didn't know it at the time.
I cleaned up the hot end really well (it had gotten a little dusty), fiddled with some other stuff, gently tightened down the hotend thermistor screw which was just a little loose, and then decided it might (hopefully) have been a fluke. Especially since it'd been printing without issue for a few months...
And the resulting print completed without issue.
Moving to OctoPrint
Around this same time (though after my first experience with runaway), I also started using OctoPrint to manage jobs and control the printer versus printing from an SD card. A nice feature of OctoPrint is the graph showing temperature details of the hotend and bed. Everything was great for another couple weeks (I had started printing Christmas gifts at this point, so the printer was in near-constant use)...and then it happened again.
This time I could see the problem, though. Thankfully it wasn't what I'd feared: the printer itself wasn't overheating...it was just unable to maintain a hot temperature and shut down...and this usually after a period of progressive variation in hotend temperature...we're talking about ~20 degrees C. For context, the headline image of this post illustrates how temperature variation should look during a print. I took the screenshot on a particularly cold day when the temperature was lower than normal in my work area, and even then when properly tuned I was only having temperature variation of +/- 0.5 degrees C. Hotend temperature problems become quickly obvious with OctoPrint's graph.
What's The Problem?
I figured maybe a combination of things, but not likely to be the termistor itself since once I'd adjust things it'd behave for a while. But it seemed as though the thermistor screw on the hotend was always coming a bit loose. Not terrible, but enough for it to start jiggling around in the hotend. ¯\_(ツ)_/¯ The hotend itself would heat properly, fans were all good, and it was a mystery as to what variable was causing the problem.
I'd take the hotend cover apart, gently tighten the screw, run a PID autotune, and start afresh. This became the theme of things for most of the Christmas printing season and into the new year on some of my own stuff.
And it'd work...for about a week if I was lucky, though it seemed to happen a bit more often (or accelerate) on especially cold days (I keep the printer in the basement) when the outside temp was less than 10F (or below zero). The basement temp stays stable, but it's lower than our main living areas.
Kill It or Cure It
One day when runaway happened, I decided to take a "bigger hammer" approach to a fix. I flipped the hotend thermistor around to see if I could get it to set in the hotend more securely. This was one step before outright replacing the thermistor (which I had just ordered that morning). Tighten up things, power up the printer...
BZZZZZZZZZ
Immediately I had an alarm, and it was clear that the silicone coating of the thermistor lead wires had finally given up the ghost. The leads were now exposed enough that either the hotend or screw was causing a short. If I loosened up the screw it'd heat/behave without issue so I knew the thermistor itself was still in working order, but I knew that would lead to premature runaway due to the ongoing problem...
Well, shit. Looks like I killed it.
I had replacements on order, but it would be a week+ before they arrived so it was time to move to a "let's try something" attitude...
High Temp Insulation
I run the hotend around 200 degrees C (just shy of 400 degrees F), so ideally I'd have something silicone-based to insulate the thermistor leads. I looked all through my parts and couldn't find anything silicone based...but then I remembered an old silpat in the kitchen that needs to be thrown out (it is old and past its useful baking life)...
Silicone-coated fiberglass baking sheet...designed for consistent use at 450-500 degrees F...it could work!
The "Fix"
I cut a small corner out of the old silpat, about half an inch square. From that piece I cut two quarter-inch squares, into which I cut a small center opening (large enough for the thermistor screw threads to fit).
I then carefully "sandwiched" the fix in this order:
Hotend | Silpat | Thermistor Leads | Silpat | Screw Head
Fired up the printer and jiggled the hotend lead/loom around to see if I could get the thermistor to short out. Nothing. A good sign. Decided to heat up the hotend, no problem. Stable.
Giving it a Go!
I did another PID autotune after another thorough clean of the hotend, and ran a test print. Solid, stable, nothing on fire. All good things.
I wasn't willing or brave enough to let something print totally unattended or overnight, but at this point I was just printing my own stuff anyway with no deadlines, so if this worked until the replacement thermistors showed up...that's all I needed. And it did!
The Post-Mortem
The replacement thermistors arrived about a week later, but I have yet to install one. Somewhere between the sandwiched bits my thermal runaway problem has been resolved. It's been almost a month since the last runaway and, while I haven't been running stuff 24/7, I have been printing pretty consistently and heavily without a problem. Hotend temps stay very stable (if they fluctuate at all it's usually well within 1 degree C). Furthermore, on closer inspection the silpat pieces are holding up very well with no signs of damage from exposure to the hotend, so I am more comfortable at this point leaving a print run "unattended" for a period of time in the right circumstances.
I suspect the root problem was the set screw for the thermistor. One of the last fixes before "Kill It or Cure It" was to lightly tighten the screw when the hotend was at temp...and that did help keep temps stable longer before the next incident. I speculate that the silpat piece closest to the hotend has caught enough of the screw threads to give enough grip/resistance so the screw won't slowly back out on its own. Poor man's loctite. Alternatively/In conjunction, the extra layer of silpat is better insulating the thermistor which might help as well.
3D Printing: Tinkering Is Required
I've told a lot of folks who have expressed interest in getting their own printer: tinkering is required. It can be a lot of fun, but at the same time there's a lot of "stuff" that might need tweaking, so without the desire to do some amount of tinkering it would be super frustrating for folks...especially when things don't behave as expected.
This example of tinkering is a bit extreme, but I'm happy with my MacGyver solution to this problem. And should it start failing on me in the weeks (or months) ahead, I already have replacement thermistors on hand!
"It Could Work" gif via giphy
Headline image of OctoPrint temperature graph by Matt Zaske