MTD Snowthrower Throttle Knob: Found!

After the snow cleared and we ventured out again, the missing snowthrower throttle knob was sitting on the far reaches of the driveway:

MTD Snowthrower Throttle Knob - crude repair
MTD Snowthrower Throttle Knob – crude repair

It’s a well-meaning, albeit totally ineffectual, expedient repair.

I put a channel around the slot for the throttle shaft to mimic the original design:

MTD Snowthrower Throttle Knob - fracture
MTD Snowthrower Throttle Knob – fracture

The fracture started at the end and worked its way back, loosening the knob’s grip on the shaft as it went:

MTD Snowthrower Throttle Knob - pieces
MTD Snowthrower Throttle Knob – pieces

Should my replacement survive the next 13 years, it’ll likely outlive the rest of the snowthrower:

Snowthrower throttle knob - installed
Snowthrower throttle knob – installed

If the original MTD choke knob didn’t have that fancy metal insert, I’d replace it just for pretty …

American Standard Elite Kitchen Faucet: O-Rings Again

My alleged improvement to the upper bearing ring in our American Standard Elite kitchen faucet didn’t survive nearly as well as I hoped and began leaking through the o-ring seals after the usual year. The 0.4 mm polypropylene shim ring apparently stuck to the nylon bearing ring, wore down to a 0.1 mm thick ribbon against the base, then let the o-ring wear out as usual.

The black gunk around the top of the upper seal area has the consistency of hard plastic paint, although it’s most likely rubber particles from the o-ring burnished against the bronze base by the sliding PP shim ring:

American Standard Elite faucet - base
American Standard Elite faucet – base

Remember Nisley’s First Rule of Plumbing: Never look inside your water supply pipes.

As before, the o-rings wear on their inner diameters, indicating that they turn with the spout around the base.

For lack of anything smarter, I removed as much of the debris as feasible, installed new seals, reassembled the faucet in reverse order, and ordered another set of parts.

If I hadn’t done such a great job of reinforcing the underside of the sink deck around the mounting rings, to the extent I’m not sure another faucet base else would fit, I’d be far less reluctant to start over.

MTD Snowthrower: Replacement Throttle Knob

The throttle knob on our MTD snowthrower (a.k.a. snowblower) cracked apart around its metal shaft when I pulled it upward. A temporary fix involving duct tape and cable ties sufficed to start the engine, although the usual intense vibration shook the knob loose somewhere along the driveway during the next hour.

Update: Found it!

Although I have no photographic evidence, I did make a few quick measurements:

Throttle Knob Dimension Doodles
Throttle Knob Dimension Doodles

It fits an MTD model E6A4E, but I suspect nearly all their engines have identical throttle shafts:

Snowthrower Throttle Knob - stem end - solid model
Snowthrower Throttle Knob – stem end – solid model

The only practical way to build the thing has it standing on the shaft end, surrounded by a brim to improve adhesion, so I added (actually, subtracted) a pair of holes for music-wire reinforcements:

Snowthrower throttle knob - reinforcing wires
Snowthrower throttle knob – reinforcing wires

It definitely has a stylin’ look, next to the original choke control knob:

Snowthrower throttle knob - installed
Snowthrower throttle knob – installed

I omitted the finger grip grooves for obvious reasons.

The slot-and-hole came out slightly smaller than the metal shaft and, rather than wait for epoxy to cure, I deployed a 230 W soldering gun (not a piddly temperature-controlled iron suitable for electronics) on the shaft and melted it into the knob.

More snow may arrive this week and I printed another knob just in case …

The OpenSCAD source code as a GitHub Gist:

// MTD Snowthrower Throttle Knob
// Ed Nisley KE4ZNU 2020-12-18
/* [Options] */
Layout = "Show"; // [Build, Show]
// Extrusion parameters
/* [Hidden] */
ThreadThick = 0.25;
ThreadWidth = 0.40;
HoleWindage = 0.2;
Protrusion = 0.1; // make holes end cleanly
inch = 25.4;
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
//----------------------
// Dimensions
Throttle = [17.0,1.85,6.5]; // blade insertion, thickness, width
PaddleSize = [25,30,9];
PaddleRound = 4.0;
PaddleThick = 8.5;
StemDia = 13.0;
StemLength = 20.0;
PinDia = 1.6;
PinLength = PaddleSize.x + StemLength/2;
echo(str("Pin: ",PinLength," x ",PinDia," mm"));
//----------------------
// Useful routines
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=(FixDia + HoleWindage)/2,
h=Height,
$fn=Sides);
}
//----------------------
// Pieces
module Paddle() {
difference() {
hull() {
translate([PaddleSize.x/2,0,0]) {
for (i=[-1,1], j=[-1,1])
translate([i*(PaddleSize.x - PaddleRound)/2,j*(PaddleSize.y - PaddleRound)/2,0])
sphere(d=PaddleRound,$fn=12);
rotate([0,90,0]) rotate(180/12)
cylinder(d=PaddleThick,h=PaddleSize.x,,center=true,$fn=12);
}
translate([-StemLength,0,0])
rotate([0,90,0]) rotate(180/12)
cylinder(d=StemDia,h=Throttle.x,center=false,$fn=12);
}
translate([-StemLength,0,0])
cube([2*Throttle.x,Throttle.y,Throttle.z],center=true);
translate([-(StemLength + Protrusion),0,0])
rotate([0,90,0]) rotate(0*180/6)
PolyCyl(2*Throttle.y,Throttle.x,6);
for (j=[-1,1])
translate([-StemLength/2,j*PaddleSize.y/6,0])
rotate([0,90,0]) rotate(180/4)
PolyCyl(PinDia,PinLength,4);
}
}
//----------------------
// Build it
if (Layout == "Show")
Paddle();
if (Layout == "Build") {
translate([0,0,StemLength])
rotate([0,-90,0])
Paddle();
}

Turkey Baster FAIL

We bought a generic Walmart-grade baster perhaps two years ago to replace a much older one with a failed rubber bulb. We use it intermittently throughout the year and had a turkey in the oven when we discovered this:

Cracked Baster - overview
Cracked Baster – overview

A closer look at the business end:

Cracked Baster - tip detail
Cracked Baster – tip detail

Yes, those cracks go all the way through, there’s a loose spear running the length of the thing, and it definitely doesn’t work as a baster.

Contrary to what you might think from the general fogging and stress cracking, I haven’t used it for gasoline or brake fluid, nor do we put it away without washing it.

The rubber bulb still works fine, though, so there’s that.

We’ll up our spend for an OXO baster and see what happens.

Drive Wheelchair Brake Knob

The bent-steel brake levers on our Drive Blue Streak wheelchair present themselves edge-on to the rider:

Drive Wheelchair Brake
Drive Wheelchair Brake

There are good mechanical reasons for shaping and orienting the steel like that, but the handle concentrates the considerable force required to push the brake tab into the rubberoid tire on your (well, my) palms. After a couple of weeks, I decided I didn’t need two more sore spots and conjured a palm-filling knob from the vasty digital deep:

Wheelchair Brake Knob - installed
Wheelchair Brake Knob – installed

Bonus part: the little octagon near the wheel prevents the leg rest (seen in the first picture) from smashing into the end of the brake tab and chipping the lovely blue powder coat. The brown fuzzy felt foot seemed like a good idea at the time, but isn’t strictly necessary.

A cylindrical handle on Thingiverse apparently fits on the bare steel underneath the rubberish “cushion”, but cutting a perfectly good, albeit uncomfortable, cushion off seemed like a step in the wrong direction. My knob thus descends from a doodle of the OEM dimensions:

Drive Wheelchair Brake Handle - dimensions
Drive Wheelchair Brake Handle – dimensions

The knob builds in two halves adjoining the bonus octagon, which stands on edge to eliminate support inside its slot:

Wheelchair Brake Mods - solid model - build layout
Wheelchair Brake Mods – solid model – build layout

You (probably) need two of all those shapes, a job your slicer is ready to perform. At three hours for each knob, I just printed the same G-Code twice.

You can customize the knob width to fit your palm, with the other two dimensions fitting themselves around the cushion. Mary and I settled on a knob size that fits both our hands reasonably well, so it’s probably not critical.

I tried building the knob halves without support for the first prototype, but the sloped upper surface produced awful bridging:

Wheelchair Brake Knob - unsupported interior
Wheelchair Brake Knob – unsupported interior

It’s easy enough to design a customized support structure:

Wheelchair Brake Mods - cross section
Wheelchair Brake Mods – cross section

I oriented the knob to put the split on the narrow sides of the brake handle in order to not have a seam facing my palm:

Wheelchair Brake Knob - rear half installed
Wheelchair Brake Knob – rear half installed

The quartet of M3×20 mm socket-head cap screws thread into brass inserts epoxied into the rear half. I recessed their heads deeply into the front half and avoided thinking too hard about plugs matching the surface curvature:

Wheelchair Brake Knob - front view
Wheelchair Brake Knob – front view

The low-vertex-count polygonal shape is a stylin’ thing and produces a nice feel during a firm shove, at least to my paws. Although I’d rather not need a wheelchair at all, setting the brakes now seems authoritative instead of annoying.

The OpenSCAD source code as a GitHub gist:

// Pride wheelchair brake lever mods
// Ed Nisley KE4ZNU 2020-11
/* [Layout options] */
Layout = "Build"; // [Build, Show, Fit, TabCap, Handle, Knob, Support]
// Hold up the knob's inside
Support = true;
/* [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;
//----------------------
// Useful routines
module PolyCyl(Dia,Height,ForceSides=0) { // based on nophead's polyholes
Sides = (ForceSides != 0) ? ForceSides : (ceil(Dia) + 2);
FixDia = Dia / cos(180/Sides);
cylinder(r=(FixDia + HoleWindage)/2,h=Height,$fn=Sides);
}
//* [Basic dimensions] */
WallThick = 4.0; // min wall thickness
Screw = [3.0,5.5,20.0]; // thread, head, length under head
Insert = [3.0,4.1,8.0]; // thread, knurl, length
//----------------------
// Brake tab cap
BrakeTab = [15,21,3.1]; // length to wheel, width, thickness
BrakeTabSagitta = 8.0; // height of curved endcap
CapOAL = [BrakeTab.y + 2*WallThick,BrakeTab.y + 2*WallThick,BrakeTab.z + 2*WallThick];
module TabCap() {
difference() {
rotate(180/8)
cylinder(d=CapOAL.y,h=CapOAL.z,center=true,$fn=8);
translate([BrakeTab.x/2,0,0])
cube(BrakeTab,center=true);
rotate(180/8)
cylinder(d=BrakeTab.y/cos(180/8),h=BrakeTab.z,center=true,$fn=8);
}
}
//----------------------
// Brake lever handle
// Soft covering with rounded sides that we square off for simplicity
HandleRibs = [15,34,14]; // ignoring slight taper from end
HandleCore = [50.0,24.0,12.0]; // straight section of lever to top of ribs
HandleTipWidth = 30.0; // ignoring actual sector height
module Handle() {
union() {
hull() {
rotate(180/8)
cylinder(d=HandleTipWidth/cos(180/8),h=HandleCore.z,center=true,$fn=8);
translate([-HandleCore.x/2,0,0])
cube(HandleCore,center=true);
}
translate([-(3*HandleCore.x/2 - Protrusion),0,0]) // extend base for ball trimming
cube(HandleCore,center=true);
translate([-HandleRibs.x/2,0,0])
cube(HandleRibs,center=true);
}
}
//----------------------
// Support structure for handle cavity inside knob
// Totally ad-hoc tweakage
// Remember it's lying on its side to match the handle
NumRibs = 2 + 1; // must be odd
RibSpace = floor(HandleCore.z/(NumRibs + 1));
module KnobSupport() {
color("Yellow") { // support overlaps in the middle
render(convexity=3)
intersection() {
for (k=[-1,1])
translate([0,k*ThreadThick,0]) // shrink inward to break adhesion
Handle();
translate([(HandleCore.x - HandleRibs.x)/2 - HandleCore.x - Protrusion,0,0])
cube([HandleCore.x - HandleRibs.x,HandleRibs.y,HandleCore.z],center=true);
union()
for (k=[-floor(NumRibs/2):floor(NumRibs/2)])
translate([0,0,k* RibSpace])
cube([2*HandleCore.x,HandleRibs.y,2*ThreadWidth],center=true);
}
translate([(HandleCore.x - HandleRibs.x)/2 - HandleCore.x,0,0])
cube([HandleCore.x - HandleRibs.x,4*ThreadWidth,NumRibs*RibSpace],center=true);
}
}
//----------------------
// Brake handle knob
// Largely built with magic numbers
// Includes support because it's not really optional
KnobOD = 55.0;
KnobOffset = HandleRibs.x/1;
KnobSides = 2*4*3;
module Knob() {
difference() {
hull() {
resize([0,HandleRibs.y + 4*WallThick,HandleCore.x + HandleTipWidth/2 + WallThick])
sphere(d=KnobOD,$fn=KnobSides);
}
translate([0,0,KnobOffset])
rotate([0,-90,0])
Handle();
for (i=[-1,1],k=[-1,1])
translate([i*KnobOD/4,0,k*KnobOD/4]) {
rotate([90,0,0])
PolyCyl(Insert[OD],1.5*Insert[LENGTH],6);
translate([0,-Screw[LENGTH]/2,0])
rotate([-90,0,0])
PolyCyl(Screw[ID],KnobOD,6);
translate([0,Screw[LENGTH] - Insert[LENGTH],0])
rotate([-90,0,0])
PolyCyl(Screw[OD],KnobOD,6);
}
}
if (Support)
translate([0,0,KnobOffset])
rotate([0,-90,0])
KnobSupport();
}
//----------------------
// Lash it together
if (Layout == "TabCap") {
TabCap();
}
if (Layout == "Handle") {
Handle();
}
if (Layout == "Support") {
KnobSupport();
}
if (Layout == "Knob") {
Knob();
}
if (Layout == "Show") {
translate([60,0,0])
TabCap();
Knob();
}
if (Layout == "Fit") {
translate([60,0,0])
difference() {
TabCap();
translate([0,0,CapOAL.z/2])
cube(CapOAL,center=true);
}
difference() {
Knob();
translate([KnobOD + KnobOD/4,0*KnobOD,0])
cube(2*KnobOD,center=true);
translate([-KnobOD,-KnobOD,0])
cube(2*KnobOD,center=true);
}
}
if (Layout == "Build") {
translate([KnobOD/2,0,(CapOAL.y*cos(180/8))/2])
rotate([0,-90,90])
TabCap();
for (j=[-1,1])
translate([0,-j*0.75*HandleCore.x,0])
difference() {
rotate([j*90,0,0])
Knob();
translate([0,0,-KnobOD])
cube(2*KnobOD,center=true);
}
}

A doodle with dimensions of other parts:

Drive Wheelchair - brake footrest tab dimensions
Drive Wheelchair – brake footrest tab dimensions

The angled tab on the middle left is for the leg rest release latch, but I decided not to silk-purse-ize the thing.

Hiatus

Posts will appear intermittently over the next week or two.

I’m still spending an inordinate amount of time studying the back of my eyelids while horizontally polarized in the lift chair. I can highly recommend not doing whatever it is that triggers a pinched lumbar nerve, but as nearly as I can tell, the proximate cause (shredding leaves) isn’t anything close to whatever the root cause might be.

It does provide plenty of time to conjure solid models from the vasty digital deep:

Wheelchair Brake Mods - solid model - build layout
Wheelchair Brake Mods – solid model – build layout

The wheelchair brake lever seems to have been designed by somebody who never actually had to shove it very often:

Drive Wheelchair Brake
Drive Wheelchair Brake

At least I can fix that

Jonas Peeler: Reshaping and Origin Mystery

This past summer we replaced a worn-out vegetable peeler with what was allegedly a high-quality Linden Jonas peeler. It worked quite well, which it should have, given that it cost nigh onto seven bucks, until I recently backed over it with my wheelchair (about which, more later) and smashed it flat.

World+dog having recently discovered the virtues of home-cooked meals, the replacement cost nigh onto ten bucks and, through the wonders of Amazon, came from a different seller, albeit with a letter-for-letter identical description:

Linden Jonas peeler orders
Linden Jonas peeler orders

With a spare in the kitchen, I applied some shop-fu to unbend the first peeler:

Jonas peeler - reshaping tools
Jonas peeler – reshaping tools

Tapping the handle against the bandsawed dowel sufficed to remove the sharpest bends. The final trick involved clamping one edge of the handle to the section cut from a thread spool, resting the Vise-Grip on the bench vise, and whacking the other edge with the rubber mallet to restore the smooth curve around the main axis, repeating the process along the other side, then hand-forming the gentle curve closer to the blade. It ain’t perfect and never will be, but it’s once again comfortable in the hand.

During that process I had plenty of time to admire the identification stamped into the handle:

Jonas peeler - weak emboss
Jonas peeler – weak emboss

Which, frankly, looks rather gritty on an allegedly high-quality product from a Swedish factory.

Compare it with the new peeler:

Jonas peeler - good emboss
Jonas peeler – good emboss

Now, that’s more like it.

The genuine Linden website doesn’t provide much detail, so I can’t be absolutely sure which peeler is a counterfeit, but it sure looks like at least one fails the sniff test. Linden’s site redirects to Amazon through a Google search link (!) that, given the way Amazon works, could result in anything appearing as a valid result:

https://www.google.com/search?q=amazon.com+linden+sweden

As one should expect by now, Amazon’s commingled inventory produces a fair percentage of reviews complaining about craptastic peelers stamped “Made in China” from any of the sellers unearthed by that search.