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.

Tag: Repairs

If it used to work, it can work again

  • Home Depot Glacier Bay Kitchen Faucet: Round 2

    Home Depot Glacier Bay Kitchen Faucet: Round 2

    The kitchen faucet worked its way loose again. Attempting to shut off the water revealed a pair of leaky valves under the sink, so I shut off the house water in the basement, cut the valve pipes below the solder drips, and installed a pair of push-connect shutoffs:

    Kitchen faucet shutoff valve - push connection
    Kitchen faucet shutoff valve – push connection

    I loves me some good push-connect fitting action, which is new news to me. Back in the Bad Old Days™, I’d be under the sink with a propane torch, trying to solder a pair of wet pipes and failing miserably.

    With that out of the way and the faucet dismantled for the first time (by my hands, anyway), the threads holding the base to the spout column may have been damaged during factory assembly:

    HD Glacier Bay kitchen faucet - damaged threads
    HD Glacier Bay kitchen faucet – damaged threads

    I thought the gunk was thread lock compound, but it’s shredded plastic from the base fitting threads. The corresponding female threads inside the spout column are undamaged, so I think somebody tried screwing it together with the threads misaligned, backed off, then muscled it together.

    It’s worth noting there are no keys or stops fixing the correct orientation of any of these parts. In particular, the trim ring bearing the small Front label (facing you in the picture) has no fixed orientation: whoever assembles the faucet in the factory must position it correctly on the fly as the base screws into the column and jams tight.

    So I cleaned up the damaged threads as best I could, flipped the threaded brass tube end-for-end to put the cleanest part into the base, and reassembled everything with careful attention to starting the threads correctly:

    HD Glacier Bay kitchen faucet - flipped brass tube
    HD Glacier Bay kitchen faucet – flipped brass tube

    Tightening the base fitting into the column is much easier with everything on the kitchen counter, although centering the label on the molded opening required several tries.

    Protip: a pair of grippy gloves and rubber sheets help a lot.

    I want to find out how secure the original design, properly tightened and aligned, will be, so I did not apply any threadlocker.

  • Subaru Forester Taillight Bulbs

    Subaru Forester Taillight Bulbs

    I finally got around to replacing the Forester’s taillight bulbs:

    Subaru Forester taillight bulbs
    Subaru Forester taillight bulbs

    The clear bulbs don’t have the same thermal damage as the headlights I replaced a year ago, but the new bulbs should be much brighter.

    Subaru calls them W21/5W and WY21W, respectively, but the rest of the world says 7443 and 7440NA (or 7440A).

    For the record, the taillight assembly comes off (after removing the obvious pair of screws not shown here) by pulling straight back with grippy gloves:

    Subaru Forester taillight mount
    Subaru Forester taillight mount

    Aligning the locating pins with those two latching sockets (why is one green?) requires a flashlight and a bit of dexterity, but easing the slot over the white post first helps a lot. Practice makes perfect: it’s easier on the other side of the car.

  • Glass-top Patio Table Leg Brackets: Hardfought

    Glass-top Patio Table Leg Brackets: Hardfought

    A glass-top patio table came with our house and, similar to one of the patio chairs, required some repair. The arched steel legs fit into plastic brackets / sockets around the steel table rim under the glass top:

    Glass patio table - new brackets installed
    Glass patio table – new brackets installed

    The four glaringly obvious white blocks are the new brackets.

    The original brackets had, over uncounted years, deteriorated:

    Glass patio table - failed OEM bracket
    Glass patio table – failed OEM bracket

    Perhaps disintegrated would be a better description:

    Glass patio table - crumbled OEM bracket
    Glass patio table – crumbled OEM bracket

    Each leg has a pair of rusted 1-½ inch ¼-20 screws holding it to the central ring. As expected, seven of the eight screws came out easily enough, with the last one requiring an overnight soak in Kroil penetrating oil plus percussive persuasion:

    Glass patio table - jammed screw
    Glass patio table – jammed screw

    The four legs had three different screws holding them to the brackets, so I drilled out the holes and squished M5 rivnuts in place:

    Glass patio table - M5 rivnut installed
    Glass patio table – M5 rivnut installed

    Although it’s not obvious, the end of that tube is beveled with respect to the centerline to put both the top and bottom edges on the table rim inside the bracket. In addition, the tube angles about 10° downward from horizontal, which I did not realize amid the wrecked fittings, so the first bracket model failed instantly as I inserted the leg:

    Glass patio table - first bracket test
    Glass patio table – first bracket test

    The top & bottom walls of that poor thing were breathtakingly thin (to match the original bracket) and cracked when confronted with the angled tube. I could not measure all the sizes & angles without assembling the table on trial brackets, so getting it right required considerable rapid prototyping:

    Glass patio table - failed brackets
    Glass patio table – failed brackets

    Some trigonometry produced a solid model with features rebuilding themselves around the various sizes / angles / offsets:

    Glass Top Table - leg bracket - solid model
    Glass Top Table – leg bracket – solid model

    A sectioned view shows the angled tube position and end chamfer:

    Glass Top Table - leg bracket - section view
    Glass Top Table – leg bracket – section view

    The OpenSCAD code can produce a sectioned midline slice useful for laser-cut MDF pieces to check the angle:

    Glass patio table - chunky bracket installed - bottom
    Glass patio table – chunky bracket installed – bottom

    That eliminated several bad ideas & misconceptions, although trying to balance the leg on a 3 mm MDF snippet was trickier than I expected. In retrospect, gluing a few snippets together would be easier and still faster than trying to print a similar section from the model.

    The slightly elongated slot for the M5 screw shows that the original screw holes were not precisely placed or that the tubes were not precisely cut, neither of which come as a surprise. I finally built some slop into the design to eliminate the need for four different blocks keyed to four different legs.

    The outer rim, the notch on the bottom, and the tab on the top curve to match the four foot OD glass tabletop, with the inward side & ends remaining flat:

    Glass patio table - chunky bracket installed - top
    Glass patio table – chunky bracket installed – top

    The sector’s difference from a straight line amounts to half a millimeter and improved the fit enough to justify the geometric exercise. The bracket snaps into position with the notch over the table rim and the tab locked in the gap between the glass disk & the rim, although I suspect the weight of the tabletop would keep everything aligned anyway.

    The walls are now at least 4 mm thick and, printed in PETG, came out strong enough to survive assembly and some gentle testing. They’re arranged to print on their side to eliminate support under those slight curves and to align the layers for best strength vertically in the finished bracket:

    Glass Top Table - leg bracket - slicer preview
    Glass Top Table – leg bracket – slicer preview

    The leg cavity and screw hole built well enough without internal support.

    They’re relentlessly rectangular and I’m not going to apologize one little bit.

    Now to see how they survive out there on the screened porch.

    The OpenSCAD source code as a GitHub Gist:

    // Glass patio table leg brackets
    // Ed Nisley – KE4ZNU
    // 2024-08
    /* [Layout] */
    Layout = "Show"; // [Section,Projection,Show,Build]
    Part = "Leg"; // [Leg, RimPlate, Block, Bracket]
    /* [Hidden] */
    ThreadWidth = 0.40;
    ThreadThick = 0.25;
    HoleWindage = 0.2;
    Protrusion = 0.1;
    //—–
    // Dimensions
    /* [Hidden] */
    GlassOD = 1230.0; // inner edge of upper tab
    GlassThick = 5.0;
    WallThick = 4.0;
    TOP = 0;
    BOT = 1;
    TabWidth = [3.0,3.0]; // locking tabs, top & bottom
    TabHeight = [0.5,3.0]; // … height
    LegOA = [16.0,36.5,23.0]; // X insertion, Y around glass, Z upward
    LegAngle = 10;
    ScrewOffset = [8.0,10.0]; // from socket bottom
    ScrewOD = 6.0; // clearance hole
    Plate = [1.0 + 2*max(TabWidth[TOP],TabWidth[BOT]),
    LegOA.y + 2*WallThick,
    25.5
    ];
    echo(Plate=Plate);
    BlockOA = [LegOA.x*cos(LegAngle) + (LegOA.z/2)*sin(LegAngle) + WallThick,
    Plate.y,
    LegOA.z/cos(LegAngle) + 2*LegOA.x*sin(LegAngle) + 2*WallThick
    ];
    echo(BlockOA=BlockOA);
    //—–
    // Useful routines
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    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);
    }
    //—–
    // Table Leg
    // Including screw slot
    // Additional length to allow use as difference
    module Leg() {
    union() {
    difference() {
    rotate([0,90,0])
    translate([0,0,-LegOA.x])
    linear_extrude(height=4*LegOA.x,convexity=5)
    hull()
    for (j=[-1,1])
    translate([0,j*(LegOA.y – LegOA.z)/2])
    circle(d=LegOA.z);
    rotate([0,-LegAngle,0])
    translate([-2*LegOA.x,0,0])
    cube(4*LegOA,center=true);
    }
    hull()
    for (c = ScrewOffset)
    translate([each c + (LegOA.z/2)*sin(LegAngle),0,-LegOA.z])
    //rotate(180/6)
    PolyCyl(ScrewOD,LegOA.z,6);
    }
    }
    // Rim Plate
    module RimPlate() {
    n = 16*4*3;
    render(convexity=5)
    translate([-Plate.x,0,0])
    difference() {
    intersection() { // shape outer side to match table rim curve
    translate([0,-Plate.y/2,0])
    cube(Plate,center=false);
    translate([GlassOD/2 + TabWidth[TOP],0,0])
    cylinder(d=GlassOD + 2*TabWidth[TOP],h=Plate.z,center=false,$fn=n);
    }
    translate([GlassOD/2 + TabWidth[TOP],0,Plate.z – TabHeight[TOP]])
    cylinder(d=GlassOD,h=Plate.z,center=false,$fn=n);
    translate([GlassOD/2 + TabWidth[BOT],0,-(Plate.z – TabHeight[BOT])])
    difference() {
    cylinder(d=GlassOD,h=Plate.z,center=false,$fn=n);
    cylinder(d=GlassOD – 2*TabWidth[BOT],h=Plate.z,center=false,$fn=n);
    }
    }
    }
    // Block surrounding leg
    module Block() {
    intersection() {
    translate([BlockOA.x/2,0,0])
    cube(BlockOA,center=true);
    translate([0,0,BlockOA.x*sin(LegAngle) – BlockOA.z/2])
    rotate([0,LegAngle,0])
    translate([-2*BlockOA.x,-2*BlockOA.y,0])
    cube(4*BlockOA,center=false);
    }
    }
    // Complete bracket
    module Bracket() {
    difference() {
    union() {
    RimPlate();
    translate([0,0,Plate.z – BlockOA.z/2 – TabHeight[TOP] – 0*WallThick])
    Block();
    }
    translate([0,0,1*Plate.z/2 – 1*WallThick])
    rotate([0,LegAngle,0])
    translate([WallThick,0,0])
    Leg();
    }
    }
    //—–
    // Build things
    // Layouts for design & tweaking
    if (Layout == "Section")
    intersection() {
    Bracket();
    translate([0,BlockOA.y/2,0])
    cube([4*BlockOA.x,BlockOA.y,3*BlockOA.z],center=true);
    }
    if (Layout == "Projection")
    for (j = [1])
    translate([0,j*2*BlockOA.z])
    projection(cut=true)
    translate([0,0,j*5.0])
    rotate([90,0,0])
    Bracket();
    if (Layout == "Show")
    if (Part == "Leg")
    Leg();
    else if (Part == "RimPlate")
    RimPlate();
    else if (Part == "Bracket")
    Bracket();
    else if (Part == "Block")
    Block();
    // Build layouts for top-level parts
    if (Layout == "Build") {
    translate([0,0,Plate.y/2])
    rotate([90,0,0])
    Bracket();
    }

    Some dimension doodles, not all of which correspond to reality:

    Glass patio table - dimension doodle A
    Glass patio table – dimension doodle A
    Glass patio table - dimension doodle B
    Glass patio table – dimension doodle B

    See? It’s not all slotted animals all the time around here …

  • Tour Easy: PTT Button Replacement

    Tour Easy: PTT Button Replacement

    After five years and one cleaning, the PTT button on Mary’s Tour Easy became increasingly intermittent, both failing to activate solidly and sticking closed (there being nothing quite like a hot mic during a good hill climb), so it’s time for an autopsy:

    Failed PTT Switch - as extracted
    Failed PTT Switch – as extracted

    The snap dome is much more scarred at the central contact:

    Failed PTT Switch - snap plate
    Failed PTT Switch – snap plate

    That might be a gold flash coating, but it’s pretty well worn away where it hits the central contact:

    Failed PTT Switch - center contact
    Failed PTT Switch – center contact

    Those scratches surely happened during the previous cleaning pass, as I don’t see any way for the dome to create them.

    The corner contact also shows some scuffs, along with a scar where the dome corner pivots:

    Failed PTT Switch - edge contact
    Failed PTT Switch – edge contact

    All in all, though, it worked quite well.

    The replacement switch, also intended for indoor use on a keypad or some such device, pivots around the front edge and may be easier for her fingertip to activate:

    New PTT Switch - installed
    New PTT Switch – installed

    Hot melt glue seems vastly underrated for how wonderful a structural material it is.

    If this one lasts five years, I’ll be perfectly happy.

  • Speaker Re-Foaming

    Speaker Re-Foaming

    Having recently promoted a pair of Radford Tri-Star 90 speakers to the Sewing Room, it was time to make them presentable:

    Radford Tri-Star 90 speakers - taped grill
    Radford Tri-Star 90 speakers – taped grill

    The original foam grill covering had disintegrated and left fossilized adhesive over the metal gridwork. Being not much for historic accuracy, I used double-sided duct tape (the blue barrier film peels off) and stuck some allegedly acoustic foam in place:

    Radford Tri-Star 90 speakers - re-covered
    Radford Tri-Star 90 speakers – re-covered

    The foam is a single sheet wrapped around three sides and, after some whittling, measured 19.5 inches tall and 19.25 inches wide. The width surely depends on how snugly it’s stretched, so allow a bit more and trim to fit.

    Duct tape probably isn’t the right adhesive for the job, but we’ll see how long it lasts. I really did not want to use spray glue and doubted my ability to slobber liquid stickum without oopsing the cones.

    The speakers sounded great back in the day and they definitely sound much better than my deflicted ears can hear now. Mary thinks they’re OK and that’s all that matters.

    Patrick, wherever you are: thanks!

  • COVID Buffer Extraction Tube vs. Acrylic Solvent Adhesive

    COVID Buffer Extraction Tube vs. Acrylic Solvent Adhesive

    This seemed like a good idea for dispensing small drops of acrylic solvent while gluing spiders together:

    COVID test Buffer Extraction Tube - adhesive hack
    COVID test Buffer Extraction Tube – adhesive hack

    It’s the Buffer Extraction Tube from a COVID-19 rapid test kit with a short brass tube jammed in its dropper tip. The longer brass tube let me suck that dose of solvent into the tube without any of the hassle required to pour the liquid from a big can into a little tube.

    Tell me you didn’t save those things because you thought they didn’t look like they might come in handy for something.

    Well, that turned out to be a Bad Idea™, because whatever plastic that tube is made out of cracks when exposed to the hellish mixture in SCIGRIP #3 solvent adhesive. The tube didn’t dissolve or melt, it just cracked when you (well, I) squeezed the sides.

    My Box o’ Test Kits has a few other types of tubes, but I used a syringe from the inkjet refilling era and that worked OK.

  • Samsung Range Grate Feet

    Samsung Range Grate Feet

    The Samsung range has ungainly cast-iron (or some such) grates that have long since worn out / lost their original Genuine Samsung rubber bumper feet. The grates had glued-on feet that looked very much like they belonged under something else, affixed with mystery adhesive that stuck firmly in some corners and let go in others:

    Samsung grate - old foot
    Samsung grate – old foot

    It seems Samsung no longer sells replacement feet, which may be an indication they don’t want customer complaints, so I got a bag of nominally compatible rubber feet from the usual source and broke out the cyanoacrylate glue:

    Samsung grate - new foot
    Samsung grate – new foot

    The red flecks are traces of a previous generation of adhesive, with the new cyanoacrylate peeking out around the base of the new foot.

    The grates have holes for the stems of the feet, so in principle they have plenty of resistance to being shoved around. In practice, tipping the grates up to clean underneath them dislodged the feet with depressing regularity. The grates are too heavy and too awkward to remove and plunk somewhere else, which suggests this sort of range is better suited to a kitchen that’s never used or, perhaps, comes equipped with a support staff.

    You’re supposed to use high-temperature adhesive and, in fact, the red flecks look remarkably like high-temp silicone gasket compound, but all the missing feet were along the back of the grates where the small & simmer burners live, so I figured cyanoacrylate was certainly worth a try.

    When & if they fall out, I’ll know when they went in.