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

  • NuTone 8663RP Bathroom Vent Fan Bushing

    The NuTone 8663RP (for future reference) vent fan in the Black Bathroom began making horrible grinding sounds and, after a day or two, stopped turning. Pulling it out showed the impeller had slipped downward on the motor shaft:

    Bath Vent Fan - impeller shift
    Bath Vent Fan – impeller shift

    Which meant the impeller was now resting on the steel frame:

    Bath Vent Fan - impeller interference
    Bath Vent Fan – impeller interference

    Curiously, there’s no retainer under the impeller preventing it from sliding downward, other than good intentions and a friction fit. Nothing lasts, although it’s been working for the last two decades, so I guess it doesn’t owe me much.

    My first thought was to build a steel or aluminum collar with a setscrew to hold the thing up, but I decided to try a simple bushing made of UHMW polyethylene between the motor and the impeller.

    Turning it to the proper length required a test fit, then another session on a mandrel made from some aluminum tubing:

    Bath Vent Fan - bushing trim
    Bath Vent Fan – bushing trim

    The snout came out just long enough to clear the motor frame, resting the impeller’s weight atop the bearing around the shaft:

    Bath Vent Fan - bushing installation
    Bath Vent Fan – bushing installation

    It’s hard to see between the impeller blades, but there’s actually a bit of clearance underneath:

    Bath Vent Fan - bushing installed
    Bath Vent Fan – bushing installed

    Which left just barely enough room on the top for the retaining clip:

    Bath Vent Fan - shaft clip - detail
    Bath Vent Fan – shaft clip – detail

    I had high hopes for the UHMW, but it seems any contact between the rotating impeller and the stationary bearing transmits enough sound to be annoying.

    So I must break down and build a collar, although it’s off the critical path right now.

    As far as I can tell from the pictures, dropping $50 on a new fan unit will get me exactly the same problem. Whether it would last for two decades before failing is an open question, but my experience with freezer fans suggests what we have is as good as it gets and making a bushing is the least-awful way to proceed.

  • Walmart Wiper Selector: FAIL

    After five years, I figured it’d be a Good Idea™ to replace the Forester’s wiper blades. Being in the Walmart at the time, I tried to use their helpful Wiper Selector gadget:

    Walmart Wiper Selector
    Walmart Wiper Selector

    You’d think whoever is responsible for updating / replacing such things would have done so several times during the last eight years.

  • Shower Curtain Magnet Anchors

    Back in the day, bathtubs had a porcelain coating over a cast-iron carcass, so embedding little magnets in shower curtains worked perfectly to keep the loose ends from billowing out of the tub. Surprisingly, even here in the future, with plastic bathtubs ruling the land, some shower curtains still have magnets. The mud-job tile walls of shower stall in the Black Bathroom have nary a trace of iron, but we though I could add ferrous targets for a new shower curtain, thusly:

    Shower Curtain Anchor - installed
    Shower Curtain Anchor – installed

    The magnet lives inside a heat-sealed disk, so it’s (more-or-less) isolated from the water. As you’d expect, it’s a cheap ceramic magnet, not a high-performance neodymium super magnet, with no more strength than absolutely necessary to work under the most ideal of conditions.

    My anchors must also be waterproof, firmly attached, non-marking, easily removable, and no more ugly than absolutely necessary. The general idea is to slice the bottom from a pill bottle, entomb a thin steel disk in epoxy, and attach to the tile with a patch of outdoor-rated foam tape.

    So, we begin …

    Cutting a narrow ring from a pill bottle requires a collet around the whole circumference, which started life as some sort of stout aluminum pole:

    Shower Curtain Anchor - cutting tube stock
    Shower Curtain Anchor – cutting tube stock

    Bore out the inside, with a small step to locate the bottle:

    Shower Curtain Anchor - boring fixture
    Shower Curtain Anchor – boring fixture

    Clean up the outside, just for pretty:

    Shower Curtain Anchor - turning fixture OD
    Shower Curtain Anchor – turning fixture OD

    Slit the fixture to let it collapse around the bottle, then chuck up the first victim with support from a conveniently sized drill chuck in the tailstock:

    Shower Curtain Anchor - cutting bottle
    Shower Curtain Anchor – cutting bottle

    I did a better job of cutting the second bottle to the proper length:

    Shower Curtain Anchor - parting base
    Shower Curtain Anchor – parting base

    Nibble disks from sheet metal, half-fill the bottle bottoms with steel-filled (and, thus, magnetic!) JB Weld epoxy, insert disks, add sufficient epoxy to cover the evidence:

    Shower Curtain Anchor - epoxy curing
    Shower Curtain Anchor – epoxy curing

    Fast-forward to the next day, punch out two disks of double-sided foam tape:

    Shower Curtain Anchor - adhesive foam
    Shower Curtain Anchor – adhesive foam

    Affix, install, and it’s all good.

    Actually, it’s not. The ceramic magnets are so weak they don’t hold the curtain nearly well enough to satisfy me. The next anchor iteration should have embedded neodymium magnets to attract the curtain’s crappy ceramic magnets, but this is Good Enough™ for now.

  • Mower FOD

    For reasons not relevant here, the lawn mower suffered some Foreign Object Damage:

    Lawn Mower - bent blade mount
    Lawn Mower – bent blade mount

    I’m sure the hard stop loosened the tolerances along the shaft, but the mower fired right up (with that new blade!) and has no more vibration than usual, despite the seriously bent blade mount.

    I no longer have a deep emotional attachment to lawn mowers, which is apparently common, as the label advises me there’s no need to change the oil:

    Mower Engine - never change the oil
    Mower Engine – never change the oil

    Drive it ’til it drops …

  • Houses Are Trouble: Electrical Service Division

    The ancient utility pole on the north side of our property fell over a few hours after a thunderstorm rolled through:

    Fallen Utility Pole - end view
    Fallen Utility Pole – end view

    Fortunately, the wire clamps were upward and it just lay there without sparks or excitement. It feeds the vacant house out back, so restoring power wasn’t urgent.

    Unfortunately, the lines neatly bisected Mary’s garden:

    Fallen Utility Pole - garden view
    Fallen Utility Pole – garden view

    The utility crew arrived a few hours later, disconnected the triplex at the fallen pole, rolled it up, secured it to the source pole out front, and promised a different crew would replace the pole in a while:

    Central Hudson truck - 2019-06-27
    Central Hudson truck – 2019-06-27

    We agreed restoring service to other folks who needed it should take priority.

    Mary’s been ducking the various cable TV / phone / FiOS cables ever since.

    The pole has been God’s own toothpick for quite some time, as shown by this picture from 2001:

    CHGE pole - rear - top
    CHGE pole – rear – top

    Fortunately for us, its pole tag hadn’t fallen off in all those years:

    CHGE Pole Tag - mid-north
    CHGE Pole Tag – mid-north

    That little tag may save us ten large during this exquisite little inconvenience …

  • Step2 Garden Seat: Replacement Seat

    Step2 Garden Seat: Replacement Seat

    A pair of Step2 rolling garden seats (they have a new version) served in Mary’s gardens long enough to give their seat panels precarious cracks:

    Step2 Seat - OEM seat
    Step2 Seat – OEM seat

    The underside was giving way, too:

    Step2 Seat - cracks
    Step2 Seat – cracks

    We agreed the new seat could be much simpler, although it must still hinge upward, so I conjured a pair of hinges from the vasty digital deep:

    Rolling Cart Hinges - solid model - bottom
    Rolling Cart Hinges – solid model – bottom

    The woodpile disgorged a slab of 1/4 inch = 6 mm plywood (used in a defunct project) of just about the right size and we agreed a few holes wouldn’t be a problem for its projected ahem use case:

    Step2 Seat - assembled
    Step2 Seat – assembled

    The screw holes on the hinge tops will let me run machine screws all the way through, should that be necessary. So far, a quartet of self-tapping sheet metal (!) screws are holding firm.

    Rolling Cart Hinges - solid model - top
    Rolling Cart Hinges – solid model – top

    A closer look at the hinges in real life:

    Step2 Seat - top view
    Step2 Seat – top view

    The solid model now caps the holes; I can drill them out should the need arise.

    From the bottom:

    Step2 Seat - bottom view
    Step2 Seat – bottom view

    Three coats of white exterior paint make it blindingly bright in the sun, although we expect a week or two in the garden will knock the shine right off:

    Step2 Seat - painted
    Step2 Seat – painted

    After the first coat, I conjured a drying rack from a bamboo skewer, a cardboard flap, and some hot-melt glue:

    Step2 Seat - drying fixture
    Step2 Seat – drying fixture

    Three small scars on the seat bottom were deemed acceptable.

    The OpenSCAD source code as a GitHub Gist:

    // Hinge brackets for rolling garden stool
    // Ed Nisley – KE4ZNU – 2019-06
    Layout = "Build"; // [Block,Build,Show]
    Support = true;
    /* [Hidden] */
    ThreadThick = 0.20;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    ID = 0;
    OD = 1;
    LENGTH = 2;
    //———————-
    // Dimensions
    SeatThick = 6.0; // seat panel above cart body
    HingePin = [11.5,12.0,7.0]; // ID = tip OD = base
    HingeOffset = 8.0; // hinge axis above cart body (larger than radius!)
    HingeBolster = [5.0,24.0,SeatThick]; // backing block below hinge
    Block = [25.0,HingeOffset + 30.0,23.0]; // Z = above cart body
    Screw = [3.8,11.0,2.5]; // self-tapping #8 OD=head LENGTH=head thickness
    ScrewOC = 15.0; // spacing > greater than head OD
    ScrewOffset = Block.y/2 – (ScrewOC/2 + Screw[OD]/2 + HingeOffset); // space for head behind hinge
    BlockRadius = 7.0; // corner rounding
    //———————-
    // Useful routines
    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);
    }
    // Basic block shape
    // X axis collinear with hinge axes, hinge base at X=0
    module HingeBlock() {
    PinSides = 3*4;
    PinSupport = [HingePin[LENGTH] – 2*ThreadWidth,0.6*HingeOffset,HingePin[OD]]; // pre-rotated
    union() {
    translate([Protrusion,Block.y/2 – HingeOffset,HingeOffset])
    rotate([0,-90,0])
    rotate(180/PinSides)
    cylinder(d=HingePin[OD],h=HingePin[LENGTH] + Protrusion,$fn=PinSides);
    difference() {
    hull() {
    translate([Block.x – BlockRadius,-(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    rotate(180/PinSides)
    sphere(r=BlockRadius/cos(180/PinSides),$fn=PinSides);
    translate([0,-(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    rotate([0,90,0]) rotate(180/PinSides)
    cylinder(r=BlockRadius/cos(180/PinSides),h=Block.x/2,$fn=PinSides);
    translate([Block.x – BlockRadius,(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    sphere(r=BlockRadius/cos(180/PinSides),$fn=PinSides);
    translate([0,(Block.y/2 – BlockRadius),Block.z – BlockRadius])
    rotate([0,90,0]) rotate(180/PinSides)
    cylinder(r=BlockRadius/cos(180/PinSides),h=Block.x/2,$fn=PinSides);
    translate([0,-Block.y/2,0])
    cube([Block.x,Block.y – HingeOffset,Block.z/2],center=false);
    translate([0,Block.y/2 – HingeOffset,HingeOffset])
    rotate([0,90,0]) rotate(180/PinSides)
    cylinder(r=HingeOffset/cos(180/PinSides),h=Block.x,$fn=PinSides);
    }
    translate([Block.x/2 + HingeBolster.x,0,(SeatThick – Protrusion)/2])
    cube([Block.x,2*Block.y,SeatThick + Protrusion],center=true);
    translate([0,-HingeBolster.y,(SeatThick – Protrusion)/2])
    cube([3*Block.x,Block.y,SeatThick + Protrusion],center=true);
    for (j=[-1,1])
    translate([Block.x/2,j*ScrewOC/2 + ScrewOffset,-4*ThreadThick])
    rotate(180/8)
    PolyCyl(Screw[ID],Block.z,8);
    }
    }
    if (Support) { // totally ad-hoc
    color("Yellow") render(convexity=4)
    difference() {
    translate([-(PinSupport.x/2 + 2*ThreadWidth),Block.y/2 – PinSupport.y/2,HingeOffset])
    cube(PinSupport,center=true);
    translate([Protrusion,Block.y/2 – HingeOffset,HingeOffset])
    rotate([0,-90,0])
    rotate(180/PinSides)
    cylinder(d=HingePin[OD] + 2*ThreadThick,h=2*HingePin[LENGTH],$fn=PinSides);
    for (i=[-1:1])
    translate([i*4*ThreadWidth – HingePin[LENGTH]/2,
    Block.y/2 – (PinSupport.y + 1*ThreadThick),
    HingeOffset])
    cube([2*ThreadWidth,2*PinSupport.y,2*PinSupport.z],center=true);
    }
    }
    }
    module Blocks(Hand = "Left") {
    if (Hand == "Left")
    HingeBlock();
    else
    mirror([1,0,0])
    HingeBlock();
    }
    //- Build it
    if (Layout == "Block")
    HingeBlock();
    if (Layout == "Show") {
    translate([1.5*HingePin[LENGTH],0,0])
    Blocks("Left");
    translate([-1.5*HingePin[LENGTH],0,0])
    Blocks("Right");
    }
    if (Layout == "Build") {
    translate([0,-Block.z/2,Block.y/2])
    rotate([-90,0,0]) {
    translate([1.5*HingePin[LENGTH],0,0])
    Blocks("Left");
    translate([-1.5*HingePin[LENGTH],0,0])
    Blocks("Right");
    }
    }

    This original doodle gives the key dimensions, apart from the rounded rear edge required so the seat can pivot vertically upward:

    Cart Hinge - dimension doodle
    Cart Hinge – dimension doodle

    The second seat looks just like this one, so life is good …

  • Power Lift Chair Upholstery Protection

    For reasons not relevant here, we have a power lift chair which has been shedding upholstery tufts since the day we got it. After realizing this wasn’t going to stop on its own, I spent a while poking around underneath and discovered the steel struts supporting the leg rest rub along the upholstery during their entire travel:

    Lift chair - strut vs upholstery
    Lift chair – strut vs upholstery

    Apparently, the padding behind the upholstery pushes it a bit further out than the original design could accommodate, letting the raw edges on the steel struts shave off the fuzz.

    I put relatively smooth stainless steel tape on all the protrusions and bent it around the rough edges:

    Lift chair - strut smoothing
    Lift chair – strut smoothing

    Those steel folds are smoother than they appear.

    It’s not obvious this will solve the problem, but the struts seems to be scraping off much less fuzz than before, so it’s a step in the right direction.

    Why is it all of today’s consumer products require 10% more engineering to work in the real world?