Thing-O-Matic: Minimum Power Supply Load

Dummy load in place
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
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
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
Fan Adapter Plate Model

And then it built about like you’d expect:

Fan adapter plate
Fan adapter plate

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

Assembled dummy load
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
Dummy load - As-built spreader dimensions

6 thoughts on “Thing-O-Matic: Minimum Power Supply Load

  1. I’m asking-not-knowing, rather than asking-suggesting, but would there be any advantage in using a bunch of FETs operating in their active range as a big power resistor, and using a current-sense resistor that measures the ToM’s actual power usage, to drive the base of the FET array, so you’d have an adaptive sink to make the ToM/FET array draw a constant amount of current?

    1. The trick is that you want to avoid falling below the minimum load at any instant, which is hard to do with the ABP and Extruder heaters blinking on and off. They’re 3 to 5 A each, making for a pretty big kick in the slats, and they change more-or-less instantaneously without warning.

      You could fiddle with the firmware to get advanced warning, ramp the active load up or down, then switch the heaters, but that seems fraught with peril… not to mention having to fiddle with the firmware, wire up fiddly connections, do analog conversions, make the timing work out, and so forth and so on.

      An additional 16 W bumps the total idle power to 40 W. The TOM runs at 160 W with the steppers enabled and both heaters cranked on, so I’m not losing sleep over the power efficiency: it’s lost in the roundoff compared to the dehumidifier.

  2. >> you want to avoid falling below the minimum load at any instant, which is hard to do with the ABP and Extruder heaters blinking on and off.

    Well, I suppose you **could** rig up the heater switches to be “double throw”, and have the non-heater side go to a dummy load of the same size as the heater. That would get you operation in Class A, though it’s probably more work than it’s worth.

    No doubt your fan-cooled resistive load is an elegant solution. But is it hackerish enough?

    I’m thinking that your TOM would look mighty cool with, say, a 5U4GB burning off 3 Amps of 5 volt heater power.

    Then add a couple of #89 bulbs (as used in https://softsolder.com/2011/01/18/thing-o-matic-mk5-extruder-dc-motor-safety-lamp/) to the 12 volt supply and, Voila, you have a nice, brightly-lit TOM to boot :-)

    1. a couple of #89 bulbs

      For a brief moment, I thought of mounting a 12 V halogen spotlight up in one corner: a bright light and a heated chamber all in one!

      Then I came to my senses and put up an LED ring light…

Comments are closed.