Tour Easy: Extended V-brake Noodle

Although our Tour Easy recumbents use ordinary (*) V-brakes, their frame geometry doesn’t route the rear cable quite the way the brake designers expected. Mary’s Medium-Small frame always had its rear brake cable resting against the frame tube, where it bent slightly as she applied the brakes:

Tour Easy rear V-brake layout
Tour Easy rear V-brake layout

That’s looking up from under the rear wheel, with the bike on a workstand, and, yeah, it’s pretty grubby down there.

The squashed rubber boot suggests the brake arms are too close together, but that’s where they must be to hold the brake pads in the proper position, even with new pads and big spacer washers. As a result, the cable stop over on the right at the end of the noodle rests against the frame and dings the paint.

My first thought was to add some length to the end of the noodle inside the stirrup, so I made an adapter with the ID on the noodle end matching the OD on the fitting end:

V-brake - larger noodle - end stop adapter
V-brake – larger noodle – end stop adapter

Which worked poorly, because the noodle has a straight section leading up to the fitting inside the stirrup; any additional length pushes the noodle curve against the stirrup pivot and cants it out of line:

Tour Easy rear V-brake noodle
Tour Easy rear V-brake noodle

I’ve been avoiding the fallback plan of building a bigger noodle for years, but finally combined a foot of 3/32 inch brass tubing, a tube bender spring, and various large-diameter round-ish objects from the Basement Warehouse Wing:

V-brake - larger noodle - bending
V-brake – larger noodle – bending

I annealed the tube by running a torch along its length until the color changed to the obvious “I’m hot enough” copper color, then let it air-cool while I did something else. Brass work-hardens quickly and required two more annealings while finishing that smooth curve; as far as I know, brass doesn’t harden with the heat-and-quench cycle used for steel.

A little more lathe work produced a replacement fitting:

V-brake - larger noodle - end stop
V-brake – larger noodle – end stop

The hole is barely one diameter deep, but I think it’ll align the tube well enough for my simple needs. The failure will most likely involve having the cable chew through the inward side of the mis-aligned tube, which should become obvious in short order.

The fitting on the OEM noodle seems to be crimped in place, but I figure my version is unlikely to fall off in normal use:

V-brake - larger noodle vs OEM
V-brake – larger noodle vs OEM

Lined up thusly, you can see the reduced straight section behind my fitting and the much larger sweep out to the cable stop.

The OEM noodle had a (presumably) PTFE liner, so I adapted a length of PTFE brake cable liner by mashing the end with various conical objects until it kinda-sorta looked like the cable stop might capture the ragged flange:

V-brake - larger noodle - PTFE liner
V-brake – larger noodle – PTFE liner

Reassembling in reverse order produces a comforting sight:

V-brake - larger noodle - installed
V-brake – larger noodle – installed

Despite appearances, the new noodle sits below the frame and well above the chain in normal use. In the most extreme small-small cross gearing position the chain barely clears it, but the takeup arm on the rear derailleur starts clattering enough to remind us not to do that.

Brass is certainly not as strong as stainless (?) steel, although I think it ended up in a reasonably hard condition after all the bending. I’m certain neither of us can squeeze the brake lever enough to come anywhere close to causing a problem.

Making a noodle was easier than I expected and, in a month or so, we’ll see how it behaves under actual riding conditions.

(*) “Ordinary” as of many decades ago, because the design dates back to the mid-70s, when Fast Freddy Markham broke 65 mph on a rather customized Easy Racers Gold Rush.

Tour Easy Seat Hatchery

Removing the seat from Mary’s Tour Easy revealed an unexpected sight:

Tour Easy seat - bottom view
Tour Easy seat – bottom view

A closer view:

Tour Easy seat - pupal remains
Tour Easy seat – pupal remains

An insect, most likely a rather large butterfly or moth, decided to pupate on the underside of the seat, tucked inside the old seat cover. We can’t fault the critter’s logic!

Mary is sewing up new seat covers for our Tour Easy ‘bents in preparation for the new riding season. Who knows what we’ll find under there in a few years?

Sharing the Lane in Red Oaks Mill

We’re in the middle of three southbound lanes on Rt 376 in Red Oaks Mill, turning left into the rightmost lane going down the hill across the bridge, when a car approaches from behind:

Red Oaks Mill Intersection - close pass - approach - 2020-12-24
Red Oaks Mill Intersection – close pass – approach – 2020-12-24

Most drivers seem content to wait behind us until we get into the huge intersection where there’s plenty of room (comparatively speaking) to pass, but not this one:

Red Oaks Mill Intersection - close pass - waiting - 2020-12-24
Red Oaks Mill Intersection – close pass – waiting – 2020-12-24

I warned Mary (one the reasons we have radios on our bikes) about the mirror just behind her shoulder and she verified the minimal clearance:

Red Oaks Mill Intersection - close pass - arms length - 2020-12-24
Red Oaks Mill Intersection – close pass – arms length – 2020-12-24

Prudence dictated we wait until he was clear before moving:

Red Oaks Mill Intersection - close pass - rolling - 2020-12-24
Red Oaks Mill Intersection – close pass – rolling – 2020-12-24

Of course, the signal timing doesn’t let us get all the way through the intersection under the best of conditions, but we make an impressive enough parade to keep oncoming cars from moving before we’re out of their way.

This section of NY Rt 376 is also NY Bike Route 9, which doesn’t explain why NYS DOT pays so little attention to bicycle safety.

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