Advertisements

Kenmore 158 LED Strip Lighting: Now With Improved Wiring!

It Has Been Decided (in that place where what is decided must be) to allow a single hole in the sewing machine’s front panel:

Kenmore 158 - Front LED strip - wire routing

Kenmore 158 – Front LED strip – wire routing

The hole barely passes the 2 mm coaxial cable I’m misusing for the LED strips and is located where it:

  • Clears the machine’s metal frame to the upper left
  • Isn’t blocked by the knob’s mounting bracket to the lower right
  • Doesn’t snag the knob’s cam followers all over the insides
  • Lines up directly below the orange dot for pretty

The first three of those happen behind the front panel, inside the frame, where you (well, I) can neither see nor measure the locations. I used a large outside caliper to get a feel for where the hole could possibly fit, then got it right on the first try!

On the rear panel, it turns out that the presser foot lever doesn’t quite touch the top of its slot in the frame, so the cable for those LED strips can sneak through:

Kenmore 158 - Rear LED strips - wire routing

Kenmore 158 – Rear LED strips – wire routing

Just inside that slot, the cable turns right, passes into the endcap, then goes upward to re-emerge at the top, inside the channel used for the old 120 VAC zip cord that powered the incandescent bulb in the endcap.

I had some square cable clips lying around, so I used them, but the (yet to be designed) round versions will look better.

The grody frame tells you this is the crash test dummy machine I’m using to verify things before installing them in Mary’s machine.

The improved cable routing required different hole positions in the LED strip mounts:

Strip Light Mount - Drilled cable routing

Strip Light Mount – Drilled cable routing

The internal wire route follows the original 120 VAC zip cord’s route from the bottom of the machine to the endcap (on the left), with the new branch for the front LEDs curving over the main shaft:

Kenmore 158 - LED strips - internal wire routing

Kenmore 158 – LED strips – internal wire routing

The four-conductor ribbon cable also carries the supply voltage for the yet-to-be-built high intensity LED emitters in the end cap that will replace the 10 mm LEDs, with the ends terminated under the clamp in the middle. Those old steel wire clamps seem grossly oversized for the job, but that’s OK with me.

The ribbon cable eases past that whirling crank arm, then passes through the frame to the outside cover under the handwheel, where it just barely clears the drive belts. A few zip ties hold it out of the way.

The OpenSCAD source code offsets the wiring holes by 0.5 mm from the ends of the LED strips for easier wire bending, but is otherwise pretty much the same as before:

// LED Strip Lighting Brackets for Kenmore Model 158 Sewing Machine
// Ed Nisley - KE4ZNU - March 2014
//  October 2014 - tweak endcap length & channel position

Layout = "Build";			// Build Show Channels Strip

//- 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

AlignPinOD = 1.70;			// assembly alignment pins: filament dia

inch = 25.4;

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

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

LEDSegment = [25.0,10.0,3.0];		//  size of each LED segment
SEGLENGTH = 0;
SEGWIDTH = 1;
SEGHEIGHT = 2;

WireChannel = 3.0;				// wire routing channel diameter

StripHeight = 12.0;				// sticky tape width

DefaultLayout = [1,2,"Wire","NoWire"];
NUMSEGS = 0;
NUMSTRIPS = 1;
WIRELEFT = 2;
WIRERIGHT = 3;

EndCapSides = 8*4;				// endcap smoothness
EndCapShim = 0.5;				// additional space for easier wire bending

function EndCapSize(Layout) = [(2*WireChannel + EndCapShim),Layout[NUMSTRIPS]*LEDSegment[SEGWIDTH],StripHeight];

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

}

//-- The negative space used to thread wires into the endcap

module MakeWireChannel(Layout = DefaultLayout,Which = "Left") {

	EndCap = EndCapSize(Layout);	// radii of end cap spheroid

	HalfSpace = EndCap[0] * ((Which == "Left") ? 1 : -1);

	render(convexity=2)
	translate([0,LEDSegment[SEGWIDTH]/2,0])
		intersection() {
			union() {
				cube([2*WireChannel,WireChannel,EndCap[2]],center=true);
				translate([-2*EndCap[0],0,EndCap[2]/2])
					rotate([0,90,0]) rotate(180/6)
						PolyCyl(WireChannel,4*EndCap[0],6);
			}
			translate([HalfSpace,0,(EndCap[2] - Protrusion)]) {
				cube(2*EndCap,center=true);
			}
		}
}

//-- The whole strip, minus wiring channels

module MakeStrip(Layout = DefaultLayout) {

	EndCap = EndCapSize(Layout);	// radii of end cap spheroid

	BarLength = Layout[NUMSEGS] * LEDSegment[SEGLENGTH];				// central bar length

	echo(str("Strip OAL: ",BarLength + 2*EndCap[SEGLENGTH]));

	hull()
		difference() {
			for (x = [-1,1])						// endcaps as spheroids
				translate([x*BarLength/2,0,0])
					resize(2*EndCap) rotate([0,90,0]) sphere(1.0,$fn=EndCapSides);
			translate([0,0,-EndCap[2]])
				cube([2*BarLength,3*EndCap[1],2*EndCap[2]],center=true);
			translate([0,-EndCap[1],0])
				cube([2*BarLength,2*EndCap[1],3*EndCap[2]],center=true);
		}

}

//-- Cut wiring channels out of strip

module MakeMount(Layout = DefaultLayout) {

	BarLength = Layout[NUMSEGS] * LEDSegment[SEGLENGTH];

	difference() {
		MakeStrip(Layout);
		if (Layout[WIRELEFT] == "Wire")
			translate([(BarLength/2 + EndCapShim),0,0])
				MakeWireChannel(Layout,"Left");
		if (Layout[WIRERIGHT] == "Wire")
			translate([-(BarLength/2 + EndCapShim),0,0])
				MakeWireChannel(Layout,"Right");
	}
}

//- Build it

ShowPegGrid();

if (Layout == "Channels") {
	translate([ (2*WireChannel + 1.0),0,0]) MakeWireChannel(DefaultLayout,"Left");
	translate([-(2*WireChannel + 1.0),0,0]) MakeWireChannel(DefaultLayout,"Right");
}

if (Layout == "Strip") {
	MakeStrip(DefaultLayout);
}

if (Layout == "Show") {
	MakeMount(DefaultLayout);
}

if (Layout == "Build") {

	if (false) {					// original no-drill wiring
		translate([0,(3*LEDSegment[SEGWIDTH]),0]) MakeMount([1,2,"Wire","Wire"]);		// rear left side, vertical
		translate([0,0,0]) MakeMount([5,2,"Wire","NoWire"]);				// rear top, across arm
		translate([0,-(3*LEDSegment[SEGWIDTH]),0]) MakeMount([6,2,"NoWire","Wire"]);	// front top, across arm
	}

	if (true) {						// front: drill panel, rear: route through foot lift lever
		translate([0,(3*LEDSegment[SEGWIDTH]),0])
			MakeMount([1,2,"NoWire","Wire"]);				// rear left side, vertical
		translate([0,0,0])
			MakeMount([5,2,"Wire","Wire"]);					// rear top, across arm
		translate([0,-(1*LEDSegment[SEGWIDTH]),0])
			rotate(180)
			MakeMount([6,2,"NoWire","Wire"]);				// front top, across arm
	}
}
Advertisements

, ,