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

  • MTD Snowblower Muffler Bolt Bracket: Redux

    MTD Snowblower Muffler Bolt Bracket: Redux

    Nearly eight years ago I replaced the OEM bracket locking the two long bolts on the MTD snowblower’s muffler to prevent them from loosening from vibration:

    Snowblower muffler installed
    Snowblower muffler installed

    Well, it happened again, with the top bolt working its way out, so those little crimps weren’t enough. As before, I watched it happen and saw the bolt fall sizzling into the snow.

    Verily it is written: When brute force isn’t working, you’re not using enough of it:

    MTD Snowblower muffler
    MTD Snowblower muffler

    I renewed the Never-Seez on both bolts and, for good measure, dabbed some on the third bolt securing the muffler bracket atop the engine block.

    That machine really vibrates!

  • Blackout

    Blackout

    Some weeks ago Mary heard a loud bang just as the lights went out. Central Hudson crews arrived shortly thereafter and began examining the transformer serving the group of houses around us. I wandered over to ask questions and learned the bang came from a high-voltage fuse atop a pole 800 feet from our house.

    With all the power cables underground, the crews were locating the transformer just upstream of the problem, with the intent of disconnecting it and restoring power to everybody else. That took a few hours for our service, but folks up the hill remained in the dark maybe six more hours.

    The paint on the transformer enclosures has been weathering for many decades, but I spotted this one up the hill that looks different from all the rest:

    Scorched utility transformer housing
    Scorched utility transformer housing

    The scorched half of the enclosure pivots upward to reveal the high-voltage disconnect switch, fuses, and low-voltage connections. This one is across the street from our house:

    Neighborhood distribution transformer
    Neighborhood distribution transformer

    I think something went badly wrong in there and the transformer overheated to the point of insulation failure, whereupon the short circuit blew the HV fuse half a mile away down the hill.

    I hope it’s not the beginning of a trend …

  • Crosman BB Bottle Cap

    Crosman BB Bottle Cap

    Mary made a frame weight to maintain tension on the fabric in the HQ Sixteen longarm:

    Longarm fabric frame weight
    Longarm fabric frame weight

    It’s a sturdy cloth tube filled with BBs, somewhat like a grossly overweight door snake (a.k.a. draft stopper).

    The bottle of 6000 copper-plated steel BBs arrived in an overwrap bag of the sort Amazon applies to all bottled products. This was a Good Thing, because the scrap of packing paper did nothing to cushion the bottle in an otherwise empty box. The bag contained most of the shattered cap and a few BBs, with escapees rattling around inside the box and surely a few left along the way.

    So I conjured a replacement cap from TPU:

    Crosman BB bottle cap - solid model - build view
    Crosman BB bottle cap – solid model – build view

    It fits around the bottle neck and snaps onto the spout just like the original:

    Crosman BB bottle cap
    Crosman BB bottle cap

    Except this one is unbreakable.

    The strapless TPU cap was a quick test to verify the fiddly shoulder snapping onto the bottle snout:

    Crosman BB bottle cap - solid model - section view
    Crosman BB bottle cap – solid model – section view

    As it turned out, we poured all 6000 BBs (minus those few lost-in-transit strays) into the cloth tube, but the bottle will come in handy for something someday.

    The OpenSCAD source code as a GitHub Gist:

    // Crosman BB bottle cap
    // Ed Nisley – KE4ZNU
    // 2026-02-22
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Section]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 6*3*4;
    $fn=NumSides;
    WallThick = 1.0;
    Heights = [1.2,2.0,13.0,WallThick]; // for easy tweaking
    Ring = [34.5,39,WallThick];
    Strap = [70.0,5.0,Ring[LENGTH]];
    CapOAL = sum(Heights);
    //—–
    // Conjure it with magic numbers
    module Cap() {
    tube(Heights[0],id=16.8,wall=WallThick+0.6/2,anchor=BOTTOM) position(TOP)
    tube(Heights[1],id=17.4,wall=WallThick,anchor=BOTTOM) position(TOP)
    tube(Heights[2],id1=17.4,id2=14.0,wall=WallThick,anchor=BOTTOM) position(TOP)
    cyl(Heights[3],d=14.0+2*WallThick,rounding2=WallThick/2,anchor=BOTTOM) position(BOTTOM)
    cuboid(Strap,anchor=BOTTOM+LEFT) position(BOTTOM+RIGHT)
    left(1.0)
    tube(Ring[LENGTH],id=Ring[ID],od=Ring[OD],anchor=BOTTOM+LEFT);
    }
    //—–
    // Build things
    if (Layout == "Show") {
    Cap();
    }
    if (Layout == "Section") {
    difference() {
    Cap();
    down(Protrusion)
    cuboid(2*Strap.x,anchor=BOTTOM+LEFT+FRONT);
    }
    }
    if (Layout == "Build") {
    back(Strap.x/2)
    zrot(90)
    up(CapOAL)
    yrot(180)
    Cap();
    }
  • Snowplow vs. Streetlight

    Snowplow vs. Streetlight

    Spotted on one of our regular walks up the hill:

    Damaged pole - snow tracks
    Damaged pole – snow tracks

    Vassar College sent a plow along the walking path linking the campus with the faculty enclave on Old Silvermine Place, but the clearance between the lamp pole and the boulder blocking the entrance wasn’t quite adequate.

    Some days later, the light fixture was missing and the power cable sported three cheerful wire nuts:

    Damaged pole - wire nuts
    Damaged pole – wire nuts

    Another pole has been lying flat on the ground for (at least) the last two years and I’ve always wondered if its wires (within easy reach) were live under their nuts. Knowing the lamp power is 277 VAC from a 480 VAC three-phase service, I’m disinclined to find out.

    Yes, I notice such things.

  • Stick Blender Bearing Failure

    Stick Blender Bearing Failure

    The business end of a cheap stick blender we bought a year ago to replace the previous stick blender (*):

    Fresko stick blender
    Fresko stick blender

    This one failed just slightly beyond the duration of its one-year warranty, apparently with one of the shaft bearings seized to the extent of making the blade un-turnable even by (carefully protected) finger force.

    With nothing to lose (and a new blender inbound), it stood in the Basement Shop in that orientation for a week while I dripped penetrating oil around the shaft and wiggled the blade slightly back-and-forth. The bearing eventually broke free and the blade turned reluctantly.

    Still having nothing to lose, I gave the shaft a few shots with a drift punch, moving it a few millimeters in each direction. This apparently disturbed the seized bearing just enough to let it turn less reluctantly, with more penetrating oil improving the situation.

    Mixing a jar of water went well, even on high speed, but I doubt the bearing is in good health. We decided a blender with penetrating oil tucked up inside should be disqualified for food processing.

    When it first locked up, I bought a significantly more expensive stick blender, knowing full well more money does not imply better design / better materials / more QC. This one is now designated as a Cold Backup blender for garden & shop use.

    (*) For the record, my 3D printed shaft adapter failed while converting garden tomatoes into thick & zesty pizza sauce. I’m unsurprised PETG-CF wasn’t up to the task.

  • Snow Day

    Snow Day

    Today looks like a good day to fire up the snowblower and clear the driveway:

    Snow - 2025-01-26
    Snow – 2025-01-26

    One of the bolts holding the muffler on the engine worked its way past its rebuilt locking plate and will require attention before getting out there.

    Fortunately, it looks like a good day for shop projects …

  • Translucent Night Light Light Guide

    Translucent Night Light Light Guide

    Our house came with several single-LED night lights featuring a transparent light guide / reflector:

    Nightlight light guide - original
    Nightlight light guide – original

    The plate had snapped off one of them and, being me, I wondered if I could replace it with something similar.

    Years passed.

    Obviously, this must be made from a transparent substance, which 3D printed things are not, but after some fiddling with parameters I thought the result might be informative.

    The guide plate is a section of a spherical surface, here approximated by a BOSL2 spheroid():

    Nightlight light guide - view side - solid model
    Nightlight light guide – view side – solid model

    The original is 3 mm thick, but 2 mm worked out better for my purposes by reducing the amount of infill:

    Nightlight light guide - wall side - solid model
    Nightlight light guide – wall side – solid model

    The intricate base latches into the lamp’s plastic case:

    Nightlight light guide - base - solid model
    Nightlight light guide – base – solid model

    The result is, at best, translucent, because it’s definitely not transparent:

    Nightlight light guide - translucent vs transparent
    Nightlight light guide – translucent vs transparent

    The zigzag pattern seems to come from the icosohedral approximation to the sphere, because it follows the surface tesselation.

    Getting the base shape right required several iterations, each printed with the model cut off just above the bottom of the guide plate:

    Nightlight light guide - test pieces
    Nightlight light guide – test pieces

    The first two attempts needed attention from a flush cutting pliers before fitting into the case, but they don’t call it rapid prototyping for nothin’.

    The original and replacement plugged into an outlet strip:

    Nightlight light guide - original vs printed on outlet strip
    Nightlight light guide – original vs printed on outlet strip

    While you can see the vague outline of the strip behind the printed light guide, it’s definitely lacking in detail:

    Nightlight light guide - outlet strip detail
    Nightlight light guide – outlet strip detail

    The striations throw more light into the room than the original:

    Nightlight light guide - printed
    Nightlight light guide – printed

    Fiddling with the 3D printing parameters might make it more transparent, but it’s going back into the box it came from after giving me a better idea of which parameters to tweak the next time around.

    The OpenSCAD source code as a GitHub Gist:

    // Nightlight light guide
    // Ed Nisley – KE4ZNU
    // 2026-01-13
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Plate,Base,Pipe]
    /* [Hidden] */
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 10*3*4;
    $fn=NumSides;
    ID = 0;
    OD = 1;
    LENGTH = 2;
    function ChordRadius(m,c) = (m^2 + (c^2)/4) / (2*m);
    PlateThick = 2.0;
    PlateOA = [60.0,50.0,PlateThick];
    PlateRound = 5.0;
    PlateTaper = 1.0;
    PlateAngle = atan(-2/60); // original plate angle, far end closer to wall
    PlateM = 2.4;
    PlateRadius = ChordRadius(PlateM,PlateOA.x); // light guide plate
    echo(PlateRadius=PlateRadius);
    WallThick = 2.0;
    MountOA = [23.4,17.0,5.5];
    MountRadius = ChordRadius(4.3,MountOA.x); // base arc in housing
    echo(MountRadius=MountRadius);
    PipeThick = 5.0;
    //———-
    // Define shapes
    // Oddly intricate base fitting into housing
    // Replete with magic numbers
    module Base() {
    difference() {
    union() {
    intersection() {
    cuboid([MountOA.x,MountOA.y,5.5],anchor=BOTTOM);
    back(6.5)
    tube(MountOA.z,or=MountRadius,wall=1.5,anchor=BOTTOM+BACK);
    }
    for (i=[-1,1])
    right(i*18.5/2)
    back(11.5)
    cuboid([1.8,8.0,MountOA.z],anchor=BOTTOM+BACK);
    for (i=[-1,1])
    right(i*22.0/2)
    cuboid([1.4,2.0,MountOA.z],anchor=BOTTOM+FRONT);
    fwd(5.0)
    cuboid([11.0,10.5,MountOA.z],anchor=BOTTOM+FRONT);
    }
    down(Protrusion)
    for (j=[-1,1])
    fwd(j*(1.5 + 10.0)/2)
    cuboid([7.0,10.0,MountOA.z + 2*Protrusion],anchor=BOTTOM);
    up(3.1)
    back(7.5)
    cuboid([MountOA.x,25.0,MountOA.z],anchor=BOTTOM+FRONT);
    }
    }
    // Light guide plate
    module Plate() {
    xrot(PlateAngle)
    zrot(90) yrot(90)
    left(PlateOA.x/2)
    down(PlateM + PlateThick/2)
    intersection() {
    up(PlateRadius)
    difference() {
    spheroid(PlateRadius,style="icosa");
    spheroid(PlateRadius – PlateThick,style="icosa");
    }
    cuboid(PlateOA + [0,0,2*PlateThick],rounding=PlateRound,edges="Z",anchor=BOTTOM);
    }
    }
    // Light pipe between base & plate
    // Magic numbers to fit case opening
    module Pipe() {
    difference() {
    intersection() {
    fwd(3.0/2 – 0.2)
    cuboid([MountOA.x,MountOA.y,PipeThick],rounding=0.5,edges="Z",anchor=BOTTOM+FRONT);
    back(6.5)
    cyl(MountOA.z,r=MountRadius,anchor=BOTTOM+BACK);
    }
    down(Protrusion)
    back((1.5 + 10.0)/2)
    cuboid([7.0,10.0,1.0 + Protrusion],anchor=BOTTOM);
    }
    }
    module Assembly() {
    Base();
    up(MountOA.z)
    Pipe();
    up(MountOA.z + PipeThick)
    Plate();
    }
    //———-
    // Build things
    if (Layout == "Base")
    Base();
    if (Layout == "Plate")
    Plate();
    if (Layout == "Pipe")
    Pipe();
    if (Layout == "Show" || Layout == "Build")
    Assembly();