Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
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
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
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
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.
As I described there, a single +12 V Molex connector pin must supply too much current to the Extruder Controller Board. Fortunately, the stock Thing-O-Matic ATX power supply has a 4-pin connector that, in its normal PC environment, provides +12 V power to a high-end video board. This modification hacks that connector to provide separate +12 V power wires to the Extruder and Heated Build Platform heater MOSFETs, thus removing 11 A of current from the Extruder Controller PCB.
That current normally passes from the +12 V pin of the Molex-style connector to the screw terminals securing the Red heater wires. The corresponding Black / Blue wires connect to screw terminals that pass the current to power MOSFETs that switch the heaters on and off. Disconnecting the “Red” screw terminals from their PCB traces and connecting them directly to the +12 V from the hacked video connector, then connecting the corresponding return wires to the PCB near the MOSFET Source pins, is what’s needed.
This is what the change looks like on the PCB layout. The four yellow angles mark pins soldered to the board, the yellow arc is a new jumper wire, and the three purple dashes represent trace cuts. It’s not all that complicated, but it will certainly void whatever warranty you think might otherwise apply to the board.
Extruder Controller MOSFET modifications
The blue line between the row of screw terminal pins and the edge of the circuit board conducts +12 V power from the Molex connector to the A3949 DC motor driver chip. This modification doesn’t affect that connection: you must not sever that PCB trace.
Disconnected +12 V screw terminal pin
Cut the short traces between the screw terminal pins and the adjacent +12 V trace along the edge; I used a scalpel blade while watching through a microscope. You’ll certainly cut into the ground plane on either side of the trace, so you’ll see copper on all sides. Use a multimeter to verify that the terminal pin no longer connects to the +12 V Molex pin (the leftmost one as shown above) and that a stray copper curl hasn’t shorted it to the ground plane (either of the two center Molex pins). The result will look like this at each of the three screw terminal pins.
You should fill the gouges with an insulator to prevent future heartache and confusion. I used some of my shop assistant’s Citrus Punch nail polish; the glitter is entirely gratuitous. Wrap a narrow strip of Kapton tape along the edge to prevent shorts to the PCB ground planes from the pins you’re about to add.
Insulated PCB trace cuts
The corresponding ground connections go on the top surface of the board, near the MOSFET Source pins. There’s just enough space between the ICSP connector and the Gate traces to make this happen. Scrape the black solder mask off the PCB to reveal the clean copper ground plane below, leaving a narrow strip along the edge of the ICSP connector. Basically, you’re obliterating the URL that aims you at the board’s documentation.
Extruder Controller with scraped-off solder mask
Take care to not gouge through the copper plane and take extreme care to avoid the Gate traces and vias. I ground a flat end on that scalpel blade and used it as a scraper.
Lay the board aside and work on the ATX supply’s four-pin video power connector, which looks like this.
ATX power supply video connector
Note that there’s another four-pin connector that you removed from the end of the hulking 20-pin connector that plugs into the Thing-O-Matic Motherboard. That one has four different wire colors (black, red, orange, yellow) and won’t work here!
Remove the pins from the connector housing. There’s a special tool that does this, but I used a defunct crochet needle. The trick is to poke a very skinny tool between the stamped-metal socket and the plastic housing to push in the spring tab that locks the socket in place. There are two spring tabs on opposite sides of each socket. This operation goes smoothly if you pull gently on the wire while poking the tabs; you can feel the socket move when the tab slides out of position.
The end result will look like this, with a tab on the top surface.
Dismantled video power connector
Clip off the two protruding tabs that hold the socket in the plastic housing against the tabs. Apply some heat-shrink tubing around each socket to get four little teeny connectors:
Insulated video connector sockets
The sockets mate, albeit with some persuasion, to 45-mil (1.14 mm) square pins that are not the smaller 25-mil pins found on pin header strips. My parts heap disgorged a handful of suitable right-angle pins in plastic strips, something like those; failing that, I’d harvest and gut a connector from dead PC system board. You could probably use some 16 or 18 AWG solid wire in a pinch, but the current is rather high for an impromptu arrangement.
Solder two pins to the screw terminals on bottom of the PCB, angled slightly so the upright parts pass between the screw terminal openings on the side. The pins are on the Heater (for Extruder head) and Extra (for Heated Platform) terminals, with the jumper wire connecting the latter to the Fan (ABP belt motor) terminal; all are on the +12 V terminal of their respective pairs.
The ABP belt motor connects to the other terminal of the Fan pair, which leads directly to the MOSFET Drain. You could omit the yellow jumper wire, but that’d be confusing if you ever wanted to use that MOSFET in the same way as the others.
Extruder Controller with +12 V to screw terminals
Solder the other two right-angle pins to the cleared strip on the top of the board, tinning the ground plane and pins before you solder them together. Don’t block access to the ICSP connector; you never know when you might need it! I put the angled ends of the pins to the right, as viewed from the screw terminal strip, which put the right-most pin exactly at the corner of the connector shell with barely enough room for the wire with socket + heatshrink. The end result should look like this:
Extruder Controller with added ground pins
Do a trial fit: plug in the four wires from the video power cable, noting that the Black wires connect to the top-side pins and the Yellow wires connect to the pins at the screw terminals. I trimmed the pins so they exactly fit into their sockets.
Extruder Controller with separate +12 V supplies
This is certainly not the most robust construction method in the world. In particular, the pins on the top surface depend on structural solder to the ground plane; they have a fairly large area in contact with the board, but if you manage to apply enough force you can probably wreck the Extruder Controller board.
Put the board back in the Thing-O-Matic, connect the modified video power wires, and plug / screw all the usual connections. Button it up, fire it up, and it should work exactly as before… but with better reliability.
This modification should reduce the number of glitch-induced transient failures by moving most of the transient energy off the board; the remaining paths are very short. It will not correct excessive heat in the MOSFETS and does not cure the DC motor overcurrent jam / driver failure problems.
The Thing-O-Matic Extruder Controller uses a 7805 linear regulator to produce +5 V logic power from the +12 V input. Unfortunately, the board’s +12 V supply input is grossly overloaded: a single 20 AWG wire and Molex-style connector pin must supply several simultaneously active high-power loads:
5 A → Extruder heater
6 A → Build Platform heater
1-2 A → Extruder motor
The return current path to the ATX supply uses two pins and wires, so it contributes half as much to the problem. Molex connector pins aren’t rated for that much current (11 A @ 30 °C rise), so the +12 V supply arrives at the board in poor condition.
Worse, the brushes on the DC Extruder motor introduce large switching transients, even without PWM speed-control chopping. The Extruder and Build Platform heaters also present somewhat inductive loads to their MOSFET switches that create significant switching transients. The 7805 regulator isn’t well-suited to removing high-voltage transients; its bandwidth isn’t high enough.
This modification gives the Extruder Controller clean +5 V logic power by removing the 7805 regulator chip and connecting the +5 V pin at the power supply Molex-style connector directly to the PCB pad that was the regulator’s output pin.
This is what the modification looks like on the PCB layout.
Extruder Controller board modification
Unsolder the regulator and remove it, which will reveal the outline printed on the circuit board. This picture is rotated a quarter-turn counterclockwise from the PCB layout shown above.
Extruder Controller minus 7805 regulator
You’ll need a beefy soldering iron or an Old Skool soldering gun to make headway on the 7805′s center pin, because it’s firmly attached to the ground plane on both sides of the circuit board. A solder sucker and desoldering braid will come in handy to remove excess solder before extracting the regulator.
Then 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 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. However, the trace at the regulator output pad is on the bottom where it’ll butt against the wire insulation, so make sure there’s a solder fillet between the wire and the pad.
Extruder Controller with 5 V jumper
Reinstall the Extruder controller and marvel that nothing seems to have changed.
The next modification to this board will move the heater power supplies off the board, but it’s a much more aggressive hack. This simple change should eliminate the random resets and crashes that seem to be plaguing the stock Extruder Controller board; it will not prevent burning out the DC motor controller chip.
Notice that the +12 V output increases under load, which turns out to be true because all the outputs share the same transformer: supporting the load on the +5 V output requires more flux, which tends to increase all the other outputs.
The last two columns are the input power from the AC line, with the -ON pin shorted to ground and with a black-box power supply tester that evidently draws a watt or three.
The resistors on each heatsink dissipate a total of 46.6 W:
1 Ω -> 4.82 / 1 = 23.0 W
6 Ω -> 11.92 / 6 = 23.6 W
The box sees 140 W with all three heatsinks powered up.
Three of those fans draw 1.1 A from +12 V, adding another 13.4 W.
Grand total: 153 W. Close enough!
Power supply efficiency at full load is 81% = 153 / 189. Not as good as you’d like, but it’ll suffice for my simple needs.
The drop across a single Molex power connector pin is 11 mV @ 5 A and 4.3 mV @ 2 A: call it 2 mΩ. They’re rated for 11 A with a 30 °C temperature rise, which means I really should use PowerPoles.
I intend to use an ATX power supply as a cheap source of bulk +12 V and +5 V power for the resistors on those heatsinks. I have a 250 W box on the shelf (harvested from a dead donor PC) that seemed ideal; they run more efficiently with higher loads and I only need 150-ish W.
Being that type of guy, I opened it up to see what’s inside…
Damaged ATX Supply
Huh. Looks like some small creature of the night immolated itself down there in the lower left corner, tucked against the transformer. There’s nothing more than black goo and charred filaments left over, with green-blue corrosion creeping up the resistor lead.
Or maybe it’s actually toxic snot from the manufacturing line. Hard to say at this point.
The power supply tester says the juice comes out fine & dandy, so I might use the thing after trying to get the gunk out.
Continuing the experiment with forced air, I added some of those fans. Same thermocouple arrangement as before, heatsink sitting on the bench with the fins horizontal and the fan blowing across the bench. This obviously leaves a bit to be desired as far as air flow control goes, but it’s close enough to get a general idea of what’s going on.
With the fan in the air flow straightener, exit about 1 diameter (4 inches, 100 mm) away from the heatsink, flow perpendicular to the heatsink body, 24 W to the 6 Ω resistor:
R = 27.7 °C
Bot = 23.4 °C
HS = 66 °F = 18.9 °C
Thermal resistance resistor to heatsink: ΘRB = 0.18 °C/W
Thermal resistance heatsink to ambient: ΘHA = 0.16 °C/W
That’s more like it!
With the bare fan sitting on the bench, exit about 1 diameter (4 inches, 100 mm) away from the heatsink, flow perpendicular to the heatsink body, 24 W to the 6 Ω resistor:
R = 26.7 °C
Bot = 22.4 °C
HS = 64 °F = 17.8 °C
Thermal resistance resistor to heatsink: ΘRB = 0.18 °C/W
Thermal resistance heatsink to ambient: ΘHA = 0.12 °C/W
The bare fan actually does a better job than the flow straightener. Just from the general feel of the breeze, I think the fan’s air flow entrains a bunch of ambient air and slams it across the entire heatsink, rather than hitting just the central area.
Encouraged by that, I doubled the power to 50 W: 2.6 A in the 6 Ω resistor = 41 W and 3 A (the limit of my bench supplies) in the 1 Ω resistor = 9 W. Because the heatsink is now getting energy from two sources, the heatsink temperatures won’t be directly comparable to the previous ones.
With the bare fan in the same position as before, 50 W dissipation:
R = 36.8 °C
Bot = 29.4 °C
HS = 72 °F = 22.2 °C
Thermal resistance resistor to heatsink: ΘRB = 0.18 °C/W
Thermal resistance heatsink to ambient: ΘHA = 0.14 °C/W
The heatsink will be 7 °C above ambient at 50 W and the resistors 4.5 °C at 25 W each above that. The resistors will be 11.5 °C = 21 °F over ambient.
Again, the average of the Bot and HS temperatures might be more meaningful.
The heatsink has fins on both side, but so far I’ve been using only one fan. Putting another bare fan on the opposite side, also 1 diameter away, so the heatsink gets ambient air from sides, thusly:
Heatsink – forced air
That produces even better results:
R = 33.9 °C
Bot = 24.9 °C
HS = 66 °F = 18.9 °C
Thermal resistance resistor to heatsink: ΘRB = 0.22 °C/W
Thermal resistance heatsink to ambient: ΘHA = 0.067 °C/W
The 6 Ω resistor is dissipating 41 W, rather than the 24 W I plan to use: figuring the resistor-to-heatsink thermal coefficient at 0.2 °C/W seems OK. The heatsink-to-ambient coefficient is breathtakingly good: cooling both sides seems like it ought to cut the thermal resistance in half and it does! Call it 0.1 °C/W.
So, bottom line: with two fans and 50 W, the heatsink will be 5 °C over ambient. Dissipating 25 W in each resistor will raise them 5 °C over the heatsink and 10 °C = 18 °F above ambient.
With the box ambient at 140 °F and two fans per heatsink, the resistors should tick along under 160 °F. That’s plenty toasty, but only slightly above my rule of thumb: If you can’t hold your thumb on it, it’s too damn hot. And, heck, we’re building a heater here, right?
On the other paw: six fans?
In reality, that layer of thermal goop between the case and heatsink determines much of the resistor temperature. One fan per heatsink should be entirely adequate. I should try this with one fan blowing parallel to the fins, with the notion of putting a fan directly upstream of each heatsink or between each pair of heatsinks.
Having plugged the previous holes, I screwed down a pair of power resistors atop some heat sink compound: 6 Ω and 1 Ω. The general idea is that a stock PC power supply will dump about 50 W into the heatsink: 2 A @ 12 V = 24 W and 5 A @ 5 V = 25 W.
Thermocouples atop the 6 Ω resistor (R), on the opposite side of the heatsink just below that resistor (Bot), and at the far end of the heatsink (HS). They’re all held in place with foam blocks, in the hope that the steady-state air temperature between the foam and the resistor / heatsink will be pretty close to the temperature of the source.
Ambient in the Basement Laboratory is hovering around 60 °F = 15.6 °C, which is pretty mumble chilly. The numbers use the actual ambient for each test.
The first test powered just the 6 Ω resistor, because I wanted to find the natural convection capability of the heatsinks, which will be pretty low. Reaching steady state required a bit over an hour in each case; I recorded temperatures every ten minutes, which really chops up the day, but prevents forest fires.
Heatsink flat on its back in the worst possible orientation, atop a pair of wood blocks 35 mm off the bench:
R = 64.3 °C
Bot = 60.9 °C
HS = 133 °F = 56.1 °C
Thermal resistance resistor to heatsink: ΘRB = 0.14 °C/W
Thermal resistance heatsink to ambient: ΘHA = 1.7 °C/W
Heatsink on edge, fins horizontal, clamped in a vise a few inches off the bench:
R = 57.0 °C
Bot = 52.4 °C
HS = 121 °F = 49.4 °C
Thermal resistance resistor to heatsink: ΘRB = 0.19 °C/W
Thermal resistance heatsink to ambient: ΘHA = 1.4 °C/W
Heatsink on end, fins vertical (best orientation), same vise:
R = 51.6 °C
Bot = 46.4 °C
HS = 114 °F = 45.6 °C
Thermal resistance resistor to heatsink: ΘRB = 0.22 °C/W
Thermal resistance heatsink to ambient: ΘHA = 1.2 °C/W
All those numbers are suspect, of course, but the general trend is comforting. The heatsink temperature might be better figured as the average of the Bot and HS values, but they’re pretty close.
Figuring ΘRB = 0.2 °C/W says the resistor will be 5 °C above the heatsink, which means we’re not dealing with insanely high temperature differentials. This is a Good Thing and shows that thermal compound helps.
Figuring ΘHA = 1.5 °C/W means convection really isn’t going to work, because at 50 W the heatsink will be 75 °C above ambient. That’s much too hot, but I need forced air flow to circulate hot air inside the box, anyway, so this is something of a worst-case situation.
The heatsinks will probably be in the second configuration, with fans blowing along the horizontal fins. If the fans fail, things will get downright toasty. We need a mechanical thermal cutout switch, heatsink temperature monitoring, and fan status feedback.