Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
The fan on the dummy load that consumes the required minimum current to keep the ATX power supply happy wasn’t starting up reliably. That’s not surprising: I connected it to 5 V rather than the rated 12 V, because the load heatsink needs just a whisper of air flow to stay barely above room temperature, so it’s barely turning over and has no spare torque at all.
It turns out the heatsink really doesn’t need any forced air flow, despite having the fins oriented crosswise. Without the fan, it stabilizes just above comfortable-to-the-touch, a bit hotter than I’d prefer.
While I had the hood up for the HBP rebuild, though, I swapped in another fan and the heatsink is now cool to the touch. I did clean that dust off the fins, too.
If this one also fails at +5 V, I’ll fiddle the wiring to put it across the +12 V and +5 V supplies, where it’ll see 7 V. That should improve its disposition…
After a decade of stacking the plates in the dishwasher the same way every time, the flexible coating over the steel rods has worn through:
Dishwasher rack abrasion
We can’t stack them the other way, because the rotor spray rattles them unmercifully, and a fix is in order. Apparently, one can purchase touchup paint for this very purpose, but what’s the fun in that? Besides, I’d expect it to wear through even faster than the original coating, if only because adhesion is never as good as you’d expect from reading the label.
So this little dingus fits around a vertical pin and rests atop the horizontal rod, with the edge of the plate nestled into the joint between the two cylinders:
Dishwasher rack protector – solid model
Being very small, they build best in large groups:
Dishwasher rack protectors – on build platform
The horizontal half-cylinders require internal support, shown here adjacent to the protector for easy viewing:
Dishwasher rack protector – support model
Those fins just barely clear the interior of the horizontal cylinder, so the two parts don’t bond together very well (that’s the ideal condition, of course). The flat plate glues the support fins firmly to the build platform, which is easier to see on these somewhat shorter prototypes with a layer or two of orange filament on their bottoms:
Dishwasher rack protectors – support
The support chops out neatly with a repurposed nail set punch:
Dishwasher rack protector – removing support
Actually, I stood each one vertically on an aluminum chunk, held the punch in place with finger pressure, and whacked it with a small brass hammer. The OpenSCAD code now adds a small tab each end to help align the punch for the first whack.
The rod (vertical) hole came out just about exactly the right size (admittedly, with a 0.4 mm HoleFinagle adjustment), but required a pass with a drill in a pin vise to clear out the Reversal Zittage. The result slides easily over undamaged pins, but some pins had rust at either the top or bottom that required a bit of cleanup. This is a trial fit:
Dishwasher rack protectors – trial fit
I put a blob of acrylic caulk on the abraded spots to (attempt to) seal them from further damage, then squished the protectors in place. The dishwasher demonstrated that it’s perfectly capable of blasting an unglued protector (without a plate) up and off the pin, ingesting it into the trash grinder, chewing it up, and spitting the pieces down the drain. Lost a couple of prototypes before I figured that out, too.
Ya learn something new every day…
The OpenSCAD source code:
// Dishwasher rack protector
// Ed Nisley KE4ZNU - Jan 2012
Layout = "Show"; // Show Build Support
Support = true; // true to add support inside rod half-cylinder
include </home/ed/Thing-O-Matic/lib/visibone_colors.scad>
//-------
//- Extrusion parameters must match reality!
// Print with +0 shells
// Infill = 1.0, line, perpendicular to Bar axis on first bridge layer
// Multiply = at least four copies to prevent excessive slowdown
ThreadThick = 0.25;
ThreadWidth = 2.0 * ThreadThick;
HoleFinagle = 0.4;
HoleFudge = 1.00;
function HoleAdjust(Diameter) = HoleFudge*Diameter + HoleFinagle;
Protrusion = 0.1; // make holes end cleanly
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
function IntegerMultipleMin(Size,Unit) = Unit * floor(Size / Unit);
//-------
// Dimensions
PinDia = 4.0 + 0.5; // upright pin diameter + clearance
PinRadius = PinDia/2;
PinSpace = 35.0; // pin spacing along bar
PinOC = 3.4; // bar center to pin center
PinTubeLength = 15.0; // length of upright tube along pin
BarDia = 4.7 + 0.2; // horizontal bar diameter + clearance
BarRadius = BarDia/2;
BarTubeLength = PinSpace - 5.0; // length of horizontal half tube along bar
TubeWall = 4*ThreadWidth; // wall thickness -- allow for fill motion
TubeSides = 4 * 4; // default side count for tubes (in quadrants)
$fn = TubeSides;
SupportClear = 0.85; // support structure clearance fraction
//-------
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=HoleAdjust(FixDia)/2,h=Height,$fn=Sides);
}
module ShowPegGrid(Space = 10.0,Size = 1.0) {
Range = floor(50 / Space);
for (x=[-Range:Range])
for (y=[-Range:Range])
translate([x*Space,y*Space,Size/2])
%cube(Size,center=true);
}
//--------
// Support under bar tube shells
module SupportStructure() {
color("cyan")
difference() {
union() {
for (Index=[-4:4])
translate([Index*(BarTubeLength/8.5),0,0])
rotate([0,90,0])
rotate(180/TubeSides)
cylinder(r=SupportClear*BarRadius,h=2*ThreadWidth,center=true);
rotate([0,90,0])
rotate(180/TubeSides)
cylinder(r=SupportClear*BarRadius,h=10*ThreadWidth,center=true);
translate([0,0,ThreadThick])
cube([(BarTubeLength + 4*ThreadWidth),BarRadius,2*ThreadThick],center=true);
}
translate([0,0,-(BarRadius + Protrusion)/2])
cube([(BarTubeLength + 2*Protrusion),
BarDia,
(BarRadius + Protrusion)],center=true);
}
}
//-------
// Put it together
module Protector() {
difference() {
union() {
translate([0,PinOC,0])
rotate(180/TubeSides)
cylinder(r=(PinDia + 2*TubeWall)/2,h=PinTubeLength);
translate([-BarTubeLength/2,0,0])
rotate([0,90,0])
rotate(180/TubeSides)
cylinder(r=(BarDia + 2*TubeWall)/2,h=BarTubeLength);
}
translate([0,PinOC,-Protrusion])
rotate(180/TubeSides)
PolyCyl(PinDia,(PinTubeLength + 2*Protrusion),TubeSides);
translate([-BarTubeLength/2,0,0])
rotate([0,90,0])
rotate(180/TubeSides)
translate([0,0,-Protrusion])
cylinder(r=BarRadius,h=(BarTubeLength + 2*Protrusion));
translate([0,0,-(BarRadius + TubeWall + Protrusion)/2])
cube([(BarTubeLength + 2*Protrusion),
BarTubeLength,
(BarRadius + TubeWall + Protrusion)],center=true);
}
}
//-------
// Build it!
ShowPegGrid();
if (Layout == "Support")
SupportStructure();
if (Layout == "Show") {
Protector();
translate([0,-10,0])
SupportStructure();
}
if (Layout == "Build")
rotate(90) {
if (Support)
SupportStructure();
Protector();
}
The basic problem with the heater on the Heated Build Platform is that the SMD pads must both make electrical contact to the Molex-style connector and withstand mechanical stress from the dangling wires & cables as the platform moves along the X and Y axes. Rather than replace the entire heater, I attached pigtail leads to the PCB, anchored those leads to the wood platform under the heater, and routed the cables through the deck under the Y axis stage a bit differently.
However, attaching pigtail leads to the PCB poses a problem, because ordinary electronic hookup wire has thermoplastic insulation that melts or deforms at temperatures well under my usual 110 °C platform heat setting; shorting the heater wires would be a Very Bad Thing.
Some concerted rummaging in the Big Box o’ Multiconductor Cable turned up a hank of Teflon-insulated shielded two-wire cable that, as nearly as I can tell, has pure silver conductors and shield braid: the ends were tarnished like silver and there’s nary a trace of copper in the fresh cuts. It must be military surplus and, based on a vague recollection, was most likely cough salvaged by my father, who worked as an avionics tech at Olmstead AFB in the mid-60s. Ya gotta have stuff, right?
[Update: Alas, it’s not pure silver, as shown in the comments.]
The general idea is to scuff up the shiny PCB surface enough to anchor blobs of JB Industro Weld epoxy that surround brass tubes holding the cables. A pair of tubes secure each cable and provide strain relief; the cable is free to move, but not by very much. The thermistor cable has a long arch that will, I hope, keep the cable at the platform temperature and reduce its cooling effect on the thermistor:
Thermistor rewiring – heat cure
The alligator clips connect to a bench power supply that delivered 4 V @ 2 A = 8 W that heated the PCB to about 40 °C in the rather chilly Basement Laboratory and encouraged the epoxy to cure in less time than forever.
The final result looked like this, with Anderson Powerpoles now attached to the heater cable:
Rewired HBP
The 24 AWG conductors in the cable may seem scanty for 6 A of heater current, but, hey, they’re silver.
The three-pin connector on the end of the thermistor cable is a pure kludge, built from a 4-pin header to match the CD-ROM audio pinout on the new cable from the Extruder Controller. I kept the default pinout on this end to provide some protection against plugging it in backwards:
Kludged HBP thermistor connector
With all that in hand, I screwed the PCB to the aluminum sub-plate, bolted it to the plywood platform, and stuck the cables onto the platform with adhesive clamps:
Rewired HBP – front
Reaming out the hole between the red and black Powerpole shells provided just enough room for an M3 screw to anchor them to the HBP: they won’t flop around under acceleration.
The thermistor cable exits to the left, the rest to the right, and I’m unhappy with the overall routing. I added a small bumper (made from bent steel shim stock) to keep the thermistor cable out of the gap between the Y axis stage and the left side wall:
The platform is holding level within ±0.05 mm across build plates 1 and 2, somewhat better than before. On the other paw, the whole thing doesn’t have many hours on it…
Although Thanksgiving is Update Your Parents’ Browser Day, I ended up rebuilding their old Dell Dimension 2350 PC over their New Year visit: it had succumbed to a nasty case of bit rot. It may have had the odd malware infestation, although booting with the invaluable System Rescue CD and unleashing a ClamAV scan didn’t turn up anything exciting.
I had full partition backups from August 2010, so I set up a new hard drive (well, an old drive from my heap, but new to them) with the restored partitions before they arrived, swapped it into the PC, then attempted to boot the Windows Recovery Console from their Windows CD to restore the MBR. Alas, I didn’t set the Dell Utility partition to type DE, thus throwing off the drive letter sequence, and the subsequent thrashing (including a steel-cage death match with fixboot and chkdsk) wrecked the Windows partition.
Figuring that situation out from a simple NTLDR missing boot message took a while.
But after restoring the partition again and doing the WRC dance, we had a perfectly serviceable Windows XP installation that inhaled a year’s worth of Windows updates in a surprisingly short process that required only a single (!) reboot. I tossed a bunch of obsolete & unused software over the side, emptied the Recycle bin, manually deleted a bunch of files in the various temporary directories, updated Firefox, installed LibreOffice, imported the Outlook Express address book from the rotted drive, did not import the email messages, and away they drove.
I had suggested it was time for a new PC, but … maybe next time.
Notes:
My USB-to-SATA adapter cable injected occasional read errors (which partimage caught), but a klunky drop-in-the-slot vertical desktop adapter worked OK.
A CHKDSK fixed one or more files message doesn’t really prepare you for the discovery that it obliterated the entire directory structure and left a vacant drive behind.
The PC had 512 MB of DDR RAM in two 256 MB sticks. I swapped in a 512 MB stick (harvested from an old PC on its way to the recycler) and, as you’d expect, 768 MB of RAM dramatically improved the poor thing’s attitude.
System Rescue CD is invaluable for this sort of thing.
What is it with Firefox being stuck at V3 forever, then ratcheting instantly to V9? Version envy?
Given that the SMD pads fell off the HBP circuit board and I must replace the connector, I figured I may as well also replace the remarkably stiff MBI thermistor cable with a much more flexible CD-ROM audio cable. Although the EC end of the MBI cable looks like a standard CD-ROM audio connector, it’s been rewired. No problem: this is not an audio application and I’m going to do exactly the same thing.
The Extruder Controller, however, doesn’t have a matching connector and the recommended attachment involves simply jamming the connector onto the pin header, per this detail cropped from that photo in the MBI assembly instructions:
MBI EC HBP Thermistor Connector Alignment – Detail
Here’s a better closeup of my EC, taken from the other side:
MBI Extruder Controller – HBP thermistor connector
The header block breaks out the Arduino’s Analog Input pins, with A6 in the front of that photo. From left to right, the pins under the HBP connector are A6 / +5 V / Gnd. Unfortunately, the connector wiring and alignment puts the thermistor signal on the cable shield, with the Gnd and +5 V wires safely tucked inside. This is, shall we say, suboptimal.
The Gnd connection provides a low-impedance connection to the least-noisy part of the circuit, so putting it on the shield tends to prevent the relatively high-impedance signals within from picking up noise. This isn’t always successful, for a number of reasons, but it’s a Good Idea.
Although probably doesn’t make much difference (it’d just add a bit of noise to the HBP temperature signal), but if I’m going to be rewiring it anyway, the cable shield will be at ground potential with the signal wire inside. Here’s my cable & connector, rearranged to make that so:
EC HBP thermistor connector – revised
The analog audio connector on the back of old-school CD-ROM drives, back before digital audio output from the drives actually worked, had four pins:
Left (white) and Right (red) audio channels on the outer pair
Ground (black) on at least one of the central pair
So the red wire will be in the far right-hand socket of the connector shell; depress its locking tab, slide it out of the shell, poke it into the socket between the other two wires, push to click, and you’re set. Conveniently, this puts the +5 V supply on the red wire, which is sorta-kinda standard. Your cable colors may vary; pay attention to the actual wiring and ignore the color code!
Tape the connector in place (with the empty socket now toward the board edge) to prevent the tangle of wires in the Thing-O-Matic’s electronics bay from dislodging it at an inopportune moment:
EC HBP thermistor connector – secured
Admittedly, that arrangement still tucks the +5V wire right next to the signal wire inside the shield, but it’s a step in the right direction.
You could flip the MBI cable around, too, as long as you also rearranged the pins at the HBP end to match.
This has been a long time coming, as the connector shell over that pin connecting the MOSFET to the heater has been getting crispier despite my attention, cleaning, and occasional DeoxIT application.
Burned-out HBP connector
Notice that the burned pin now stands at a slight angle to the others. The PCB pad has no additional copper traces on that side to conduct the heat away from the failing connection, so the joint got hot enough to put the solder into its semi-liquid state, whereupon the springy connector rammed it upwards through the softened plastic shell. If the PCB fab shop used 60-40 lead solder, that’s around 188 °C. Silver solder would reach 220-ish °C. If the solder was eutectic, it would turn liquid and just drip off.
What doesn’t show: the SMD pads that pulled free from the PCB surface, fortunately only under the rightmost three pins leading to the thermistor. Repairing the pads and connector makes no sense, so I think I’ll go with pigtail leads anchored to the plywood, with offboard connectors to reduce the strain on those pads. Powerpoles will be bulky, but maybe pigtails long enough to get them onto the case might work.
As a general rule, soldering wires or connectors to SMD pads with no mechanical support is a Bad Idea and applying repeated mechanical stress to those connectors is a Very Bad Idea. Doing all that on a PCB running well over 100 °C with current right up near the connector’s absolute maximum, well…
The batteries I rebuilt for our much-beloved Sony DSC-F505V camera back in early 2010 have faded away with constant use. Having already sawed the cases open, rebuilding three of them didn’t pose much of a challenge; this time I added a short tab of Kapton tape to help extract them from the camera socket.
Rebuilt NP-FS11 batteries
Three batteries seems to be about the minimax for ordinary use:
One in the camera
One in the carrying case
One in the charger
You (well, we) can’t keep track of more than three: it always seems one battery gets overused and another gets lost in the dark. We’ll see how three works in practice; there’s a set of six more raw cells lying in wait.
The new batteries produced these results on their first two charge-discharge cycles:
Sony NP-FS11 2011 Packs – First Charges
One battery didn’t come up to speed on the first charge, but after that they’re all pretty close.