Monthly Science: Batmax NP-BX1 Status

After powering my Sony HDR-AS30V helmet camera for nearly all of this year’s riding, the Batmax NP-BX1 lithium batteries still have roughly 90% of their original capacity:

Batmax NP-BX1 - 2020-11
Batmax NP-BX1 – 2020-11

Those are hot off the Official Batmax charger, which appears identical to other randomly named chargers available on Amazon.

They’re holding up much better after a riding season than the DOT-01 batteries I used two years ago:

Sony DOT-01 NP-BX1 - 2019-10-29
Sony DOT-01 NP-BX1 – 2019-10-29

Empirically, they power the camera for about 75 minutes, barely enough for our typical rides. I should top off the battery sitting in the camera unused for a few days, although that hasn’t happened yet.

Of course, the Batmax NP-BX1 batteries I might order early next year for the new riding season have little relation to the ones you see here.

Roadside Overgrowth: Life Finds a Way

A few years ago, this traffic splitter had a magnificent overgrowth goin’ on:

Traffic splitter bushes - Vassar Rd at Pine Tree Dr - Streetview 2018-07
Traffic splitter bushes – Vassar Rd at Pine Tree Dr – Streetview 2018-07

Eventually, somebody (perhaps the NYS DOT) cut the bushes off at their bases and probably hit them with defoliant to keep them down:

Traffic splitter stumps - Vassar Rd at Pine Tree Dr - 2020-11
Traffic splitter stumps – Vassar Rd at Pine Tree Dr – 2020-11

I don’t know that the stems cracked the concrete, but they surely eased the slabs apart.

The signpost had a substantial bush at its base:

Traffic splitter stumps - signpost - Vassar Rd at Pine Tree Dr - 2020-11
Traffic splitter stumps – signpost – Vassar Rd at Pine Tree Dr – 2020-11

It’s tough to keep civilization running ahead of Mother Nature

Bicycling For The Fun of It All

Somewhere out there, you’ll find his video:

Photo Op - 2020-11-09 - 287
Photo Op – 2020-11-09 – 287

Everybody needs a reason to smile!

Bonus: enough vehicles to keep the signal at Burnett green.

In the unlikely event you were wondering, 287 is the frame number from the video-to-still conversion:

ffmpeg -ss 00:03:30 -i /mnt/video/AS30V/2020-11-09/MAH07624.mp4 -t 20 -f image2 -q 1 'Photo Op - 2020-11-09 - '%03d.jpg

All in all, a fine day for a ride …

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 …

Helicopter Hovering

Spotted on a ride on New Hackensack Road around what’s grandly known as the Hudson Valley Regional Airport:

Helicopter Hovering Practice 1
Helicopter Hovering Practice 1

Indeed, it was.

I watched a private airshow for a few minutes:

Helicopter Hovering Practice 2
Helicopter Hovering Practice 2

The same helicopter thumped over our house, about two miles from the runway as the chopper flies, while I was getting ready for the ride, and it was hovering as I reached the airport. I think the pilot was practicing, because the chopper made very precise movements across the airport, translated front / back / left / right, and hovered motionless for minutes at a time despite wind gusts.

Looks like enjoyably intense concentration!

Tour Easy: PTT Switch Cleaning

The switch I installed on Mary’s bike a year ago was intended for indoor use only and, without any trace of weather sealing, recently became intermittent. No surprise, as it’s happened before, but, by regarding my vast assortment of little switches as consumables, we get a low-profile / tactile / E-Z push PTT button without forming a deep emotional attachment.

Anyhow, you can see the unsealed square perimeter of the switch actuator:

Tour Easy - PTT button
Tour Easy – PTT button

The light-gray button sits on a post molded into the actuator. Pry the actuator out and the switch dome shows crud worn off the cross-shaped plunger:

Tour Easy - PTT button - dome plate
Tour Easy – PTT button – dome plate

The underside of the dome has a weird golden discoloration that surely wasn’t original:

Tour Easy - PTT button - dome plate discoloration
Tour Easy – PTT button – dome plate discoloration

I have no idea how a liquid (?) could have gotten in there and done that without leaving other traces along the way. The contact bump on the discolored leg had some crud built up around it which responded well to a small screwdriver.

Contrary to what the symmetrical four-legged dome might suggest, only one leg rests on a contact in a corner:

Tour Easy - PTT button - contacts
Tour Easy – PTT button – contacts

So, yes, a bit of dirt / corrosion / mystery juice in a single spot could render the whole thing intermittent.

I removed the obvious crud from the obvious spots, wiped everything down with some Caig DeoxIT, reassembled in reverse order, and it seems to be all good again. Of course, these things only fail on the road, so it’ll take a few rides to verify the fix.