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.

The New Hotness

  • Laser Cutter: Mirror Pin Wrench

    After struggling with pin pliers again, I finally made a pin wrench for the laser cutter’s mirror retaining rings:

    Laser Mirror Pin Wrench - in use
    Laser Mirror Pin Wrench – in use

    The odd grayish tint toward the flat end of the knob comes from residual black filament in the hot end after switching to retina-burn orange PETG.

    The solid model looks about like you’d expect:

    Mirror Pin Wrench - Solid Model
    Mirror Pin Wrench – Solid Model

    The pins are snippets of 3/32 inch = 2.4 mm steel rod with ground-round ends to fit the 2.5 mm pin sockets in the retaining ring.

    They’re rammed into place with a drill press to keep them aligned with the holes:

    Laser Mirror Pin Wrench - pin insertion
    Laser Mirror Pin Wrench – pin insertion

    Pressed flush with the central boss that aligns the wrench with the ring:

    Laser Mirror Pin Wrench - pin leveling
    Laser Mirror Pin Wrench – pin leveling

    Then put the ring on the bench, set the wrench atop the ring with the pins in the sockets, and press firmly to seat the pins to the proper depth. The end results should look like this:

    Laser Mirror Pin Wrench - mirror ring test
    Laser Mirror Pin Wrench – mirror ring test

    The next time I clean the mirrors, there will be less muttering.

    The OpenSCAD source code as a GitHub Gist:

    // OMTech laser cutter mirror pin wrench
    // Ed Nisley – KE4ZNU – August 2023
    // From https://www.thingiverse.com/thing:4146258
    use <knurledFinishLib_v2_1.scad>
    /* [Hidden] */
    ThreadThick = 0.20;
    ThreadWidth = 0.40;
    HoleWindage = 0.2; // extra clearance
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    //———————-
    // Dimensions
    /* [Knob] */
    PinDia = 2.4; // pin diameter
    PinOC = 20.5; // … on-center spacing
    PinDepth = 10.0; // … hole depth
    LocDia = 14.5; // central stud
    LocLength = 3.0;
    ShaftDia = 26.0; // un-knurled section diameter
    ShaftLength = 15.0; // … length
    KnurlDia = 30.0; // diameter at midline of knurl diamonds
    KnurlLen = 20.0; // … length of knurled section
    /* [Hidden] */
    KnurlDPNom = 32; // Nominal diametral pitch = (# diamonds) / (OD inches)
    DiamondDepth = 0.5; // … depth of diamonds
    DiamondAspect = 2; // length to width ratio
    KnurlID = KnurlDia – DiamondDepth; // dia at bottom of knurl
    NumDiamonds = ceil(KnurlDPNom * KnurlID / inch);
    echo(str("Num diamonds: ",NumDiamonds));
    NumSides = 4*NumDiamonds; // 4 facets per diamond
    KnurlDP = NumDiamonds / (KnurlID / inch); // actual DP
    echo(str("DP Nom: ",KnurlDPNom," actual: ",KnurlDP));
    DiamondWidth = (KnurlID * PI) / NumDiamonds;
    DiamondLenNom = DiamondAspect * DiamondWidth; // nominal diamond length
    DiamondLength = KnurlLen / round(KnurlLen/DiamondLenNom); // … actual
    TaperLength = 0.75*DiamondLength;
    KnobOAL = ShaftLength + KnurlLen + 2*TaperLength;
    //———————-
    // 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);
    }
    //- Build it
    difference() {
    union() {
    render(convexity=10)
    translate([0,0,TaperLength])
    knurl(k_cyl_hg=KnurlLen,
    k_cyl_od=KnurlDia,
    knurl_wd=DiamondWidth,
    knurl_hg=DiamondLength,
    knurl_dp=DiamondDepth,
    e_smooth=DiamondLength/2);
    color("Orange")
    cylinder(r1=ShaftDia/2,
    r2=(KnurlDia – DiamondDepth)/2,
    h=(TaperLength + Protrusion),
    $fn=NumSides);
    color("Orange")
    translate([0,0,(TaperLength + KnurlLen – Protrusion)])
    cylinder(r2=ShaftDia/2,
    r1=(KnurlDia – DiamondDepth)/2,
    h=(TaperLength + Protrusion),
    $fn=NumSides);
    color("Moccasin")
    translate([0,0,(2*TaperLength + KnurlLen – Protrusion)])
    cylinder(r=ShaftDia/2,h=(ShaftLength + Protrusion),$fn=NumSides);
    color("Brown")
    translate([0,0,KnobOAL – Protrusion])
    cylinder(r=LocDia/2,h=(LocLength + Protrusion),$fn=NumSides);
    }
    for (i=[-1,1])
    translate([i*PinOC/2,0,KnobOAL – PinDepth])
    rotate(180/6)
    PolyCyl(PinDia,PinDepth + Protrusion,6);
    }

    It descends from a long line of similar things dating back to the OG Sherline Speed Wrenches.