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.

Tag: Improvements

Making the world a better place, one piece at a time

  • 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.

  • Photo Backdrop: Crossbar Improvement

    Photo Backdrop: Crossbar Improvement

    The instructions for the Photo Backdrop frame (upon which we hang Mary’s quilts for photos) suggest the crossbar fits on like this:

    Photo Backdrop - OEM crossbar installation
    Photo Backdrop – OEM crossbar installation

    The slot in the bottom is wider than the M10 stud, so the crossbar tends to flop around while assembling it overhead. I immediately replaced the wingnut with a chunky knob for better griptitude, but was never happy with how poorly the whole thing fit together.

    This is dramatically better:

    Photo Backdrop - fitting installed
    Photo Backdrop – fitting installed

    The crossbar is upside-down from the OEM instructions, but the bottom of the gray plug holds the tube firmly to the tripod while the nut seats firmly on the plug’s flat top:

    Photo Backdrop - fitting top view
    Photo Backdrop – fitting top view

    A snippet of 3M 300LSE adhesive sheet holds the plug in place, so that’s one less thing to fiddle with on each end.

    The solid model holds no surprises:

    Photo Backdrop Fittings - solid model
    Photo Backdrop Fittings – solid model

    Of course, it builds with the flat end downward.

    The OpenSCAD source code as a GitHub Gist:

    // Photo backdrop fitting
    // Ed Nisley – KE4ZNU
    // 2026-07-01
    include <BOSL2/std.scad>
    Layout = "Show"; // [Build,Show]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    HoleWindage = 0.2;
    Protrusion = 0.01;
    NumSides = 3*2*4;
    Clearance = 0.3;
    $fn=NumSides;
    Tube = [23.0 – HoleWindage,1*INCH,100.0]; // arbitrary length
    Aperture = [24.0,15.0,100.0]; // oblong nut hole, arbitrary Z
    Washer = [10.5,20.0,1.5]; // M10
    //—–
    // Define things
    module Fitting() {
    difference() {
    union() {
    intersection() {
    xcyl(Tube[LENGTH],d=Tube[ID]);
    cuboid(Aperture,rounding=Aperture.y/2,edges="Z");
    }
    cuboid([Aperture.x,Aperture.y,Tube[OD]/2],rounding=Aperture.y/2,edges="Z",anchor=BOTTOM);
    }
    cyl(Aperture.z,d=Washer[ID]);
    }
    }
    //—–
    // Build things
    if (Layout == "Show") {
    Fitting();
    }
    if (Layout == "Build") {
    up(Tube[OD]/2)
    xrot(180)
    Fitting();
    }

  • Rivnut Installation Tool Stroke Adjustment

    Rivnut Installation Tool Stroke Adjustment

    The minimal instruction manual for the rivnut setting tool I’ve been using doesn’t explain how far to compress the rivnuts . The somewhat better manual for a similar tool includes a table:

    Rivnut Tool Stroke Settings
    Rivnut Tool Stroke Settings

    Under the plausible, but herein undefended, assumption that all rivnuts of a given size from any source are identical, the first three terms of the formula for each size become the number penciled into second column. Subtracting the range of material thickness from that number produces the stroke length range penciled over on the right.

    Neither manual explains how to set the tool to a specific stroke length, although eyeballing the distance on the scale from first contact until the going gets tough seems to cover smaller rivnuts:

    Stop applying more power on the handles when the decrease in the distance on the gauge approaches the calculated working stroke.

    For larger rivnuts, you just hit it again, harder:

    turn the knob clockwise to bring the riveter closer to the rivet nut, and close the handles until the rivet nut is secure in the hole. Repeat as necessary until the rivet nut is firmly in place.

    This post is my attempt to figure out how to adjust the tool to a specific stroke length, mostly because I’m that type of guy.

    Start with a diagram from the manual naming the parts:

    Rivnut Tool - parts diagram
    Rivnut Tool – parts diagram

    The unlabeled black cylinder between the “Installation Knob” and the “Scale Identification” is a nut determining the zero setting of the scale with the handles closed:

    Rivnut Tool - zero nut
    Rivnut Tool – zero nut

    Presumably that nut should be snug-to-tight with the scale at zero, because loosening it pushes the knob away from the body and puts the scale indicator below zero. It was finger-loose on my tool, so I snugged it firmly. A thin shim would align an indicator starting above zero with a snug nut; there may be an internal adjustment, but I didn’t go there.

    The diagram does not show that the “Sliding Sleeve” is spring-loaded away from the tool body:

    Rivnut Tool - mandrel installed - detail
    Rivnut Tool – mandrel installed – detail

    The “Outer Sleeve” normally covers the Sliding Sleeve and hides the spring:

    Rivnut Tool - mandrel installed - no nosepiece
    Rivnut Tool – mandrel installed – no nosepiece

    Which makes it awkward / difficult / painful to slide the sleeve toward the body while installing the “Mandrel Stem”, because you’re supposed to reach through those two openings, pinch the sleeve, and push it against the spring:

    Rivnut Tool - mandrel alignment
    Rivnut Tool – mandrel alignment

    The Mandrel must screw completely into the Sleeve to engage all its threads, then back out a fraction of a turn to align its hex flats with those on the nut inside the Sleeve. Releasing the Sleeve covers both hexes and locks the Mandrel in that position:

    Rivnut Tool - mandrel installed - nosepiece detail
    Rivnut Tool – mandrel installed – nosepiece detail

    A solid shaft connects the nut inside the Inner Sleeve (and, thus, the Sleeve and Mandrel) to the Knob. Turning the Knob turns the Mandrel, which is how you unscrew the Mandrel from the rivnut after crunching it in the workpiece.

    The “Nosepiece” screws into the Outer Sleeve until it seats:

    Rivnut Tool - mandrel installed - sleeve minimum
    Rivnut Tool – mandrel installed – sleeve minimum

    Each Mandrel and Nosepiece corresponds to a specific screw thread, so the Mandrel length & shape depend on the thread:

    Rivnut Tool - M3 M12 mandrels
    Rivnut Tool – M3 M12 mandrels

    You might expect this rivnut to be compressed by 10 mm when you close the handles:

    Rivnut Tool - sleeve minimum - handles extended
    Rivnut Tool – sleeve minimum – handles extended

    You would be wrong, as was I.

    Since this is the rivnut’s first appearance, note that the rivnut is screwed onto the Mandrel to show a thread or two of the Mandrel. The Mandrel must engage all the rivnut threads to prevent stripping the guts out of the poor thing. The plain end of the rivnut (on the left, away from the Nosepiece) has internal threads, as hinted by the diagrams in the chart, with the ribbed end (on the right) being a cylinder collapsing around the workpiece under pressure, which is the whole purpose of the tool.

    It turns out the handles will close freely, without applying any force to the M4 rivnut, for about 8 mm of travel:

    Rivnut Tool - sleeve minimum
    Rivnut Tool – sleeve minimum

    Closing the handles further would compress the rivnut by the 2 mm shown on the Scale.

    What was not obvious (to me, anyway): the handles turn cams to push an internal follower toward the Knob. That follower moves 10 mm as the handles go from open to closed, as indicated on the Scale, but won’t move the Mandrel until the follower moves past all the slack caused by compressing the spring. Remember the spring?

    Unscrewing the Outer Sleeve to move it outward from the body lets the spring push the Mandrel (and, thus, the Inner Sleeve) away from the body. Do this with the handles extended, so the Scale remains at 10 mm:

    Rivnut Tool - handles extended
    Rivnut Tool – handles extended

    Because screwing the Nosepiece into the Outer Sleeve compressed the spring and the Mandrel is on the shaft connected to the Knob, unscrewing the Sleeve also moves the Knob toward the body. Inside the body, the cam follower sees less slack distance, because the spring is less compressed.

    The Outer Sleeve (on this tool, anyway) has a 1.25 mm thread, so every revolution outward reduces the spring compression by 1.25 mm. Two turns releases the spring by 2.5 mm and closing the handles until the cam follower meets the shaft now shows 4.5 mm of compression:

    Rivnut Tool - crush measurement
    Rivnut Tool – crush measurement

    The handles have plenty of slop making this an inexact process, so:

    • Open the handles → scale at 10
    • Turn the Outer Sleeve to reduce the error
    • Close the handles gently until they stop
    • The scale shows the actual stroke distance, should you completely close the handles
    • Iterate until the correct distance appears

    Spin the knurled “Locking Nut” on the Outer Sleeve to contact the tool body, thereby locking the Sleeve in place.

    After all that preparation, poking the rivnut into the hole drilled in the material and completely closing the handles should crunch the rivnut Reasonably Close™ to its proper finished length. Assuming you’re crunching more than one rivnut, tweak as needed.

    At least I think that’s how it works …

  • Hose Nozzle Flow Restrictors

    Hose Nozzle Flow Restrictors

    Mary wanted less pressure in the spray while watering her plants and I suggested replacing the nozzle’s washer with a flow restrictor:

    Hose Nozzle Flow Restrictors - assembled
    Hose Nozzle Flow Restrictors – assembled

    The 3D-printed TPU base is squishy enough to act as a hose washer:

    Hose Nozzle Flow Restrictor Base - solid model
    Hose Nozzle Flow Restrictor Base – solid model

    A 1.5 mm thick acrylic orifice plate snapped into the opening takes advantage of the laser cutter’s precision:

    Hose Nozzle Flow Restrictors - LightBurn layout
    Hose Nozzle Flow Restrictors – LightBurn layout

    For lack of anything smarter, the holes have areas that are powers-of-two smaller than the nozzle’s 14.2 mm = 158 mm² internal passage: the hole labeled 8 is 158/256 mm² = 0.62 mm² → 0.9 mm diameter.

    Rather than figuring each hole’s diameter, just divide the previous diameter by √2 or rescale it by 100%/√2, which LightBurn can evaluate directly in its Numeric Edits fields. The as-cut holes are larger than their nominal size by about 0.1 mm, but any errors that might cause are definitely in the nature of fine tuning while watering the plants.

    The nozzle’s Shower pattern (on the left in the picture) has a 6.8 L/minute = 110 ml/s flow through an ordinary garden hose washer. The four smallest aperture plates produced these flows:

    Hose Nozzle Flow Restrictors - flow vs dia
    Hose Nozzle Flow Restrictors – flow vs dia

    The flow should scale with the square of the aperture diameter, which I could bully those points into suggesting, but the measurement accuracy produced by filling a gallon jug while tapping my phone’s stopwatch doesn’t justify anything fancier.

    The two smallest apertures reduce the Shower pattern to a very gentle spray requiring far too long to put enough water on the plants. Mary now uses an old plastic sprinkler head with enough holes to produce a dense spray with very little force, with the flow set by fifty feet of PEX pipe running across the width of the house from the town water inlet to the hose bib.

    It was a fun exercise and I learned a little more about printing TPU and fitting acrylic parts therein:

    Hose Nozzle Flow Restrictors - prototypes
    Hose Nozzle Flow Restrictors – prototypes
  • Power Switch Mollyguards

    Power Switch Mollyguards

    It turns out that dragging a USB cable across the top of the UPS for the PC (about to be) running the Sherline mill was enough to flip its flush-mounted hairtrigger power switch. Although I can’t recess the switch, adding a mollyguard should help:

    Mollyguard - UPS power switch
    Mollyguard – UPS power switch

    The power switches on the new outlet strips also seem unduly sensitive and a preemptive strike seemed in order:

    Mollyguard - outlet strip switch
    Mollyguard – outlet strip switch

    Two layers of 3 mm acrylic just barely clear the switch, but should prevent casual trips. AFAICT, the little hexagonal shape fills the hole for an indicator LED this strip doesn’t have.

    Yellow acrylic is deliberately more conspicuous than the bike control mollyguard.

  • Keychron C3 Pro Keyboard: Taming

    Keychron C3 Pro Keyboard: Taming

    Having set the Moonlander to use Auto Shift, I’ve come to depend on it, so I got a Keychron C3 Pro keyboard for one of the Basement Shop’s PCs because it glows in the dark and can be configured with QMK:

    Keychron C3 Pro - tamed
    Keychron C3 Pro – tamed

    The default setup has rainbow hues cycling across the keyboard, which I find entirely too distracting. Although you can manually select the solid-color variant from the myriad possibilities using the keyboard, I forced a solid color with this config.h file:

    #define RGB_MATRIX_DEFAULT_ON true // Sets the default enabled state, if none has been set
    #define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_SOLID_COLOR // Sets the default mode, if none has been set
    #define RGB_MATRIX_DEFAULT_HUE 36  // Sets the default hue value, if none has been set
    #define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
    #define RGB_MATRIX_DEFAULT_VAL 255 // Sets the default brightness value, if none has been set
    
    

    Enabling Auto Shift requires this rules.mk file:

    AUTO_SHIFT_ENABLE = yes
    

    Both of those go in the keymap directory defining the keyboard mapping for my custom setup:

    qmk_firmware/keyboards/keychron/c3_pro/ansi/rgb/keymaps/ednisley
    

    The keymap.c file remains unchanged, although I’m mildly tempted to toss the Mac layouts overboard.

    For the record, setting QMK to compile that keyboard configuration goes like this:

    qmk setup -H /base_directory/…/qmk_firmware
    <snippage>
    qmk new-keymap -kb keychron/c3_pro/ansi/rgb -km ednisley
    qmk config user.keyboard=keychron/c3_pro/ansi/rgb user.keymap=ednisley
    qmk compile
    qmk flash
    

    Flashing the keyboard firmware goes like this:

    • Run qmk flash
    • Unplug the USB cable
    • Hold down the Esc key
    • Plug in the USB cable
    • Release the Esc key

    I should boot the Atreus configuration into the current decade, but that’s for later.

  • Earplug Case

    Earplug Case

    A no-assembly-needed earplug case from Printables will be more easily found in Mary’s purse than the previous small bag:

    Earplug case
    Earplug case

    That’s the “grippy bits” version of the model, which really is easier to open than the straight-sided version.

    I printed a few more, loaded them with earplugs, and put them where they may come in handy. In retrospect, I should have used clear PETG to show off the retina-burn plugs.

    Living in the future is great!