Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.
A four-click rotary pushbutton switch actuates the three functions (plus “off”) in sequence:
Flashlight switch – internal wiring
All three lights became intermittent, which suggested a poor return connection at the far end of the battery. The case is, of course, aluminum, with coarse-cut threads that grate as you tighten the parts. I cleaned the crud out of the threads, anointed them with Ox-Gard compound, and discovered that the laser and UV LEDs were still flaky.
Taking the thing apart and unsoldering the switch connections revealed the problem:
Flashlight switch – bad solder joints
Yup, two lousy solder joints. They’re not exactly cold solder joints, because there’s not really a joint there to begin with; the switch tabs never got hot enough to bond with the molten solder before it cooled.
A dab of flux and touch from a hot soldering iron solved that problem.
Assemble in reverse order and it works better than it ever did before!
The brittle tubing on Mary’s Interplak water jet continued to disintegrate, so I replaced the entire tube with Tygon:
Interplak water jet – interior
Nisley’s First Rule of Plumbing: Never, ever look inside the pipes delivering water to your faucet.
Interplak handle – interior view
That’s not quite inside the pipes, but it’s pretty grotendous, isn’t it?
As expected, flexible tubing doesn’t transmit the pressure pulses nearly as well as the OEM rigid tubing, so we finally bought a new Waterpik. At least you can get replacement tubing for Waterpiks, but I’ll wait until it fails before stocking up.
Contrary to what you might expect, I cut the Interplak’s cord, harvested the motor windings, and dumped the carcass in the trash.
Both Shimano SPD pedals on my Tour Easy have been creaking while climbing hills and I’ve gradually eliminated all the usual mechanical suspects: loose bottom bracket bearings (it’s a cartridge), loose cranks (they’re the old-school tapered squares), loose pedal spindles, and so forth. Of course, it’s impossible to produce the creak with the bike clamped in the work stand, which make debugging particularly frustrating.
After all that, I noticed the shoe soles were wearing the pedal frames just outside the cleat clamps:
Shimano SPD pedal – shoe sole abrasion
So I went so far as to carve away a bit of the sole:
Shimano SPD cleat – trimmed shoe sole
Turns out none of that solved the problem.
What did solve the problem: a drop of oil on the rear of the cleat. You can see a smear of oil on the sole; it doesn’t take quite so much.
As nearly as I can tell, the rear of the cleat drags on the slightly irregular surface of the clamp and, both surfaces being hardened steel, they stick-and-slip just slightly.
A dab of grease may provide longer-lasting relief …
This doesn’t happen very often, but, after a few road trips and some jostling around, the M2’s platform was definitely out of alignment: the first layer came out generally too thin, with the X-Y+ quadrant very much too thin.
I tried a quick and dirty adjustment that didn’t produce meaningful results, then broke out the Starrett Taper Gauge and did it right.
Jog around measuring the height of the nozzle above the platform
Adjust screws to reduce variation
Change Z offset in startup G-Code
Run off a few test patterns to get the platform heated
Measure actual thickness
Change Z offset to get the right answer
Done!
This progression of cold measurements, read top-to-bottom, left column first, shows the observed nozzle height above the platform around the edges and at the center:
M2 Platform Leveling Progression – 2014-06-30
The final measurements seem to indicate the glass plate is 0.2 mm convex in the center, but I wouldn’t trust the measurements to that level of accuracy. It’s probably bowed upward, but it’s certainly close enough.
The cold measurements suggest that the Z offset should be -4.80 mm, but the measurements on the hot platform with actual extrusion threads showed that -4.50 mm produced the correct thicknesses.
It’s not clear automating the movements would produce better or faster results than just manually jogging the nozzle around the platform, particularly since it happens only every few months.
This would be easier with the Z offset stored in the EEPROM and some modified startup G-Code to retrieve it.
In what’s surely a change intended to better meet the needs of their customers, the newspaper changed the crossword layout just a little teeny bit, so my previous script needed a tweak:
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
Then print up a handful, add screws to fit the rubber feet, and top off with nuts:
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
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);
}