Thing-O-Matic: Arduino Mega Heatsinking

The Thing-O-Matic Motherboard rides atop an Arduino Mega (with the auto-reset option disabled), drawing most of its power from the hulking ATX connector at one end. The Mega draws power from the ATX +12 V supply and produces +5 V through its on-board regulator.

As I noted there, that regulator runs surprisingly hot when fed from +12 V, even without any additional current flowing to the Mega’s pins. The solution here required another search through the parts heap, which eventually disgorged a small heatsink that was, I think, intended for a 16-pin DIP, although I obviously added the hole for some other, long-forgotten purpose.

Motherboard regulator heatsink
Motherboard regulator heatsink

A bit of fin-bending to clear the (unused) power entry jack, a dab of JB Kwik epoxy, and a clamp to keep it in place while the epoxy cures:

Clamping the Motherboard regulator heatsink
Clamping the Motherboard regulator heatsink

You won’t have such a heatsink, but any similarly shaped chunk of metal, even without fins, should suffice. Nothing critical about it, as long as it clears the Motherboard that will be plugged atop the Mega; you’re just increasing the surface area for heat dissipation.

The Motherboard and Mega sit in the large opening across the Thing-O-Matic’s baseplate from the ATX supply’s fan intake, where they get plenty of cooling air. Do a before-and-after test with a fingertip on the regulator to feel the improvement for yourself.

This is, admittedly, just a feel-good tweak, but a cool regulator is a happy regulator. Spread the joy…

Thing-O-Matic / MK5 Extruder: Cartridge Heater Doodles

During the conversation following my original post on the MakerBot support forum, CodeRage suggested using cartridge heaters. I asked Eks about that and he said something along the lines of “Damn straight! We used ’em all over the place! Just do it!”

CodeRage plans to retrofit his MK5 head with a pair of 230 V 150 W heaters running at 120 V to get a total of 75 W. I have qualms about running line voltage around the extruder head, but it’s certainly a better solution than toasting power resistors.

The trouble with 1/2-inch models is that they don’t fit conveniently on the Thermal Core. I’d make an adapter block with a hole for the heater and two holes for the existing cap screws, but the screws don’t quite pass around a half-inch cartridge heater.

He suggested 1/8-inch heaters from Sun Electric Heater Company, which look like just the ticket except that they’re nigh onto 40 bucks a pop. Ouch.

High Temp Industries [Edit: new link 2013-12-27has 1/4-inch heaters for under $20 that will fit in the space available. If I understand the configuration options, you can even get 12 V 30 W heaters (the same power as the existing resistors) with a 1000 °F (call it 500 °C) temperature rating.

So I think what’s needed is to get some of those heaters, machine blocks to hold them on each side of the Core, and see how that works. The heaters will fit between the resistor screw holes and the Core is just about exactly 1 inch long. What’s not to like?

This might work… except for the fact that HTI has a $150 minimum order, which is somewhat off-putting even for me. Anybody up for a group buy of ten cartridge heaters?

Note that if you swap in some cartridge heaters, you really should do the separate +12 V supply Extruder Controller hack described there.

[Update: Zach @ MBI has ordered a stack of cartridge heaters for their internal testing (he promises to send me some), plans a retrofit kit, and may become a retail source for the heaters. He reports the lead time to get heaters in bulk is something over two weeks, which is a lot longer than I expected.

In light of that, I will hold the “group order” until I have a better handle on what’s needed to retrofit cartridge heaters into the existing MK5 head, how they’ll actually work, and what PID loop retuning may be required. Once I know more about all that, we can proceed.

Having MBI handle the ordering & shipping makes sense to me!]

Thing-O-Matic / MK5 Extruder: Resistor Wrapup

Extruder resistor wiring
Extruder resistor wiring

As nearly as I can tell, using a pair of 10 W power resistors as 30 W heating elements in the Thing-O-Matic’s MK5 Extruder Thermal Core isn’t going to work, at least if you want even minimal reliability.

The fundamental problem is that the resistor specification limits the dissipation to a few watts, tops, near 250 °C, where they must run in order to melt any of the plastic filaments.

The Thermal Core requires 20-30 W to maintain 225 °C, so each resistor must dissipate an average of 10-15 W at that temperature. That’s half of the MK5 extruder’s original design point and still nearly a factor of 10 beyond the resistor rating.

The original design runs at less than 50% duty cycle to maintain 225 °C, which agrees with my measurements:

  • 50% of 60 W = 30 W
  • 33% of 60 W = 20 W

If you want to run at lower power, it’s a drop-in replacement. Change the original 5 Ω resistors to 2.5 Ω resistors (from Digikey / Mouser / wherever), change the wiring to put them in series (not parallel!), and see how long they last. They’ll certainly fare better than at 30 W, but I wouldn’t expect more than a few hours of lifetime. The specs give them 1000 hours at rated power, which this certainly is not.

A series connection means that when one resistor fails, the heat goes off. The original parallel connection left one resistor carrying the load and, at 30 W, it can actually get the Core up to operating temperature and keep it there. Many folks have been baffled by that, but the diagnosis is simple. Measure the resistance of the parallel resistors at the Extruder Controller end of the wires:

  • 5 Ω → one resistor has failed
  • An open circuit (infinite resistance) → both are dead

The problem with the lower power dissipation, whether from a failed resistor in the original design or my suggested change, is that the extruder head has a thermal time constant of 10-11 minutes. Lower power means a longer cold-start time; 30 W should get it up to 225 °C in about 20-30 minutes depending on the insulation. That’s not really a problem if you’re printing a series of objects, but might be objectionable for quick printing sessions.

However, when a resistor fails, the heat goes off, the plastic stiffens up, the DC extruder motor stalls, and the essentially unlimited motor current kills the A3977 driver on the extruder board. My incandescent lamp workaround may alleviate that problem: when the light goes on, check for a failed resistor.

I picked up a stock of 2-to-3 Ω power resistors and will do some further experimenting with power levels, insulation, and suchlike. This is a short-term fix to get my Thing-O-Matic running, but there’s a better long-term way to go: cartridge heaters on a modified Thermal Core, which I’ll discuss shortly.

If you arrived by search engine, jump there for my earliest guesstimates, go there to the beginning of the Thing-O-Matic hardware hackage posts, then read until you get back here. The story will, perforce, continue…

Thing-O-Matic / MK5 Extruder: Thermal Core Time Constant

The Thermal Core’s time constant falls neatly out of the high power measurements when they’re plotted against time:

Thermal Core Rise Time
Thermal Core Rise Time

Rule of thumb:

  • Three time constants get you to 95% of the final value.

The two plateaus for the 6 W and 14 W power inputs give enough information to pull out the time constant. They’re pretty much flat after 30 minutes (which is why I turned up the power then!), so the time constant is on the order of 10 minutes.

Remember that the time constant doesn’t depend on the heater power. Higher power means the Core would stabilize at a higher temperature, but the overall curve would have the same time constant. What you’d see, though, is a faster rise to a given temperature, at which point the controller turns off the power to maintain the Core at that temperature.

Thermal Core time constant data
Thermal Core time constant data

In round numbers, a first-order exponential rises to 10% (really 9%) of its final value in the first 0.1 time constant. In this case, guesstimate a 10-minute time constant, apply power, measure the temperature rise after a minute, and the final temperature should be ten times that value above ambient. Various nonlinearities get in the way, but that’ll get you close to the right answer.

Just for the amusement value, I applied 22.5 W to the extruder and recorded the temperature every 10 seconds for the first 1200 seconds. I’m not going to graph it, but the salient points are:

  • 21 °C — Ambient temperature
  • 199 °C — Final temperature (four consecutive dupes)

So the final temperature rise is 178 °C above the 21 °C ambient. Multiply by 0.09 = 16 °C, so when the temperature passes 37 °C = (21 + 16) it’s 0.1 time constants from the start.

Squint into that table and you’ll find the temperature is 36 °C at 60 seconds and 40 °C at 70 seconds, so the time constant is pretty nearly 625 seconds… call it 10.5 minutes, which I’d say is pretty close to my original eyeballometric guesstimate from that crappy graph up at the top.

Dang, I love it when the numbers work out!

You could do it in your head: 10% is 17.8, truncate to 17, add 21, get 38, interpolate 65 seconds. That’s just shy of 11 minutes, still close enough for what we’re doing.

Now, the tradeoff is that you have a ten-minute delay before your MK5 Extruder can begin squeezing out parts. That may not be a big deal if you’re looking at an hour of extrusion for each part and, after the head is up to operating temperature, it just keeps on running.

Adding more power increases the final equilibrium temperature and increases the initial temperature rise, so the head gets up to operating temperature faster. More power adds more stress to the resistors and shortens their life, which is nasty, brutish, and short even at the power levels I’m using.

You can run the numbers the other way. Measure the temperature rise at 0.09 time constant, multiply by 10, and you’ve got the final temperature rise. If you’re running 60 W into those heaters, a firmware lockup or thermistor failure that leaves the heaters jammed on will stabilize at maybe 350 °C over ambient. Nope, the resistors aren’t going to survive that experience…

Thing-O-Matic / MK5 Extruder: Thermocouple Recalibration

The data from the high-temperature experiment suggested that I’d been unjustly maligning the thermocouple in the MK5 Extruder head.

This graph compares the raw MK5 thermocouple temperature against the adjusted reading from the Fluke 52 T2 thermocouple.


MK5 Thermocouple Variation
MK5 Thermocouple Variation


The regression line says the slope matches to within 0.01 °C and the offset is less than half a degree. While the line is a bit bumpy, that has more to do with the hasty data-taking than anything else: the points corresponding to the last reading at each power level are very close to the line.

Given that the adjustments to the T2 readings make them match the average of five thermocouples, not including the MK5 unit, I’d say the MK5 is spot on.

This doesn’t affect any of the conclusions I’ve come to over the last few days; I always put the MK5 thermocouple bead in a non-critical location.

Based on the earlier measurements, the Thermal Core seems like a reasonably isothermal setup. That means the reading displayed in the ReplicatorG control panel accurately reflects the Core temperature.

Thing-O-Matic / MK5 Extruder: Power Up!

Based on the thermal coefficients found there, it looks like the MK5 Extruder head can reach operating temperature with only 15-ish watts of power, rather than the usual 60 W. While a factor-of-four more power certainly reduces the delay from power-on to building parts, the stress it puts on the resistors causes early failures.

What I’m trying to find here is the minimum power required to heat the head to 225 °C, in order to guide some future tweaks. The resistors will be operating outside their specification at anything more than 1 W each, but reducing the maximum power dissipation can’t possibly be a Bad Thing.

With that in mind, I wrapped the ceramic cloth insulation around the Thermal Core. Because the Core-to-ambient thermal coefficient was 12 °C/W without insulation and 16 °C/W with cotton cloth insulation, I didn’t do a thorough job of taping the gaps. Any insulation is better than none, but I knew I was going to dismantle the poor thing several times over the next few days.

Insulated MK5 head in place
Insulated MK5 head in place

The MK5 thermocouple is now in its intended position, clamped under the washer at the rear of the Thermal Core. I added a pocket of Kapton tape to electrically insulate it from the Core to prevent a resistor failure from shorting +12 V to the MAX6675 thermocouple interface chip, but that didn’t actually work: the bead punched through the tape. I think a small epoxy blob is in order.

I used just the Fluke 52 dual-thermocouple meter, in addition to the MK5 thermocouple:

Name Meter Location
TOM MK5 t-couple Standard location, Kapton wrap
T1 Fluke 52 Resistor
T2 Fluke 52 Core edge adjacent to resistor
CA Craftsman A not used
CB Craftsman B not used
MPJA MPJA meter not used

For the previous test, I read the temperature as the head warmed up at a specific power level. In this test, I picked the power level, read the temperatures until they sort of stabilized, then increased the power. As a result, the numbers aren’t quite comparable to what you’ve seen before: the head is not at a stable temperature.

The adjusted temperature readings, taken every 10 minutes:

Power TOM T1 T2 Time Current
0 22.6 22.5 23.0 0 0.00
6 64.8 65.1 61.5 15 0.77
6 80.6 80.7 77.0 20 0.77
6 86.9 87.1 83.5 30 0.77
6 90.0 89.8 86.1 40 0.77
14 139.6 139.5 132.7 52 1.18
14 155.4 155.5 148.8 62 1.18
14 160.6 161.2 154.7 72 1.18
20 194.3 195.2 186.9 83 1.41
20 205.9 205.4 197.2 93 1.41
20 208.0 208.2 200.1 103 1.41
25 221.7 222.2 212.6 110 1.58

The Core was still heating with 25 W applied, but I couldn’t resist sticking an ABS filament into the Extruder, at which point my data-taking went downhill. Suffice it to say that 25 W heats the core well beyond 225 °C; I found a power level of 22 W (a current of 1.5 A) maintained the Core temperature at 225 °C.

One thing popped right out: the adjusted values for the MK5 thermocouple seem completely out of line, which isn’t surprising given what I saw in the isothermal block during calibration. I’ll have more to say about that in a bit, but the calculations you’ll see here use the raw MK5 thermocouple reading.

The last two lines show that the MK5 head, even with my crappy insulation job, can reach operating temperature with a total power under 25 W. That’s far less than the 58 W; it looks like running at about half power will be feasible.

The temperature differences:

Power R – Edge Edge – TOM R – Ambient Edge – Amb TOM – Amb
0 -0.4 0.0 0.0 0.0 0.0
6 3.5 -1.5 42.6 38.6 40.0
6 3.7 -1.0 58.1 54.0 55.0
6 3.7 -0.5 64.6 60.5 61.0
6 3.6 -0.9 67.2 63.2 64.0
14 6.8 -1.3 117.0 109.8 111.0
14 6.7 -0.2 133.0 125.8 126.0
14 6.5 0.7 138.6 131.7 131.0
20 8.3 0.9 172.7 164.0 163.0
20 8.2 0.2 182.9 174.2 174.0
20 8.0 1.1 185.7 177.2 176.0
25 9.6 0.6 199.7 189.7 189.0

And, from those, the thermal coefficients for the boldified lines (which are as stable as you’re going to get for this dataset):

R – Edge Edge – TOM R – Ambient Edge – Amb TOM – Amb
6 W 0.6 -0.1 11.2 10.5 10.7
14 W 0.5 0.0 9.9 9.4 9.4
20 W 0.4 0.1 9.3 8.9 8.8
25 W 0.4 0.0 8.0 7.6 7.6

You can’t compare the Resistor-to-Edge coefficient to the previous numbers, as the Core is getting heated from both resistors. Indeed, I think that column is totally bogus; using half the power gives a number comparable to the previous measurements, but I’m not certain that’s valid.

The rate of heat loss increases with higher temperatures: the Core-to-Ambient thermal coefficient is half of its previous value. The crappy insulation wrapper contributes to that, but the decline tracks the temperature for both types of insulation.

In round numbers:

  • Heating the core to 225 °C requires maybe 25 W
  • The resistors run 10 °C higher, with thermal grease
  • This operation really stinks up your Living Room

Thing-O-Matic / MK5 Extruder: DC Motor Safety Lamp

The DC motor used on the MK5 Extruder head seems unusually prone to sudden death, either by mechanical failure or something electrical. A stalled or shorted DC motor becomes a low resistance that destroys the A3977 H-bridge driver chip on the Extruder Controller board.

Makerbot recommends inserting a 10 Ω power resistor in series with the motor, so as to limit the maximum current. Other folks have build a diode decoded relay driver that’s certainly more durable than the A3977.


The power resistor reduces the voltage available to the motor, which draw something like 40 mA when unloaded and up to maybe 250 mA at full load. I don’t know what load the extruder puts on it, but at 100 mA the resistor drops 1 V, which seems excessive.

The relays seem like a nice solution, but they go clickety-clack and require actually building something, of which I’ve had quite enough lately, thank you very much.

While I was mooching those lugs, my buddy Eks suggested simply putting a low-wattage 12 V incandescent lamp in series with the motor. The cold filament has a very low resistance, but limits the current when if the motor shorts out.

Extruder motor with series #89 bulb
Extruder motor with series #89 bulb

A bit of rummaging in the Lamp Box produced an old automotive #89 lamp that allows 560 mA into a dead short, which works out to 7 W.

If the motor draws 100 mA, it drop only 100 mV: good enough!

Not finding a suitable socket in the heap, I wired it in by soldering the wires directly to the brass shell and central solder tip and taping up the mess. Next time I get near the local AutoZone I’ll pick up a socket.

The Anderson Powerpoles may look like overkill, but they make life a lot easier when you’re fiddling with the machinery all the time.

Now, the lamp won’t prevent inductive transients from blowing away those puny signal-level Zener diodes that should protect the A3977 chip, but it’s exactly what you need for long-term overload prevention.

[Update: An experiment that shows why a lamp works better than a fuse.]

As an added benefit, when the bulb lights up you know the Extruder Motor has died!