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.

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();
}

Comments

Spam comments get trashed, so don’t bother; you’re not as clever as you think. Comment moderation may cause a delay.