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

  • Chest Freezer Basket Shims

    Chest Freezer Basket Shims

    Our new chest freezer has three baskets sliding along ridges just under the lid, but they seem to be just slightly too short for the ridge spacing. After having a basket fall off the rails once too often, I cut shims from 3 mm white acrylic and stuck them in place with double-sided foam tape to soak up the extra space:

    Chest freezer basket shims
    Chest freezer basket shims

    Each shim is 300×8 mm with the neatly rounded corners that are easy to do with a laser. They may not look like they grew there, but it’s tidy enough.

    Perhaps the situation should have become a warranty claim, but a few minutes applying a tool to material I have on hand made the problem Go Away.

    Which is entirely good enough for me and pretty much what I do around here most of the time anyway.

  • Shower Mat Hangers

    Shower Mat Hangers

    A new Gorilla Grip shower mat defeated the spring-loaded clip its predecessor dangled on between showers, so I applied a contour gauge to the shower stall, copied the shapes to paper, scanned them, then fit some curves:

    Shower Mat Hanger - curve fitting
    Shower Mat Hanger – curve fitting

    Combine the two to get a model of the shelf, subtract it from a rectangle, and produce a cardboard test piece:

    Shower mat hanger - cardboard test 1
    Shower mat hanger – cardboard test 1

    Put a hook on the bottom, a small bump on the top, and round the corners:

    Shower Mat Hanger - LightBurn layout
    Shower Mat Hanger – LightBurn layout

    Function-test a cardboard pair:

    Shower mat hanger - cardboard test 2
    Shower mat hanger – cardboard test 2

    They clear the hump along the edge and fit snugly across the front and sloping underside, so make an MVP from 6 mm acrylic:

    Shower mat hanger - acrylic
    Shower mat hanger – acrylic

    Laser-cut acrylic may be too brittle for the job, but it gets the mat off the floor for drying and we’ll see how this works before doing anything more complex.

  • Manual Drive Gear for NRC Rotary Positioner

    Manual Drive Gear for NRC Rotary Positioner

    While aligning the Sherline’s laser aligner, an old rotary positioner, apparently made by NRC, emerged from the Box o’ Optical Lab equipment:

    Rotary positioner - as found
    Rotary positioner – as found

    That’s not quite “as found”, because it came festooned with the remains of an obviously lab-built Peltier-cooled laser (?) diode fixture:

    Rotary positioner - Peltier diode fixture
    Rotary positioner – Peltier diode fixture

    The positioner sported an obviously aftermarket tapped hole in the side, presumably for mounting to a support:

    Rotary positioner - tapped mounting hole
    Rotary positioner – tapped mounting hole

    The knob was apparently intended for fine angle adjustment, but it spun freely. Loosening another setscrew on the side released its well-worn parts:

    Rotary positioner - drive gear - OEM knob
    Rotary positioner – drive gear – OEM knob

    It’s not clear what the brown ring did, back when it did something, but there were no signs of stripped-off teeth or other debris in the recess; it is a very sloppy fit on the pin holding the knob. The knob may have had a compliant surface engaging the top of the ring, made with a long-since fossilized substance.

    I figured this was a great excuse to renew my acquaintance with the BOSL2 gear generator:

    Rotary positioner - drive gear - solid model
    Rotary positioner – drive gear – solid model

    It turns out the rotary ring has triangles, not gear teeth:

    Rotary positioner - tooth detail
    Rotary positioner – tooth detail

    However, setting the gear tooth pressure angle to 45° produces a reasonable triangle:

    Rotary positioner - drive gear - solid model - end view
    Rotary positioner – drive gear – solid model – end view

    Even so, getting a functional knob required many iterations, primarily because I can’t measure any of the details and had to figure the fit by cut-and-try:

    Rotary positioner - drive gear - gallery
    Rotary positioner – drive gear – gallery

    The little white dots were an excuse to use the MMU3 for multi-material printing, because why not.

    In truth, the knob doesn’t work particularly well, as the forces from the triangular teeth on the rotary ring tend to jam the knob against its pin. The knob might work better with splines driving a squishy TPU tire riding the crests of the rotary ring teeth than a real gear. Perhaps that’s what the original brown ring did before it fossilized.

    For now, the positioner returns to the Box o’ Optics Lab Stuff, because it’s the wrong hammer for the Sherline’s laser aligner. It may emerge for a future project, when I’ll have more motivation to build a functional knob.

    The OpenSCAD source code as a GitHub Gist:

    // Rotary positioner drive gear with knob
    // Ed Nisley – KE4ZNU
    include <BOSL2/std.scad>
    include <BOSL2/gears.scad>
    NumSides = 4*3*4;
    $fn=NumSides;
    Protrusion = 0.1; // make holes end cleanly
    HoleWindage = 0.2; // make holes large enough to fit
    ShaftOD = 5.5;
    Knurling = "trunc_ribs";
    difference() {
    cyl(h=9.5,d=16.0,anchor=BOTTOM,texture=Knurling,tex_size=[3.0,4.0]) position(TOP)
    cyl(h=1.8,d=15.2,circum=false,anchor=BOTTOM) position(TOP)
    color("Green")
    scale([1.03,1.03,1]) // nominal to physical hackery
    spur_gear(diam_pitch=60.0,teeth=24,pressure_angle=45,thickness=4.7,anchor=BOTTOM);
    down(Protrusion) {
    cyl(h=1.6,d=8.2 + HoleWindage,circum=true,anchor=BOTTOM);
    cyl(h=25,d=ShaftOD + HoleWindage,circum=true,anchor=BOTTOM);
    }
    }
    color("Red")
    right((8.2 + 16.0)/4)
    cyl(h=0.6,d=2.0,circum=false,anchor=BOTTOM);

  • Sherline Laser Aligner Realignment

    Sherline Laser Aligner Realignment

    With the Sherline CNC mill once again able to move under its own power, an hour or so of tweakage got the laser aligner settled in its new home:

    Sherline laser aligner - overview
    Sherline laser aligner – overview

    It’s (still) an upcycled laser line projector, minus the cylindrical lens stretching the dot into a line, running from a pair of AA alkaline cells:

    Sherline laser aligner - rear view
    Sherline laser aligner – rear view

    The three small screws provide simpleminded angle adjustment, with the disadvantage of simultaneously moving the lens in the XY plane.

    The upper bubble level shows it’s not at all vertical:

    Sherline laser aligner - front view
    Sherline laser aligner – front view

    That’s because the beam must fall down the middle of the Sherline’s spindle bore:

    Sherline laser aligner - beam at spindle top
    Sherline laser aligner – beam at spindle top

    Getting the alignment right requires a mirror on the tooling plate, which I will not attempt to photograph again, reflecting the beam upward through the spindle, where it will light up the bottom of the no-longer-a-line projector’s lens mount. When that happens, the projector is boresighted on the spindle, regardless of whether the tooling plate is perpendicular to the local gravitational field.

    With the Z axis / spindle near the top of its travel, screwing the lens (mounted in a toolholder) onto the spindle produces a defocused beam on the tooling plate:

    Sherline laser aligner - defocused spot - on scale
    Sherline laser aligner – defocused spot – on scale

    If the spot doesn’t look similarly round-ish, then the beam isn’t completely filling the entrance pupil of the lens and you must twiddle the projector’s angle / position until it does.

    With that done, running the Z axis to put the lens about 30 mm above the plate produces a suitably teeny spot:

    Sherline laser aligner - focused spot on scale
    Sherline laser aligner – focused spot on scale

    The Sherline’s previous home atop that same gray countertop had been firmly affixed to the basement wall, with the gantry and laser projector screwed to the floor joists: everything immovable. The countertop now sits atop a workbench not firmly affixed to anything: a good solid bump will likely knock the Sherline out of alignment with the beam.

    How often that happens and how awful recovery will be remains to be seen. For now, It Just Works™ again.

    Feeding Sherline aligner into the search box will reveal much of the backstory.

    I extracted an XZ positioner from the Box o’ Optics Lab Stuff before coming to my senses: this is not nearly such a critical application.

  • Sherline vs. LinuxCNC 2.9.8

    Sherline vs. LinuxCNC 2.9.8

    Notes on finally getting the Sherline CNC mill operating in its new home, with a suitable Axis startup image:

    Sherline setup 2026-06
    Sherline setup 2026-06

    The gray countertop from its former home sits on foam strips soaking up a slight warp with enough isolation to keep things quiet.

    The gantry required the usual fiddling to make the cable hoist the Z axis directly upward, with the orange flag on the counterweight barely visible below the monitor.

    I recently touched the box of precision XYZ positioners and there might be something useful, albeit grossly overqualified, in there to simplify dropping the laser pointer beam directly through the spindle bore.

    A clean installation of LinuxCNC 2.9.8 on an ancient Dell Optiplex 9020 proceeded smoothly. Installing x11vnc let the rest of the proceedings happen from upstairs in the Comfy Chair. For unknown reasons, vinagre works better than Reminna as a VNC client, after recalling F11 enters / exits fullscreen mode.

    The mesaflash utility accompanying LinuxCNC 2.9.8 did not recognize the Mesa 6i25 card. Fetching & compiling the most recent version (3.5.17) cleared that hump and flashed the bitmap:

    sudo mesaflash --verbose --device 5i25 --write 5i25/configs/hostmot2/5i25_prob_rfx2.bit
    

    The 6i25 wants to be known as a 5i25, with its jumpers in their default positions:

    Mesa 6i25 - jumper locations
    Mesa 6i25 – jumper locations

    For unknown reasons, the button originally known as btn-trigger became btn-joystick for a while and has now reverted to btn-trigger. It’s labeled 1 in the four-button cluster:

    Logitech Dual-Action Gamepad - relabeled
    Logitech Dual-Action Gamepad – relabeled

    Which required changing the pin name in the Kicad library component:

    Sherline HAL schematic - Logitech button 1 name
    Sherline HAL schematic – Logitech button 1 name

    Which required converting the old Kicad library format into the new Kicad library format, a completely automatic process without, AFAICT, any unpleasant side effects.

    The new name fed into the schematic as expected, after minor fumbling while re-adding the modified component and setting its annotation number:

    Sherline HAL schematic - Logitech AZ button logic
    Sherline HAL schematic – Logitech AZ button logic

    The X axis home microswitch has (apparently) become more bouncy while it was idle, so I increased the number of samples before HAL sees a change in that GPIO input:

    Sherline HAL schematic - home switch debounce
    Sherline HAL schematic – home switch debounce

    The dbounce block runs in the servo thread at 1 m per tick, so those 20 samples take all of 20 ms while the X axis moves 0.15 mm. At some point I should apply a scope to that switch, but for now It Just Works™.

    Considerably to my surprise, compiling the modified Kicad schematic into a HAL file proceeded without incident, despite various Python updates in the last five years.

    Kicad produces an “intermediate XML file” containing the netlist data intended for a conversion / export program, which is basically what my Kicad-to-HAL lashup does. I told Kicad to use Bash’s true command as a converter:

    Sherline HAL schematic - netlist export
    Sherline HAL schematic – netlist export

    So I can run the Kicad-to-HAL converter manually:

    python ../Kicad\ Conversion/Kicad-to-HAL.py Sherline\ HAL\ -\ Logitech\ Gamepad\ jogging.xml Sherline.hal
    

    You could tell Kicad to run it and it would probably Just Work™, but I’m used to peering at the results and dinking with my program.

    Which produced a new Sherline.hal file that Just Worked™ with the existing Sherline.ini file containing the configuration constants.

    The Sherline has cut only air so far, but, as the man said, “E pur si muove.”

  • Workbench Scrap Can

    Workbench Scrap Can

    You don’t have one of these, but your bench needs something like it:

    Workbench scrap can
    Workbench scrap can

    Tiny Bandsaw perches just above it and now I have a place to drop the scraps you see collecting in its tray.

    The can hangs by its rim from a completely kludged two-layered MDF hook stuck to the metal table frame with good 3M foam tape:

    Workbench scrap can hanger
    Workbench scrap can hanger

    It’s not in the way of Tiny Bandsaw, because I stand at the left end of the bench, and it’s not in the way of the Sherline / LinuxCNC keyboard, because I stand to its right. So far, so good.

    Should it fall off, I’ll think of something better.

  • Dremel Collet Holder

    Dremel Collet Holder

    A set of Dremel-knockoff collets & chucks will come in handy for an upcoming project:

    Dremel collet holder - in use
    Dremel collet holder – in use

    All the parts arrived jammed into the clear box where I had trouble figuring out the collet sizes.

    A few minutes with LightBurn and a scrap of 6 mm white acrylic produced a collet holder / organizer:

    Dremel collet holder - detail
    Dremel collet holder – detail

    Seen in the cold light of day, the upper 1.8 and 2.0 mm collets look swapped, which pretty much demonstrates the need for the holder.

    The nice engraved letters come from scribbling a chisel-tip black marker before peeling the protective paper off the acrylic. The black lacquer crayon I intended to use must be in a different box than the markers, but the results suffice for the intended purpose.