The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Author: Ed

  • Thing-O-Matic / MK5 Extruder: Insulated Heating

    Having found the thermal coefficient between the MK5 Extruder’s resistor and Thermal Core without any insulation wrapped around them, the next step is to do the same thing with insulation. In an ideal situation, the coefficient wouldn’t change: the same power flowing through the same area should produce the same effect. In actual practice, it decreases because the Core receives heat from the resistor that doesn’t pass through the interface.

    I used the left-side resistor for this test, as the clip lead dislodged the brass tube atop the other one during the previous test.

    Thermocouples locations - insulated
    Thermocouples locations – insulated

    I used cotton fabric (harvested from an old sheet in the Rag Box) rather than the delicate ceramic cloth tape normally used with the MK5 head; I figured that plenty of cloth would be at least as good, as long as I didn’t run the temperature up all the way.

    Cloth insulation - first wrap
    Cloth insulation – first wrap

    A second wrap around the outside pretty much mummified the Thermal Core. Apart from a few small gaps & cracks, the only paths for heat to get out are the Thermal Tube and the four screws. There’s no ABS filament in the extruder head and the cloth covers the nozzle on the bottom.

    Cloth insulation - final wrap
    Cloth insulation – final wrap

    I didn’t instrument the Core quite so thoroughly, having already established that the metal Core block is pretty much isothermal.

    Name Meter Location
    TOM MK5 t-couple Top of core
    T1 Fluke 52 Resistor
    T2 Fluke 52 Core edge adjacent to resistor
    CA Craftsman A Bottom of core
    CB Craftsman B not used
    MPJA MPJA meter not used

    The adjusted data looks like this:

    Power TOM T1 T2 CA Time Current
    0 19.5 19.4 19.7 20.0 1634 0.00
    1 26.8 29.2 27.7 27.2 1644 0.45
    1 31.0 32.6 32.3 31.6 1654 0.45
    1 35.3 36.2 35.1 34.4 1704 0.45
    1 36.3 37.9 37.0 36.1 1714 0.45
    1 37.4 39.1 38.1 37.2 1725 0.45
    2 44.7 48.6 46.1 46.6 1735 0.63
    2 50.0 52.5 50.3 48.3 1745 0.63
    2 52.1 54.9 52.7 51.1 1755 0.63
    2 53.2 56.3 54.3 52.2 1805 0.63
    4 67.9 74.6 69.7 66.1 1817 0.58
    4 76.3 81.9 77.4 73.8 1827 0.58
    4 80.6 85.8 81.4 77.7 1837 0.58
    4 83.7 88.0 84.0 79.9 1848 0.58
    4 84.8 89.7 85.6 81.6 1858 0.58
    4 85.8 90.7 86.7 82.7 1908 0.58
    6 101.6 109.6 102.8 97.1 1919 1.10
    6 109.0 116.3 109.8 103.8 1929 1.10
    6 112.2 120.0 113.6 107.7 1939 1.10
    6 114.3 121.7 115.6 109.4 1949 1.10
    6 115.3 122.7 116.6 110.5 1959 1.10

    The temperature differences between interesting points is:

    Power R – Edge Top – Bot Edge – Top Edge – Bot R – Amb Edge – Amb
    0 -0.3 -0.5 0.3 -0.3 0.0 0.0
    1 1.5 -0.4 0.9 0.5 9.8 8.0
    1 0.3 -0.6 1.3 0.7 13.2 12.6
    1 1.0 0.8 -0.1 0.7 16.8 15.4
    1 0.9 0.2 0.7 0.9 18.5 17.3
    1 1.0 0.2 0.7 0.9 19.7 18.4
    2 2.5 -1.9 1.4 -0.5 29.2 26.4
    2 2.3 1.7 0.3 2.0 33.2 30.6
    2 2.2 1.0 0.6 1.6 35.5 33.0
    2 2.0 1.0 1.2 2.2 36.9 34.6
    4 4.9 1.9 1.8 3.6 55.2 50.0
    4 4.5 2.5 1.0 3.6 62.5 57.7
    4 4.4 2.8 0.9 3.7 66.4 61.7
    4 4.1 3.8 0.3 4.1 68.7 64.3
    4 4.0 3.2 0.8 4.0 70.3 65.9
    4 3.9 3.1 0.9 4.0 71.3 67.0
    6 6.8 4.5 1.1 5.6 90.2 83.1
    6 6.5 5.2 0.8 6.0 96.9 90.1
    6 6.4 4.5 1.5 5.9 100.6 93.9
    6 6.2 4.9 1.3 6.2 102.3 95.9
    6 6.1 4.9 1.3 6.1 103.3 96.9

    And the corresponding thermal coefficients…

    R – Edge Top – Bot Edge – Top Edge – Bot R – Amb Edge – Amb
    1 W 1.0 0.2 0.7 0.9 19.7 18.4
    2 W 1.0 0.5 0.6 1.1 18.5 17.3
    4 W 1.0 0.8 0.2 1.0 17.8 16.8
    6 W 1.0 0.8 0.2 1.0 17.2 16.1

    The R-to-Edge coefficient is down to 1 °C/W, but that still means the resistor temperature is far too high at 30 W dissipation.

    The R-to-Ambient and Edge-to-Ambient coefficients are up much less than I expected: the insulation helps, but not a great deal. I think there’s plenty of energy going out the Thermal Tube toward the Filament Drive and Extruder Motor; as the Core insulation gets better, conduction along the Tube becomes a larger fraction of the loss.

    One last test looms: what’s the improvement with thermal compound between the resistor and the Core?

  • Thing-O-Matic / MK5 Extruder: Uninsulated Heating

    The objective here is to determine the thermal coefficient between the resistors and the Thermal Core, with no thermal compound to fill the air gap, so we know how high the resistor temperature will get.

    The Thermal Core sprouted many thermocouples:

    Name Meter Location
    TOM MK5 t-couple Front of core
    T1 Fluke 52 Resistor
    T2 Fluke 52 Core edge adjacent to resistor
    CA Craftsman A Top of core
    CB Craftsman B Bottom of core
    MPJA MPJA meter Heatsink on thermal tube
    TOM with meters
    TOM with meters

    They’re positioned as shown here, with the Bottom thermocouple to the rear out of view. The ribbed black heatsink at the very top of the picture is a few millimeters below the acrylic base of the Extruder Filament Drive block.

    Thermal test setup
    Thermal test setup

    Applying power from a bench supply produced these results, adjusted to the average value using the regression coefficients determined there. The measurements occur every ten minutes: the Core’s time constant is, mmm, languid.

    Adjusted Data
    Power TOM T1 T2 CA CB MPJA
    0 20.5 20.9 21.3 21.1 22.3 21.0
    1 27.9 30.4 28.8 28.9 29.0 22.7
    1 32.1 33.7 32.2 32.2 32.3 24.8
    1 33.2 35.6 34.1 33.9 34.0 26.5
    1 34.2 36.3 34.8 34.4 34.5 27.0
    2 41.6 45.4 42.3 41.6 41.2 29.7
    2 44.7 48.2 45.1 44.4 44.5 31.4
    2 45.8 49.1 46.0 45.5 45.0 31.9
    2 46.8 50.5 47.5 46.6 46.1 33.0
    4 59.5 67.2 60.8 59.4 58.3 36.8
    4 65.8 72.1 66.1 64.4 63.3 40.6
    4 67.9 74.3 68.6 66.6 65.5 43.3
    4 67.9 75.0 69.2 67.7 66.1 44.4
    8 81.6 92.0 83.5 81.6 79.4 49.3
    8 86.9 (*) 88.9 86.6 83.8 52.5

    The asterisk marks the spot where a clip lead shifted and dislodged the brass tube epoxied to the resistor. Of course, that’s one of the two absolutely vital temperature measurements, but so it goes. I was planning to stop at 8 W, anyway, because that’s about as much power as I wanted to apply to the resistor, as it exceeds the rated power for that temperature.

    The boldified lines mark the measurements where the Core temperature has stabilized, where I defined “stabilized” to mean “hasn’t changed all that much since the last measurement”.

    Some temperature differences between interesting locations on the Thermal Core, bearing in mind that the linear regression equations aren’t good for much below 1 °C, at best, so the tiny differences are mostly noise.

    Temperature Differences
    Power R – Edge Core T-B Edge-Bot Top-Heatsink R – Amb Edge – Amb
    0 -0.4 -1.2 -1.0 0.1 0.0 0.0
    1 1.7 -0.1 -0.2 6.2 9.5 7.4
    1 1.5 -0.1 -0.1 7.4 12.8 10.9
    1 1.4 -0.1 0.2 7.4 14.7 12.8
    1 1.4 -0.1 0.3 7.4 15.4 13.5
    2 3.1 0.5 1.1 11.9 24.5 20.9
    2 3.1 -0.1 0.6 13.1 27.3 23.8
    2 3.1 0.5 1.0 13.6 28.2 24.7
    2 3.0 0.5 1.4 13.6 29.6 26.2
    4 6.4 1.1 2.5 22.6 46.3 39.5
    4 5.9 1.1 2.8 23.8 51.2 44.8
    4 5.7 1.1 3.0 23.3 53.4 47.2
    4 5.8 1.6 3.1 23.3 54.1 47.8
    8 8.5 2.2 4.1 32.3 71.1 62.1
    8 2.8 5.1 34.0 67.5

    The Top – Heatsink column says there’s really not much temperature difference between the Core and the cute little heatsink on the Thermal Tube at the top. This is without any Core insulation, but it’s also at a a much lower Core temperature.

    And now for the heart of the matter: the thermal coefficients, which are the temperature differences divided by the applied power. These are for the boldified lines above, where the temperatures have stabilized.

    These are not, strictly speaking, correct, because the only interface where we know the applied power lies between the resistor and the Thermal Core. But we’ll do the best we can with what we have…

    Thermal coefficients
    R – Edge Core T-B Edge-Bot Top-Heatsink R – Amb Edge – Amb
    1 W 1.4 -0.1 0.3 7.4 15.4 13.5
    2 W 1.5 0.2 0.7 6.8 14.8 13.1
    4 W 1.5 0.4 0.8 5.8 13.5 12.0

    The R – Edge column shows that the resistor-to-Core thermal coefficient hovers around 1.5 °C/W, which means dissipating 30 W in the resistor raises its temperature 45 °C above the Core. With the Core stabilized at 225 °C, the resistors run at 270 °C, far beyond their absolute maximum rating of 250 °C where the rated power drops to 1 W.

    That’s why MK5 Extruder resistors fail at such a disturbing rate.

    The next two columns show the relatively small temperature differences across the the Thermal Core iself: that steel block is pretty much isothermal, even with only a single resistor providing power to one side. That’s good news, of a sort: clamping the MK5 thermocouple anywhere on the Core will provide consistent results.

    The Top – Heatsink coefficient declines as the power level rises, probably because of the hot air rising from the uninsulated Core.

    The R – Amb and Edge – Amb columns shows that air is a pretty good insulator all by itself. If you apply 30 W to the resistor and extrapolate a 10 °C/W thermal coefficient, the resistor would reach something like 300 °C above ambient, even without insulation. Obviously, that wouldn’t work for long, but those are the numbers.

    Up next: wrap some insulation around the Core…

  • Thermocouple Calibration: Linear Regression

    With the thermistors nestled all snug in their wells, I turned on the heat and recorded the temperatures. I picked currents roughly corresponding to the wattages shown, only realizing after the fact that I’d been doing the calculation for the 5 Ω Thing-O-Matic resistors, not the 6 Ω resistor I was actually using. Doesn’t matter, as the numbers depend only on the temperatures, not the wattage.

    This would be significantly easier if I had a thermocouple with a known-good calibration, but I don’t. Assuming that the real temperature lies somewhere near the average of the six measurements is the best I can do, so … onward!

    Plotting the data against the average at each measurement produces a cheerful upward-and-to-the-right graph:

    Data vs Ensemble Average
    Data vs Ensemble Average

    So the thermocouples seem reasonably consistent.

    Plotting the difference between each measurement and the average of all the measurements at that data point produces this disconcertingly jaggy result:

    Difference from Ensemble Average
    Difference from Ensemble Average

    The TOM thermocouple seems, um, different, which is odd, because the MAX6675 converts directly from thermocouple voltage to digital output with no intervening software. It’s not clear what’s going on; I don’t know if the bead was slightly out of its well or if that’s an actual calibration difference. I’ll check it later, but for now I will simply run with the measurements.

    Eliminating the TOM data from the average produces a better clustering of the remaining five readings, with the TOM being even further off. The regression lines show the least-squares fit to each set of points, which look pretty good:

    Difference from Average without TOM
    Difference from Average without TOM

    Those regression lines give the offset and slope of the best-fit line that goes from the average reading to the actual reading, but I really need an equation from the actual reading for each thermocouple to the combined average. Rather than producing half a dozen graphs, I applied the spreadsheet’s SLOPE() and INTERCEPT() functions with the average temperature as Y and the measured temperature as X.

    That produced this table:

                        TOM     MPJA  Craftsman A  Craftsman B   Fluke T1  Fluke T2
    M = slope        1.0534   0.5434       0.5551       0.5539     1.0112    1.0154
    B = intercept   -1.6073 -15.3703     -19.4186     -16.9981    -0.7421   -0.3906
    

    And then, given a reading from any of the thermocouples, converting that value to the average requires plugging the appropriate values from that table into good old

    • y = mx + b

    For example, converting the Fluke 52 T1 readings produces this table of values. The Adjusted column shows the result of that equation and the Delta Avg column gives the difference from the average temperature (not shown here) for that reading.

    Fluke T1    Adjusted   Delta Avg   Max Abs Err
    21.0        20.5        -0.4          0.78
    29.0        28.6        -0.3
    34.8        34.4        -0.3
    45.5        45.3        -0.2
    50.1        49.9         0.0
    52.0        51.8         0.2
    69.3        69.3         0.3
    76.4        76.5         0.4
    78.9        79.0         0.6
    107.9       108.4         0.2
    112.3       112.8         0.4
    117.5       118.1         0.3
    127.8       128.5        -0.2
    133.2       134.0         0.1
    136.6       137.4         0.1
    138.1       138.9         0.1
    146.4       147.3        -0.4
    155.8       156.8        -0.8
    

    The Max Avg Error (the largest value of the absolute difference from the average temperature at each point) after correction is 0.78 °C for this set. The others are less than that, with the exception of the TOM thermocouple, which differs by 1.81 °C.

    So now I can make a whole bunch of temperature readings, adjust them to the same “standard”, and be off by (generally) less than 1 °C. That’s much better than the 10 °C of the unadjusted readings and seems entirely close enough for what I need…

  • Thermocouple Calibration: Isothermal Block

    Verily it is written:

    • The man with one thermometer knoweth the temperature
    • The man with many thermometers knoweth not the temperature
    Drilling the isothermal block
    Drilling the isothermal block

    Given the five thermocouples and their meters shown there, plus the Thing-O-Matic’s thermocouple, I had six different temperatures. They’re close, but we can do better than that.

    The general idea is to put all the thermocouple beads in close proximity so they share the same temperature, record their opinions to various temperatures, then figure out an equation that adjusts their disparate opinions to reflect consensus reality.

    I cranked out an isothermal block on the Sherline mill, using EMC2’s exceedingly handy polar coordinate notation to get a nice hexagon. Touch off XYZ=0 at the middle of the block, then center-drill and drill:

    G0 Z3
    G0 @5 ^0
    G83 Z-5 R3 Q1 F100
    G0 ^60
    G83 Z-5 R3 Q1 F100
    G0 ^120
    ... etc ..
    

    For lack of anything better, 3000 rpm with a drill matching the ID of the brass tubes, plus dripping cutting fluid as needed.

    Thermocouples in block
    Thermocouples in block

    I used a 6 Ω 50 W resistor (the adult version of the resistors on the Thing-O-Matic / MK5 head) as a heat source, clamping the block to the resistors with plastic clamps to provide mechanical force and thermal isolation. Good idea, bad implementation: as you’ll see, those little red tips melt at a rather low temperature.

    The TOM thermocouple bead will fit into the empty hole.

    Next step: numbers!

  • Thing-O-Matic: Thermal Core Instrumentation

    Extruder head with thermocouple mounts - epoxy curing
    Extruder head with thermocouple mounts – epoxy curing

    As I described there, the resistors on the Thing-O-Matic MK5 Extruder Thermal Core operate in impossible conditions. To summarize, each resistor is rated to dissipate 10 W at 25 °C, but is actually dissipating nearly 30 W at well over 225 °C. Ouch!

    I wanted to figure out just what was going on inside the Extruder Head, which means some instrumentation was in order, which meant I had to figure out how to attach a set of thermocouples to the Core. This picture shows one approach: epoxy a set of small brass tubes to various parts of the MK5 Extruder Head.

    JB Industro-Weld epoxy is rated to 500 °F = 260 °C, which is barely adequate for the job at hand.

    The general idea is that each tube provides an isothermal mount for a thermocouple bead, without the inconvenience of drilling holes in various metal bits and messing with high-temperature thermal compound. I am assuming that putting the beads inside the tubes, heating the Core, then waiting for the temperature to stabilize will produce meaningful results.

    I have a motley assortment of meters that allegedly read temperature from Type K thermocouple beads. The business end of those thermocouples looks like this:

    Thermocouple beads
    Thermocouple beads

    The twisted one in the middle has a completely non-standard red-black insulation color code, but as long as the meter it came with is happy, I’m happy. The two on the right have industrial-strength wires, as befits the fact that they plug into a Fluke 52 dual-thermocouple meter; them, I trust.

    I skinned down the insulation a bit so they’d all reach into the middle of the tubes and filed down the bead on the right just a smidge.

    It shouldn’t come as any surprise that each of the five thermocouples reported a different number for the ambient temperature, which meant a calibration run was in order.

    Up next: an isothermal block.

  • Thing-O-Matic / MK5 Extruder: Static Control

    The Thing-O-Matic touches the plastic filament in three places:

    • Filament Drive Frame
    • Extruder Thermal Core
    • Automated Build Platform Belt

    In each case, the plastic filament slides (or oozes) along another plastic surface, which is the classic way to generate a charge of static electricity. Think of a running a comb through your hair, rubbing a cat on a balloon, shuffling across a carpet in your fuzzy slippers, or pulling off an acrylic sweater.

    In addition, the X and Y stepper motors each drive a rubber-ish timing belt around a plastic roller. Non-conductive belt on plastic pulley = static charge, with metal motor pulley collecting it on the motor shaft, thence to the motor frame. The motor shafts and frames do not connect to any of the motor conductors, because in most machines the stepper motors mount to a metal chassis. The Thing-O-Matic insulates its motors on plywood or plastic sheets with no conductive path to ground.

    None of those metal parts has any provision to control a static charge accumulation, which means the charge will increase until one of two events transpires:

    • The charge reaches an equilibrium with leakage through the air
    • The potential reaches air’s breakdown voltage and arcs to an adjoining metal object closer to ground potential

    The former situation may be tolerable (and is most likely during the humid summer months), but the latter causes those annoying random crashes and, sometimes, hardware failures. In round numbers, air’s breakdown voltage exceeds 1 kV / mm (25 kV / inch), which explains that blue-hot spark from your fingertip to the screw on the light switch.

    I added drain wires to all of those locations, using wire stripped from an old ribbon cable. There’s no particular current involved, so thin wire will work just fine. Double it over a few times to fill the barrel of the solderless connectors, though, and use some heatshrink tubing for strain relief.

    The ABP platform heat spreader underneath the belt looks like a huge (and completely isolated) capacitor plate with respect to the plastic accumulating atop the belt. The wire attaches to the far right rear of the spreader and trails off with all the other ABP cabling. Yes, those are the wooden side plates, not the acrylic ones, for a reason I’ll explain when I work through my embarrassment.

    ABP Heat Spreader static drain
    ABP Heat Spreader static drain

    There’s no good way to attach a wire to the metal foil, so I used a dab of Wire Glue. The cured carbon-rich blob probably isn’t rated for protracted use at 125 °C, though, and perhaps a mechanical flange captured under one of the socket-head cap screws will be a better idea. This is a detail of the contact end; I threaded the wire through the solderless ring terminals for strain relief.

    ABP static drain - detail
    ABP static drain – detail

    The Extruder DC motor has bolts passing entirely through the Filament Drive, so I captured a solderless connector under one head. After taking this picture, I realized that the lower motor bolt on the left side is a better location, as that one aims the connector’s open end up and to the right. Make it so.

    Extruder motor static drain
    Extruder motor static drain

    The X axis stepper motor drain wire dunks down through a motor mount slot and follows the motor winding conductors out of the housing.

    X Axis static drain
    X Axis static drain

    The Y axis stepper motor frame serves as the connection point for the Extruder Motor and X-axis drain wires, each secured under a separate motor mounting bolt. The third wire (with black and white heatstink tubing) snakes down through the left-front motor mounting slot in the acrylic sheet above the electronics bay.

    Y Axis motor with static drains
    Y Axis motor with static drains

    The Z axis stepper has only metal-to-metal sliding contact, so it’s presumably free of static buildup. If you’re being fussy, ground that one, too.

    The Extruder Thermal Core also requires a drain wire, but that one must also handle the fault current from a resistor failure that shorts the +12 V supply directly to the Thermal Core; I’ll discuss that situation separately in a few days.

    The ABP and Y Axis drain wires join a hacked-together ground point secured to the metal case of the ATX power supply metal case. You could, of course, connect these to a DC common supply lead (any Black wire), but these are, by definition, non-current-carrying leads that ought not be mixed with the power distribution. The case is a known-good grounding point that’s bonded to the AC line’s earth-ground conductor, exactly where static charges want to go.

    Static drain to ATX supply connector
    Static drain to ATX supply connector

    The connector is obviously from a cut-off Molex-style hard drive power cable with all four sockets wired together; I sacrificed a handful of Y-splitter power cables for another project a while ago. The pins are lengths of 12 AWG copper wire harvested from a length of Romex house wire, with the drain wires soldered to one end, then covered with heatstink tubing. This is a kludge, but a workable solution.

    Although I think static discharge is a relatively minor contributor to the random crashes and failures, it’s easy enough to eliminate with no side effects… as long as you leave enough wire to reach the far end of the axis travel range.

  • Thing-O-Matic: Stepper Driver Logic Supply

    Just as with the Extruder Controller, the Thing-O-Matic stepper motor driver boards derive their logic supply from the +12 V line through a 7805 linear regulator. While that works in the ideal case, it makes the logic supply vulnerable to glitches induced by motor current switching.

    This modification gives the stepper controller chip a clean +5 V supply from the Thing-O-Matic’s ATX power supply, by the simple expedient of removing the 7805 regulator chip and connecting the +5 V from the power supply Molex-style connector to the circuit pad that was the regulator’s output pin.

    This is what the modification looks like on the PCB layout.

    Stepper driver board modification
    Stepper driver board modification

    Use solder wick and a big soldering iron to de-solder the connections, then yank (gently!) the regulator off the board; you can see the outline printed on the board near the lower-right corner, between the two blue capacitors. This picture is rotated half a turn from the PCB layout shown above.

    TOM stepper driver minus 7805 regulator
    TOM stepper driver minus 7805 regulator

    Connect a jumper from the Molex connector’s +5 V pin to Pin 3 of the 7805 regulator outline. The wire can be any size, because it carries minimal current to the driver chip’s logic circuitry; I used a strand stripped from a ribbon cable.

    Put the wire on the bottom of the board, because the connector pin isn’t accessible from the top and the traces at the regulator output pad are on the top where they’ll be easy to solder.

    TOM stepper driver with 5 V jumper
    TOM stepper driver with 5 V jumper

    Repeat for all three stepper motor controller boards.

    Reinstall in your Thing-O-Matic and rejoice that nothing seems to have changed. This modification should reduce the number of weird motor-control problems, although it will not prevent lost steps due to mechanical overload or excessive traverse speed.