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.

Category: Electronics Workbench

Electrical & Electronic gadgets

  • 7 mm Tactile Switch Pinout

    7 mm Tactile Switch Pinout

    As is usually the case, the assortment of tiny switches arrived with no pinout documentation. The 6 mm square SMD switches were easy, but the 7 mm through-hole switches posed a puzzle.

    With the switch standing to make the return spring visible as shown, the pinout looks like this:

    7mm Tactile Switch pinout
    7mm Tactile Switch pinout

    TIL, somewhat to my surprise, both the latching and momentary 7 mm switches have DPDT contacts!

    Now I know how to wire the next thing …

  • HQ Sixteen: Improved Control Cap Wiring

    HQ Sixteen: Improved Control Cap Wiring

    The new control caps on the HQ Sixteen’s handlebars have three switches apiece:

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

    A six-conductor ribbon cable brings those switch terminal through the handlebars, across the smaller PCBs where the original switches plugged in, and atop the main PCB behind / under the LCD panel where they get wired together:

    HQ Sixteen - Control Button switch cable
    HQ Sixteen – Control Button switch cable

    The gray ribbon cable carries power for the LEDs and returns the original switch signals formerly plugged into one of the four-pin headers on the right PCB. The same PCB is used on the other side and the switches over there plug into the other header.

    The central PCB is also used for the rear handlebars, which do not have the smaller PCBs, and those switch cables plug directly into four-pin headers mounted instead of the headers for the gray ribbon cables:

    HQ Sixteen - Control Button central PCB
    HQ Sixteen – Control Button central PCB

    Some probing and doodling produced a diagram of the switch connections:

    HQ Sixteen - Control Button Wiring
    HQ Sixteen – Control Button Wiring

    Working with the handlebars either inverted or flipped left-for-right on the workbench makes this far more confusing than it really should be.

    In any event, the bottom diagram shows the connections between the two four-pad header positions on the central PCB and the two six-pin headers for the new switches. I used a 2×6 pin header block to plug in the new switches, connected the pins with soldered Wire-Wrap wire, and used three-wire ribbon cable to the PCB pads.

    The general idea was to duplicate the Start-Stop and Needle Up/Down switches on both sides, while maintaining the same relative positions of the Fast / Slow switches. In effect, the two new switches on each side are wired in parallel to the original switch pads on the PCB.

    Surprisingly, I got the three-wire ribbon cables from the four-pad headers right on the second try, which involved flipping it over. The top and bottom pads on those headers are connected together, so the three-wire cable can go on either way to reverse the positions of the other two wires.

    And then the new switches Just Worked™ … whew!

  • HQ Sixteen: Improved Control Cap Final Assembly

    HQ Sixteen: Improved Control Cap Final Assembly

    My version of the Handi-Quilter HQ Sixteen grip control caps requires some assembly:

    Control Button Caps - solid model - build view
    Control Button Caps – solid model – build view

    Getting the OEM caps off the handlebars required carefully applying torque through a strap wrench, but they eventually came free:

    HQ Sixteen - OEM grip cap - screw holes
    HQ Sixteen – OEM grip cap – screw holes

    I don’t know what the unused screw hole between the two gnarly holes was for; perhaps they discovered one hole was inadequate.

    The alert reader will note the two screw holes are not the same distance from the end of the tube, which required rebuilding the plug model to match:

    Control Button Caps - solid model - plug holes
    Control Button Caps – solid model – plug holes

    Which is why I didn’t glue the plug into the cap before I got the OEM caps off.

    Redrill the tube holes to 3 mm, file the burrs from both the OEM and my drilling, smooth the edges, and the plug fit perfectly. Then I seated the M3 square nuts behind those hole and, after installing the new plugs in the handlebars, glued the caps in place with a simple fixture to ensure the front faced forward:

    - HQ Sixteen - grip cap faceplate gluingHQ Sixteen - grip cap gluing
    – HQ Sixteen – grip cap faceplate gluingHQ Sixteen – grip cap gluing

    The clamp gently compresses the foam enough to hold the flats against the bench block while the JB Plastic Bonder cures.

    After verifying all the buttons worked, I glued the faceplates to the cap bodies:

    HQ Sixteen - grip cap faceplate gluing
    HQ Sixteen – grip cap faceplate gluing

    The tape held the faceplate in place while I snugged the clamps.

    Modulo my weak graphic design skills, the caps look pretty good:

    HQ Sixteen - grip cap installed - right
    HQ Sixteen – grip cap installed – right

    And, after a bit of wiring yet to be described, the buttons do exactly what their legends suggest:

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

    The white sheet with feeble graphics can be peeled off, so I have another chance to tart it up.

    The overall idea was to replace the failing Start/Stop switch while duplicating that switch on both caps. While I was at it, I also duplicated the Needle Up/Down button, because who wants asymmetric caps?

    Mary is assembling another quilt and the new switches will get plenty of action …

  • Power Outage

    Power Outage

    This housing development was the second in Poughkeepsie to have underground utilities and, to put it mildly, a lot has rotted out over the last 70 years.

    Over the weekend, one phase of the AC power flickered and eventually failed completely, with the other phase supplying a steady 120 VAC. Central Hudson (Gas & Electric) crews located long-lost buried boxes in places not matching their maps:

    Power Outage - flooded box
    Power Outage – flooded box

    Then they pumped / bailed enough water to repair / lengthen the wires:

    Power Outage - corroded wiring
    Power Outage – corroded wiring

    I’ve never before seen anybody work on live wires underwater.

    They installed above-ground boxes to simplify The Next Time.

    Some improvisation was required:

    Power Outage - improvised cocoa stirring
    Power Outage – improvised cocoa stirring

    Gotta say, cold Fireball Cocoa tastes different than hot Fireball Cocoa.

  • HQ Sixteen: Handlebar Control Button Caps

    HQ Sixteen: Handlebar Control Button Caps

    Each of the HQ Sixteen’s handlebars has a cap with control buttons:

    HQ Sixteen control caps - side view
    HQ Sixteen control caps – side view

    The left cap:

    HQ Sixteen control caps - left
    HQ Sixteen control caps – left

    The right cap:

    HQ Sixteen control caps - OEM right
    HQ Sixteen control caps – OEM right

    The membrane switch overlay has textured bumps, although both of us have trouble finding them.

    The Start / Stop switch gets the most use and, as you’d expect, has become intermittent after two decades of use.

    Mary thinks a Start / Stop switch on both caps would be an improvement, letting her position quilting rulers with her right hand and run the machine with her left hand & thumb. I don’t know how the switches are wired, but the wiring suggests either simple single-bit inputs or a small matrix.

    She also finds membrane switches difficult to press, so I’m in the process of replacing the control caps with something more to her liking.

    The current concept goes a little something like this:

    HQ Sixteen control caps - new caps
    HQ Sixteen control caps – new caps

    Stipulated: my art hand is weak.

    Those are little bitty SMD switches:

    HQ Sixteen control caps - new caps overview
    HQ Sixteen control caps – new caps overview

    They’re easy to locate by touch, with a stem length chosen to “feel right” when pushed.

    They have been grievously misapplied:

    HQ Sixteen control caps - switches
    HQ Sixteen control caps – switches

    The solid model has three main pieces and a lock for the ribbon cable:

    Control Button Caps - solid model - build view
    Control Button Caps – solid model – build view

    Those pockets keep the switches oriented while the glue cures.

    Two screws through the handlebar secure each cap. Handi-Quilter drove sheet metal screws into their OEM caps, distorting them enough to jam solidly into the handlebars. I’ve been reluctant to apply enough force to loosen them, so they remain frozen in place until the current quilt is done.

    The new plugs have recesses for M3 square nuts to make them easily removable. As with the handlebar angle adapters, I’ll glue the plugs into the caps.

    A slightly exploded view shows how the pieces fit together:

    Control Button Caps - solid model - show view gapped
    Control Button Caps – solid model – show view gapped

    The switch plate sits recessed into the cap to allow room for the label (about which, more later):

    Control Button Caps - solid model - show view assembled
    Control Button Caps – solid model – show view assembled

    The OpenSCAD source code as a GitHub Gist:

    // Handiquilter HQ Sixteen handlebar control button caps
    // Ed Nisley – KE4ZNU
    // 2025-04-05
    include <BOSL2/std.scad>
    Layout = "Show"; // [Show,Build,Grip,Body,Face,FaceBack,Plug,CableLock]
    // Angle w.r.t. handlebar
    FaceAngle = 30; // [10:45]
    // Separation in Show display
    Gap = 5; // [0:20]
    /* [Hidden] */
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 2*3*4;
    WallThick = 3.0;
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Grip = [19.7,22.4,15.0]; // (7/8)*INCH = 22.2 mm + roughness, LENGTH=OEM insertion depth
    GripRadius = Grip[OD]/2;
    FoamOD = 34.0; // handlebar foam
    FoamRadius = FoamOD/2;
    SwitchBody = [6.3,6.3,4.0]; // does not include SMD leads
    SwitchStemOD = 3.5 + 2*HoleWindage;
    SwitchOC = 10.0; // center-to-center switch spacing
    LabelThick = 0.5; // laminated overlay
    FaceRim = 2.0; // rim around faceplate
    FaceThick = 2.0; // … plate thickness
    FaceDepth = FaceThick + LabelThick; // inset allowing for faceplate label
    CapOD = 38.0; // overall cap diameter
    CapTrim = FoamRadius; // flat trim on front
    CapBase = 5.0; // bottom thickness
    Cap = [FoamOD – FaceRim,CapOD,CapBase + CapOD*tan(FaceAngle)];
    echo(Cap=Cap);
    TargetSize = 4.0; // laser alignment targets
    TargetsOC = [40.0,40.0];
    Cable = [10.0,2.0,WallThick]; // aperture for cable lock
    ScrewAngles = [-45,45]; // mounting screws
    Screw = [2.0,3.0,7.0]; // OEM = sheet metal screw
    ScrewOffset = 6.0; // from top of grip tube
    SquareNut = [3.0,5.5,2.3 + 0.4]; // M3 square nut OD = side, LENGTH + inset allowance
    NutInset = GripRadius – sqrt(pow(GripRadius,2) – pow(SquareNut[OD],2)/4);
    PlugOA = [(Grip[ID] – 2*WallThick),(Grip[ID] – 1.0),(CapBase + ScrewOffset + 10.0)];
    echo(PlugOA=PlugOA);
    //———-
    // Define objects
    //—–
    // Handlebar tube
    module GripTube() {
    difference() {
    tube(3*Grip[LENGTH],GripRadius,Grip[ID]/2,anchor=TOP);
    for (a = ScrewAngles) {
    down(ScrewOffset) zrot(a-90)
    right(GripRadius)
    yrot(90) cylinder(d=Screw[OD],h=Screw[LENGTH],center=true,$fn=6);
    }
    }
    }
    //—–
    // SVG outline of faceplate for laser cuttery
    module FaceShape(Holes=true,Targets=false) {
    difference() {
    scale([1,1/cos(FaceAngle)])
    difference() {
    circle(d=(Cap[OD] – 2*FaceRim),$fn=144);
    fwd(CapTrim – FaceRim)
    square(Cap[OD],anchor=BACK);
    }
    if (Holes)
    for (i=[-1:1]) // arrange switch stem holes
    right(i*SwitchOC)
    zrot(180/8) circle(d=SwitchStemOD,$fn=32);
    }
    if (Targets)
    for (i = [-1,1], j = [-1,1])
    translate([i*TargetsOC.x/2,j*TargetsOC.y/2])
    square(2.0,center=true);
    }
    //—–
    // Faceplate backing sheet
    // Switch bodies indented into bottom, so flip to build
    module FacePlate(Thick=FaceThick,Holes=true) {
    difference() {
    linear_extrude(height=Thick,convexity=5)
    FaceShape(Holes);
    up(SwitchBody.z/4)
    for (i = [-1:1])
    right(i*SwitchOC)
    cube(SwitchBody,anchor=TOP);
    }
    }
    //—–
    // Cap body
    module CapBody() {
    $fn=48;
    up(CapBase + (Cap[OD]/2)*tan(FaceAngle)) xrot(FaceAngle)
    difference() {
    xrot(-FaceAngle)
    down(CapBase + (Cap[OD]/2)*tan(FaceAngle))
    difference() {
    cylinder(d=Cap[OD],h=Cap[LENGTH]);
    fwd(CapTrim) down(Protrusion)
    cube(2*Cap[LENGTH],anchor=BACK+BOTTOM);
    up(CapBase)
    difference() {
    cylinder(d=Cap[ID],h=Cap[LENGTH]);
    fwd(CapTrim – 2*FaceRim)
    cube(2*Cap[LENGTH],anchor=BACK+BOTTOM);
    }
    down(Protrusion)
    cylinder(d=Grip[ID],h=Cap[LENGTH]);
    }
    cube(2*Cap[OD],anchor=BOTTOM);
    down(FaceDepth)
    FacePlate(FaceDepth + Protrusion,Holes=false);
    }
    }
    //—–
    // Plug going into grip handlebar
    module CapPlug() {
    $fn=48;
    difference() {
    tube(PlugOA[LENGTH],id=PlugOA[ID],od=PlugOA[OD],anchor=BOTTOM)
    position(TOP)
    tube(CapBase,id=PlugOA[ID],od=Grip[ID],anchor=TOP);
    for (a = ScrewAngles)
    up(PlugOA.z – CapBase – ScrewOffset) zrot(a-90)
    right(PlugOA[ID]/2)
    yrot(90) {
    cube([SquareNut[OD],SquareNut[OD],SquareNut[LENGTH] + NutInset],center=true);
    zrot(180/6)
    cylinder(d=(SquareNut[ID] + 2*HoleWindage),h=PlugOA[ID],center=true,$fn=6);
    }
    }
    }
    //—–
    // Lock plate for ribbon cable
    module CableLock() {
    difference() {
    cuboid([2*Cable.x,PlugOA[ID],WallThick],rounding=WallThick/2,anchor=BOTTOM);
    for (j = [-1,1])
    back(j*Cable.y) down(Protrusion)
    cube(Cable + [0,0,2*Protrusion],anchor=BOTTOM);
    }
    }
    //———-
    // Build things
    if (Layout == "Grip") {
    color("Silver",0.5)
    GripTube();
    }
    if (Layout == "Face")
    FaceShape(Targets=true);
    if (Layout == "FaceBack")
    FacePlate();
    if (Layout == "Body")
    CapBody();
    if (Layout == "Plug")
    CapPlug();
    if (Layout == "CableLock")
    CableLock();
    if (Layout == "Show") {
    color("Green")
    up(CapBase)
    CableLock();
    color("Orange")
    down(Gap)
    down(PlugOA[LENGTH] – CapBase)
    CapPlug();
    color("Cyan",(Gap > 4)? 1.0 : 0.2)
    CapBody();
    color("White",(Gap > 4)? 1.0 : 0.5)
    up(Gap*cos(FaceAngle)) fwd(Gap*sin(FaceAngle))
    up(CapBase + (Cap[OD]/2)*tan(FaceAngle) – FaceDepth)
    back(FaceDepth*sin(FaceAngle)) xrot(FaceAngle)
    FacePlate();
    down(3*Gap) {
    color("Silver",0.5)
    GripTube();
    down(Gap)
    color("Gray",0.5)
    tube(3*Grip[LENGTH],FoamRadius,Grip[OD]/2,anchor=TOP);
    }
    }
    if (Layout == "Build") {
    right((Gap + Cap[OD])/2)
    CapBody();
    left((Gap + Cap[OD])/2)
    zrot(180) up(FaceThick) xrot(180)
    FacePlate();
    fwd(Gap + Cap[OD])
    up(PlugOA[LENGTH]) xrot(180) zrot(180)
    CapPlug();
    fwd(Cap[OD]/2)
    zrot(90)
    CableLock();
    }

  • Wrights SideWinder Bobbin Winder: Laying On Of Hands

    Wrights SideWinder Bobbin Winder: Laying On Of Hands

    Mary attempted to wind a bobbin using the Wrights SideWinder Bobbin Winder she got from a friend:

    Sidewinder bobbin winder - top
    Sidewinder bobbin winder – top

    The URL in the instructions is dead, but the Sidewinder lives on as the Simplicity SideWinder Portable Bobbin Winder:

    Simplicity Sidewinder Bobbin Winder
    Simplicity Sidewinder Bobbin Winder

    Looks kinda pallid to me, too, although hardcore BarbieCore is also most definitely not our thing.

    Anyhow, the motor didn’t even twitch when pressing the button, so after I verified the two AA alkaline cells were Just Fine, I laid it on the Electronics Bench and popped the top to see what was the matter:

    Sidewinder bobbin winder - interior wiring
    Sidewinder bobbin winder – interior wiring

    For the record, the red and black wires at the battery compartment are exactly reversed from what you might expect based on, say, the colors of your multimeter probes. I know better, but it comes as a surprise every time.

    The pushbutton switch pulls in the relay (red block in the middle), which latches on until the bobbin fills and the accumulated thread lifts the finger riding on the bobbin to rotate the white cam (under the motor), thus opening the switch (black block), releasing the relay, and shutting off the motor.

    Which, of course, worked perfectly after I stuck the alkalines back in place on the bench and poked the button to watch the proceedings.

    It’s all back together again and continues to run, so I’ll declare victory until the next time she fills a bobbin and, predictably, it doesn’t start.

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