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

  • HQ Sixteen: Improved Anchor

    HQ Sixteen: Improved Anchor

    The original anchor / weight keeping the HQ Sixteen from rolling away suffered a disastrous fall, so I conjured a much better-looking replacement from the vasty digital deep:

    HQ Sixteen - improved anchor
    HQ Sixteen – improved anchor

    The handle and fancy nut came from the deceased pepper mill, sitting on laser-cut acrylic in a 3D printed base, with a drawer liner disk peeking out from underneath.

    The orange disk in the solid model represents the steel slug harvested from the old anchor:

    HQ Sixteen Anchor - solid model - Show view
    HQ Sixteen Anchor – solid model – Show view

    A ring of hot-melt glue under the weight keeps it from rattling around in there, with the snug-fitting central post encouraging good positioning. I made the acrylic lid sit flush with the top of the base by the simple expedient of running another ring of glue around it, plunking the base + weight atop it on a flat surface, then taking a deep breath while the glue solidified. The nut & screw thus compress a solid stack of acrylic + glue + steel + glue + PETG-CF, rather than just parts flying in formation.

    The OpenSCAD source code also produces a pair of outlines for laser-cutting the adhesive sheet and acrylic, suitable for export to an SVG file:

    HQ Sixteen Anchor - solid model - cuts
    HQ Sixteen Anchor – solid model – cuts

    They’re offset inward by amounts appropriate for my CO₂ laser:

    if (Layout == "Cuts") {
      left(BaseOD/2 + Gap)
        offset(r=-1.0)
          circle(d=BaseOD);
      right(Cap[OD]/2 + Gap)
        offset(r=-0.2/2)
          projection()
            tube(1.0,id=Cap[ID],od=Cap[OD],anchor=BOTTOM);
    }
    

    It might be prudent to apply those offsets to the original outlines in LightBurn or whatever you use for lasering.

    The OpenSCAD source code as a GitHub Gist:

    // Anchor block for HQ Sixteen
    // Ed Nisley – KE4ZNU
    // 2026-09-29
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Cuts]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Gap = 10.0/2; // build platform minimum spacing
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 8*3*2*4;
    $fn=NumSides;
    // Sizes
    Screw = [5.5,25.5,5.0]; // 10-24 screw + washer holding it together
    Weight = [11.0,80.0,11.5]; // stamped steel slug
    Cap = [26.0,Weight[OD],5.5]; // acrylic disk with handle hole
    BaseFloor = 10.0;
    BaseOD = 90.0; // printed anchor
    Spacing = 25.0; // Show view separation
    //———-
    // Model things
    module Housing() {
    tube(Screw[LENGTH],id=Screw[OD],od=BaseOD,anchor=BOTTOM) position(TOP) {
    tube(Weight[LENGTH],id=Screw[ID],od=Weight[ID],anchor=BOTTOM); // weight bushing
    tube(BaseFloor – Screw[LENGTH],id=Screw[ID],od=BaseOD,anchor=BOTTOM) position(TOP)
    tube(Cap[LENGTH] + Weight[LENGTH],id=Cap[OD],od=BaseOD,anchor=BOTTOM);
    }
    }
    //———-
    // Build things
    if (Layout == "Show") {
    Housing();
    color("Orange",0.7)
    up(BaseFloor + Spacing)
    tube(Weight[LENGTH],id=Weight[ID],od=Weight[OD],anchor=BOTTOM);
    color("Gray",0.8)
    up(BaseFloor + 2*Weight[LENGTH] + Spacing)
    tube(Cap[LENGTH],id=Cap[ID],od=Cap[OD],anchor=BOTTOM);
    }
    if (Layout == "Cuts") {
    left(BaseOD/2 + Gap)
    offset(r=-1.0)
    circle(d=BaseOD);
    right(Cap[OD]/2 + Gap)
    offset(r=0.2/2)
    projection()
    tube(1.0,id=Cap[ID],od=Cap[OD],anchor=BOTTOM);
    }
    if (Layout == "Build") {
    Housing();
    }

  • HQ Sixteen: Improved Fabric Rod Bushings

    HQ Sixteen: Improved Fabric Rod Bushings

    Descending from the previous bearings / sleeves / bushings, I added a rib to hold them in place as the rod slides back and forth while fiddling with fabric:

    HQ Sixteen - Rod Bushing - rib retainer - solid model - build view
    HQ Sixteen – Rod Bushing – rib retainer – solid model – build view

    An idealized serving suggestion:

    HQ Sixteen - Rod Bushing - rib retainer - solid model - show view
    HQ Sixteen – Rod Bushing – rib retainer – solid model – show view

    Which might count as the “better design” I expected it would need.

    They’re still almost invisible in use:

    HQ Sixteen - Rod Bushing - rib retainer
    HQ Sixteen – Rod Bushing – rib retainer

    Which is as it should be: inconspicuous, no more black dust, and E-Z rotation.

    The modified OpenSCAD source code is added to the original GitHub Gist:

    // Bushing for HQ Sixteen table rods
    // Ed Nisley – KE4ZNU
    // 2026-02-20
    // 2026-09-29 add retaining rib
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 8*3*2*4;
    $fn=NumSides;
    Rod = [25.0,28.7,100.0]; // very short rod
    Sleeve = [Rod[OD] + 0.3,31.2 – 0.2,9.0]; // LENGTH = overall
    Rim = [Sleeve[ID],Sleeve[OD] + 6.0,0.6];
    LockRing = [Sleeve[ID],Sleeve[OD] + 2*(1.0),4.0]; // locks sleeve on plate
    IdlerLength = 15.0; // far right end of rods
    NumSlots = 2*4;
    Kerf = 1.0;
    Gap = 5.0;
    module Bushing(oal,lk=false) {
    difference() {
    union() {
    tube(oal,id=Sleeve[ID],od=Sleeve[OD],anchor=BOTTOM);
    tube(Rim[LENGTH],id=Rim[ID],od=Rim[OD],anchor=BOTTOM);
    if (lk)
    up(oal)
    tube(LockRing[LENGTH],id=LockRing[ID],od=LockRing[OD],chamfer=LockRing[LENGTH]/3,anchor=TOP);
    }
    for (a=[0:NumSlots-1])
    zrot(a*360/NumSlots)
    up(oal/4 + Rim[LENGTH])
    right(Sleeve[ID]/2)
    cuboid([Sleeve[OD],Kerf,oal],anchor=BOTTOM);
    }
    }
    //—–
    // Build things
    if (Layout == "Show") {
    color("Gray",0.5)
    xcyl(Rod[LENGTH],d=Rod[OD]);
    right(Rod[LENGTH]/3)
    zrot(180) yrot(90)
    Bushing(Sleeve[LENGTH]);
    left(Rod[LENGTH]/3)
    yrot(90)
    Bushing(IdlerLength,lk=true);
    }
    if (Layout == "Build") {
    right(Rim[OD]/2 + Gap/2)
    Bushing(Sleeve[LENGTH]);
    left(Rim[OD]/2 + Gap/2)
    Bushing(IdlerLength,lk=true);
    }
    // Bearing sleeve for HQ Sixteen table rods
    // Ed Nisley – KE4ZNU
    // 2026-02-20
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 8*3*2*4;
    $fn=NumSides;
    Rod = [25.0,28.7,100.0]; // very short rod
    Sleeve = [Rod[OD] + 0.3,31.2 – 0.2,9.0]; // LENGTH = overall
    Rim = [Sleeve[ID],Sleeve[OD] + 6.0,0.6];
    IdlerLength = 15.0;
    NumSlots = 2*4;
    Kerf = 1.0;
    Gap = 5.0;
    module Bearing(oal) {
    difference() {
    union() {
    tube(oal,id=Sleeve[ID],od=Sleeve[OD],anchor=BOTTOM);
    tube(Rim[LENGTH],id=Rim[ID],od=Rim[OD],anchor=BOTTOM);
    }
    for (a=[0:NumSlots-1])
    zrot(a*360/NumSlots)
    up(oal/4 + Rim[LENGTH])
    right(Sleeve[ID]/2)
    cuboid([Sleeve[OD],Kerf,oal],anchor=BOTTOM);
    }
    }
    //—–
    // Build things
    if (Layout == "Show") {
    color("Gray",0.5)
    xcyl(Rod[LENGTH],d=Rod[OD]);
    right(Rod[LENGTH]/3)
    yrot(90)
    Bearing(Sleeve[LENGTH]);
    left(Rod[LENGTH]/3)
    yrot(90)
    Bearing(IdlerLength);
    }
    if (Layout == "Build") {
    right(Rim[OD]/2 + Gap/2)
    Bearing(Sleeve[LENGTH]);
    left(Rim[OD]/2 + Gap/2)
    Bearing(IdlerLength);
    }
  • HQ Sixteen: Grip Cap Assembly

    HQ Sixteen: Grip Cap Assembly

    After 3D printing another set of cap parts, glob the switches into place with tan JB Weld Plastic Bonder:

    HQ Sixteen grip cap - switch gluing
    HQ Sixteen grip cap – switch gluing

    More Plastic Bonder joins the cap body to the plug fitting into the handlebars:

    HQ Sixteen grip cap - gluing fixture
    HQ Sixteen grip cap – gluing fixture

    I laser-cut an acrylic disk to fit the plug stem and hold the bottom of the plug flush with the bottom of the cap, with the PTFE fabric preventing inadvertent bonding of All The Things. It’s perched atop an empty thread cone to cure: quilting requires a lot of thread and I have a good stock of cones.

    The button cap body solid model now includes alignment marks to eliminate the need for the bench block & clamps:

    HQ Sixteen grip cap - alignment marks
    HQ Sixteen grip cap – alignment marks

    Soldering the cable directly to the switch terminals is déclassé, but the collar prevents the cable from exerting any force on them:

    HQ Sixteen grip cap - wiring
    HQ Sixteen grip cap – wiring

    This time around, dabs of hot-melt glue hold the faceplate to the cap body.

    I also used hot-melt glue to stick the transparent cover onto the handlebar body, as the OEM sticky tape was losing its mojo:

    HQ Sixteen grip cap - wiring closeout
    HQ Sixteen grip cap – wiring closeout

    The rightmost three LEDs went dark a while ago and, while I had everything apart, I tracked the failure to the third LED from the right, replaced it, and it’s all good again. Those LEDs (plus the side groups) still can’t hold a candle to the Nose Ring Lights and Under-arm Lights, but it’s good to have all the lights working.

    I managed to break one tiny wire on the header (wrapped in black silicone tape next to the IC on the right) joining the two cables from the control caps, but other than that things went smoothly.

    Now I can start on other long-awaited tweaks before the next quilt arrives.

  • HQ Sixteen: New Grip Control Cap Labels

    HQ Sixteen: New Grip Control Cap Labels

    The Run/Stop (⏯) button on the HQ Sixteen’s left-hand grip control cap recently became intermittent:

    HQ Sixteen - grip cap installed - left
    HQ Sixteen – grip cap installed – left

    Which is a little more than a year after I built it, so I’m not red-hot pleased with the switch reliability. On the other paw, Mary has done a lot of quilting in the last year, generally controlling the machine with her left thumb, so that particular button has gotten a lot of use.

    Because I glued the caps together, rather than trying to hide screws in finger-friendly locations, the replaceable unit is the whole cap.

    I originally cut the cap labels using LightBurn’s Print-and-Cut tool to align the laser to the printed label, but subsequent experience making punched cards showed it’s generally easier (at least for my simple projects) to skootch the layout to match the laser position at known features:

    HQ Sixteen control caps - laser alignment
    HQ Sixteen control caps – laser alignment

    Those small magnets hold the laminated label flat against the honeycomb.

    The Position Laser tool puts the laser at a selected corner of the square, with Object Snap ensuring it’s really at the corner. Firing a test pulse to verify the red-dot pointer is aligned with the focused CO₂ laser spot is good practice.

    Unlike the cards, the control caps don’t have fractional-millimeter tolerances, so, after verifying the printed label alignment at all four outer corners, it’s Close Enough™:

    HQ Sixteen control caps - label cut
    HQ Sixteen control caps – label cut

    Cutting the adhesive sheet pose no alignment problems:

    HQ Sixteen control caps - adhesive cut
    HQ Sixteen control caps – adhesive cut

    Then it’s just a matter of peel-n-stick.

  • HQ Sixteen: Needle Bar Re-Reorientation

    HQ Sixteen: Needle Bar Re-Reorientation

    Unfortunately, orienting the HQ Sixteen’s Needle Bar to put the needle locking setscrew at the back resulted in excessive thread breakage:

    HQ Sixteen - needle bar reoriented
    HQ Sixteen – needle bar reoriented

    The thread passes through the guide hole just below the hex driver in that photo, then through the hole in the needle from the front of the machine. Apparently the 45°-ish angle between those two was large enough to prevent the thread from sliding smoothly along the needle.

    Proceeding much as before, but without dismantling the machine cover because I know where the clamp screw will be with the machine shaft at Bottom Dead Center …

    The Ruler Foot is now 0.5 mm off the Needle Plate:

    HQ Sixteen - Ruler foot clearance - 2
    HQ Sixteen – Ruler foot clearance – 2

    Stacking gauge blocks shows the Needle Bar now sits 0.355 inch above the Plate at BDC:

    HQ Sixteen - gage block stack - 2
    HQ Sixteen – gage block stack – 2

    That is viewed from the right side of the machine, with the button-head screw sticking out of the Presser Bar hidden behind the Needle Bar.

    The gauge block set confirming what’s in the stack:

    HQ Sixteen - gage blocks used - 2
    HQ Sixteen – gage blocks used – 2

    Then:

    • Stick a screwdriver through the bottom access hole into the Needle Bar clamp screw
    • Loosen the Needle Bar clamp screw
    • Rotate the Needle Bar to put the guide hole exactly in front
    • Tighten the clamp screw
    • Verify the shaft is still at Bottom Dead Center
    • Remove the block stack
    • Install the Ruler Foot at 0.5 mm

    Which looked like this with the shaft at Top Dead Center:

    HQ Sixteen - needle bar reoriented - 2
    HQ Sixteen – needle bar reoriented – 2

    There’s a quilt in progress on the left, so we’ll know if this solved the problem very shortly.

  • HQ Sixteen: “New” Handlebar LED FAIL

    HQ Sixteen: “New” Handlebar LED FAIL

    A to-do reminder pending completion of the in-process quilt strapped in Mary’s heavily customized HQ Sixteen:

    HQ Sixteen - failed handlebar LEDs
    HQ Sixteen – failed handlebar LEDs

    A three-LED string in the central control panel of the front handlebars has gone dark a year-and-a-half after I replaced all of them. Of course, that’s what I get for using new-old-stock surplus parts, but … the COB LEDs in the nose ring lights are still going strong, so there’s plenty of light where it matters.

    The star pattern on the ceiling (lower right) comes from sunlight reflecting off one of the salvaged star quilting rulers. I think the oblong patterns (upper left) come from other rulers.

  • Nasal Strip Cushion

    Nasal Strip Cushion

    Having a mild allergy to whatever plant pollen has begun drifting around these days, I’m trying cheap “nasal strips” intended to hold my nose open overnight, which seem less awful than any of the variety of decongestant / allergy relief pills or potions.

    However, while the strips have an adhesive layer strong enough to stick overnight to a slightly oily nose, the skin on the bridge of my nose is fragile enough to hurt after peeling the strip off in the morning. As I see it, the strips need adhesive only on their ends, where they pull outward on my nose, because the center part pushes inward on the bridge.

    A few minutes with a rotary cutter and scrap fabric produced dozens of small cushions:

    Nasal Strip cushion
    Nasal Strip cushion

    Quite inadvertently, the blue fabric looks downright medical.

    Your mileage will vary, but the exposed adhesive on the ends sticks firmly to the sides of my nose and, with the cloth protecting the bridge, the strip peels off without injury.

    Despite converting other scrap fabric into shop wipes, these tiny cushions are unsuited for laser cuttery, as waking up in the middle of the night with even the faintest campfire smell in my nose would be … triggering.