Advertisements

Kenmore Model 158 Sewing Machine: Cool White LED Strip Lights

The reel of cool-white LEDs finally arrived from halfway around the planet and, based on the ahem customer feedback concerning the earlier prototype warm white LED strip lights for Mary’s sewing machine, I went with two parallel strips on each mount:

Strip Light Mount - 2 wide - build layout

Strip Light Mount – 2 wide – build layout

Natural PLA provides a nice, crystalline appearance:

Kenmore 158 Sewing Machine - Cool white LEDs - rear no flash

Kenmore 158 Sewing Machine – Cool white LEDs – rear no flash

Cool white LEDs have somewhat higher lumen/watt efficiency, but the real gain came from doubling the number of LEDs:

Kenmore 158 Sewing Machine - Cool white LEDs - front flash

Kenmore 158 Sewing Machine – Cool white LEDs – front flash

I overvolted the warm white LEDs to 14 V to get closer to 20 mA/segment, but the cool white ones run pretty close to 20 mA at 12 V, so I didn’t bother.

That black Gorilla Tape remains butt-ugly:

Kenmore 158 Sewing Machine - Cool white LEDs - rear flash

Kenmore 158 Sewing Machine – Cool white LEDs – rear flash

Obviously, I must find some white duct tape…

Commercial versions of this hack secure the wiring with little white clips and foam tape, so I should conjure up something like that. Mary specifically did not want the lights affixed under the arm, though, so those things weren’t even in the running.

The OpenSCAD source code widens the mount and moves the wiring conduit a little bit, to simplify the connections to both strips, but is otherwise identical to the earlier version:

// LED Strip Lighting Brackets for Kenmore Model 158 Sewing Machine
// Ed Nisley - KE4ZNU - March 2014

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

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

WireChannel = 3.0;				// wire routing channel

StripHeight = 12.0;				// sticky tape width
StripSides = 8*4;

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

EndCapSides = StripSides;

CapSpace = 2.0;						// build spacing for endcaps
BuildSpace = 3.0;					// spacing between objects on platform

//----------------------
// 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 = [(2*WireChannel + 1.0),Layout[NUMSTRIPS]*Segment[SEGWIDTH],StripHeight];	// radii of end cap spheroid
	
	HalfSpace = EndCap[0] * ((Which == "Left") ? 1 : -1);
	
	render(convexity=2)
	translate([0,Segment[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 = [(2*WireChannel + 1.0),Layout[NUMSTRIPS]*Segment[SEGWIDTH],StripHeight];	// radii of end cap spheroid

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

	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] * Segment[SEGLENGTH];
	
	difference() {
		MakeStrip(Layout);
		if (Layout[WIRELEFT] == "Wire")
			translate([BarLength/2,0,0])
				MakeWireChannel(Layout,"Left");
		if (Layout[WIRERIGHT] == "Wire")
			translate([-BarLength/2,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") {

	translate([0,(3*Segment[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*Segment[SEGWIDTH]),0]) MakeMount([6,2,"NoWire","Wire"]);	// front top, across arm
}
Advertisements

, ,

  1. #1 by Red County Pete on 2014-04-02 - 10:05

    white duct tape

    Not sure if it’s still in white, but the tape for Tyvek house wrap might do the trick…

    I made a quilting frame for Julie (adapted from a design on the interwebs), but she hasn’t tried it yet. She’s nervous about using the Elna with the frame and the Brother is a pretty lightweight machine. Alas, I gave up on the mutant ’50s Singer when we moved. (Early style Singer machine, with a spiffy paint job and case from a Japanese outfit, called a Sew Best.) If the needle could take it, the beast would sew it. I did do stands so she can use the frame for hand methods…

    • #2 by Ed on 2014-04-02 - 21:08

      If the needle could take it, the beast would sew it.

      I keep telling her she needs one of those gasoline-powered chain-drive Husqvarnas, but …

  2. #3 by Raj on 2014-04-03 - 06:54

    Thats bright enough for my mom with glaucoma. Remember “what you sew, shall you rip”!

    • #4 by Ed on 2014-04-03 - 09:23

      It’s not quite as bright as the pictures show, but we’re getting closer to having enough light: she works to tighter tolerances in cloth than I do in metal…