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

  • Worm Bin Vent Covers

    Worm Bin Vent Covers

    The current iteration of our Tumbleweed Can-O-Worms suffers from leakage down the legs:

    Worm Bin - leg leakage
    Worm Bin – leg leakage

    Perhaps surprisingly, the whole process is odorless. This is in the basement where ugly doesn’t count for much.

    The leakage comes through the air vent holes at the top of each leg socket:

    Worm Bin Vent Cover - vent
    Worm Bin Vent Cover – vent

    Unsurprisingly, the “worm tea” (it ain’t water!) dripping from the bottom of the compost tray goes directly through the vent holes and down the leg. It’s not clear to me what they expected.

    A simple 3D printed black TPU cap atop the leg socket should prevent most of the leakage:

    Worm Bin Vent Cover - installed
    Worm Bin Vent Cover – installed

    The odd pattern comes from Concentric infill around the notch, even though Concentric infill seems better suited to round things and fat extrusion threads with a 0.8 mm nozzle than straight lines. The weird stuff on the vertical side is a reflection of the basement and phone flash from the smooth TPU layer edges.

    The tray with the worms and compost sits atop the strut between the socket and the body, with the cap allowing room for the screen keeping the worms out of the sump.

    Ribs on the underside of the cap hold it above the leg socket to let the air through:

    Worm Bin Vent Covers - solid model
    Worm Bin Vent Covers – solid model

    Although five caps fit the MK4’s platform, I printed one or two at a time while tweaking improving the design:

    Worm Bin Vent Covers - PrusaSlicer preview
    Worm Bin Vent Covers – PrusaSlicer preview

    This design is for the original Can-O-Worms shown in the second picture and may not quite fit the new version. We’ll know more when we empty the bottom tray.

    The OpenSCAD source code as a GitHub Gist:

    // Worm Bin Leg Vent Cover
    // Ed Nisley – KE4ZNU
    // 2026-10-16
    include <BOSL2/std.scad>
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    HoleWindage = 0.2;
    Protrusion = 0.01;
    NumSides = 8*2*3;
    $fn=NumSides;
    LayerHeight = 0.4; // print with 0.8 mm nozzle
    LayerWidth = 0.9;
    WallThick = 1.5*LayerWidth;
    VentOD = 62.0; // at bottom of cover
    VentTopClear = 9.0; // to next layer bottom
    VentSideClear = 11.0; // to bin side
    VentStrutWidth = 3.0;
    CoverHeight = 15.0;
    CoverOD = VentOD + 2*VentSideClear – 2*WallThick;
    NumRibs = 6;
    RibHeight = VentTopClear – WallThick – 2.0;
    RibThick = 2*WallThick;
    //—–
    // Build things
    difference() {
    union() {
    cyl(WallThick,d=CoverOD,circum=true,anchor=BOTTOM) position(TOP) {
    tube(CoverHeight – WallThick,od=CoverOD,wall=WallThick,circum=true,
    anchor=BOTTOM,spin=180/NumSides);
    for (i=[0:NumRibs-1])
    rotate(i*(360/NumRibs) + 180/NumRibs)
    right(CoverOD/3 – RibThick/2)
    cube([CoverOD/3,RibThick,RibHeight],anchor=BOTTOM);
    }
    up(WallThick)
    right(CoverOD/2 – WallThick)
    cube([VentSideClear,VentStrutWidth + 2*WallThick,RibHeight],anchor=BOTTOM+RIGHT);
    right(CoverOD/2 – WallThick + Protrusion)
    cube([VentSideClear – WallThick,VentStrutWidth + 2*WallThick,CoverHeight],anchor=BOTTOM+RIGHT);
    }
    down(Protrusion)
    right(CoverOD/2 – VentSideClear)
    cube([CoverOD,VentStrutWidth,2*CoverHeight],anchor=BOTTOM+LEFT);
    }

  • Window Film Mullion Filler

    Window Film Mullion Filler

    The living room windows suffer from all the thermal problems you might expect in a late-1960s house, despite the slightly more recent storm panes, so I’ve been adding insulating film during the cold season. This works surprisingly well, although the tape holding the film tends to lose its grip in the angle between the (real, not pretend!) mullions and the window sill.

    This year I added triangular fillers to ease the corner:

    LR Window Film - mullion filler
    LR Window Film – mullion filler

    They’re Desk Signs from boxes.py, with the bottoms angled by 2.5° to compensate for the slightly misaligned sill and a small cutout clearing the paint accumulation in the corner:

    LR Window mullion filler - LightBurn layout
    LR Window mullion filler – LightBurn layout

    A strip of tape down each side of the mullion and across the filler anchors the film, producing a slightly baggy fit. Next year I’ll use only one strip down the middle.

  • Window Latch Cam Rebuild

    Window Latch Cam Rebuild

    One of the living room window latches stopped working and, although the correct response would be to simply replace it, the window sash already had six holes surrounded by paint scars suggesting this wasn’t the first failure.

    The latch as built:

    Window latch cam - as built
    Window latch cam – as built

    The stamped steel spring holder was loose on the handle arm’s square pot-metal post, due to obviously poor factory swaging during assembly. Unseen below the plate is a cam molded into the handle intended to slide the white latch plate with the stamped post (over on the left) guiding the plate around the curved track and into the recess.

    I don’t have a “before” picture of the cam, but it had completely worn away against the various steel parts. The task boiled down to replacing it with something more durable, which turned out to be a reshaped M3 brass screw:

    Window latch cam - test fit
    Window latch cam – test fit

    The Sherline setup to remove the worn cam, with the screw in place for a test fit:

    Window latch cam - Sherline setup
    Window latch cam – Sherline setup

    The vise loosely clamps the handle, mostly for alignment, with the step block clamp holding it firmly in place.

    The lever arm looked like this after poking the endmill into it a few times to clear the rubble, then using a smaller endmill as a drill to get a flat-bottomed recess:

    Window latch cam - milled hole
    Window latch cam – milled hole

    Obviously, that was accomplished with eyeballometric alignment and manual jogging.

    Reshaping and trimming the screw with Tiny Lathe produced a suitable cam-like object:

    Window latch cam - screw installed
    Window latch cam – screw installed

    I planned to epoxy it in place, but AFAICT there is no way for it to go anywhere, so I just reassembled everything in reverse order:

    Window latch cam - reassembled
    Window latch cam – reassembled

    I brutally swaged the square post with an automatic center punch cranked to maximum throttle while forcing the spring holder firmly atop the stack. The latch now moves smoothly and everything stays properly aligned.

    While that was going on, the window sash had wood pins pounded into the errant screw holes with wood epoxy filling the gaps. Aligning the latch, drilling holes in the proper spots, and screwing the latch in place proceeded as expected.

    That wasn’t easy, but now I can install plastic film over those windows for the winter.

  • Samsung French Door Refrigerator Mullion Flipper

    Samsung French Door Refrigerator Mullion Flipper

    The vertical bar between the doors of the Samsung French Door refrigerator that Came With The House™ is called a “mullion” and the curvy doodad on top that moves it out of the way when you open the door is called a “mullion flipper”, which I learned while attempting to repair it:

    Samsung Refrigerator Mullion Flipper - regluing
    Samsung Refrigerator Mullion Flipper – regluing

    The entire top of the mullion broke off and, while a solvent bond can (ideally) be as strong as the original plastic, if the part broke once it will probably break again. Which happened in short order, despite all the clamping.

    The official replaceable part is the entire mullion, but a more practical alternative is a cap fitting the top of the broken mullion, apparently either molded or 3D printed.

    Having a 3D printer of my very own, a quick search brought forth a solid model of a mullion flipper that fit exactly:

    Samsung Refrigerator Mullion Flipper - 3D print top view
    Samsung Refrigerator Mullion Flipper – 3D print top view

    It’s printed in clear PETG, which seemed a better match than white, and is held in place with a wrap of double-sided tape around the top, which may not be strictly necessary.

    It flips the mullion just like the original:

    Samsung Refrigerator Mullion Flipper - 3D print outside view
    Samsung Refrigerator Mullion Flipper – 3D print outside view

    The yellow strip is 2 mil Kapton tape applied to both sides of the torn flexible seal running the length of the door, which we agreed was less awful than attempting to replace the entire seal on both doors. It must be trimmed slightly narrower than shown to avoid jamming on the other door.

    Perusing previous posts will explain my overall low opinion of Samsung appliances.

  • Countersunk Screw Recess Fillers

    Countersunk Screw Recess Fillers

    For reasons not relevant here, a friend must fill several pre-drilled countersunk flat-head screw holes with brass plugs suitable for M5 screws. These proof-of-concept samples give the general idea, with the red blotch on the left marking the first attempt:

    Shelf flush screw fillers - samples
    Shelf flush screw fillers – samples

    He gets to make as many as needed …

    The flat-head screws have an 82° included angle, so the lathe compound angle must be 41°. Tiny Lathe lacks sufficient reach to accomplish that on the front side, but cutting the back of the brass rod with the spindle running in reverse will work:

    Shelf flush screw fillers - lathe setup
    Shelf flush screw fillers – lathe setup

    The quick-change tool post is aligned parallel with the lathe bed to put the tools at the proper angle.

    It turns out 41° is about as far as the compound will go:

    Shelf flush screw fillers - compound angle setting
    Shelf flush screw fillers – compound angle setting

    This, readers of long memory may recall, is the mini-lathe with the cross-slide DRO interfering with the compound enough to prevent it from cutting ordinary 60° screw threads, which is why the angle tops out at 42° instead of 60° in both directions.

    The filler needs a 5.1 mm hole for EZ clearance, which is straightforward:

    Shelf flush screw fillers - drilling
    Shelf flush screw fillers – drilling

    That was the first attempt after I got the compound angle worked out, which is why it eventually got the red mark. You want to drill on a flat end after countersinking with a center drill. It’s also good practice to drill only a few diameters deep, rather than trying to gun-drill sufficient hole for half a dozen fillers with one poke.

    Run the spindle in reverse to cut the 41° angle on the back side:

    Shelf flush screw fillers - backside cutting - detail
    Shelf flush screw fillers – backside cutting – detail

    Run the spindle forward to separate the finished filler with a cutoff tool:

    Shelf flush screw fillers - parting off
    Shelf flush screw fillers – parting off

    The length isn’t critical, so holding a millimeter scale against the right side of the tool and eyeballing the distance from the end of the taper should suffice.

    Filing to polish, deburring to finger-frendliness, and similar activities are in the nature of fine tuning.

    Now for some Quality Shop Time!

  • Furnace Water Fill Valve Refurbishment

    Furnace Water Fill Valve Refurbishment

    The water fill valve (a.k.a. water shutoff valve) for the gas furnace is inconveniently located behind the furnace and water heater:

    Furnace fill valve location
    Furnace fill valve location

    After a few days of dripping Kroil penetrating oil on the valve body threads, the Greater Adjustable Wrench eased it just enough to convince me it would come apart, whereupon a search through the Big Box o’ Tubing disgorged a length of flexy silicone tube snugly fitting the valve drain port.

    With the water turned off downstream of the house filter and the pipes depressurized, the tube directed most of the water into a bucket perched atop the furnace, with a scrap towel catching most of the remainder while unscrewing the valve. I clamped a rubber disk over the body while replacing the washer:

    Furnace fill valve - ancient washer
    Furnace fill valve – ancient washer

    Maybe that washer isn’t 60-some years old, but it’s definitely well beyond its Best Used By date. For the record, the fill valve uses the same 3/8L washer as the zone drain valves.

    While I had it apart, I replaced the gasket, which was of course different from the drain valves:

    Furnace fill valve - gasket
    Furnace fill valve – gasket

    That was 25.4 mm OD, 22.7 ID, for a measured 1.3 mm width. The recess machined into the valve body limits the OD and the ID could go down to 22.0 mm. The gasket sheet is 0.8 mm thick, which seems to work well enough.

    Reassemble in reverse order, wipe up various spills, turn the fill valve on to repressurize the furnace, close the valve, and the water pressure now remains at 12 psi as it should.

    To the best of my knowledge & belief, every hot water baseboard furnace in all of our houses has operated with the water fill valve open: the pressure reducing valve sees normal water pressure upstream and regulates the boiler pressure, with a reverse flow check valve preventing backflow into the house plumbing as needed.

    The Bell & Gossett instructions for the pressure reducing valve say, clearly and specifically, without asterisks or evasions, that you fill the furnace / boiler to the 12 psi regulated pressure, then close the fill valve. The furnace runs as a closed system, with the expansion tank keeping the pressure more-or-less constant at 12 psi.

    It’s possible the pressure reducing valve is gradually failing, but it doesn’t matter with the water fill valve closed.

  • HQ Sixteen: Improved Anchor

    HQ Sixteen: Improved Anchor

    The original anchor / weight keeping the HQ Sixteen from rolling away suffered a disastrous fall, so I conjured a much better-looking replacement from the vasty digital deep:

    HQ Sixteen - improved anchor
    HQ Sixteen – improved anchor

    The handle and fancy nut came from the deceased pepper mill, sitting on laser-cut acrylic in a 3D printed base, with a drawer liner disk peeking out from underneath.

    The orange disk in the solid model represents the steel slug harvested from the old anchor:

    HQ Sixteen Anchor - solid model - Show view
    HQ Sixteen Anchor – solid model – Show view

    A ring of hot-melt glue under the weight keeps it from rattling around in there, with the snug-fitting central post encouraging good positioning. I made the acrylic lid sit flush with the top of the base by the simple expedient of running another ring of glue around it, plunking the base + weight atop it on a flat surface, then taking a deep breath while the glue solidified. The nut & screw thus compress a solid stack of acrylic + glue + steel + glue + PETG-CF, rather than just parts flying in formation.

    The OpenSCAD source code also produces a pair of outlines for laser-cutting the adhesive sheet and acrylic, suitable for export to an SVG file:

    HQ Sixteen Anchor - solid model - cuts
    HQ Sixteen Anchor – solid model – cuts

    They’re offset inward by amounts appropriate for my CO₂ laser:

    if (Layout == "Cuts") {
      left(BaseOD/2 + Gap)
        offset(r=-1.0)
          circle(d=BaseOD);
      right(Cap[OD]/2 + Gap)
        offset(r=-0.2/2)
          projection()
            tube(1.0,id=Cap[ID],od=Cap[OD],anchor=BOTTOM);
    }
    

    It might be prudent to apply those offsets to the original outlines in LightBurn or whatever you use for lasering.

    The OpenSCAD source code as a GitHub Gist:

    // Anchor block for HQ Sixteen
    // Ed Nisley – KE4ZNU
    // 2026-09-29
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Cuts]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Gap = 10.0/2; // build platform minimum spacing
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 8*3*2*4;
    $fn=NumSides;
    // Sizes
    Screw = [5.5,25.5,5.0]; // 10-24 screw + washer holding it together
    Weight = [11.0,80.0,11.5]; // stamped steel slug
    Cap = [26.0,Weight[OD],5.5]; // acrylic disk with handle hole
    BaseFloor = 10.0;
    BaseOD = 90.0; // printed anchor
    Spacing = 25.0; // Show view separation
    //———-
    // Model things
    module Housing() {
    tube(Screw[LENGTH],id=Screw[OD],od=BaseOD,anchor=BOTTOM) position(TOP) {
    tube(Weight[LENGTH],id=Screw[ID],od=Weight[ID],anchor=BOTTOM); // weight bushing
    tube(BaseFloor – Screw[LENGTH],id=Screw[ID],od=BaseOD,anchor=BOTTOM) position(TOP)
    tube(Cap[LENGTH] + Weight[LENGTH],id=Cap[OD],od=BaseOD,anchor=BOTTOM);
    }
    }
    //———-
    // Build things
    if (Layout == "Show") {
    Housing();
    color("Orange",0.7)
    up(BaseFloor + Spacing)
    tube(Weight[LENGTH],id=Weight[ID],od=Weight[OD],anchor=BOTTOM);
    color("Gray",0.8)
    up(BaseFloor + 2*Weight[LENGTH] + Spacing)
    tube(Cap[LENGTH],id=Cap[ID],od=Cap[OD],anchor=BOTTOM);
    }
    if (Layout == "Cuts") {
    left(BaseOD/2 + Gap)
    offset(r=-1.0)
    circle(d=BaseOD);
    right(Cap[OD]/2 + Gap)
    offset(r=0.2/2)
    projection()
    tube(1.0,id=Cap[ID],od=Cap[OD],anchor=BOTTOM);
    }
    if (Layout == "Build") {
    Housing();
    }