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

  • Mini-Lathe: Adapting a Five Inch Four Jaw Chuck Adapter Plate

    Mini-Lathe: Adapting a Five Inch Four Jaw Chuck Adapter Plate

    The kludge required to trim the coaster rims disturbed the silt enough to reveal a long-lost 5 inch 4 jaw chuck that fit neither the old South Bend lathe nor the new mini-lathe. In any event, the chuck does have an adapter plate on its backside, it’s just not the correct adapter plate for the spindle on my mini-lathe.

    Making it fit required enlarging an existing recess to fit the spindle plate, a straightforward lathe job with the plate grabbed in the 3 jaw chuck’s outer jaws:

    5 inch 4 jaw chuck - boring spindle recess
    5 inch 4 jaw chuck – boring spindle recess

    Carbide inserts don’t handle interrupted cuts very well, but sissy cuts saved the day. The plate is kinda-sorta cast iron, so the “chips” are dust and a vacuum snout reduces the mess; you can see some chips inside the bore.

    A faceplate for the mini-lathe lathe located three holes matching the spindle plate, after I noticed the amazing coincidence of both parts having 26 mm bores. Making an alignment tool from a scrap of 3/4 inch (!) Schedule 40 PVC pipe was an easy lathe job:

    5 inch 4 jaw chuck - adapter plate alignment
    5 inch 4 jaw chuck – adapter plate alignment

    Transfer-punching those holes produced pips on the chuck side of the adapter plate:

    5 inch 4 jaw chuck - spindle bolt spotting
    5 inch 4 jaw chuck – spindle bolt spotting

    I thought about freehanding the holes, but came to my senses:

    5 inch 4 jaw chuck - adapter plate drilling
    5 inch 4 jaw chuck – adapter plate drilling

    Of course, the Sherline lacks enough throat for the plate, so each hole required clamping / locating / center-drilling / drilling / finish drilling. With all three drilled, hand-tapping the threads was no big deal:

    5 inch 4 jaw chuck - rebuIlt adapter plate
    5 inch 4 jaw chuck – rebuIlt adapter plate

    Those are M8×1.25 studs from LMS (although the ones I got look like the 30 mm version), with the long end sunk in the adapter plate to put the other end flush with the nut on the far side of the spindle plate:

    5 inch 4 jaw chuck - installed - spindle nuts
    5 inch 4 jaw chuck – installed – spindle nuts

    And then it fits just like it grew there, although the jaws don’t have much clearance inside the interlock cover:

    5 inch 4 jaw chuck - installed - front view
    5 inch 4 jaw chuck – installed – front view

    Now I’m ready for the next set of coasters and, if the jaws stick out too far, I can gimmick the interlock switch for the occasion.

    If the truth be known, I ordered two sets of those studs along with the 4 inch 4 jaw chuck intended for the mini-lathe, so, if anything, I’m now over-prepared.

    The description of the 4 inch chuck seems inconsistent with its listed dimensions, which may be why I ended up with the larger chuck in the first place. You can never have enough chucks: all’s well that ends well.

  • Smashed Glass Coaster: Conformal Perimeter

    Smashed Glass Coaster: Conformal Perimeter

    Snugging the perimeter around the smashed glass fragments definitely improves the result:

    Smashed glass coaster - top view A
    Smashed glass coaster – top view A

    It’s just under 100 mm = 4 inch across the longest dimension and surprisingly glittery:

    Smashed glass coaster - top view B
    Smashed glass coaster – top view B

    The coaster is a five-layer sandwich half an inch thick:

    Smashed glass coaster - edge view
    Smashed glass coaster – edge view

    From the top:

    • Clear acrylic: 1.5 mm = 1/16 inch
    • Black acrylic: 1.5 mm = 1/16 inch
    • Clear acrylic: 3.2 mm = 1/8 inch
    • Mirror acrylic: 2.7 mm
    • Cork: 2.7 mm cut from a standard round coaster base

    The smashed glass pieces sit atop the mirror, so the trick is making the layers around it add up to the same thickness. This is not possible by adding the nominal dimensions, because cast acrylic sheet thickness isn’t well controlled; I’ve finally written the actual (metric!) thickness on the sheets so I can select which 1/8 Inch sheet has the proper thickness.

    A chipboard template (seen atop the finished coaster) verified the glass pieces fit easily within their openings:

    Smashed glass coaster - top view - fit template
    Smashed glass coaster – top view – fit template

    I laid the clear frame on the mirror, poured generous epoxy puddles along the middle of the fragment openings, eased the glass in place, and gently pressed the slabs down to get a uniform epoxy layer, with the excess oozing under the frame all around. Then lay the black frame around the glass atop the clear, squirt more epoxy along the gaps around the glass, pour more epoxy atop the fragments, ease the top sheet in place paying considerable attention to coaxing the bubbles along to the edge, align the sides, and wait.

    The epoxy cured while stuck atop a styrofoam pillar to let it drain smoothly off the edges:

    Smashed glass coaster - epoxy curing
    Smashed glass coaster – epoxy curing

    I encouraged the epoxy out of the acute corners, as shown by the larger puddles, over the next few hours until the epoxy stiffened up. Those puddles also show the transparent black tint, to the tune of four drops in 8 ml of epoxy, which turned out to just barely suffice for the job. The whole assembly sat level while curing, but the layers didn’t remain aligned even after gently shoving them around while the stack cured.

    The black epoxy joins nicely with the black frame layer to conceal most of the remaining bubbles. A different color frame with matching epoxy might looks less ominous, but colors more transparent than dark gray would likely reveal the bubbles.

    It Would Be Nice™ if the acrylic sheet on the top had a transparent plastic film cover, but it arrived with brown paper on both sides. Despite that, I spattered only a few tiny drops on the bare surface and managed to scrape most of them off without further damage.

    Overall, I think the conformal perimeter looks much better than the polygonal outline smashed glass coasters.

  • Smashed Glass Earrings: Sample Set

    Smashed Glass Earrings: Sample Set

    The POC earrings had a pair of 1.5 mm acrylic disks epoxied around the glass fragment, with the “gold” ring captured in a rebate around the rims. That process was both tedious and messy, so I tried laser-engraving a deeper rebate into a 3 mm sheet, then epoxying the fragment and the ring in place:

    Earrings - epoxy curing
    Earrings – epoxy curing

    They’re stuck to a strip of Kapton tape to keep the epoxy off the bottom surface of the glass, while aligning it with the surrounding disk.

    Peeling the protective film / plastic off reveals the acrylic disk:

    Earrings - 25 20 16 12 mm first look
    Earrings – 25 20 16 12 mm first look

    They all required more effort to remove the epoxy remaining around the ring, but it worked out better than I expected.

    A lighter background shows off their internal structure:

    Earrings - 25 20 16 12 mm set
    Earrings – 25 20 16 12 mm set

    A closer look at the pairs:

    • Earrings - 25 mm pair
    • Earrings - 20 mm pair
    • Earrings - 16 mm pair
    • Earrings - 12 mm pair

    As always, glooping clear epoxy around the edges fills many of the internal cracks and reduces the glittery aspect of all those glass-to-air-to-glass interfaces, but I don’t see another good way to keep the fragments under control.

    The results may not be up to a “fine jewelry” standard, whatever that may be, but a slipcase box definitely improves the presentation:

    Earrings - presentation case
    Earrings – presentation case

    If I had the courage of my convictions, I’d go for the Mr Clean look myself, but …

  • SJCAM M20: Another Battery Bites the Dust

    SJCAM M20: Another Battery Bites the Dust

    A little more than two years after replacing its internal battery, the SJCAM M20 camera on my Tour Easy once again wouldn’t last to the end of the driveway if I forgot to turn on the external battery pack. This time around, the camera was so firmly jammed in the printed seat frame mount that I had to cut the mount apart.

    Yup, that puppy is all swoll up:

    SJCAM M20 swollen battery - side view
    SJCAM M20 swollen battery – side view

    Poor thing looks like a tiny pillow:

    SJCAM M20 swollen battery - pouch
    SJCAM M20 swollen battery – pouch

    While I had it apart, I tried to clean / refurbish the button contacts on the top. Unfortunately, they’re pretty well buried in the camera frame and I was unwilling to dismantle the optics, remove the display, and gut the camera to find out if they were more accessible from the back surface:

    SJCAM M20 - switch internals
    SJCAM M20 – switch internals

    While all that was going on, I ran off a new mount in white PETG:

    SJCAM M20 - white case installed
    SJCAM M20 – white case installed

    I’m down to the last battery. The “4.35V” on the pillow indicates they’re special high-voltage lithium-polymer cells, so I can’t just drop a random lithium pouch cell in there and expect it to Just Work.

    I think the “782633” is the cell size, so, if I were willing to have a few thousand on the shelf, a 552525 pouch might fit. The reduced capacity wouldn’t be a problem, as it must just keep the camera’s clock ticking between rides.

    Drat!

  • Tour Easy Creaking: Seat Stay

    Tour Easy Creaking: Seat Stay

    Over the course of a few days, my Tour Easy recumbent developed a slight squeak that turned into a definite creak, then the seat started shifting slightly under hill-climbing forces. Of course, no force I could apply in the garage caused the slightest squeak / creak / motion. A decade ago this was due to a sheared screw at the dropout, but everything seemed to be in good order.

    So I applied a drop of penetrating oil to each of the many joints in the seat hardware, went on a few more rides, and eventually the seat started moving with normal pedaling forces.

    The left strut clamp looked fine:

    Tour Easy seat stay - left side
    Tour Easy seat stay – left side

    OK, it looks grubby. I’d rather ride than lick my bike clean.

    The right clamp definitely showed signs of motion:

    Tour Easy seat stay - right side slip
    Tour Easy seat stay – right side slip

    I extracted the strut assembly, degreased the clamps, reinstalled in reverse order, replaced the nuts, snugged everything down, and it’s all good again:

    Tour Easy seat stay - renutted
    Tour Easy seat stay – renutted

    Yeah, I should have replaced those screws, but I didn’t even have to take the wheel off, sooooo

  • Layered Paper Coaster: GCMC Test

    Layered Paper Coaster: GCMC Test

    A few more attempts at layered paper construction, done with plain white Art Paper of various vintages:

    Layered paper coasters
    Layered paper coasters

    The middle one comes from a version of the original GCMC marquetry shape generator, tweaked to produce just the frame SVG, called by a Bash script to change the sash width, and imported into LightBurn for laser control:

    LightBurn - Marq-6-0.6-0.0mm
    LightBurn – Marq-6-0.6-0.0mm

    I generated the plain disk for the bottom by deleting all the inner shapes.

    The left and right coasters use LightBurn’s Offset tool to reduce the size of the interior holes on successive layers:

    LightBurn - Marq-8-0.40-20.0mm-Layers
    LightBurn – Marq-8-0.40-20.0mm-Layers

    Although the GCMC version turned out OK, you’ll note it lacks the central disk, as I was unwilling to tweak the code enough to make the disk diameter vary with the kerf width.

    Applying the LB Offset tool requires selecting only the inner shapes (it has an option to ignore the inner shapes) and applying the appropriate offset. Because the tool remembers its previous settings, it’s straightforward to step the offset from 1.0 mm to 7.0 mm on successive patterns.

    Applying glue (from a glue stick!) to the bottom of each disk, aligning them atop each other, and pressing them together becomes tedious in short order. If I had to do a lot of these, I’d be tempted to add three wings (not at 120° angles!) around the perimeter with holes for pegs, then stacking the layers in a fixture to ensure good alignment. A polygonal perimeter would simplify trimming the tabs.

    Spray adhesive might be faster, but each layer would have sticky edges and the finished coaster would become a dust collector par excellence.

    I like the overall effect, but …

    The OpenSCAD source code as a GitHub Gist:

    #!/bin/bash
    # Layering paper cutouts
    # Ed Nisley KE4ZNU – 2022-08-21
    Flags='-P 4 –pedantic' # quote to avoid leading hyphen gotcha
    SVGFlags='–svg –svg-no-movelayer –svg-opacity=1.0 –svg-toolwidth=0.2'
    # Set these to match your file layout
    ProjPath='/mnt/bulkdata/Project Files/Laser Cutter/Coasters/Source Code'
    LibPath='/opt/gcmc/library'
    ScriptPath=$ProjPath
    Script='Marquetry Layers.gcmc'
    [ -z "$1" ] && leaves="6" || leaves="$1"
    [ -z "$2" ] && aspect="0.50" || aspect="$2"
    [ -z "$3" ] && center="0.0mm" || center="$3"
    numlayers=8
    sashmin=2.0
    sashstep=2.0
    sashmax=$(echo "$sashmin+$sashstep*($numlayers-1)" | bc)
    echo min: $sashmin step: $sashstep max: $sashmax
    for sash in $(seq $sashmin $sashstep $sashmax) ; do
    fn=Marq-$leaves-$aspect-$center-S$sash.svg
    echo Output: $fn
    gcmc $Flags $SVGFlags –include "$LibPath" \
    -D "NumLeaves=$leaves" -D "LeafAspect=$aspect" -D "CenterDia=$center" \
    -D "Sash=${sash}mm" \
    "$ScriptPath"/"$Script" > "$fn"
    done
    view raw layers.sh hosted with ❤ by GitHub
    // Marquetry Layers
    // Ed Nisley KE4ZNU
    // 2022-08-21 layered paper test piece
    layerstack("Frame","Leaves","Rim","Base","Center","Tool1"); // SVG layers map to LightBurn colors
    //—–
    // Library routines
    include("tracepath.inc.gcmc");
    include("varcs.inc.gcmc");
    FALSE = 0;
    TRUE = !FALSE;
    //—–
    // Command line parameters
    // -D various useful tidbits
    // add unit to speeds and depths: 2000mm / -3.00mm / etc
    if (!isdefined("OuterDia")) {
    OuterDia = 120.0mm;
    }
    if (!isdefined("CenterDia")) {
    CenterDia = 20.0mm;
    }
    if (!isdefined("NumLeaves")) {
    NumLeaves = 8;
    }
    if (!isdefined("Sash")) {
    Sash = 4.0mm;
    }
    if (!isdefined("LeafAspect")) {
    LeafAspect = 0.50;
    }
    // Leaf values
    LeafStemAngle = 360.0deg/NumLeaves; // subtended by inner sides
    LeafStemHA = LeafStemAngle/2;
    LeafOAL = OuterDia/2 – Sash – (Sash/2)/sin(LeafStemHA);
    LeafWidth = LeafAspect*LeafOAL;
    L1 = (LeafWidth/2)/tan(LeafStemHA);
    L2 = LeafOAL – L1;
    // message("Len: ",LeafOAL," L1: ",L1," L2: ",L2);
    LeafTipHA = to_deg(atan(LeafWidth/2,L2)); // subtended by outer sides
    LeafTipAngle = 2*LeafTipHA;
    // message("Width: ",LeafWidth);
    // message("Tip HA: ",LeafTipHA);
    LeafID = CenterDia + 2*Sash;
    LeafOD = LeafID + LeafOAL;
    // message("ID: ",LeafID," OD: ",LeafOD);
    // Find leaf and rim vertices
    P0 = [(Sash/2) / sin(LeafStemHA),0.0mm];
    m = tan(LeafStemHA);
    y0 = -(Sash/2) / cos(LeafStemHA);
    if (CenterDia) { // one sash width around center spot
    a = 1 + pow(m,2);
    b = 2 * m * y0;
    c = pow(y0,2) – pow(LeafID/2,2);
    xp = (-b + sqrt(pow(b,2) – 4*a*c))/(2*a);
    xn = (-b – sqrt(pow(b,2) – 4*a*c))/(2*a);
    y = xp*tan(LeafStemHA) – (Sash/2) / cos(LeafStemHA);
    P1 = [xp,y];
    if (FALSE) {
    message("a: ",a);
    message("b: ",b);
    message("c: ",c);
    message("p: ",xp," n: ",xn," y: ",y);
    }
    }
    else { // force sharp point without center spot
    P1 = P0;
    }
    P2 = P0 + [L1,LeafWidth/2];
    P3 = P0 + [LeafOAL,0mm];
    P4 = P3 + [Sash/sin(LeafTipHA),0.0mm];
    P5r = P4.x * sin(LeafTipHA) / sin(180deg – LeafStemHA – LeafTipHA);
    P5 = rotate_xy([P5r,0.0mm],LeafStemHA);
    P6 = rotate_xy(P4,LeafStemAngle);
    t2 = pow(tan(-LeafTipHA),2);
    a = 1 + t2;
    b = -2 * t2 * P4.x;
    c = t2 * pow(P4.x,2) – pow(P3.x,2);
    xp = (-b + sqrt(pow(b,2) – 4*a*c))/(2*a);
    xn = (-b – sqrt(pow(b,2) – 4*a*c))/(2*a);
    y = (xp – P4.x)*tan(-LeafTipHA);
    // message("p: ",xp," n: ",xn," y: ",y);
    P4a = [xp,y];
    P6a = rotate_xy(P4a,LeafStemAngle – 2*atan(P4a.y,P4a.x));
    if (FALSE) {
    message("P0: ",P0);
    message("P1: ",P1);
    message("P2: ",P2);
    message("P3: ",P3);
    message("P4: ",P4);
    message("P4a: ",P4a);
    message("P5: ",P5);
    message("P6: ",P6);
    message("P6a: ",P6a);
    }
    // Construct paths
    LeafPoints = {P1,P2,P3,[P2.x,-P2.y],[P1.x,-P1.y]};
    if (P0 != P1) {
    StemArc = varc_ccw(P1 – [P1.x,-P1.y],LeafID/2);
    StemArc += [P1.x,-P1.y];
    LeafPoints += StemArc;
    }
    RimChord = length(P4a – P6a);
    RimThick = OuterDia/2 – Sash – length(P5);
    RimPoints = {P4a,P5,P6a};
    RimArc = varc_cw(P4a – P6a,P4a.x);
    RimArc += P6a;
    RimPoints += RimArc;
    //— Lay out the frame
    linecolor(0xff0000);
    layer("Frame");
    if (CenterDia) {
    goto([CenterDia/2,0mm]);
    circle_cw([0mm,0mm]);
    }
    repeat(NumLeaves;i) {
    a = (i-1)*LeafStemAngle;
    tracepath(rotate_xy(LeafPoints,a));
    }
    repeat(NumLeaves;i) {
    a = (i-1)*LeafStemAngle;
    tracepath(rotate_xy(RimPoints,a));
    }
    linecolor(0xff0000);
    goto([OuterDia/2,0]);
    circle_cw([0mm,0mm]);

  • Acrylic Coasters: Edge Finishing, Round 4

    Acrylic Coasters: Edge Finishing, Round 4

    Lacking a 4-jaw chuck for the lathe, this should suffice:

    Coaster Epoxy Rim - chuck-in-chuck setup
    Coaster Epoxy Rim – chuck-in-chuck setup

    Which is just the Sherline 4-jaw chuck chucked in the lathe’s 3-jaw chuck, with both chuck Jaw 1 positions lined up and marked on the acrylic disk fixture. The picture is a recreation set up after the fact, because I lack a good picture of the overall scene.

    Now it’s easy enough to center the fixture, stick the coaster in place with reasonable accuracy, then tweak the Sherline chuck to center the coaster:

    Coaster Epoxy Rim - turning setup
    Coaster Epoxy Rim – turning setup

    Because the bottom layer is a laser-cut disk, eyeballometrically aligning its edge to a simple pointer worked surprisingly well:

    Coaster Epoxy Rim - locating mirror edge
    Coaster Epoxy Rim – locating mirror edge

    Turning the OD down to match the bottom disk meant I could finally get decent results with zero drama:

    Coaster Epoxy Rim - turned samples
    Coaster Epoxy Rim – turned samples

    From the bottom, this one has a 3 mm mirror, the 3 mm fluorescent green frame + petals, and a 1.6 mm top sheet:

    Coaster Epoxy Rim - turned 6 petal mirror
    Coaster Epoxy Rim – turned 6 petal mirror

    This one has a 3M double-sided tape with low-surface-energy adhesive layers between the mirror and the fluorescent blue frame + petal, with epoxy between the top layer and the frame.

    Coaster Epoxy Rim - turned 4 petal
    Coaster Epoxy Rim – turned 4 petal

    If I never tell anybody, they’ll think the slightly granular look of the tape was deliberate; it looks OK to me.

    And, for completeness, the crash test dummy from the start of this adventure:

    Coaster Epoxy Rim - turned 6 petal black
    Coaster Epoxy Rim – turned 6 petal black

    I don’t know how to avoid the bubbles, as the usual torch-the-top and pull-a-vacuum techniques pop bubbles at the epoxy-air interface. These bubbles are trapped under the top acrylic sheet, even though I was rather painstaking about easing the layer down from one side to the other while chasing bubbles along.

    Maybe I can define bubbles as Part of the Art?

    Definitely fancier than chipboard, although not nearly as absorbent.