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.

Author: Ed

  • Laser Cutter: Mirror Pin Wrench

    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.

  • Tour Easy Running Lights: Anodizing Sun Fade

    Tour Easy Running Lights: Anodizing Sun Fade

    After six years, the anodizing on the Anker LC40 flashlights I repurposed as daytime running lights shows some radiation damage:

    Tour Easy Running Lights fading - mount top view
    Tour Easy Running Lights fading – mount top view

    The bottom side looks pristine:

    Tour Easy Running Lights fading - mount bottom view
    Tour Easy Running Lights fading – mount bottom view

    It turns out they were clamped in slightly different positions on our two bikes:

    Tour Easy Running Lights fading - top view
    Tour Easy Running Lights fading – top view

    The side view shows a gentle color transition:

    Tour Easy Running Lights fading - bottom view
    Tour Easy Running Lights fading – bottom view

    Apparently I had swapped the caps from the two lights when I noticed the fading after only the first year.

  • Garter Snake: Garbage Can Guardian

    Garter Snake: Garbage Can Guardian

    A garter snake has taken up residence under our garbage can and is startled when I wheel it away:

    Garter snake on the alert
    Garter snake on the alert

    This week it was curled into a compact bundle:

    Garter snake in compact mode
    Garter snake in compact mode

    The blue eyes indicate it’s in the process of shedding its skin, so next week we’ll have an even bigger and shinier guardian.

    Shedding one’s skin apparently requires a great deal of thought, as it remained in that pose while I fetched Mary, then moved deliberately off into the leaf litter behind the can.

    The small rodent population around here has definitely declined: garter snakes are murder on field mice and the hawks are taking out the chipmunks.

    Go, snake, go!

  • Onion Maggot Fly vs. Sticky Traps: Season 3 Finale

    Onion Maggot Fly vs. Sticky Traps: Season 3 Finale

    The six sticky traps guarding Mary’s onion beds in her Vassar Community Gardens plots collected this assortment of critter and mulch from mid-July through mid-August, when she harvested the last of the crop:

    • VCCG Onion Maggot Trap A
    • VCCG Onion Maggot Trap B
    • VCCG Onion Maggot Trap C
    • VCCG Onion Maggot Trap D
    • VCCG Onion Maggot Trap E
    • VCCG Onion Maggot Trap F

    The labels do not match those on the first set through mid-July, because I don’t care quite enough to keep track of them.

    The traps don’t collect many onion maggot flies, which suggests that a little control goes a long way. As far as she’s concerned, these traps work very well, because the crop has very little maggot damage.

    Searching for onion sticky traps will produce the rest of the collection. Contact me for the full resolution images, should you need to ID all the critters.

  • Onion Maggot Fly Sticky Trap Repair

    Onion Maggot Fly Sticky Trap Repair

    One of the sticky traps absorbed a mighty blow during the season and its ski-pole mount snapped off. Rather then rebuild the whole thing, I decided to just epoxy the pieces together and stick a reinforcing plate on the bottom.

    I added a pair of screw holes to the OpenSCAD model and produced a projection of the bottom layer:

    if (Layout == "Projection") {
        projection(cut=true) {
            Attachment();
            Cap();
        }
    }
    

    Which looked like this:

    Sticky Sheet Cage - projection
    Sticky Sheet Cage – projection

    Cutting that shape from an adhesive sheet looks the same:

    Onion Maggot Fly Trap - adhesive sheet
    Onion Maggot Fly Trap – adhesive sheet

    The somewhat raggedy large hole seems to come from OpenSCAD’s somewhat low-res SVG outline conversion.

    Fill the broken part with epoxy:

    Onion Maggot Fly Trap - epoxy ready
    Onion Maggot Fly Trap – epoxy ready

    Clamp it together on a plate to keep the bottom aligned:

    Onion Maggot Fly Trap - clamping
    Onion Maggot Fly Trap – clamping

    Cut an acrylic baseplate:

    Onion Maggot Fly Trap - acrylic cut
    Onion Maggot Fly Trap – acrylic cut

    Apply adhesive sheet to acrylic, stick it on the bottom of the cage, add a pair of stainless steel screws, and declare victory:

    Onion Maggot Fly Trap - bottom view
    Onion Maggot Fly Trap – bottom view

    We’ll see how long that lasts out in the garden next year …

  • Popsicle Mixing Sticks

    Popsicle Mixing Sticks

    Perhaps popsicle stick mixers?

    Popsicle stick mixer - in action
    Popsicle stick mixer – in action

    I made a batch to see if they’d simplify mixing my usual tiny batches of epoxy … and they do! Now I need not worry about forgetting to wipe off the screwdriver or cross-contaminating the resin / hardener tubes.

    Reshaping the tip so the laser beam enters at right angles to the stick produced a cleaner cut and a slightly narrower blade:

    Popsicle stick mixer - cutting
    Popsicle stick mixer – cutting

    The fixture and LightBurn template I made for the engraved markers came in handy. Aligning the template to the fixture proceeds as with the larger craft stick garden markers.

    A small holder keeps finished sticks ready for use:

    Popsicle stick mixer - presentation box
    Popsicle stick mixer – presentation box

    I don’t know how long the box originally holding 1000 sticks has been sitting on the shop shelf, but it’s at least half full despite my continuing efforts. Maybe I can get ahead on my holiday gift prep?

    The LightBurn SVG template layout as a GitHub Gist:

    Loading
    Sorry, something went wrong. Reload?
    Sorry, we cannot display this file.
    Sorry, this file is invalid so it cannot be displayed.

  • Zenni Optical Glasses: Metalbending

    Zenni Optical Glasses: Metalbending

    The new batch of glasses I just received makes me take back any nice things I previously implied about Zenni Optical’s nose pad alignment:

    Zenni eyeglass pads - as received
    Zenni eyeglass pads – as received

    Zenni does have a guide to reshaping the frames, but it does not include aligning the pads parallel to your nose, which definitely goes better with wire-bending pliers in hand.

    They should look more like this when you’re done:

    Zenni eyeglass pads - aligned
    Zenni eyeglass pads – aligned

    I suppose this is a consequence of being able to get two eyeglasses + two sunglasses in three different frame styles and two different prescriptions, each with progressive lenses and antireflective coating, for about $350 delivered halfway around the planet.

    Makes owning a set of metal-forming pliers look downright economical.

    A few years ago, Mary paid more than that for a single pair of badly fitted glasses from a local outlet. Those days are over.