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: Sewing

Fabric arts and machines

  • LED Strip Lights: Window Moulding Mounts

    LED Strip Lights: Window Moulding Mounts

    The object of the game being to tilt the LED strip lights at (maybe) 30° to put more light higher on the wall and further out on the ceiling, with the overriding constraint of no visible holes. Given their eventual home atop the window moulding along the front wall of the Living Sewing Room, these seemed adequate:

    LED Bar Lamp Mount - solid model
    LED Bar Lamp Mount – solid model

    The hole on the angled part fits an M4 brass insert and the recessed holes capture the washer-like head of a sharp-point lath screw.

    Two pairs applied to the lights sitting atop the Fabric Cabinets served to verify the fit:

    LED strip light - moulding mount - on cabinet
    LED strip light – moulding mount – on cabinet

    They’re held firmly by the aluminum extrusion and don’t need a bigger footprint to remain stable.

    So I made another six, stuck on ⅞ inch strips of aluminized Mylar (cut from a bag in much better condition), and drilled holes where they can’t be seen:

    LED strip light - moulding mount - installed
    LED strip light – moulding mount – installed

    It’s almost too bright in there with 3 × 40 W of LED lights washing the wall and ceiling:

    LED strip light - moulding mount - lit
    LED strip light – moulding mount – lit

    I don’t like the cold 6000 K color temperature, but Mary doesn’t mind it. They fill the Sewing Table with shadowless / glareless light, although that kind of light makes the place look like a store.

    I think moving the strip lower and away from the wall could hide the entire mount from view.

    Contrary to what I expected, the Mylar reflectors must be at least an inch tall to avoid Baily’s Beads seen from across the room:

    LED strip light - short reflector
    LED strip light – short reflector

    With all that in mind, we’ll run these for a while to shake out any other improvements.

    The OpenSCAD source code as a GitHub Gist:

    // LED light bar mounts
    // Ed Nisley – KE4ZNU
    // 2025-03-16
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,ScrewMount,BarMount]
    BaseAngle = 30; // [0:50]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Protusion = 0.1;
    NumSides = 3*4;
    Radius = 1.5;
    $fn = NumSides;
    MouldWidth = 18.0; // nominal (3/4) * INCH, but lots of paint slop
    MouldScrew = [4.7,12.0,2.6]; // clearance, head OD, head thick
    Insert = [4.0,5.5,6.0 + 3.0]; // heat-set brass without pilot end
    BarClip = [33.0,15.0,11.0]; // snaps around led base
    ScrewBlockOA = [MouldWidth,MouldScrew[OD] + 2*Radius + 2.0,10.0];
    BarBlockOA = [BarClip.x*cos(BaseAngle),15.0,BarClip.x*sin(BaseAngle) + 2*ScrewBlockOA.z];
    Gap = 2.0 + max(ScrewBlockOA.y,BarBlockOA.y);
    //———-
    // Define shapes
    module ScrewMount() {
    difference(){
    cuboid(ScrewBlockOA,anchor=BOTTOM,rounding=Radius,except=[FRONT,BOTTOM,LEFT]);
    up(ScrewBlockOA.z – MouldScrew[LENGTH])
    zrot(180/NumSides)
    cylinder(d=MouldScrew[OD],h=MouldScrew[LENGTH] + Protusion);
    down(Protusion)
    cylinder(d=MouldScrew[ID],h=2*ScrewBlockOA.z);
    }
    }
    module BarMount() {
    difference() {
    cuboid(BarBlockOA,anchor=CENTER,rounding=Radius,edges=RIGHT);
    yrot(BaseAngle)
    cube([3*BarBlockOA.x,2*BarBlockOA.y,BarBlockOA.z],anchor=BOTTOM);
    yrot(BaseAngle)
    cylinder(d=Insert[OD],h=2*Insert[LENGTH],anchor=CENTER);
    }
    }
    module Mount() {
    union() {
    right(ScrewBlockOA.x/2) back(ScrewBlockOA.y/2)
    ScrewMount();
    right(BarBlockOA.x/2) fwd(BarBlockOA.y/2) up(BarBlockOA.z/2)
    BarMount();
    }
    }
    //———-
    // Build things
    if (Layout == "ScrewMount")
    ScrewMount();
    if (Layout == "BarMount")
    BarMount();
    if (Layout == "Show")
    Mount();
    if (Layout == "Build") {
    yflip_copy(Gap) Mount();
    }

  • LED Strip Lights: Shade Adhesive

    LED Strip Lights: Shade Adhesive

    This is a quick-and-ugly test to see how well aluminized Mylar will work as a reflective shade for some LED light bars eventually washing the Living / Sewing room ceiling with enough light to brighten the Sewing Table:

    LED strip light - Mylar reflector - ugly fit
    LED strip light – Mylar reflector – ugly fit

    The key question: how well adhesive adheres Mylar to the pleasantly warm aluminum extrusion serving as the heatsink for 40 W of LEDs:

    LED strip light - Mylar reflector - adhesive strips
    LED strip light – Mylar reflector – adhesive strips

    Perhaps surprisingly, those ½ inch strips come from an A4 sheet by way of a paper cutter.

    As with the Mylar shades over the COB LED strips in the laser, the LEDs remain through the aluminized layer:

    LED strip light - Mylar reflector - overexposed
    LED strip light – Mylar reflector – overexposed

    The LED bars will be directly visible, so bouncing the direct light against the wall reduces glare and puts it to good use.

    The Mylar strips are 1 inch wide, cut with a utility knife against a straightedge, although ⅞ inch seems adequate. The last LED over on the right sits at the endcap, so I will (try to) tuck the Mylar ends under the caps for a cleaner fit.

    The bars have two 4 foot strips of LEDs in series, with a lump of circuitry buried in the aluminum extrusion that seems be a bridge rectifier and a small electrolytic capacitor. There’s not nearly enough capacitance to knock down the 120 Hz flicker and I have an uneasy expectation of stroboscopic effects on the sewing machines.

    This is a test. […] This is only a test.

    Now, to model angle brackets fitting the strips to the window moulding.

  • HQ Sixteen: Crud on the Tracks

    HQ Sixteen: Crud on the Tracks

    Having devoted considerable effort to smoothing the HQ Sixteen’s path across the table, with commensurate improvement, Mary reported the machine suddenly developed a severe hitch in its left-to-right git-along. Given that she is moving fifty pounds of machine with fingertip pressure, anything interrupting its progress is a problem.

    We found a spot where the machine abruptly and repeatably stopped rolling, but none of the four wheels had a visible problem and both tracks were smooth. The stitch regulator wheel sat directly above a table surface joint on the track base, but lifting it didn’t change the glitch. Rolling the machine while lifting the rear wheels off the track, which is significantly more difficult than it may seem, still encountered the bump.

    Rolling while lifting the front wheels went smoothly, so something was wrong with one of the front wheels. I put the machine back at the worst spot, marked the bottom of both wheel rims, lifted-and-rotated the left wheel half a turn, and found the glitch happened with the right wheel’s mark downward.

    I lifted the machine off the carriage, took the carriage to the Basement Shop, and discovered what we could not see in situ:

    HQ Sixteen - wheel crud
    HQ Sixteen – wheel crud – detail

    For scale, the wheels are 8 mm across the flanges.

    That thing looks like this up close:

    HQ Sixteen - wheel crud - detail
    HQ Sixteen – wheel crud – detail

    The fibers were almost invisible in my palm as I carried it upstairs to show it off.

    Apparently, a few millimeters of plastic fiber dropped from space directly onto the track and got mashed into the wheel as it rolled along. Given the vast expanses of fabric & batting going into projects on a long-arm sewing machine, that crud could have come from anywhere.

    As we now realize just how much trouble can come from a tiny bit of crud, finding the next hitch in the git-along will be easier.

  • Trivial Laser Projects

    Trivial Laser Projects

    A nubbly knob on the M4 screws securing the honeycomb to the laser’s platform:

    Honeycomb screw knob
    Honeycomb screw knob

    Leveling feet for the HQ Sixteen long-arm machine’s table for the high side of the floor:

    HQ Sixteen - table leg leveler - short
    HQ Sixteen – table leg leveler – short

    And 12 mm taller on the low side:

    HQ Sixteen - table leg leveler - tall
    HQ Sixteen – table leg leveler – tall

    Both of those “projects”, which may be too grand a term, went from “I need a thing” to having one in hand over the course of a few minutes yesterday. Neither required a great deal of thought, having previously worked out the proper speed / power settings to cut 3 mm MDF and 1 mm cork.

    Other folks may lead you to believe lasers are all about fancy artwork and elaborate finished products. Being the type of guy who mostly fixes things, I’d say lasers are all about making small and generally simple parts, when and where they’re needed, to solve a problem nobody else has.

    Perhaps I should devote more attention to using fancy wood with a hand-rubbed wax finish, but MDF fills my simple needs.

    With a laser and a 3D printer, shop tools have definitely improved since the Bad Old Days!

  • HQ Sixteen: Table Leveling Blocks

    HQ Sixteen: Table Leveling Blocks

    The Handi-Quilter HQ Sixteen rides on two tracks along the 11 foot length of the table, with an unsupported 8 foot span between the legs on each end:

    HQ Sixteen - remounted handlebars in use
    HQ Sixteen – remounted handlebars in use

    Contemporary versions of the table have support struts in the middle that our OG version lacks and, as a result, our table had a distinct sag in the middle. During the course of aligning the table top into a plane surface with tapered wood shims, I discovered the floor was half an inch out of level between the table legs.

    Now that the whole thing has settled into place, I measured the shim thicknesses and made tidy blocks to replace them:

    HQ Sixteen - table shims - finished
    HQ Sixteen – table shims – finished

    The OpenSCAD code has an array with the thickness and the number of blocks:

    SHIM_THICK = 0;
    SHIM_COUNT = 1;
    
    Shims = [
        [3.5,1],
        [5.0,3],
        [6.0,2],
        [6.5,1],
        [7.0,1]
    ];
    

    Yes, I call them “blocks” here and wrote “shims” in the code. A foolish consistency, etc.

    The model is a chamfered block with a chunk removed to leave a tongue of the appropriate thickness:

    HQ Sixteen - table shims - solid model - single
    HQ Sixteen – table shims – solid model

    Building them with the label against the platform produces a nice nubbly surface:

    HQ Sixteen - table shims - solid model
    HQ Sixteen – table shims – PrusaSlicer – bottom

    The labels print first and look lonely out there by themselves:

    HQ Sixteen - table shims - legends
    HQ Sixteen – table shims – legends

    The rest of the first layer fills in around the labels:

    HQ Sixteen - table shims - first layer
    HQ Sixteen – table shims – first layer

    Putting the labels on the bottom makes the wipe tower only two layers tall and eliminates filament changes above those layers. Those eight blocks still took a little over three hours, because there’s a lot of perimeter wrapped around not much interior.

    Having had the foresight to draw a sketch showing where each block would go, I slid one next to its wood shim, yanked the shim out, and declared victory:

    HQ Sixteen - table shims - installed
    HQ Sixteen – table shims – installed

    The tension rod welded under the table rail prevents even more sag, but the struts under the new version of the table show other folks were unhappy with the sag of this one. Another leg or two seems appropriate.

    With the table leveled and the surface aligned, the HQ Sixteen glides easily in all directions. The result isn’t perfect and Mary keeps the anchor block at hand, but the machine now displays much less enthusiasm for rolling toward the middle of the table.

    The OpenSCAD source code as a GitHub Gist:

    // HQ Sixteen – table shims
    // Ed Nisley – KE4ZNU
    // 2025-02-27
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build]
    /* [Hidden] */
    SHIM_THICK = 0;
    SHIM_COUNT = 1;
    Shims = [
    [3.5,1],
    [5.0,3],
    [6.0,2],
    [6.5,1],
    [7.0,1]
    ];
    Block = [40.0,20.0,15.0]; // overall shim size
    Grip = 10.0; // … handle length
    BlockRadius = 1.0; // corner rounding / chamfer
    LabelThick = 0.4;
    LabelSize = 5.5;
    LabelFont = "Arial:style:Bold";
    LabelColor = "Red";
    Protrusion = 0.1;
    Gap = 5.0;
    //———-
    // Define shim shape
    module ShimBlock(Height = Shims[0][SHIM_THICK],Part="All") {
    if (Part == "Block" || Part == "All")
    difference() {
    left(Grip)
    cuboid(Block,anchor=BOTTOM + LEFT,chamfer=BlockRadius);
    up(Height)
    cube(Block + 2*[Protrusion,Protrusion,0],anchor=BOTTOM + LEFT);
    left(Grip/2 – BlockRadius/2) fwd(Block.y/2 – LabelThick) up(Block.z/2)
    xrot(90) zrot(-90)
    linear_extrude(height=LabelThick + Protrusion,convexity=20)
    text(text=format_fixed(Height,1),size=LabelSize,spacing=1.00,
    font=LabelFont,halign="center",valign="center");
    }
    if (Part == "Text" || Part == "All")
    color(LabelColor)
    left(Grip/2 – BlockRadius/2) fwd(Block.y/2 – LabelThick) up(Block.z/2)
    xrot(90) zrot(-90)
    linear_extrude(height=LabelThick,convexity=20)
    text(text=format_fixed(Height,1),size=LabelSize,spacing=1.00,
    font=LabelFont,halign="center",valign="center");
    }
    //———-
    // Build them all
    if (Layout == "Show")
    ShimBlock();
    if (Layout == "Build") {
    for (j=[0:len(Shims)-1])
    back(j*(Block.z + Gap))
    for (i=[0:(Shims[j][SHIM_COUNT] – 1)])
    right(i*(Block.x + Gap))
    up(Block.y/2) xrot(90)
    ShimBlock(Shims[j][SHIM_THICK],Part="Block");
    for (j=[0:len(Shims)-1])
    back(j*(Block.z + Gap))
    for (i=[0:(Shims[j][SHIM_COUNT] – 1)])
    right(i*(Block.x + Gap))
    up(Block.y/2) xrot(90)
    ShimBlock(Shims[j][SHIM_THICK],Part="Text");
    }
  • HQ Sixteen: Ball-mounted Stylus Laser

    HQ Sixteen: Ball-mounted Stylus Laser

    Installing the new ball-mount laser stylus on the HQ Sixteen’s electronics pod required nothing more than two strips of good foam tape:

    HQ Sixteen - Stylus Laser - installed - overview
    HQ Sixteen – Stylus Laser – installed – overview

    In actual use, you would:

    • Lay down a “pantograph” pattern on a paper strip along the rear track under the machine’s carriage
    • Position the needle at the appropriate spot on the quilt
    • Aim the laser at the corresponding point on the pattern
    • Start the machine!
    • Move the laser spot along the pattern while the machine stitches that pattern in the quilt

    Mary thinks free-motion quilting is easier and I’m not in a position to argue the point.

    Anyhow, the key feature of my ball mount is that it’s completely out of the way:

    HQ Sixteen - Stylus Laser - installed - front
    HQ Sixteen – Stylus Laser – installed – front

    Which looks comfortingly like the original solid model:

    HQ Sixteen - Stylus Laser Mount - solid model - show
    HQ Sixteen – Stylus Laser Mount – solid model – show

    Minus the vivid red death ray and pew! pew! pew!

    Power comes from a barrel jack in the back intended for the original stylus laser; all small lasers, unless otherwise noted, run from 5 VDC. The jack is 3.5×1.3 mm, but the Drawer o’ Weird Barrel Plugs disgorged a matching right-angle plug. Unsurprisingly, such things are readily available these days.

    Splice the laser leads to the plug and cover the evidence with a braided loom + heatshrink tubing:

    HQ Sixteen - Stylus Laser - installed - rear
    HQ Sixteen – Stylus Laser – installed – rear

    I considered a switch, but the anticipated low duty cycle suggested just unplugging it, so that’s that.

    And It Just Worked™.

    The backstory begins There and continues to now.

  • HQ Sixteen: Stylus Laser Ball Drilling

    HQ Sixteen: Stylus Laser Ball Drilling

    With the ball mount in hand:

    HQ Sixteen - Stylus Laser - ball clamp test fit
    HQ Sixteen – Stylus Laser – ball clamp test fit

    The next step is to drill a 12 mm hole for the red-dot laser module right through the middle of the 1 inch = 25.4 mm polypropylene ball.

    I decided to use a more-or-less standard laser module, rather than the Genuine Handi-Quilter laser, because:

    • Cheap & readily available
    • Identical spares on hand
    • Two decades of red laser diode progress

    Start by conjuring a lathe chuck fixture for a 1 inch ball from my OpenSCAD model and printing it in PETG-CF:

    HQ Sixteen - Stylus Laser - center drilling
    HQ Sixteen – Stylus Laser – center drilling

    Run a few drills through the ball up to 15/32 inch = 0.469 inch = 11.9 mm:

    HQ Sixteen - Stylus Laser - final drilling
    HQ Sixteen – Stylus Laser – final drilling

    Which looks terrifying and was no big deal.

    The laser module didn’t quite fit until I peeled off the label, as setting up a boring bar seemed like too much hassle for too little gain. The ball is slick polypropylene and the laser module is chromed plastic, which means there’s not much friction involved and a stiff fit is a Good Thing™.

    I did not realize the hazy white patches barely visible inside the ball were voids / bubbles:

    HQ Sixteen - Stylus Laser - drilled ball
    HQ Sixteen – Stylus Laser – drilled ball

    Next time I’ll (try to) orient the patches toward the tailstock in hopes of simply drilling through them to leave solid plastic around the rim.

    Ramming the laser in place makes it look like it grew there;

    HQ Sixteen - Stylus Laser - laser test fit
    HQ Sixteen – Stylus Laser – laser test fit

    The alert reader will note the lens projects a line, due to my not ordering any dot modules back when I got a bunch of these things. After all, who wants a plain dot when you can light up a line or even a crosshair?

    Next, wire it up and stick it on the machine …