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 Table Shimming

    HQ Sixteen: Improved Table Shimming

    Although adding table shims / leveling blocks dramatically improved the HQ Sixteen’s travel along the table, it still had a tendency to roll away when parked at some locations. The padded shims had compressed enough to throw off the alignment between adjacent sections, so returning to the original rigid blocks seemed prudent.

    I removed all the shims to let the middle three sections of the tabletop droop as it did when we got it, put a ten foot saw guide across the entire table, and added 5 mm (!) plates to the stacks already under the high (!) end of the table feet to level the two ends. The floor is not that far out of level, so the table structure itself must be mismatched from one end to the other.

    Adding 3 mm (!) plates under the front pair of legs put the table far enough out of level to prevent the machine from rolling front-to-back on its carriage. I think the carriage is slightly bowed downward in the middle, but now the machine is more inclined (so to speak) to remain in one place.

    The saw guide showed the table sections on each end, despite being screwed firmly to the table structure, were slightly sloped downward toward the center. Shimming the sections with thin cardboard atop their steel mounting brackets leveled them so the machine no longer wanted to roll away when parked at either end, which was a good start.

    Adjoining table sections have peg-in-hole alignment, with their accuracy leaving something to be desired. Shims under the machine tracks level it across the mismatched joints:

    HQ Sixteen - table track shims - detail
    HQ Sixteen – table track shims – detail

    The brown chipboard is 0.7 mm thick and the white cardboard is 0.4 mm, with lengths eyeballometrically matching the misaligned part of the table section. They’re not quite so conspicuous in action:

    HQ Sixteen - table track shims
    HQ Sixteen – table track shims

    I then inserted wood shims under the tabletop to level the three middle sections. Unlike my previous efforts, each section got four shims to level it both front-to-back and side-to-side. After considerable iteration, the HQ Sixteen would remain where it was parked at (almost) every location across the entire table span.

    Then I used a set of small hole gauges to measure the distance between the table’s metal structure and the bottom of the tabletop section near each wood shim. I had previously used a taper gauge that measured the clearance on only the near side and it turns out the metal has plenty of irregularities across its bent shapes.

    Then feed the measured values into the OpenSCAD shim block generator mentioned earlier to get more shims:

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

    Slide them in place and remove the wood shims:

    HQ Sixteen - table shims - adjacent sections
    HQ Sixteen – table shims – adjacent sections

    Yes, that’s nearly a 1 mm difference, despite the bottoms of the two table sections being obviously aligned.

    Each block now has a narrow strip of craft adhesive sheet holding it to the table top, in the expectation hope the machine’s normal vibration won’t shake them loose.

    Initial user response is positive: the improved anchor may remain on the shelf.

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