The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Home Ec

Things around the home & hearth

  • Garden Sprayer: End of Life

    The hose attached to this garden sprayer had failed last season, but the hose fitting had become one with the sprayer. Soaking it with penetrating oil for far longer than seemed necessary didn’t help, so I tried brute force:

    Garden sprayer hose fitting
    Garden sprayer hose fitting

    After convincing myself that wasn’t going to work, I cut the fitting off and tried the old standby of collapsing the threaded shell inward with a small punch:

    Garden sprayer - rolled-in fitting
    Garden sprayer – rolled-in fitting

    That didn’t work, either: the shell really had become one with the sprayer.

    As it turned out, the plastic sprayer body had begun to crack in several high-stress locations and would shortly become Yet Another Project. I cut my losses and tossed the hose and the sprayer.

  • Miniblind Mounting Brackets

    Quite some years ago I installed miniblinds on the southern windows in the living room, which keep the afternoon sun off my upstairs desk. Time passes, they collect a generous layer of dust, and it’s easier to just replace them than to give them the thorough cleaning they deserve; they’re under $10 each.

    Miniblind center clip
    Miniblind center clip

    With the new blinds in hand, the job turned out to be not quite as simple as one might expect(*). The new blinds have their middle support bracket on the right side of the central ladder, which means they’re not a drop-in replacement for the old blinds with their support on the left. That’s OK, I can just unscrew the adapter I made that fits the intended-for-a-flat-window-frame bracket to our mid-1950s curved moulding frames, drill another hole in the right spot, and screw it back in place.

    Too bad about that paint, but we agreed that because it’s invisible from inside, we’re just not going to worry about it.

    The adapter is a slice of bed frame steel that turned out to have exactly the right length for the job.

    Of course, the new bracket has a completely different and incompatible screw hole pattern than the old one, but due to some bizarre slipup, the old bracket fits into the slot in the new blind. I have no explanation for that.

    Miniblind mount adapter bracket
    Miniblind mount adapter bracket

    I also replaced the sun-faded end brackets, which were essentially identical to the new ones and perfectly fit the existing screw holes.

    We had to return and replace the first two blinds, though, as I’d managed to pick up two identical packages with different manufacturing dates. They both had white miniblinds inside and sported the same SKU, but one blind was definitely white and the other a very light gray. This wouldn’t normally matter, but when they’re installed in windows just a few inches apart, the mismatch became painfully obvious.

    The new-new blinds come from the same manufacturing lot and had a slightly different shade from both of old blinds and  each of the old-new blinds.

    (*) Full disclosure: I knew it wasn’t going to be simple, but hope springs eternal.

  • Capping a Sink Drain Pipe

    We put the new furnace (replacing the old one) closer to the wall with the flue pipe, displacing an ancient slop sink (which vanished from the end of the driveway in about an hour) in the process. I “plugged” the drain with a twist of paper towel until the installation was done:

    Corroded sink drain nut
    Corroded sink drain nut

    The overexposed blue-hot glow comes from the LED worklight on the right.

    Despite being chrome-plated brass, the nut at the base of that vertical chrome pipe was firmly corroded to the short nipple emerging from the iron tee. After a few minutes of fruitless wrenching, I deployed a Dremel cutting wheel, slit the nut, gave it a shot with a chisel, and it popped loose. A rubber cap clamped around the nipple finished the job:

    Sealed sink drain pipe with split nut
    Sealed sink drain pipe with split nut

    Next case!

  • Zinc-air Cell Corrosion

    For reasons that, alas, have little to do with normal age-related hearing degeneration, I’ve been wearing Etymōtic (that should be a long o symbol) MP-915 High-definition Electronic Earplugs (aka, Martian Ear Beetles) when I need a 6 dB boost for normal conversations. The key advantage: a price 10 dB under full-throttle hearing aids.

    Anyhow, each one runs for about two weeks on a 312 zinc-air primary cell, so I picked up a batch from the usual eBay vendor. These were short-dated, which let me figure out how long after the rated shelf life they’d be good for, so I know what’s the largest batch I should buy.

    One cell arrived with its air vent seal dislodged:

    Corroded zinc-air cell
    Corroded zinc-air cell

    The cell in the middle is used, with several scratches from the contact point inside the earplug. The cell on the right has a good seal.

    Assuming a good seal, the cells seem to work about as well as the long-dated fresh cells included with the earplugs.

    Although I found several datasheets (Duracell Energizer Rayovac), there seems to be no way to relate the actual cell you purchase to any particular datasheet; the part numbers do not correspond to anything on the package and the nomenclature varies wildly both between manufacturers and within product lines.

  • Logitech Dual Action Gamepads: Mac vs. PC

    Turns out that there’s no difference between the Mac and PC versions of the Logitech Dual Action Gamepad:

    Logitech Dual Action Gamepads - Mac vs PC
    Logitech Dual Action Gamepads – Mac vs PC

    I picked up a Mac version cheap from the usual eBay seller and discovered that LinuxCNC / HAL was perfectly happy. That wasn’t too surprising; they have the same model and part numbers. Most likely, the only difference was the CD and maybe the Quick Start Guide that I didn’t get in the opened retail box…

    So now I have either a hot backup for the Joggy Thing or one for a different box.

    Most likely, it was cheap because nobody wants a blue-and-black peripheral next to their shiny white Mac…

  • MTD Snowthrower: Transmission Repair

    During the next-to-last snowfall, the gearshift on our MTD snowthrower jammed in high gear, but the wheels turned much more slowly than usual. Slightly before the last snowfall, I removed the cover over the transmission and discovered what went wrong:

    MTD Snowthrower - transmission failure
    MTD Snowthrower – transmission failure

    That rubber wheel should be resting on the circular transmission plate, but somehow it slid off the far right edge. The spring-loaded clutch cable then pulled the plate upward, so that the side of the wheel drove the edge of the plate. Ouch.

    The plate rotates on a bearing around a post on the folded red steel support structure underneath it, which pivots on a rod across the transmission housing behind everything that’s visible here. That rod used to protrude through the housing, but it had slipped inside and moved the plate to the left enough to let the wheel fall off. Some awkward maneuvering got it back through the hole, which made the real problem obvious:

    MTD Snowthrower - missing hitch pin clip
    MTD Snowthrower – missing hitch pin clip

    There’s supposed to be a cotter pin or hitch pin clip through that hole, with a washer matching the obvious wear marks:

    MTD Snowthrower - replacement cotter pin
    MTD Snowthrower – replacement cotter pin

    That’s actually a spacing shim from a collection that I’ve used rather infrequently over the years, but it’s exactly the right thickness to make the answer come out right.

    A few weeks later, we found the missing washer on the driveway at about the point where I first noticed the transmission wasn’t working. It’s in the box of parts, waiting for the new cotter pin to wear out.

  • Broom Handle Screw Thread: Replacement Plug

    Somehow, we wound up with a broom handle and a broom head, the former missing a threaded stub that was firmly lodged in the latter. A few minutes of Quality Shop Time sawed off the end of the handle and unscrewed the stub to produce this array of fragments:

    Broken broom handle thread
    Broken broom handle thread

    It’s a cylindrical Thing tailor-made for (or, back in the day, by!) a lathe. My lathe has quick-change gears that can actually cut a 5 TPI thread, but that seems like a lot of work for such a crude fitting. Instead, an hour or so of desk work produced this:

    Broom Handle Screw - solid model - overview
    Broom Handle Screw – solid model – overview

    Some after-the-fact search-fu revealed that the thread found on brooms and paint rollers is a 3/4-5 Acme. Machinery’s Handbook has 13 pages of data for various Acme screw threads, making a distinction between General Purpose Acme threads and Stub Acme Threads: GP thread depth = 0.5 × pitch, Stub = 0.3 × pitch. For a 5 TPI thread = 0.2 inch pitch, that’s GP = 0.1 inch vs. Stub = 0.06 inch.

    I measured a 5.0 mm pitch (which should be 5.08 mm = 0.2 inch exactly) and a crest-to-root depth of 1.4 mm = 0.055 inch, which makes them look like 3/4-5 Stub Acme threads. But, I didn’t know that at the time; a simple half-cylinder 2.5 mm wide and 1.25 mm tall was a pretty close match to what I saw on the broken plastic part.

    Although OpenSCAD’s MCAD library has some screw forms, they’re either machine screws with V threads or ball screws with spheres. The former obviously weren’t appropriate and the latter produced far too many facets, so I conjured up a simpler shape: 32 slightly overlapping cylinders per turn, sunk halfway in the shaft at their midpoint, and tilted at the thread’s helix angle.

    Broom Handle Screw - thread model closeup
    Broom Handle Screw – thread model closeup

    The OpenSCAD source code has a commented-out section that removes a similar shape from the shaft between the raised thread, but that brought the rendering to its knees. Fortunately, it turned out to be unnecessary, but it’s there if you want it.

    With the shaft diameter set to the “root diameter” of the thread and the other dimensions roughly matching the broken plastic bits, this emerged an hour later:

    Broom handle screw plug - as built
    Broom handle screw plug – as built

    The skirt thread was 0.25 to 0.30 mm thick, so the first-layer height tweak and packing density adjustments worked fine and all the dimensions came out perfectly. The cylindrical thread form doesn’t have much overhang and the threads came out fine; I think the correct straight-sided form would have more problems.

    The hole down the middle accommodates a 1/4-20 bolt that applies enough clamping force to keep the shaft in compression, which ought to prevent it from breaking in normal use. I intended to use a hex bolt, but found a carriage bolt that was exactly the right length and had a head exactly the same diameter as the shaft, so I heated it with a propane torch and mushed its square shank into the top of the hexagonal bolt hole (the source code now includes a square recess):

    Broom handle screw plug - in handle
    Broom handle screw plug – in handle

    The dimples on the side duplicate the method that secured the original plastic piece: four dents punched into the metal handle lock the plastic in place. It seems to work reasonably well, though, and is certainly less conspicuous than the screws I’d use.

    Screwing it in place shows that it’s slightly too long (I trimmed the length in the source code):

    Broom handle installed
    Broom handle installed

    It’s back in service, ready for use…

    The OpenSCAD source code:

    // Broom Handle Screw End Plug
    // Ed Nisley KE4ZNU March 2013
    
    // Extrusion parameters must match reality!
    //  Print with +1 shells and 3 solid layers
    
    ThreadThick = 0.25;
    ThreadWidth = 2.0 * ThreadThick;
    
    HoleWindage = 0.2;
    
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    
    Protrusion = 0.1;			// make holes end cleanly
    
    //----------------------
    // Dimensions
    
    PI = 3.14159265358979;
    
    PostOD = 22.3;              // post inside metal handle
    PostLength = 25.0;
    
    FlangeOD = 24.0;            // stop flange
    FlangeLength = 3.0;
    
    PitchDia = 15.5;            // thread center diameter
    ScrewLength = 20.0;
    
    ThreadFormOD = 2.5;         // diameter of thread form
    ThreadPitch = 5.0;
    
    BoltOD = 7.0;               // clears 1/4-20 bolt
    BoltSquare = 6.5;          	// across flats
    BoltHeadThick = 3.0;
    
    RecessDia = 6.0;			// recesss to secure post in handle
    
    OALength = PostLength + FlangeLength + ScrewLength; // excludes bolt head extension
    
    $fn=8*4;
    
    echo("Pitch dia: ",PitchDia);
    echo("Root dia: ",PitchDia - ThreadFormOD);
    echo("Crest dia: ",PitchDia + ThreadFormOD);
    
    //----------------------
    // Useful routines
    
    module Cyl_Thread(pitch,length,pitchdia,cyl_radius,resolution=32) {
    
    Cyl_Adjust = 1.25;                      // force overlap
    
        Turns = length/pitch;
        Slices = Turns*resolution;
        RotIncr = 1/resolution;
        PitchRad = pitchdia/2;
        ZIncr = length/Slices;
        helixangle = atan(pitch/(PI*pitchdia));
        cyl_len = Cyl_Adjust*(PI*pitchdia)/resolution;
    
        union() {
            for (i = [0:Slices-1]) {
                translate([PitchRad*cos(360*i/resolution),PitchRad*sin(360*i/resolution),i*ZIncr])
                    rotate([90+helixangle,0,360*i/resolution])
                        cylinder(r=cyl_radius,h=cyl_len,center=true,$fn=12);
            }
        }
    }
    
    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=(FixDia + HoleWindage)/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);
    
    }
    
    //-------------------
    // Build it...
    
    ShowPegGrid();
    
    difference() {
        union() {
            cylinder(r=PostOD/2,h=PostLength);
            cylinder(r=PitchDia/2,h=OALength);
            translate([0,0,PostLength])
                cylinder(r=FlangeOD/2,h=FlangeLength);
            translate([0,0,(PostLength + FlangeLength)])
                Cyl_Thread(ThreadPitch,(ScrewLength - ThreadFormOD/2),PitchDia,ThreadFormOD/2);
        }
    
        translate([0,0,-Protrusion])
            PolyCyl(BoltOD,(OALength + 2*Protrusion),6);
        translate([0,0,(OALength - BoltHeadThick)])
            PolyCyl(BoltSquare,(BoltHeadThick + Protrusion),4);
    
    //    translate([0,0,(PostLength + FlangeLength + ThreadFormOD)])
    //        Cyl_Thread(ThreadPitch,(ScrewLength - ThreadFormOD/2),PitchDia,ThreadFormOD/2);
    
    	for (i = [0:90:270]) {
    		rotate(i)
    			translate([PostOD/2,0,PostLength/2])
    				sphere(r=RecessDia/2,$fn=8);
    	}
    }