-
Thing-O-Matic: Minimum Power Supply Load

Dummy load in place 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.

Power resistors on heat spreader 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.

CPU heatsink on aluminum spreader 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.

Fan Adapter Plate Model And then it built about like you’d expect:

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

Assembled dummy load 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:

Dummy load – As-built spreader dimensions