
The ATX power supplies commonly used in PCs generally require a minimum load of about an amp on the +5 V and +12 V lines to ensure good voltage regulation, but the Thing-O-Matic Motherboard has only a 30 Ω power resistor that draws 170 mA. They’re also designed for relatively constant-current loads, which the Thing-O-Matic is not, by any stretch of the imagination, so it’s no wonder the voltages jump all over the place.
I think, but cannot prove, that many of the random problems plaguing long-duration prints arise from power glitches. That load resistor on the +5 V line was, at best, a stop-gap measure, and this is what I had in mind from the start. There are additional constant loads here and there throughout the Thing-O-Matic, but it really does not apply a known minimum load to the power supply.
I got a stock of 6 Ω resistors for that heater project and used a trio here: one draws 800 mA from +5 V (about an amp, including the MB load) and the other two in series draw 1 A from +12 V. The little fan runs from +12 V, although I may connect it to +5 V to make it quieter; the 16 W total power dissipation is too high for convection cooling.

Note that these are 50 W resistors dissipating 6 W apiece while running at room temperature. Yes, they look like extruder heater resistors, but this is an application they’re designed for.
A bit of machining mated a junked CPU cooler to a half-inch slab of aluminum that serves as a heat spreader. The cooler had many tabs and protuberances on its bottom surface that I simply sliced off with an abrasive wheel. Two pieces of brass shim stock filled in a mysterious recess along the right edge in this picture. The cooler’s spring clamp engages a pair of wire tabs screwed to the spreader and the force smushes a layer of thermal compound into the air gaps.

The holes atop the cooler didn’t match up with any fans in my collection, but that’s why I have a Thing-O-Matic. I had to rotate the fan case to get the holes to fit, which was trivially easy in OpenSCAD.

And then it built about like you’d expect:

Yes, it really needs a finger guard, but that’s in the nature of fine tuning…

The OpenSCAD source code, with a rather fat ThreadWidth setting. IIRC, this was fallout from a random walk through the Skeinforge parameter space.
// Fan adapter plate for CPU cooler
// Used for Thing-O-Matic minimum current loads
// Ed Nisley - KE4ZNU - Mar 2011
// Build with...
// extrusion parameters matching the values below
// +2 extra shells
// 3 solid surfaces at top + bottom
include </home/ed/Thing-O-Matic/lib/MCAD/units.scad>
// Extrusion parameters for successful building
ThreadWidth = 1.0; // should match extrusion width
ThreadZ = 0.33; // should match extrusion thickness
HoleWindage = ThreadWidth; // enlarge hole dia by extrusion width
// Plate dimensions
PlateX = 70.0;
PlateY = 66.0;
PlateZ = 5.0;
FrameHoleSpace = 50.0; // mounting holes in frame
FrameHoleXOffset = 10.0; // ... offset from front left
FrameHoleYOffset = 10.0; // ... which are *not* symmetrical!
FrameHoleDia = 3.0 + HoleWindage; // from frame holes
FrameHoleRadius = FrameHoleDia/2;
FanHoleSpace = 40.0; // fan hole separation in X & Y
FanHoleDia = FanHoleSpace * sqrt(2); // diameter of hole circle
FanHoleRadius = FanHoleDia / 2;
FanAngle = acos(FrameHoleSpace / FanHoleDia) - 45;
FanDuctDia = 48.0;
FanDuctRadius = FanDuctDia/2;
FanCenterX = PlateX/2;
FanCenterY = PlateY/2;
FanScrewDia = 4.0 + HoleWindage; // from fan frame holes
FanScrewRadius = FanScrewDia/2;
// Convenience settings
BuildOffsetX = 3.0 + PlateX/2; // build X spacing between top & bottom plates
BuildOffsetY = 3.0 + PlateY/2; // ... Y
Protrusion = 0.1; // extend holes beyond surfaces for visibility
HoleZ = PlateZ + 2*Protrusion;
//-- Build it!
difference() {
cube([PlateX,PlateY,PlateZ],center=true);
translate([(FrameHoleXOffset - FanCenterX),(FrameHoleYOffset + FrameHoleSpace - FanCenterY),0])
cylinder(r=FrameHoleRadius,h=HoleZ,center=true,$fn=6);
translate([(FrameHoleXOffset + FrameHoleSpace - FanCenterX),(FrameHoleYOffset - FanCenterY),0])
cylinder(r=FrameHoleRadius,h=HoleZ,center=true,$fn=6);
cylinder(r=FanDuctRadius,h=HoleZ,center=true,$fn=48);
rotate(a=[0,0,FanAngle]) {
for(x=[-FanHoleSpace/2,FanHoleSpace/2]) {
for(y=[-FanHoleSpace/2,FanHoleSpace/2]) {
translate([x,y,0])
cylinder(r=FanScrewRadius,h=HoleZ,center=true,$fn=6);
}
}
}
}
The original as-it-was-being-machined heat spreader dimensions:
