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

  • High-Impact Art: Smashed Glass Earrings, Proof of Concept

    High-Impact Art: Smashed Glass Earrings, Proof of Concept

    If you’re a particularly sharp person, these may accentuate your wardrobe:

    Earrings - 12mm - finished
    Earrings – 12mm – finished

    They’re fragments of smashed tempered glass, epoxied into laser-cut disks, with a ring providing some structural support. Although it’s hard to tell from the photos, the fragments sit flush with one side of the disk, which is likely the side you want closest to your carotid artery:

    Earrings - 12mm - finished
    Earrings – 12mm – finished

    Each chunk consists of a few smaller cuboids, so you get internal reflections from the minute air gaps between them. They’re not diamonds, but they’re surprisingly glittery in the proper light. Bonus: you can see right through!

    The “gold” band around the disk is a beading ring held in a notch engraved around both disks:

    Earrings - rings
    Earrings – rings

    The smaller ring is 12 mm OD, the larger is 25 mm, with 16 mm (the descriptions says 15, but ya get what ya get) and 20 mm available for other glass fragment sizes.

    The engraved recess (green) is slightly larger than the OD to allow the perimeter cut to proceed through a thinner section:

    Earring templates - 25 20 16 12 mm
    Earring templates – 25 20 16 12 mm

    Cross-hatch engraving puts a steep edge all around the recess, so the ring fits with just a little slack and turns freely around the disks.

    You will, of course, have different glass fragments requiring different shapes, but the outlines came from the same process I used to make the palette organizing the fragments:

    Smashed glass palette - fresh cut
    Smashed glass palette – fresh cut

    You (well, I) can just import that layout, copy the outline of the chunk to be used, then delete the rest. Mirror the outline so the engraved sides of the disks fit together around the chunk, position symmetrically in the template halves, and fire the laser.

    Affixing the fresh-cut disk and its glass chunk to a strip of Kapton tape (sticky side up) holds them in proper alignment and prevents the epoxy from leaking out the bottom:

    Earrings - 12mm - taped
    Earrings – 12mm – taped

    With everything lined up, run a small bead of epoxy around the chunk, squish the top disk in place, and line up the notches. When the epoxy cures, peel the earring off the tape and slide a jump ring into the notch.

    As a finishing touch, you’d add a suitable ear hook or stud, but I think it’s fair to assume anything from Amazon would consist of the finest arsenic-plated plutonium and be completely unsuitable for skin contact. Neither of us have any piercings, so I cannot provide enticing action photos.

    The 25 mm versions failed because I made the outlines such a snug fit around the chunks they didn’t quite fit:

    Earrings - 25mm - failed
    Earrings – 25mm – failed

    Protip: do not attempt to coerce two rigid bodies into alignment by applying firm pressure, particularly when one of them is already-broken glass.

    The small earrings weigh 0.7 g each and a 25 mm one (well, the parts for a large one) comes in a bit over 3 g, plus whatever hardware goes in / on / around your ear.

    This was (obviously) an exercise in small-scale laser machining, rather than a venture into haute couture. In the highly unlikely event you can’t live without a pair of custom-designed high-impact earrings, I’ll shut up and take your money … let me know if you want little or big. Black is the new black; I do have other colors, but who are you kidding?

    The SVG images 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.

  • Smashed Glass Work Palette

    Smashed Glass Work Palette

    Having a myriad small glass fragments and an idea for their use created the problems of organizing the pieces while not losing them under the bench.

    As with the shattered shot-glass coaster, start by lining up the suspects on the scanner:

    Small fragments
    Small fragments

    Blow out the contrast, flip right-to-left, then mask them en masse:

    Small fragments - masked
    Small fragments – masked

    Delete the images (inside their selection masks) to create a binary mask:

    Small fragments - masks
    Small fragments – masks

    Have LightBurn trace the binary images, wrap a rounded rectangle around the lot of them, duplicate the rectangle as a base plate, then fire the laser:

    Smashed glass palette - fresh cut
    Smashed glass palette – fresh cut

    They’re not secured in their sockets, but they won’t fall out unless I fat-finger the whole affair:

    Smashed glass palette - loaded
    Smashed glass palette – loaded

    The thing that takes getting used to: the whole process was about two hours of wall clock time from start to finish, with a leisurely breakfast and KP in the middle.

  • High Impact Art: Smashed Glass Coaster

    High Impact Art: Smashed Glass Coaster

    Given a few pounds of smashed tempered glass:

    NHR Crash - tempered glass
    NHR Crash – tempered glass

    Lay some pieces atop an acetate sheet (to prevent scratching) on the scanner, grab the whole thing, then isolate an interesting chunk:

    Smashed Glass - dark - piece 1
    Smashed Glass – dark – piece 1

    Next time: flip the image left-to-right to match the glass piece as seen from the top, because the scanner was looking at the bottom.

    The weird purple background started as black, but blowing out the contrast while ignoring the color mis-correction makes the next step easier.

    Trace around the perimeter with Scissors Select, clean up the result in Quick Mask mode, expand the selection by a few pixels to improve clearance, then turn it into a two-color image mask:

    Smashed Glass - piece 1 - outline
    Smashed Glass – piece 1 – outline

    Import the mask into Lightburn, trace it into vector paths (which is trivially easy and accurate given such a high-contrast image), then cut a chipboard prototype to make sure it fits:

    Smashed Glass - piece 1 - acrylic mount
    Smashed Glass – piece 1 – acrylic mount

    Clean up any misfits, test as needed, cut the inner shape and outer perimeter from 1.5 mm black acrylic, cut just the outer perimeter from 3 mm clear acrylic. Put the piece of black acrylic matching the glass shape into the scrap box.

    Mix up a few milliliters of clear pourable epoxy, butter up the clear acrylic, lay the black acrylic on top, line up the edges, then gently place the shattered glass into the cutout:

    Smashed Glass - piece 1 - acrylic top
    Smashed Glass – piece 1 – acrylic top

    Next time: apply gentle pressure, perhaps through a flexy sheet, to ensure the entire glass surface contacts the epoxy layer while squeezing out the bubbles. This will surely skate the glass across the acrylic, so don’t leave it unsupervised.

    The relatively clear areas show where epoxy eased its way into the cracks between the granules; there is no correlation between the air bubbles and unfilled cracks. The epoxy had the viscosity of warm honey and I didn’t expect it to flow so easily, but it doesn’t affect the outcome.

    Wait for a day, no matter how hard that may seem, for the epoxy to cure. Leave the small cup holding the remnants of the mixed epoxy nearby so you can test the cure without disturbing the Main Event.

    The bottom looks pretty much like the top:

    Smashed Glass - piece 1 - acrylic bottom
    Smashed Glass – piece 1 – acrylic bottom

    The shattered edge reflects off the bottom of the clear acrylic, as seen through the side:

    Smashed Glass - piece 1 - acrylic side
    Smashed Glass – piece 1 – acrylic side

    Matching the perimeter to the fragment would be interesting, despite my low-vertex-polygon fixation.

    It could become a paperweight or a (shot glass) coaster.

  • High Impact Art(ifact)

    High Impact Art(ifact)

    At first we thought a mighty crunch in the morning meant the trash collection truck had dropped a garbage bin from a great height, but the sound of sirens and a myriad flashing lights revealed the true cause in our neighbor’s front yard:

    NHR Crash - frontal view
    NHR Crash – frontal view

    The extent of the damage was more apparent from the road side:

    NHR Crash - passenger side
    NHR Crash – passenger side

    Another one that ain’t gonna buff right out.

    The driver was walking around uninjured and the ambulance left quietly.

    A day later, the trajectory became apparent:

    NHR Crash - trajectory
    NHR Crash – trajectory

    The right side barely kissed the tree on the right, but the front wheel hooked the utility pole (that’s the new pole in the picture), snapped it off at ground level in addition to the usual break maybe ten feet up, and bounced a piece off the other tree:

    NHR Crash - utility pole
    NHR Crash – utility pole

    I didn’t know you could shatter a cast aluminum alloy wheel, but the missing half of the outer face was lying amid the rather scrambled stone wall along driveway.

    We’re reasonably sure we know the cause. Feel free to draw your own conclusions.

    After the flatbed hauled away the car and everybody left, I harvested a few pounds of interesting debris from the lawn:

    NHR Crash - tempered glass
    NHR Crash – tempered glass

    It’s tempered glass from the driver-side windows, shattered into small chunks and barely hanging together in those sheets. Laminated windshield glass is entirely different stuff.

    The smaller chunks glitter like jewels:

    NHR Crash - tempered glass fragments
    NHR Crash – tempered glass fragments

    Obviously, the window had a bit of tint.

    The smallest chunk, seen from its flat surface, shows the cuboid fragments:

    NHR Crash - tempered glass fragment - front
    NHR Crash – tempered glass fragment – front

    A side view shows more complexity:

    NHR Crash - tempered glass fragment - side
    NHR Crash – tempered glass fragment – side

    Tempering prevents a glass sheet from shattering into long knife-blade shards. Although the edges of the fragments are not keen, we are dealing with broken glass: they are sharp.

    How sharp? They make glass knives for slicing eyes and cells.

    Broken tempered glass also sheds razor-edged flakes perfectly shaped to penetrate bike tires, although most roadside glass comes from ordinary beverage bottles. The tiniest flakes can make a mess of your eyes, so exercise at least some rudimentary shop safety practices.

    Those slabs ought to be good for something, even if they fall apart at the slightest touch …

  • Please Close The Gate Signage: Painted

    Please Close The Gate Signage: Painted

    It seems two months of sunlight will fade laser charred MDF down to its original state:

    Please Close The Gate - unpainted faded
    Please Close The Gate – unpainted faded

    That’s through a thick layer of indoor urethane sealant slathered over MDF without any surface prep. Obviously, not removing the char had no effect on the outcome. On the upside, the urethane did a great job of protecting the MDF from rainfall.

    So. Back to the shop.

    Lacking wider masking tape, two strips of tape laid along a cut-to-suit slab of fresh MDF will serve as a paint mask:

    Please Close The Gate - masked engraving
    Please Close The Gate – masked engraving

    Belatedly I Learned: cut the tape close to the edge, then fold it under so the autofocus pen can’t possibly snag it en passant.

    Shoot the entire surface with a couple of black enamel rattlecan coats:

    Please Close The Gate - masked paint
    Please Close The Gate – masked paint

    Yes, the engraved areas look reddish, most likely due to another complete lack of surface prep. Perhaps brushing / vacuuming / washing would remove some of the char, but let’s see how it behaves with no further attention.

    Peel the tape, weed the letters / antlers, slather on a coat of urethane, and it looks downright bold:

    Please Close The Gate - sealed
    Please Close The Gate – sealed

    Of course, if those two tape strips don’t exactly abut, the paint produces a nasty line:

    Please Close The Gate - mask gap
    Please Close The Gate – mask gap

    Should you overlap the strips a wee bit to ensure cleanliness, the engraved surface will then have a noticeable (in person, anyhow) discontinuity due to the laser losing energy in two tape layers, which wouldn’t matter in this application. We defined the few paint lines as Good Enough™ for the purpose; a strip of absurdly wide masking tape is now on hand in anticipation of future need.

    Burnishing the tape might have prevented paint bleed around the engraved areas:

    Please Close The Gate - paint creep
    Please Close The Gate – paint creep

    But, given that I was painting raw / unfinished MDF with an unsmooth surface, burnishing probably wouldn’t produce a significantly better outcome.

    By popular request, the new signs sit a few grids lower on the gates:

    Please Close The Gate - fresh painted
    Please Close The Gate – fresh painted

    Perhaps these will outlast the garden season …

  • OMTech 60 W Laser: Air Assist Pump Filter

    OMTech 60 W Laser: Air Assist Pump Filter

    The air assist pump sits in the right rear of the OMTech laser’s main compartment:

    OMTech 60W laser - Z motor - air pump
    OMTech 60W laser – Z motor – air pump

    Where it is, of course, exposed to all the usual dust / fragments / fumes / smoke generated by laser cutting & engraving, enhanced by my attention to getting good air flow over the platform. The picture shows the base plate in as-delivered condition, which it will never resemble ever again.

    The problem: any crud in the air can clog the pump or contaminate the laser focus lens.

    Four screws into threaded holes hold the pump to the base plate, secured with jam nuts on the outside.

    The air inlet is a round fitting centered on the bottom of the pump housing:

    OMTech 60 W Laser Air Assist - pump inlet
    OMTech 60 W Laser Air Assist – pump inlet

    You’ll note the out-of-focus crud scattered on the base plate.

    The general idea is to drill a hole through the base plate, put a snorkel on the inlet, and have it inhale fresh, relatively clean, basement air from outside the cabinet. The trick will be not touching the base plate with anything solid, because the pump vibrates like crazy; its four squishy standoffs do a great job of isolating the tremors from the base screwed to the laser cabinet.

    Having a few other things going on at the moment, I just laid two generous wads of cheesecloth where they can filter the bigger chunks out of the air stream:

    OMTech 60 W Laser Air Assist - cheesecloth filter installed
    OMTech 60 W Laser Air Assist – cheesecloth filter installed

    The air flow meter says the pump still delivers 12 l/m to the nozzle, so the cheesecloth has no effect compared to four or five feet of 4 mm ID tubing.

    A doodle summarizes the inlet fitting dimensions:

    OMTech 60 W Laser Air Assist - pump inlet fitting measurements
    OMTech 60 W Laser Air Assist – pump inlet fitting measurements

    That looks like a 3D printed disk with a snout for a short air hose should do the trick, with a thin gasket sealing the disk to the fitting.

    Now I can throw that piece of paper out …

  • Replacement Muntin Clips

    Replacement Muntin Clips

    Terminology I had to look up:

    • Window: something in a wall you can see through
    • Sash: a sliding panel in a window
    • Mullion: vertical post separating two windows
    • Muntin: strips separating glass panes in a sash

    TIL: Muntin, which I’d always known was called a Mullion.

    With that as preface, one of Mary’s quilting cronies lives in a very old house updated with vinyl windows sporting wood muntins arranged in a grille. The wood strips forming the grille end in plastic clips that snap into the sash, thereby holding the grill in place to make the window look more-or-less historically correct, while not being a dead loss as far as winter heating goes.

    Time passed, sun-drenched plastic became brittle, and eventually enough clips broke that the grilles fell out. An afternoon quilting bee produced a question about the possibility of making a 3D printed clip, as the original manufacturer is either defunct or no longer offers that particular style of clip as a replacement part.

    Well, I can do that:

    Window Muntin Clips
    Window Muntin Clips

    The original is (obviously) the transparent injection-molded part in the upper left. The other two come hot off the M2’s platform, with the one on the right showing the support material under the sash pin.

    The solid model looks about like you’d expect:

    Window Muntin Clip - solid model
    Window Muntin Clip – solid model

    There is obviously no way to build it without support material, so I painted the bottom facet of the sash pin with a PrusaSlicer support enforcer:

    Window Muntin Clip - PrusaSlicer
    Window Muntin Clip – PrusaSlicer

    The pin comes out slightly elongated top-to-bottom, but it’s still within the tolerances of the original part and ought to pop right into the sash. We’ll know how well it works shortly after the next quilting bee.

    The doodle with useful measurements amid some ideas that did not work out:

    Window Muntin Clip - Dimension Doodle
    Window Muntin Clip – Dimension Doodle

    The OpenSCAD source code as a GitHub Gist:

    // Window Muntin Clips
    // Ed Nisley KE4ZNU June 2022
    Layout = "Show"; // [Build, Show]
    /* [Hidden] */
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    ID = 0;
    OD = 1;
    LENGTH = 2;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    //———————-
    // Dimensions
    ClipOA = [13.0,18.7,8.0];
    TongueAngle = 70;
    TongueOA = [14.0,10.0,1.8 – 0.2]; // minus Z windage for angular slices
    BuildGap = 5.0;
    //———————-
    // 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);
    }
    //———————-
    // Pieces
    module Shell() {
    // Clip base as 2D polygon
    // Magic numbers from measurements
    cx = ClipOA.x;
    cy = ClipOA.y;
    cz = ClipOA.z;
    ClipPts = [
    [0,0],[0,cz],[0.3,cz],
    [1.0,cz-1.0],[2.0,cz-2.3],[2.0,cz-3.0],[1.3,cz-3.5],
    [1.3,1.6],[17.4,1.6],
    [17.4,cz-3.5],[16.7,cz-3.0],[16.7,cz-2.3],[17.7,cz-1.0],
    [18.4,cz],[18.7,cz],[18.7,0.0],[0,0]
    ];
    difference() {
    translate([-ClipOA.x,-ClipOA.y/2,0])
    rotate([90,0,90])
    linear_extrude(height=ClipOA.x,convexity=3)
    polygon(convexity=3,points=ClipPts);
    translate([-(ClipOA.x – 3.0/2 + Protrusion),0,0])
    cube([3.0 + Protrusion,ClipOA.y – 2*1.3,4*1.6],center=true);
    }
    }
    module Tongue() {
    tx = TongueOA.x;
    ty = TongueOA.y;
    tz = TongueOA.z;
    tt = ty – 2*sqrt(2)*tz; // width at top of tapers
    td = ThreadWidth; // min size of features
    intersection() {
    rotate([0,-TongueAngle,0]) {
    difference() {
    union() {
    hull() {
    for (j=[-1,1]) {
    translate([td/2,j*(ty – td)/2,td/2])
    cube(td,center=true);
    translate([td/2,j*(tt – td)/2,tz – td/2])
    cube(td,center=true);
    }
    translate([10.0,0,0])
    rotate(180/12)
    cylinder(d=ty,h=td,center=false,$fn=12);
    translate([10.0,0,tz – td/2])
    rotate(180/12)
    cylinder(d=tt,h=td,center=false,$fn=12);
    };
    translate([10.0,0,-5.2])
    rotate(180/12)
    cylinder(d=5.0,h=5.2,center=false,$fn=12);
    translate([10.0,0,-5.2])
    rotate(180/12)
    resize([0,0,2.0])
    sphere(d=5.0/cos(180/12),$fn=12);
    }
    if (false)
    translate([10.0,0,-10]) // stiffening hole
    rotate(180/6)
    PolyCyl(0.1,20,6);
    }
    }
    cube([2*ClipOA.x,2*ClipOA.y,2*IntegerMultiple(13.0,ThreadThick)],center=true);
    }
    }
    module Clip() {
    Shell();
    Tongue();
    }
    //———————-
    // Build it
    if (Layout == "Show") {
    Clip();
    }
    if (Layout == "Build") {
    Clip();
    }