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

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

  • HQ Sixteen: Stylus Laser Ball Mount

    HQ Sixteen: Stylus Laser Ball Mount

    My version of a mount for the HQ Sixteen’s “stylus laser” clamps a 1 inch polypropylene ball between two plates:

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

    The plates have a sphere subtracted from them and a kerf sliced across the sphere’s equator for clamping room:

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

    Given that this is a relatively low-stress situation, I embedded BOSL2 nuts to produce threads in the plate rather than use brass inserts.

    The side plates start as simple rectangles:

    HQ Sixteen - Stylus Laser Mount - solid model - mount sides
    HQ Sixteen – Stylus Laser Mount – solid model – mount sides

    Subtracting the electronics pod shape from those slabs matches them exactly to the curvalicious corner:

    HQ Sixteen - Stylus Laser Mount - solid model - mount shaping
    HQ Sixteen – Stylus Laser Mount – solid model – mount shaping

    The weird angle comes from tilting the mount to aim the laser in roughly the right direction when perpendicular to the plates:

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

    That angle can be 0° to 30°, although 25° seems about right. The slab sides neither stick out the top nor leave gaps in the corner over that range, after some cut-and-try tinkering sizing.

    One of the M3 screws just did not want to go into its hole:

    HQ Sixteen - Stylus Laser - threadless M3 screw
    HQ Sixteen – Stylus Laser – threadless M3 screw

    A bad day in the screw factory, I suppose.

    The OpenSCAD source code as a GitHub Gist:

    // Handiquilter HQ Sixteen Stylus Laser Mount
    // Ed Nisley – KE4ZNU
    // 2025-02-23
    include <BOSL2/std.scad>
    include <BOSL2/threading.scad>
    Layout = "Pod"; // [Show,Build,Pod,Mount]
    /* [Hidden] */
    PodWidth = 110.0; // overall width of pod
    PodScrewClear = 50.0; // clear distance between pod screws
    PodRecenter = [0,0]; // pod trace upper corner to origin if not done in Inkscape
    BaseAngle = -25; // laser neutral angle
    BallOD = 25.4 + 0.2; // bearing ball + easy fit clearance
    BallOffset = [70.0,0,-35.0]; // upper corner to ball center
    LaserOD = 12.2; // laser module
    LaserLength = 38.0;
    Kerf = 1.0; // clamp gap
    Plate = [35.0,35.0,8.0 + Kerf]; // basic mount plate
    WallThick = 5.0; // upright walls: plate to pod
    WasherOD = 7.0;
    ScrewPitch = 0.5;
    ScrewNomOD = 3.0;
    ScrewNomID = ScrewNomOD – ScrewPitch;
    ScrewOC = Plate – [WasherOD,WasherOD,0];
    Gap = 5.0; // build spacing
    //———-
    // HQ Sixteen electronics pod
    module Pod() {
    xrot(90)
    down(PodWidth/2)
    linear_extrude(height=PodWidth,convexity=5)
    translate(PodRecenter)
    import("HQ Sixteeen – pod profile.svg",
    layer="Pod Profile");
    }
    module LaserPointer() {
    cylinder(d=LaserOD,h=LaserLength,center=true);
    }
    module Ball() {
    union() {
    sphere(d=BallOD,$fn=4*12);
    down(0.25*LaserLength)
    LaserPointer();
    }
    }
    module Mount() {
    union() {
    difference() {
    union() {
    cuboid(Plate,anchor=CENTER);
    for (j=[-1,1])
    translate([-(BallOffset.x – Plate.x)/2,j*(Plate.y + WallThick)/2,Kerf/2])
    cuboid([BallOffset.x,WallThick,-0.75*BallOffset.z],anchor=BOTTOM);
    }
    cuboid([4*Plate.x,4*Plate.y,Kerf],anchor=CENTER);
    Ball();
    for (i=[-1,1], j=[-1,1])
    translate([i*ScrewOC.x/2,j*ScrewOC.y/2,0])
    cylinder(d=1.2*ScrewNomOD,h=2*Plate.z,anchor=CENTER,$fn=6);
    yrot(-BaseAngle)
    translate(-BallOffset)
    Pod();
    }
    for (i=[-1,1], j=[-1,1])
    translate([i*ScrewOC.x/2,j*ScrewOC.y/2,Kerf/2])
    // flat size root dia height pitch
    threaded_nut(1.5*ScrewNomOD,ScrewNomID,(Plate.z – Kerf)/2,ScrewPitch,$slop=0.10,
    bevel=false,ibevel=false,anchor=BOTTOM);
    }
    }
    //———-
    // Build things
    if (Layout == "Pod")
    Pod();
    if (Layout == "Mount")
    Mount();
    if (Layout == "Show") {
    yrot(BaseAngle) {
    color("SteelBlue")
    Mount();
    color("Magenta",0.5)
    Ball();
    color("Red")
    yrot(180)
    cylinder(d=2,h=-2*BallOffset.z,$fn=12);
    }
    translate(-BallOffset)
    color("Silver",0.8)
    Pod();
    }
    if (Layout == "Build") {
    left(Plate.x/2 + Gap/2)
    intersection() {
    cuboid([4*Plate.x,4*Plate.y,-BallOffset.z],anchor=DOWN);
    down(Kerf/2)
    Mount();
    }
    right(Plate.x/2 + Gap/2)
    intersection() {
    cuboid([4*Plate.x,4*Plate.y,Plate.z/2],anchor=DOWN);
    up(Plate.z/2)
    Mount();
    }
    }
  • HQ Sixteen: Electronics Pod Solid Model

    HQ Sixteen: Electronics Pod Solid Model

    The HQ Sixteen came with a small red-dot laser pointer attached to a threaded pin:

    HQ Sixteen - Stylus LED Mount - OEM version
    HQ Sixteen – Stylus Laser Mount – OEM version

    The pin can go into either of a pair of threaded holes in the machine castings or the laser + clamp can, as in the picture, attach to a spool pin.

    With a “pantograph” pattern laid along the rear of the table, you can stitch that design (at full size, hence “pantograph” seems aspirational) by guiding the red dot along the lines. The laser’s flimsy clamp mount seems prone to move at the worst possible moment, so neither of us liked the idea.

    Mary is good at free-motion quilting and says she’s unlikely to use the laser, but I figured staying slightly ahead of the curve would be a Good Idea. Bonus: 3D printing.

    The general idea is to tuck a (similar) red-dot laser module under the overhang of the electronics pod, with a ball mount for easy aiming and stable setting, something like this:

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

    Fitting the mount into that curved corner requires a model of the electronics pod, so I held a pad of paper against the pod and traced the outline:

    HQ Sixteen - pod profile trace
    HQ Sixteen – pod profile trace

    Scan it, import the image into Inkscape, fit lines and curves around the shape:

    HQ Sixteen - pod outline - Inkscape
    HQ Sixteen – pod outline – Inkscape

    I only needed the top of the pod, so the bottom is truncated from the actual 250 mm height.

    Save the SVG, import into OpenSCAD, extrude to match the pod’s 110 mm width:

    module Pod() {
    
        xrot(90)
        down(PodWidth/2)
            linear_extrude(height=PodWidth,convexity=5)
                translate(PodRecenter)
                    import("HQ Sixteeen - pod profile.svg",
                            layer="Pod Profile");
    }
    

    The model origin is where the upper lip meets the slightly sloped top surface in the middle of the extrusion, because that’s the only easy-to-locate feature:

    HQ Sixteen - Stylus LED Mount - electronics pod - solid model
    HQ Sixteen – Stylus Laser Mount – electronics pod – solid model

    Something Has Changed in the Inkscape SVG → OpenSCAD model chain, because the parts of an Inkscape drawing lying outside the page boundary are no longer cropped from the OpenSCAD model. Now, simply putting a feature at the Inkscape origin at the lower-left corner of the document’s Page produces a complete OpenSCAD 2D shape with that feature at the 3D coordinate origin.

    For reference:

    The Inkscape layout with the entire shape off the page:

    HQ Sixteeen - pod profile - Inkscape origin
    HQ Sixteeen – pod profile – Inkscape origin

    The 2D imported shape in OpenSCAD with a matching origin:

    HQ Sixteeen - pod profile - OpenSCAD origin
    HQ Sixteeen – pod profile – Inkscape origin

    I do not know what changed or if, in fact, my misunderstanding of how things worked required the previous workaround, but this is much better. The OpenSCAD code includes a [0,0] offset value, should you need it.

    More on the mount tomorrow …

  • HQ Sixteen: Track Lock Blocks

    HQ Sixteen: Track Lock Blocks

    Mary’s practice quilts on the HQ Sixteen suggest locking the machine’s wheels will simplify sewing a line parallel to the long edge of a quilt parallel to the table, but contemporary “Channel Locks” fit newer machines with larger wheels than on this one.

    Duplicating those rings in a smaller size seemed both difficult and not obviously functional, so I built a pair of blocks to capture the wheel on its track:

    HQ Sixteen - track lock - engaged
    HQ Sixteen – track lock – engaged

    The wheel sits in a recess holding it just barely above the track surface, so the (considerable) weight of the machine holds the block in place.

    Because lines on quilts have precise placement and Mary has quilting rulers within reach, the block measures exactly two inches from the point where it first touches the wheel to the center of the recess:

    HQ Sixteen - track lock - setup
    HQ Sixteen – track lock – setup

    She can then lay a ruler on the quilt, roll the machine front or back two inches, slide a block against each wheel, then roll the machine up a slight incline until the wheel drops into the recess:

    HQ Sixteen - track lock block - solid model
    HQ Sixteen – track lock block – solid model

    The spacing looks like this:

    HQ Sixteen - track lock block - solid model - show view
    HQ Sixteen – track lock block – solid model – show view

    The usual 3D printing process puts 0.2 mm steps along the ramp, but they’re almost imperceptible while rolling the machine:

    HQ Sixteen - track lock block - PrusaSlicer preview
    HQ Sixteen – track lock block – PrusaSlicer preview

    The ramp slope is all of 1:20 = 2.5°, so pulling / pushing the machine requires very little oomph.

    I put thin cloth tape (approximately friction tape, but with real adhesive) on the bottom of the block by the simple expedient of sticking it to the block and scissoring off the excess. A little compliance between the block and the track prevents the hard plastic shapes from sliding more easily than I’d like. If your tape is thicker than mine, knock a little off the WheelZ value.

    The OpenSCAD code can produce shapes to laser-cut an adhesive sheet, although stacking a foam sheet will definitely require height adjustment :

    HQ Sixteen - track lock block - glue sheet
    HQ Sixteen – track lock block – glue sheet

    The OpenSCAD source code as a GitHub Gist:

    // HQ Sixteen – wheel track lock block
    // Ed Nisley – KE4ZNU
    // 2025-02-14
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Glue,Track,Block,Wheel]
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Protrusion = 0.1;
    Windage = 0.1;
    WallThick = 5.0; // minimum wall thickness
    RailOD = 5.5; // rounded top of rail
    RailHeight = RailOD; // … flange to top
    RailBase = [100,2*15.7 + RailOD,3]; // … Y = flange width, arbitrary X & Z
    WheelOD = 38.0; // rail roller
    WheelMinor = 6.2; // … rail recess
    WheelWidth = 8.3 + 2*Windage; // … outer sides
    WheelZ = RailHeight + (WheelOD – WheelMinor)/2; // axle centerline wrt rail flange
    LockOC = 2.0*INCH; // engagement to lock recess
    GripLength = 20.0;
    BlockOA = [GripLength + WheelOD/2 + LockOC,WheelWidth + 2*WallThick,2*RailHeight];
    BlockRadius = 2.0;
    $fn = 12*3*4; // smooth outer perimeters
    //———-
    // Construct the pieces
    module Track(Len = 2*BlockOA.x) {
    zrot(90) back(Len/2) down(RailBase.z) xrot(90)
    linear_extrude(height=Len,convexity=5)
    rect([RailBase.y,RailBase.z],anchor=FRONT)
    attach(BACK,FRONT) rect([RailOD,RailHeight – RailOD/2])
    attach(BACK) circle(d=RailOD);
    }
    module Wheel(Len = WheelWidth) {
    xrot(90)
    difference() {
    cylinder(d=WheelOD,h=Len,center=true);
    torus(r_maj=WheelOD/2,d_min=WheelMinor);
    }
    }
    module Block() {
    difference() {
    left(GripLength + WheelOD/2)
    cuboid(BlockOA,anchor=LEFT + BOTTOM,rounding=BlockRadius,except=BOTTOM);
    Track();
    up(WheelZ) xrot(90)
    cylinder(d=WheelOD,h=WheelWidth,center=true);
    right(LockOC)
    up(WheelZ – WheelOD/2) yrot(atan((RailHeight – WheelMinor/2)/LockOC))
    cuboid([LockOC,WheelWidth,BlockOA.z],anchor=RIGHT+BOTTOM);
    }
    }
    //———-
    // Show & build the results
    if (Layout == "Block" || Layout == "Build")
    Block();
    if (Layout == "Track")
    Track();
    if (Layout == "Wheel")
    Wheel();
    if (Layout == "Glue")
    projection(cut=true)
    Block();
    if (Layout == "Show") {
    color("SteelBlue")
    Block();
    for (i=[0,1])
    right(i*LockOC)
    color("Silver",0.7)
    up(WheelZ) Wheel();
    color("White",0.5)
    Track();
    }

  • Drive Wheelchair Foot Rest Lubrication

    Drive Wheelchair Foot Rest Lubrication

    After few days in the Drive Blue Streak wheelchair, I finally lubricated the foot rest pivots:

    Drive wheelchair foot rest lubrication
    Drive wheelchair foot rest lubrication

    The complex molded rests gripped their metal tubes so tightly as be nearly immovable, but one drop of Kroil at the four obvious spots let them turn much more easily.

    The flange overlapping the upright tube along the bottom of the picture hits the short protrusion and holds the rest parallel to the floor. A screw at the plastic cap near the top keeps the rests from working their way too far from the upright tube.

    I can make it to the Basement Shop™ and back, paying careful attention to detail.

  • HQ Sixteen: Handi Feet Conversion

    HQ Sixteen: Handi Feet Conversion

    Mary wanted a Ruler Foot (a.k.a. Handi Feet Sure Foot) on her Handi Quilter HQ Sixteen sewing machine, which required removing the original foot, installing the Handi Feet Conversion Kit, then adjusting the foot height above the needle plate:

    HQ Sixteen Handi-feet conversion - Sure-foot installed
    HQ Sixteen Handi-feet conversion – Sure-foot installed

    The Conversion Kit instructions repeatedly recommend hauling the machine to your local Handi Quilter authorized dealer / repair center, which would be an hour’s drive away. Suffice it to say I’m both authorized by a suitable authority and a dab hand with a hex wrench: I can do this thing.

    The original foot is a welded assembly with an M5×0.8 screw thread matching the leftmost (darker) rod on the machine:

    HQ Sixteen Handi-feet conversion - original foot
    HQ Sixteen Handi-feet conversion – original foot

    It’s sitting atop the label of the Sure Foot kit with a picture of the ruler foot.

    Although the instructions suggest you can install the conversion kit without removing the machine cover, I wanted to see what was going on in there and verify everything fit properly:

    HQ Sixteen Handi-feet conversion - foot rod clamp
    HQ Sixteen Handi-feet conversion – foot rod clamp

    As above, the foot / adapter screws into the left rod, with the rectangular aluminum clamp attached to the follower riding the cam near the top of the machine. The rod slides on the greasy pin absorbing the torque from the follower.

    I had to loosen the clamp, slide the rod upward, unscrew the original foot, install the adapter, adjust the rod position for the proper 0.5 mm spacing between ruler foot and the needle plate at bottom dead center, then tighten the screw. The disturbed grease above the block reveals I moved the rod upward about 8 mm through that block during the process; it now sits lower, just a few millimeters above where the factory tech assembled it for the original foot.

    The top photo shows half a dozen threads between the top of the adapter and the bottom of the jam nut. Without adjusting the rod position in the clamp, the adapter screw threads are the only way to adjust the foot-to-plate space: each full turn moves the foot 0.8 mm. I screwed the adapter completely into the rod, then backed it out three turns to leave enough adjustment for other feet and fabrics.

    The machine cover has a hole providing access to the clamp screw, so, in principle, you can stick a hex wrench in there to loosen / tighten the clamp while making fine adjustments in the foot position, all without removing the cover. If one full turn of the adapter doesn’t set the right position, I highly recommend removing the machine cover to see what you’re doing.

    We then installed the Ruler Base on the machine, which required removing the preinstalled Medium fuzzy spacer strips, and all’s well that ends well.