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: MK4

Prusa Mk 4 3D printer with MMU3 feeder

  • Polydryer Humidity: February

    Polydryer Humidity: February

    After two months of sitting around:

    2026-03-072026-03-08
    Filament%RHWeight – gWt gain – gGain %%RH
    PETG White1453.23.26.4%10
    PETG Black1452.32.34.6%14
    PETG Orange2452.12.14.2%32
    PETG Natural1852.62.65.2%14
    PETG-CF Blue1852.82.85.6%14
    PETG-CF Gray1853.53.57.0%14
    PETG-CF Black1453.23.26.4%10
    PETG Blue1052.52.55.0%10
    TPU Clear1852.72.75.4%10
    TPU Black1453.63.67.2%10

    The last three boxes had 50 g of activated alumina and got fresh doses from the same bottle.

    The other boxes had 50 g from the original bottle of silica gel beads and now have regenerated (and likely damaged) silica gel beads.

    AFAICT, the meter in the orange PETG PolyDryer box isn’t working right, because the humidity indicator card in there has blue spots all the way down to 10%, just like the other boxes. Color differences for meter readings in the teens may be too subtle for my eyes.

    Next time around, they’ll all get alumina beads.

  • 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();
    }
  • HQ Sixteen: Fabric Rod Bearings

    HQ Sixteen: Fabric Rod Bearings

    The rods (a.k.a. tubes or poles) holding & guiding the quilt top / batting / backing fabric on Mary’s HQ Sixteen longarm quilting machine span the eleven feet of the table:

    HQ Sixteen - table overview
    HQ Sixteen – table overview

    The two end plates are 1/4 inch steel plate with four punched holes for the rods / tubes, which look remarkably like EMT. The machine is two decades old and Mary is (at least) the third owner, so it’s no surprise the rods long ago wore through the white powder-coat paint on the plates and, during the course of a long quilting project, now deposit black dust on the table.

    Black dust not being tolerable near a quilt-in-progress, Mary asked for an improvement.

    The tube OD is 28.7 mm (so it’s probably 1 inch EMT) and the plate hole ID is 31.2 mm (likely a scant 1-¼ inch punch), leaving barely a millimeter of clearance all around. I wanted to make a bearing from suitably slippery Delrin / acetal, but figured 3D printed PETG would suffice for at least while.

    The proper term is “bushing“, because it has no moving parts:

    Rod Bearing Sleeve - solid model - show view
    Rod Bearing Sleeve – solid model – show view

    On the right side, the bushing rim must fit between the sprockets and the plate:

    HQ Sixteen rod - right front
    HQ Sixteen rod – right front

    The spring-loaded pin holding the tube in place (visible on the inside bottom) sets the maximum length:

    HQ Sixteen rod - right outer
    HQ Sixteen rod – right outer

    The left side has none of that, so I made the bushings a little longer:

    HQ Sixteen rod - left inner
    HQ Sixteen rod – left inner

    The left-side bushings will need a better design should normal back-and-forth sliding push them out of place.

    A touch of silicone grease around the plate holes makes those bushings / bearings turn sooo smooth.

    The OpenSCAD source code as a GitHub Gist:

    // Bearing sleeve for HQ Sixteen table rods
    // Ed Nisley – KE4ZNU
    // 2026-02-20
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 8*3*2*4;
    $fn=NumSides;
    Rod = [25.0,28.7,100.0]; // very short rod
    Sleeve = [Rod[OD] + 0.3,31.2 – 0.2,9.0]; // LENGTH = overall
    Rim = [Sleeve[ID],Sleeve[OD] + 6.0,0.6];
    IdlerLength = 15.0;
    NumSlots = 2*4;
    Kerf = 1.0;
    Gap = 5.0;
    module Bearing(oal) {
    difference() {
    union() {
    tube(oal,id=Sleeve[ID],od=Sleeve[OD],anchor=BOTTOM);
    tube(Rim[LENGTH],id=Rim[ID],od=Rim[OD],anchor=BOTTOM);
    }
    for (a=[0:NumSlots-1])
    zrot(a*360/NumSlots)
    up(oal/4 + Rim[LENGTH])
    right(Sleeve[ID]/2)
    cuboid([Sleeve[OD],Kerf,oal],anchor=BOTTOM);
    }
    }
    //—–
    // Build things
    if (Layout == "Show") {
    color("Gray",0.5)
    xcyl(Rod[LENGTH],d=Rod[OD]);
    right(Rod[LENGTH]/3)
    yrot(90)
    Bearing(Sleeve[LENGTH]);
    left(Rod[LENGTH]/3)
    yrot(90)
    Bearing(IdlerLength);
    }
    if (Layout == "Build") {
    right(Rim[OD]/2 + Gap/2)
    Bearing(Sleeve[LENGTH]);
    left(Rim[OD]/2 + Gap/2)
    Bearing(IdlerLength);
    }
  • Work Sharp Precision Sharpener: Knob Lock

    Work Sharp Precision Sharpener: Knob Lock

    Having recently sharpened a small blade at a very low angle, I must put in a good word for the knob lock found on Printables:

    WorkSharp - knob lock
    WorkSharp – knob lock

    The protrusion on the tab fits into the back side of the frame, but it works well enough in front, too.

    Wearing cut-resistant gloves remain a good idea.

  • 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.

  • Prusa MK4 Nozzle Tool Mod

    Prusa MK4 Nozzle Tool Mod

    Contemplating a 0.8 mm nozzle to print more-transparent things, I ran off an Official MK4 Nozzle Replacement Tool to stabilize the heater block while applying a wrench to the nozzle:

    Prusa MK4 Nextruder Tool - without inlet scoop
    Prusa MK4 Nextruder Tool – without inlet scoop

    For obvious reasons, it doesn’t fit with the inlet scoop I installed as part of blinging the MK4:

    Prusa MK4 Nextruder Tool - inlet scoop installed
    Prusa MK4 Nextruder Tool – inlet scoop installed

    Removing the scoop is a matter of removing those two cap screws, which is no big deal, but a little flush-cutter action made that problem Go Away forever:

    Prusa MK4 Nextruder Tool - inlet scoop mod
    Prusa MK4 Nextruder Tool – inlet scoop mod

    Yeah, I should have modified the solid model. Maybe next time.

    A version of the tool fits extruders covered with an Official Prusa Silicone Sock thermal insulator, but they were out of stock when I was in the mood. My heater wears a knockoff sock:

    Prusa MK4 Nextruder Tool - silicone sock vs nozzle
    Prusa MK4 Nextruder Tool – silicone sock vs nozzle

    Unlike the Official Sock, there’s no way to get a wrench on the nozzle with that one installed, but removing the sock is no big deal.

    I apparently installed the nozzle / heater block slightly higher than specified, so the tool didn’t quite fit. Loosening those two thumbscrews and lowering the nozzle to fit the tool solved that problem. Fortunately, the automatic bed leveling routine corrects for nozzle height differences on the fly.

    The scoop is back on the fan, the sock once again surrounds the heater, and I can easily swap in the 0.8 mm nozzle when the time comes.

  • Olive Oil Bottle Cap Covers

    Olive Oil Bottle Cap Covers

    We buy olive oil in large bottles, then fill smaller bottles for easier handling. The caps on those bottles were never meant to last as long as we keep them and the thin, deeply drawn aluminum tends to crack after a while.

    So I conjured a cap cover from the vasty digital deep:

    Olive Oil Cap - solid model
    Olive Oil Cap – solid model

    Which looks exactly like you’d expect when printed in black PETG:

    Olive oil bottle cap - details
    Olive oil bottle cap – details

    You can see the raggedy edge of the original cap just inside the cover’s rim. A snippet of double-sided tape holds the cover in place, after de-oiling the cap with alcohol.

    Having gotten one to fit, I made enough for All The Bottles:

    Olive oil bottle cap - installed
    Olive oil bottle cap – installed

    Only two of those see regular service: one in use and another filled when the first is nearly empty. The remaining pair huddle in the back of the shelf against future need.

    The OpenSCAD source code produces those fancy knurls with BOSL2’s textured cyl() :

    // Shower soap dish
    // Ed Nisley - KE4ZNU
    // 2026-01-17
    
    include <BOSL2/std.scad>
    
    /* [Hidden] */
    
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 5*3*4;
    
    $fn=NumSides;
    
    ID = 0;
    OD = 1;
    LENGTH = 2;
    
    WallThick = 1.0;
    BaseThick = 2.0;
    
    CapOD = 36.0;
    
    CoverOA = [CapOD,CapOD + 2*WallThick,20.0 + BaseThick];
    
    //----------
    // Build it
    
      render()
        difference() {
          cyl(BaseThick,d=CoverOA[OD],chamfer1=1.0,anchor=BOTTOM) position(TOP)
            cyl(CoverOA[LENGTH] - BaseThick,d=CoverOA[OD],
                texture="trunc_pyramids",tex_size=[2,6], style="convex",
                anchor=BOTTOM);
          up(BaseThick)
            cyl(CoverOA[LENGTH],d=CoverOA[ID],anchor=BOTTOM);
        }