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: Machine Shop

Mechanical widgetry

  • Tour Easy Rear Running Light: LED Heatsink

    Tour Easy Rear Running Light: LED Heatsink

    Because the rear running light will have a higher duty cycle than the front light, I made the (admittedly too small) heatsink slightly longer, with a deeper recess to protect the lens from cargo on the rear rack:

    Tour Easy Rear Running Light - boring LED recess
    Tour Easy Rear Running Light – boring LED recess

    Boring that nice flat bottom is tedious; I must lay in a stock of aluminum tubing to simplify the process.

    Drilling the holes went smoothly:

    Tour Easy Rear Running Light - drilling LED heatsink
    Tour Easy Rear Running Light – drilling LED heatsink

    Those two holes fit a pair of pins aligning the circuit plate, with a screw and brass insert holding it to the heatsink. Scuffing a strip across the aluminum might give the urethane adhesive (you can see uncured globs on the pins) a better grip:

    Tour Easy Rear Running Light - circuit plate attachment
    Tour Easy Rear Running Light – circuit plate attachment

    The screw / insert /pins are glued into the plate to permanently bond it to the heatsink. The screw occupies only half of the insert, with the longer screw from the end cap pulling the whole affair together.

    The two holes on the left pass both LED leads to one side of the circuit plate, where they connect to the current regulator and its sense resistor.

  • Rear Running Light: Too-aggressive Turning

    Rear Running Light: Too-aggressive Turning

    The same lathe fixture and double-sided duct tape trick I used for the amber running light’s end cap should have worked for this one, but only after I re-learned the lesson about taking sissy cuts:

    Tour Easy Rear Running Light - end cap fixture - swirled adhesive
    Tour Easy Rear Running Light – end cap fixture – swirled adhesive

    Yet another snippet of tape and sissy cuts produced a better result:

    Tour Easy Rear Running Light - end cap
    Tour Easy Rear Running Light – end cap

    Protip: when you affix an aluminum disk bandsawed from a scrap of nonstick griddle to a lathe fixture, the adhesive will grip the disk in only one orientation.

  • Rear Running Light: Tour Easy Seat Clamp

    Rear Running Light: Tour Easy Seat Clamp

    With the amber front running light blinking away, it’s time to replace the decade-old Planet Bike Superflash behind the seat:

    Superflash on Tour Easy
    Superflash on Tour Easy

    The new mount descends directly from the clamps holding the fairing strut on the handlebars and various hose clamps:

    Rear Running Light Seat Clamp - solid model
    Rear Running Light Seat Clamp – solid model

    The central block has two quartets of brass inserts epoxied inside:

    Rear Running Light Seat Clamp - sectioned - solid model
    Rear Running Light Seat Clamp – sectioned – solid model

    That means I can install the light, then mount the whole affair on the bike, without holding everything together while fiddling with overly long screws.

    A trial fit with the not-yet-cut-to-length 25.3 (-ish) PVC pipe body tube:

    Rear Running Light - Tour Easy seat clamp trial fit
    Rear Running Light – Tour Easy seat clamp trial fit

    The aluminum plates have the standard used-car finish: nice polish over deep scratches.

    Although I’ve been thinking of mounting the light below the seat rail, as shown, it can also sit above the rail.

    Mary hauls seedlings and suchlike to the garden in a plastic drawer bungied to the rack, with the SuperFlash serving as an anchor point; this light may need fine tuning for that purpose.

    The OpenSCAD source code as a GitHub Gist:

    // Rear running light clamp for Tour Easy seat strut
    // Ed Nisley – KE4ZNU – 2021-09
    Layout = "Show"; // [Show,Build,Block]
    Section = true;
    /* [Hidden] */
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    ID = 0;
    OD = 1;
    LENGTH = 2;
    inch = 25.4;
    //———————-
    // Dimensions
    // Light case along X axis, seat strut along Y, Z=0 at strut centerline
    LightOD = 25.4 + HoleWindage;
    StrutOD = 5/8 * inch + HoleWindage;
    PlateThick = 1/16 * inch;
    WallThick = 2.0;
    Kerf = ThreadThick;
    Screw = [3.0,6.8,4.0]; // M3 OD=washer, length=nut + washers
    Insert = [3.0,5.4,8.0 + 1.0]; // splined brass insert
    RoundRadius = IntegerMultiple(Screw[OD]/2,0.5); // corner rounding
    ScrewOC = [IntegerMultiple(StrutOD + 2*WallThick + Screw[ID],1.0),
    IntegerMultiple(LightOD + 2*WallThick + Screw[ID],1.0)];
    echo(str("Screw OC: ",ScrewOC));
    BlockSize = [ScrewOC.x + Insert[OD] + 2*WallThick,
    ScrewOC.y + Insert[OD] + 2*WallThick,
    LightOD + StrutOD + 3*WallThick];
    echo(str("Block: ",BlockSize));
    BaseOffset = -(WallThick + LightOD/2); // block bottom to centerline
    StrutOffset = LightOD/2 + WallThick + StrutOD/2; // light centerline to strut centerline
    echo(str("Strut screw min: ",IntegerMultiple(PlateThick + WallThick + StrutOD/2 + Insert[LENGTH]/2,1.0)));
    echo(str("Light screw min: ",IntegerMultiple(PlateThick + WallThick + LightOD/2 + Insert[LENGTH]/2,1.0)));
    NumSides = 2*3*4;
    //———————-
    // 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);
    }
    // Block with light along X axis
    module Block() {
    difference() {
    hull()
    for (i=[-1,1], j=[-1,1])
    translate([i*(BlockSize.x/2 – RoundRadius),j*(BlockSize.y/2 – RoundRadius),BaseOffset])
    cylinder(r=RoundRadius,h=BlockSize.z,$fn=NumSides);
    for (i=[-1,1], j=[-1,1])
    translate([i*ScrewOC.x/2,j*ScrewOC.y/2,BaseOffset – Protrusion])
    rotate(180/8)
    PolyCyl(Screw[ID],BlockSize.z + 2*Protrusion,8);
    for (i=[-1,1], j=[-1,1])
    translate([i*ScrewOC.x/2,j*ScrewOC.y/2,0]) {
    translate([0,0,-Protrusion])
    rotate(180/8)
    PolyCyl(Insert[OD],Insert[LENGTH] + 1*Protrusion,8);
    translate([0,0,(StrutOffset – Insert[LENGTH] – Kerf/2 + Protrusion)])
    rotate(180/8)
    PolyCyl(Insert[OD],Insert[LENGTH] + 1*Protrusion,8);
    }
    translate([-BlockSize.x,0,0])
    rotate([0,90,0])
    cylinder(d=LightOD,h=2*BlockSize.x,$fn=NumSides);
    translate([0,BlockSize.y,StrutOffset])
    rotate([90,0,0])
    cylinder(d=StrutOD,h=2*BlockSize.y,$fn=NumSides);
    translate([0,0,StrutOffset])
    cube([2*BlockSize.x,2*BlockSize.y,Kerf],center=true);
    cube([2*BlockSize.x,2*BlockSize.y,Kerf],center=true);
    }
    }
    //- Build it
    if (Layout == "Block")
    if (Section)
    difference() {
    Block();
    rotate(atan(ScrewOC.y/ScrewOC.x))
    translate([0,BlockSize.y,0])
    cube(2*BlockSize,center=true);
    }
    else
    Block();
    if (Layout == "Show") {
    Block();
    color("Green",0.25)
    translate([-BlockSize.x,0,0])
    rotate([0,90,0])
    cylinder(d=LightOD,h=2*BlockSize.x,$fn=NumSides);
    color("Green",0.25)
    translate([0,BlockSize.y,StrutOffset])
    rotate([90,0,0])
    cylinder(d=StrutOD,h=2*BlockSize.y,$fn=NumSides);
    }
    if (Layout == "Build") {
    translate([-1.2*BlockSize.x,0,-BaseOffset])
    difference() {
    Block();
    translate([0,0,BlockSize.z])
    cube(2*BlockSize,center=true);
    }
    translate([1.2*BlockSize.x,0,StrutOD/2 + WallThick])
    difference() {
    rotate([180,0,0])
    translate([0,0,-StrutOffset])
    Block();
    translate([0,0,BlockSize.z])
    cube(2*BlockSize,center=true);
    }
    translate([0,0,StrutOffset – Kerf/2])
    rotate([180,0,0])
    intersection() {
    Block();
    translate([0,0,StrutOffset/2])
    cube([2*BlockSize.x,2*BlockSize.y,StrutOffset],center=true);
    }
    }

  • Beverage Faucet Replacement

    Beverage Faucet Replacement

    The lesser kitchen faucet began dribbling and required replacement, as there are no user serviceable parts within. One of the 3D printed adapters I built during the previous iteration had disintegrated:

    Beverage faucet base plate adapter disintegration
    Beverage faucet base plate adapter disintegration

    The new faucet came with a somewhat different baseplate and I managed to conjure a firm, sealed mount from the various parts without further construction.

    The nicely curved brass snout is the third in my collection. Surely they’ll come in handy for something!

    While I was in a plumbing state of mind, I again replaced the spout O-rings in the never-sufficiently-to-be-damned American Standard Elite (hah!) faucet, as it was also dribbling.

    This time, I used oxalic acid to remove the assorted scale and crud inside the spout. It seemed to be more effective than the usual white vinegar, although nothing seems to preserve the O-rings.

  • Micro-Mark Bandsaw: Acetal Blade Guide

    Micro-Mark Bandsaw: Acetal Blade Guide

    The Micro-Mark bandsaw has a metal blade guide below the table that contributes to the awful noise it makes while running, even when it’s not cutting anything. Having recently touched the Delrin = acetal rod stash, a simple project came to mind.

    A doodle with the original metal guide dimensions:

    Micro-Mark Bandsaw - metal blade guide dimensions
    Micro-Mark Bandsaw – metal blade guide dimensions

    The 10 mm dimension is non-critical, so I started with a 1/2 inch acetal rod and turned the stub end to match.

    A doodle suggested how to carve the slot with a 20.5 mil = 0.52 mm slitting saw, with the offset from a Z touchoff at the top:

    Micro-Mark Bandsaw - acetal blade guide - slitting doodles
    Micro-Mark Bandsaw – acetal blade guide – slitting doodles

    The V block setup required swapping out the overly long OEM screw for a shorter 5 mm SHCS to clear the Sherline’s motor:

    Micro-Mark Bandsaw - acetal guide slitting
    Micro-Mark Bandsaw – acetal guide slitting

    The end result looked pretty good:

    Micro-Mark Bandsaw - acetal vs steel blade guides
    Micro-Mark Bandsaw – acetal vs steel blade guides

    And it looks like it pretty much belongs in the saw:

    Micro-Mark Bandsaw - acetal blade guide installed
    Micro-Mark Bandsaw – acetal blade guide installed

    The 6 mm stud goes into a hole in the frame, where a setscrew holds it in place. You must remove the blade to extract / replace the guide, with the correct position having the end of the slot just touching the back of the blade.

    The foam ring apparently keeps crud away from the stud on the backside; I doubt it’s mission-critical.

    The saw became somewhat quieter; the ball bearing guides above the table now generate most of the racket. At some point I’ll try replacing them with a block, probably made from UHMW, with a simple slit to guide the blade.

    Plastic guides may not last as long as the steel ones, but occasional replacements will be worth it if the saw runs quieter.

  • Bondhus Wrench: Missing Ball

    Bondhus Wrench: Missing Ball

    Around the beginning of the year, I updated my collection of somewhat worn hex wrenches with a set of metric and inch ball-end hex wrenches from Bondhus sold by and shipped from Amazon:

    Bondhus hex wrenches - missing 7-64 ball
    Bondhus hex wrenches – missing 7-64 ball

    When I applied the 7/64 wrench to a setscrew, the missing ball came as a surprise.

    Even though the inch wrench set doesn’t get a lot of use, it’s possible I broke the ball off during a previous adventure, but a look at the end shows the black oxide coating covering the end:

    Bondhus hex wrenches - missing 7-64 ball - detail
    Bondhus hex wrenches – missing 7-64 ball – detail

    Yeah, it was born that way.

    I wonder if and how their lifetime guarantee works.

    [Update: It does!]

    Protip: as of this writing, the Amazon listing has two other “sizes” showing exactly the same set at significantly higher prices from two randomly named sellers:

    Bondhus hex wrench set - Amazon listing
    Bondhus hex wrench set – Amazon listing

    It is safe to assume Amazon no longer has its customers’ best interests in mind.

  • Depth Gauge Mounting Rods

    Depth Gauge Mounting Rods

    A depth gauge arrived with a 3/8 inch = 9.5 mm mounting rod that fit one of my magnetic bases, but another base in my collection has a 5/16 inch = 7.9 mm clamp. Having recently rummaged through the aluminum rod stash, this happened:

    Depth Gauge mounting rods
    Depth Gauge mounting rods

    The original rod at the top has an M6 thread, the drawer of random M6 screws provided suitable volunteers, and a bit of lathe work removed / shaped their heads accordingly.

    The shorter rod has a blind hole, with a dab of epoxy holding the headless screw in place. Not that it matters, but the lathe held them in alignment for curing:

    Depth Gauge mounting rod - epoxy alignment
    Depth Gauge mounting rod – epoxy alignment

    The longer rod got drilled all the way through, with more epoxy holding the screw, and, even with a relatively loose fit, no worries about alignment.

    The longer rod gets the clamp away from the depth gauge’s base plate for better positioning:

    Depth Gauge mounting rod - in use
    Depth Gauge mounting rod – in use

    They’ll surely come in handy along the way …