Neiko Hole Punch Accurizing

Having struggled to cut nice rings from gooey foam adhesive tape, I got a Neiko hollow hole punch set, despite reviews suggesting the pilot point might be a bit off. The case wrapper claims otherwise:

Neiko hole punch - description
Neiko hole punch – description

As the saying (almost) goes:

Inconcievable! Precision!”

“You keep using that word. I do not think it means what you think it means.”

Goldman, The Princess Bride

An eyeballometric measurement suggests this is another one of those Chinese tools missing the last 10% of its manufacturing process:

Neiko hole punch - as-received off-center tip
Neiko hole punch – as-received off-center tip

That’s the 5 mm punch, where being (at least) half a millimeter off-center matters more than it would in the 32 mm punch.

Unscrewing the painfully awkward screw in the side releases the pilot:

Neiko hole punch - punch tip debris
Neiko hole punch – punch tip debris

The debris on the back end of the pilot is a harbinger of things to come:

Neiko hole punch - damaged spring debris
Neiko hole punch – damaged spring debris

Looks like whoever was on spring-cutting duty nicked the next coil with the cutoff wheel. I have no idea where the steel curl came from, as it arrived loose inside the spring.

Although it doesn’t appear here, I replaced that huge screw with a nice stainless steel grub screw that doesn’t stick out at all.

Chucking the pilot in the lathe suggested it was horribly out of true, but cleaning the burrs off the outside diameter and chamfering the edges with a file improved it mightily. Filing doesn’t remove much material, so apparently the pilot is supposed to have half a millimeter of free play in the handle:

Neiko hole punch - undersized pilot
Neiko hole punch – undersized pilot

That’s looking down at the handle, without a punch screwed onto the threads surrounding the pilot.

Wrapping a rectangle of 2 mil brass shimstock into a cylinder around the pilot removed the slop:

Neiko hole punch - cleaned tip brass shim
Neiko hole punch – cleaned tip brass shim

But chucking the handle in the lathe showed the pilot was still grossly off-center, so I set it up for boring:

Neiko hole punch - boring setup
Neiko hole punch – boring setup

The entry of the hole was comfortingly on-axis, but the far end was way off-center. I would expect it to be drilled on a lathe and, with a hole that size, it ought to go right down the middle. I’ve drilled a few drunken holes, though.

Truing the hole enlarged it enough to require a 0.5 mm shimstock wrap, but the pilot is now pretty much dead on:

Neiko hole punch - accurized results
Neiko hole punch – accurized results

Those are 5, 6, 8, and 10 mm punches whacked into a plywood scrap; looks well under a quarter millimeter to me and plenty good enough for what I need.

Mini-Lathe Ball Drilling Fixture

Despite successfully drilling holes in a few plastic balls, I wanted a somewhat less terrifying setup than this:

Micromark Ball Vise - lathe ball hack
Micromark Ball Vise – lathe ball hack

The stiffness of the bike helmet mirror mount suggested a similar clamp would have enough griptivity to immobilize the ball while cutting it in the lathe:

Helmet Mirror Mount - 10 mm ball
Helmet Mirror Mount – 10 mm ball

Building the clamp around the lathe’s three-jaw lathe chuck eliminates the need for screws / washers / inserts:

Lathe Ball Fixture - 19 mm - Show
Lathe Ball Fixture – 19 mm – Show

The Ah-ha! moment came when I realized the fixture can expose half of the ball’s diameter for drilling while clamping 87% of its diameter, because 0.5 = sin 30° and 0.87 = cos 30°:

Lathe Ball Fixture - 19 mm - Show - front orthogonal
Lathe Ball Fixture – 19 mm – Show – front orthogonal

That’s an orthogonal view showing 13% of the ball radius sticking out of the fixture; it’s 6% of the diameter.

Which looks like this in real life:

Lathe Ball Fixture - 19 mm - sections with ball
Lathe Ball Fixture – 19 mm – sections with ball

The socket is offset toward the tailstock end of the clamp (on the right in the picture) to expose half its diameter flush with the surface perpendicular to the lathe axis. The other side necks down into a cylinder of the same diameter to clear the drill bit.

This works nicely until the ball diameter equals the chuck jaw’s 20 mm length, whereupon larger balls protrude into the chuck body’s spindle opening. Although I haven’t yet built one, the 25 mm balls in my Box o’ Bearings should fit, with exceedingly sissy cuts required for large holes.

The fixture doesn’t require support material, because the axial holes eliminate the worst of the overhang. Putting the tailstock side flat on the platform gives it the best-looking surface:

Lathe Ball Fixture - 19 mm - Slic3r - equator
Lathe Ball Fixture – 19 mm – Slic3r – equator

The kerf between the segments ensures the jaws can apply pressure to the ball, whereupon the usual crappy serrated 3D printed surface firmly grabs it.

The fixture is a slip fit on the chuck jaws:

Lathe Ball Fixture - 19 mm - installed
Lathe Ball Fixture – 19 mm – installed

Tightening the jaws shoves them all the way into the fixture’s slots and clamps the ball:

Lathe Ball Fixture - 19 mm - center drill
Lathe Ball Fixture – 19 mm – center drill

Overtightening the chuck will (probably) compress the ball around the drill, which will (best case) give you slightly oversize holes or (worst case) cause the ball to seize / melt around the drill bit, so sleaze up to the correct hole diameter maybe half a millimeter at a time:

Lathe Ball Fixture - 19 mm - 6 mm drill
Lathe Ball Fixture – 19 mm – 6 mm drill

That fixture exposes 9.5 mm = 19/2 of the ball. The drill makes a 6 mm hole to fit the telescoping shaft seen above.

Obviously, you must build a custom fixture for every ball diameter in your inventory, which is no big deal when you have a hands-off manufacturing process. Embossing the diameter into the fixture helps match them, although the scribbled Sharpie isn’t particularly elegant.

The OpenSCAD source code as a GitHub Gist:

// Lathe Ball Drilling Fixture
// Ed Nisley KE4ZNU 2020-11
/* [Layout options] */
Layout = "Build"; // [Build, Show, Body, Jaws]
BallDia = 10.0; // [5.0:0.5:25.0]
/* [Extrusion parameters] */
/* [Hidden] */
ThreadThick = 0.25;
ThreadWidth = 0.40;
HoleWindage = 0.2;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
function IntegerLessMultiple(Size,Unit) = Unit * floor(Size / Unit);
Protrusion = 0.1; // make holes end cleanly
inch = 25.4;
ID = 0;
OD = 1;
LENGTH = 2;
//* [Basic dimensions] */
Chuck = [21.0,100.0,20.0]; // chuck bore, OD, jaw length
Jaw = [Chuck[LENGTH],15.0,12.0]; // jaw free length, base width, first step radius
JawInclAngle = 112; // < 120 degrees for clearance!
JawAngle = JawInclAngle/2; // angle from radius
WallThick = 5.0; // min wall thickness
Kerf = 0.75; // space between clamp blocks
ClampSides = 8*(2*3);
ClampBore = BallDia/2; // clear bore through clamp
ClampAngle = asin(ClampBore/BallDia); // angle from lathe axis to clamp front
Plate = [ClampBore,
BallDia + 2*WallThick + 2*Jaw.z,
Jaw.x];
LegendDepth = 1*ThreadWidth;
ShaftOD = 3.6; // sample shaft
ShowGap = 1.5;
//----------------------
// Chuck jaws
// Real jaws have a concave radiused tip we simply ignore
module ChuckJaws(l=Jaw.x,r=10) {
for (a=[0:120:240])
rotate(a)
linear_extrude(height=l)
translate([r,0])
difference() {
translate([Chuck[OD]/4,0])
square([Chuck[OD]/2,Jaw.y],center=true);
for (i=[-1,1])
rotate(i*(90 - JawAngle))
translate([-Jaw.z/2,0])
square([Jaw.z,2*Jaw.y],center=true);
}
}
//----------------------
// Clamp body
module ClampBlocks() {
difference() {
cylinder(d=Plate[OD],h=Plate[LENGTH],$fn=ClampSides); // main disk
translate([0,0,-Protrusion]) // central bore
cylinder(d=ClampBore,h=2*Plate[LENGTH],$fn=ClampSides);
for (a=[0:120:240]) // kerf slits
rotate(60 + a)
translate([Plate[OD]/2,0,Protrusion])
cube([Plate[OD],Kerf,2*Plate[LENGTH]],center=true);
translate([0,0,BallDia/2 * cos(ClampAngle)]) // ball socket
sphere(d=BallDia,$fn=ClampSides);
for (a=[0:120:240]) { // legend
rotate(4.5*360/ClampSides + a)
translate([Plate[OD]/2 - LegendDepth,0,Plate[LENGTH]/2])
rotate([0,90,0])
linear_extrude(height=LegendDepth + Protrusion,convexity=10)
mirror([0,0,0])
text(text=str(BallDia," mm"),size=2.5,spacing=1.20,font="Arial:style:Bold",halign="center",valign="center");
rotate(-4.5*360/ClampSides + a)
translate([Plate[OD]/2 - LegendDepth,0,Plate[LENGTH]/2])
rotate([0,90,0])
linear_extrude(height=LegendDepth + Protrusion,convexity=10)
mirror([0,0,0])
text(text="KE4ZNU",size=2.5,spacing=1.20,font="Arial:style:Bold",halign="center",valign="center");
}
}
}
//----------------------
// Clamp with jaw cutouts
module ClampBody() {
difference() {
ClampBlocks();
translate([0,0,-Protrusion])
ChuckJaws(l=Jaw.x + 2*Protrusion,r=BallDia/2 + WallThick);
}
}
//----------------------
// Lash it together
if (Layout == "Body") {
ClampBlocks();
}
if (Layout == "Jaws") {
ChuckJaws();
}
if (Layout == "Build") {
ClampBody();
}
if (Layout == "Show") {
ClampBody();
color("ivory",0.2)
ChuckJaws(r=BallDia/2 + WallThick + ShowGap); // move out for E-Z viewing
color("red",0.4)
translate([0,0,-Jaw.x/2])
cylinder(d=ShaftOD,h=2*Jaw.x,$fn=ClampSides,center=false);
color("white",0.5)
translate([0,0,BallDia/2 * cos(ClampAngle)]) // ball socket
sphere(d=BallDia,$fn=ClampSides);
}

The dimension doodles, including some notions that didn’t work:

Lathe Ball Clamp - dimension doodles
Lathe Ball Clamp – dimension doodles

Ball Drilling Misadventure

My new bike helmet mirror mounts required poking a 3.6 mm hole through a 10 mm polypropylene ball:

Helmet Mirror Ball Mount - drilled ball test
Helmet Mirror Ball Mount – drilled ball test

Although how I did it worked, it wasn’t pretty.

I had a Micromark Spherical Object Drilling and Finishing Vise which was obviously intended for smaller holes in less challenging objects:

Micromark Ball Vise - overview
Micromark Ball Vise – overview

Given the angle between the two plates, I didn’t see any way to put a large hole though the center of the ball:

Micromark Ball Vise - 10 mm ball
Micromark Ball Vise – 10 mm ball

A scrap of wood aligned the two plates somewhat better:

Micromark Ball Vise - wood block
Micromark Ball Vise – wood block

With that as a hint, the Box o’ Brass Cutoffs disgorged a better spacer, although the original screw was just an itsy too short:

Micromark Ball Vise - brass tube
Micromark Ball Vise – brass tube

Grabbing the modified vise in a machinist’s vise got me most of the way toward the goal:

Micromark Ball Vise - drill press
Micromark Ball Vise – drill press

Polypropylene is grabby, so the drill stuck / rotated the ball inside the vise / made a mess:

Micromark Ball Vise - offset hole
Micromark Ball Vise – offset hole

A close look at the top picture shows the nasty ring around the hole (on the right side). The vise grips the ball between two holes punched in the metal plates, contacting it only at the right-angle (-ish) edges forming two rings, so there’s really not enough friction against the plastic to hold the ball in position and any slippage results in a gouge. Perhaps pearls / beads / jewelry behave differently?

Fortunately, I had a bag of 100 balls, so a few failures gave me enough of a clue to do what I should have done from the beginning:

Micromark Ball Vise - lathe ball hack
Micromark Ball Vise – lathe ball hack

That’s silicone tape wrapped around a ball grabbed in the lathe chuck, with a center drill in the tailstock. There’s barely enough traction between the ball and the chuck to get the job done, but it worked out well enough to build a few new mirrors:

Helmet Mirror Ball Mount - new vs old
Helmet Mirror Ball Mount – new vs old

There’s obviously a better way, although it took a few weeks to shake out the solid model …

Simple Small File Handles

I finally got around to making handles for some small files:

Simple file handles - installed
Simple file handles – installed

You’re allowed to drill wood on a metal lathe, although running a vacuum cleaner to collect the fine dust is a Good Idea:

Simple file handles - hole drilling
Simple file handles – hole drilling

Yes, I could 3D print nice knurled handles, but these are something of an homage to my father’s small files with similar wood handles.

I’ve been meaning to do this for … decades …

Kenmore Progressive Vacuum Cleaner vs. Dust Brush Adapters

Contemporary vacuum cleaner dust brush heads have bristles in some combination of [long | short] with [flexy | stiff]. The long + flexy combination results in the bristles jamming the inlet and the short + stiff combo seems unsuited for complex surfaces. Shaking the Amazonian dice brought a different combination:

Vacuum cleaner dust brush assortment - with adapters
Vacuum cleaner dust brush assortment – with adapters

That’s the new one on the bottom and, contrary to what you might think from the picture, it is not identical to the one just above it.

In particular, the black plastic housing came from a different mold (the seam lines are now top-and-bottom) and required a new adapter for the Kenmore Progressive vacuum cleaner’s complicated wand / hose inlet, with a 3/4 inch PVC pipe reinforcement inside.

Early reports indicate it works fine, so I’ll declare a temporary victory in the war on entropy.

I’m still using the same OpenSCAD source code with minute tweaks to suit the as-measured tapers.

Bike Helmet Mirror: Brasswork Clamp

A bit of Quality Shop Time produced a slight improvement to the clamp holding the mirror to the stalk:

Helmet Mirror Ball Mount - mirror joint brasswork
Helmet Mirror Ball Mount – mirror joint brasswork

The general idea is to hold the wave washer (it’s mashed under the flat washer, honest) above those bumps on the plate holding the mirror and stalk balls. It’s a few millimeters from the end of a ¼ inch brass rod, drilled for the M3 screw, and reduced to 4.5 mm with a parting tool to clear the bumps.

While I was at it, I made two spare mirrors, just to have ’em around:

Helmet Mirror Ball Mount - new vs old
Helmet Mirror Ball Mount – new vs old

The new ball mount looks downright svelte compared to the old Az-El mount, doesn’t it?

I should replace the steel clamp plates with a stainless-steel doodad of some sort to eliminate the unsightly rust, but that’s definitely in the nature of fine tuning.

More AAA-to-AA Alkaline Adapters

Having a handful of not-dead-yet AAA alkalines and a bunch of LED blinkies built for AA alkalines, a pair of adapters seemed in order:

AAA-to-AA Alkaline Adapters - installed
AAA-to-AA Alkaline Adapters – installed

The blinkies need a somewhat wider base than they’d get from a pair of AAA alkalines, so it’s not quite as dumb as it may seem.

In any event, the positive terminal comes from a brass rod:

AAA-to-AA Alkaline Adapters - brass terminal
AAA-to-AA Alkaline Adapters – brass terminal

Nobody will ever see the fancy Hilbert Curve infill around the brass:

AAA-to-AA Alkaline Adapters - end view
AAA-to-AA Alkaline Adapters – end view

In this application, they’ll go from not-dead-yet to oh-it’s-dead faster than AA cells, so I can watch how the blinkies work with lower voltages.