Kenmore 158: Foot Pedal Foot Bushings

As you’d expect, the soft feet on the bottom of the Kenmore Model 158 sewing machine’s foot pedal control turn into hard buttons after a few decades. The OEM feet have mushroom tops that push through holes in the case and latch in place; of course, none of the rubber feet in my collection match the hole diameter or case thickness.

No problem! Design a bushing that fits the case hole and passes a 4-40 screw:

Speed Control Foot Bushing
Speed Control Foot Bushing

Then print up a handful, add screws to fit the rubber feet, and top off with nuts:

Kenmore 158 - pedal foot bushing - detail
Kenmore 158 – pedal foot bushing – detail

Installed, with the screws cropped to a suitable length, they look about like you’d expect:

Kenmore 158 - pedal foot bushing - interior
Kenmore 158 – pedal foot bushing – interior

Turns out that the springs supporting the foot pedal rest in those pockets, so the bushing reduces the spring travel by a few millimeters. The springs aren’t completely compressed with the pedal fully depressed, so it’s all good.

The OpenSCAD source code:

// Kenmore Model 158 Sewing Machine Foot Control Bushings
// Ed Nisley - KE4ZNU - June 2014

//- Extrusion parameters must match reality!
//  Print with 2 shells and 3 solid layers

ThreadThick = 0.20;
ThreadWidth = 0.40;

HoleWindage = 0.2;			// extra clearance

Protrusion = 0.1;			// make holes end cleanly

function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);

//----------------------
// Dimensions

Stem = [2.5,5.7];			// through the case hole
Cap = [3.0,10.0];			// inside the case

LEN = 0;
DIA = 1;

OAL = Stem[LEN] + Cap[LEN];

ScrewDia = 2.8;				// 4-40 generous clearance

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

module ShowPegGrid(Space = 10.0,Size = 1.0) {

  RangeX = floor(100 / Space);
  RangeY = floor(125 / Space);

	for (x=[-RangeX:RangeX])
	  for (y=[-RangeY:RangeY])
		translate([x*Space,y*Space,Size/2])
		  %cube(Size,center=true);

}

//----------------------
// Build it!

ShowPegGrid();

difference() {
	union() {
		cylinder(d=Stem[DIA],h=OAL,$fn=16);
		cylinder(d=Cap[DIA],h=Cap[LEN],$fm=16);
	}
	translate([0,0,-Protrusion])
		PolyCyl(ScrewDia,OAL + 2*Protrusion,6);
}