The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Tag: Improvements

Making the world a better place, one piece at a time

  • Streaming Radio Advertisements: Carpet Bombing

    After a protracted silence in a Radionomy stream, the Raspberry Pi player offered this log:

    2017-03-05 11:17:07,890 INFO: Starting mplayer on Plenitude -> /home/pi/Playlists/Radio-PLENITUDE.m3u
    2017-03-05 11:17:13,651 INFO: Track name: []
    2017-03-05 11:44:02,296 INFO: Track name: [David Wahler - Whispers from Eternity]
    2017-03-05 11:46:36,995 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 11:47:07,117 INFO: Track name: []
    2017-03-05 11:49:07,080 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 11:49:10,079 INFO: Track name: [Jef Mounet & Danièle Mounet - L'ancre musicale Natures d'Eau]
    2017-03-05 12:02:02,271 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:02:32,424 INFO: Track name: []
    2017-03-05 12:04:32,243 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:05:01,925 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:07:02,276 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:07:31,968 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:09:32,262 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:10:02,192 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:12:02,311 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:12:32,184 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:14:32,085 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:15:02,217 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:17:02,057 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:17:32,445 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:19:32,083 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 12:19:35,171 INFO: Track name: [Jean-Marc Staehle - Bercé par tant de beauté]
    2017-03-05 12:23:42,410 INFO: Track name: [Francesco - Sur le chemin]
    2017-03-05 12:29:50,265 INFO: Track name: [Michel Pépé - Pacifica]
    2017-03-05 12:35:07,493 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:35:37,377 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:37:37,478 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 12:37:41,476 INFO: Track name: [Music And Wellness (Musique Et Bien Etre) - Absolute Winner]
    2017-03-05 12:46:36,742 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 12:47:06,668 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 12:49:06,538 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 12:49:10,270 INFO: Track name: [Patrick Vuillaume &Nicole Bally - Pearls of Light (Instrumental by Nicole Bally)]
    2017-03-05 12:53:45,357 INFO: Track name: [Trine Opsahl - Sister moon]
    2017-03-05 12:54:58,596 INFO: Track name: [Peter Kater - Rebirth]
    2017-03-05 13:04:52,726 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 13:05:22,665 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 13:07:21,561 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 13:07:25,808 INFO: Track name: [Deuter - Flowing]
    2017-03-05 13:12:55,970 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 13:13:25,859 INFO: Track name: []
    2017-03-05 13:15:26,449 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 13:15:33,022 INFO: Track name: [Radio PLENITUDE - Jingle Intro Publicité]
    2017-03-05 13:15:59,437 INFO: Track name: [Targetspot - TargetSpot]
    2017-03-05 13:17:59,559 INFO: Track name: [Radio PLENITUDE - Jingle Extro Publicité]
    2017-03-05 13:18:06,133 INFO: Track name: [O - Part I]
    

    The Jingle lines introduce a short interlude of chimes separating music from advertisements. The Intro chimes play for 30 seconds and the Extro chimes play for three to five seconds. Some stations have similar interludes, others do not; apparently the station gets to choose the format.

    The [Targetspot - TargetSpot] lines mark two minutes of TargetSpot insertion: either advertisements (if you’re in their target market) or generic musical interludes similar to the station’s genre (if you’re out-of-market). The ads and music often lack volume-matching with the streaming music, rarely have lower volume, and the ads are incomprehensible to my ears. The musical interludes seem to be randomly chosen from a small set of candidate tracks that, along with the chimes, become annoyingly familiar in short order.

    The [] lines (yes, an empty string) mark two minutes of Public Service Announcements, advertisements, or generic musical interludes. I’m uncertain how they differ from the [Targetspot - TargetSpot] insertions.

    At a minimum, Radionomy inserts two minutes of TargetSpot / PSAs after every 12 to 15 minutes of music. Adding in the Jingle markers, ads occupy just under 20% of the total “airtime” for this station.

    However, bizarre events like the 17 nonstop minutes of jingles and ads inserted just after noon occur with inexplicable frequency. I’ve noticed half an hour of similar back-to-back-to-back ads on other stations, so it’s not a rare event.

    To quote the TargetSpot website:

    TargetSpot serves ads in real time to each listener’s personalized stream, creating a one-to-one relationship between the advertiser and the listener. The result is a dramatic increase in message relevancy and campaign effectiveness

    Those keyword markers turn out to be incredibly convenient. Just sayin’…

  • Epoxy Mixing Pads

    Quilters hold fabric in place with freezer paper while piecing their blocks; it’s basically plastic-coated paper that gets tacky at ordinary clothes iron temperatures.

    It’s useful in the shop, too. Cut a length of freezer paper into small pages, pad them plastic-side-up atop a sheet of cardboard, and you get a great place to mix small amounts of epoxy:

    Epoxy mixing pad
    Epoxy mixing pad

    Let the pad stay next to whatever you’re epoxying (like, say, the lathe tailstock ways), then test the leftover epoxy for hardness… rather than messing up the joint you so laboriously created by moving the parts an hour too soon.

    Works for me, anyhow. Highly recommended!

  • Mini-Lathe Carriage Stop: Spring Counterbore

    While pondering the tailstock ways, I realized the spring on the LMS Adjustable Carriage Stop just needed a counterbore to make it work right:

    LMS Carriage Stop - spring counterbore
    LMS Carriage Stop – spring counterbore

    The OEM spring now sits slightly compressed with the screw tip flush at the far end of the block:

    LMS Carriage Stop - reassembled
    LMS Carriage Stop – reassembled

    That OEM screw head knurling leaves a bit to be desired, doesn’t it?

    Actually boring the hole would be a remarkably tedious process for little gain. Instead, I lined up the block in the drill press using a ¼ inch drill (the OEM hole isn’t hard metric!) in the unthreaded section, enlarged it with progressively larger drills up to an O (0.316 inch = 8 mm), then finished with a P (0.323 in = 8.2 mm).

    As it turned out, my guesstimated relaxed spring length was a bit off, so I turned a brass bushing to shorten the hole by 2 mm:

    LMS Carriage Stop - screw bushing
    LMS Carriage Stop – screw bushing

    If I don’t mention it, nobody will ever know!

    The original doodle, with close-enough sizes:

    LMS Carriage Stop - spring counterbore doodle
    LMS Carriage Stop – spring counterbore doodle
  • Monthly Science: Minimal-Woo Cast Iron Pan Seasoning

    After trying several variations on a theme, our daily-use pan now looks like this:

    Cast Iron Pan - after weekly seasoning
    Cast Iron Pan – after weekly seasoning

    Those obvious wiping marks come from an oily rag in a hot pan. What could go wrong?

    The reflected light bar comes from the under-cabinet LED strip.

    The surface withstands stainless utensils, cooks omelets with aplomb, and requires no fussy KP:

    Omelet in cast-iron pan
    Omelet in cast-iron pan

    The low-woo seasoning recipe, done maybe once a week when the bottom has more gunk than usual:

    • Clean the pan as usual, wipe dry
    • Begin heating on medium burner set to High
    • Add 0.2 ml = 10 drops = 1 squirt of flaxseed oil
    • Wipe around pan interior with small cotton cloth
    • Continue heating to 500 °F, about four minutes
    • Carefully wipe oily cloth around pan again
    • Let cool

    Works for us and doesn’t involve any magic.

  • Mini-Lathe Tailstock Way Repair

    After the faceplant caused by the crappy compound way finishing, I decided to try repairing the tailstock ways as a means of gaining experience before tackling the real problem. The general idea is to see whether filling the gouges with epoxy will suffice.

    I’m using good ol’ JB Weld steel-filled epoxy, rather than graphite / molybdenum disulfide loaded epoxy, mostly because:

    • I have it on the shelf
    • This is a non-sliding joint
    • My technique needs polishing, too

    The key point: the tailstock is (astonishingly) well aligned and, if I can manage to not change how it sits on the lathe bed, this should be a zero-impact operation. Scraping / filing / fiddling with the high spots will change the alignment; I expect I must eventually do such things; this represents a first pass at the problem.

    Applying a fat blue Sharpie to the tailstock ways:

    Tailstock way repair - blue Sharpie
    Tailstock way repair – blue Sharpie

    After sliding the tailstock back and forth a few times, the remaining blue shows where the ways did not make contact. Those shiny and silvery spots rubbed against the lathe bed ways.

    The flat way looked like this:

    Tailstock way repair - flat contacts
    Tailstock way repair – flat contacts

    The patch along the upper-left edge and the small dot near the upper-right corner are the only contact points across the entire flat.

    The outside of the V groove:

    Tailstock way repair - outer V contacts
    Tailstock way repair – outer V contacts

    As nearly as I can tell, that’s actually a reasonably flat and well-aligned surface, with small contact points scattered all over. Granted, there’s a larger contact patch to the left and less to the right.

    The inside of the V groove:

    Tailstock way repair - inner V contacts
    Tailstock way repair – inner V contacts

    There’s a single point near the top left, another over on the right, and that’s about it.

    I cleaned the tailstock ways with acetone to get rid of the Sharpie / grease / oil / whatever. Under normal circumstances you’d roughen the surface to give the epoxy something to grip, which definitely seemed akin to perfuming a lily.

    To prevent permanently affixing the tailstock to the lathe, some folks put a generous layer of oil / graphite / soot / release agent on the lathe bed ways. I used some 3 mil = 0.08 mm Kapton tape, figuring an impervious layer would pretty much guarantee I could get the tailstock off again, no matter what.

    So, we begin.

    Butter up the tailstock ways with epoxy and smoosh into place atop the Kapton:

    Tailstock way repair - V groove on tape
    Tailstock way repair – V groove on tape

    Make sure the tailstock remains well-seated where it should be:

    Tailstock way repair - weights
    Tailstock way repair – weights

    Do other things for 24 hours while the epoxy cures, pry the tailstock loose by hammering The Giant Prying Screwdriver between the lathe bed and the underside of the tailstock (just right of the V-groove, where nothing slides on the bed, but I did use a bit of plastic as a shield), chip off excess epoxy, clean things up, etc, etc.

    This time, I applied Sharpie to the lathe bed, then slid the tailstock back & forth a few times. As a result, the blue areas now show the contact patches and the gray areas just slid by without touching.

    The flat way looks pretty good:

    Tailstock way repair - flat epoxy blued
    Tailstock way repair – flat epoxy blued

    That round dot over on the right seems to be a steel protrusion; I think it’s part of the same lump appearing in the “before” picture above. That rather sharp point seems to have indented the tape and produced a low area in the epoxy around it, which may not matter much: it was the only contact point before I did this.

    The V groove isn’t anywhere near perfect:

    Tailstock way repair - V groove epoxy blued
    Tailstock way repair – V groove epoxy blued

    On the upside, the ways have much, much larger contact patches spread across nearly their entire lengths, which isn’t to be sniffed at.

    While reassembling the tailstock, I added a pair of M6 washers above the clamp plate so it cleared the bed with the screw tightened into the cam-lock post:

    Tailstock clamp plate - washers
    Tailstock clamp plate – washers

    Which definitely calls for a small bushing, of course. If you put a lockwasher under the screw head, it won’t clear the end of the bed casting. So it goes.

    Another washer under the ram lock screw changed the phase enough to keep the knob out of the way in both the fully locked and unlocked positions:

    Tailstock ram lock - added washer
    Tailstock ram lock – added washer

    I slobbered some Mobil Vactra #2 Sticky Way Oil (thanks, Eks!) on the bed ways, snuggled the tailstock in place, and wow does that thing move! Verily, it slides smoothly and clamps solidly in place: a tremendous improvement over the status quo ante.

    Some observations…

    • The tape (perhaps the adhesive layer) produces a slightly textured epoxy surface
    • The tailstock way’s small contact points indented the tape, even though it’s only 3 mil thick
    • Filling the low areas in the way works well
    • The high areas may not have enough epoxy for good durability
    • I expect the epoxy will wear faster than steel, so contact should improve with time
    • This is not a permanent fix

    What I’ll do differently next time…

    • Apply more epoxy to avoid those small gaps along the edges
    • Use a real release agent: smoothed in place, it might provide a better finish. Might not matter
    • Verify a good prying spot before epoxying, say, the compound

    All in all, though, this worked much better than I expected!

  • Cheap WS2812 LEDs: Test Fixture Mount

    Mounting the ungainly WS2812 LED test fixture seemed like a Good Idea to keep the electricity out of the usual conductive litter:

    WS2812 array test fixture - rear
    WS2812 array test fixture – rear

    The solid model shows more details:

    LED Test Fixture - solid model
    LED Test Fixture – solid model

    The power wires along the array edges slide into the rear (thinner) slot, with enough friction from a few gentle bends to hold the whole mess in place.

    The knockoff Arduino Nano rests on the recessed ledge in the pit, with M2 screws and washers at the corners holding it down (the PCB’s built-in holes might work with 1 mm or 0-90 screws, but that’s just crazy talk). I soldered the power wires directly to the coaxial jack pins under the PCB; they snake out to the LEDs through the little trench. There should be another cutout around the USB connector for in-situ programming, although the existing code works fine.

    The front (wider) slot holds a piece of translucent white acrylic to diffuse the light:

    WS2812 array test fixture - front flash
    WS2812 array test fixture – front flash

    It’s painfully bright: a few layers of neutral density filter would be appropriate for a desk toy.

    The array runs hot enough at MaxPWM = 255 to produce a gentle upward breeze.

    It looks even better without the flash:

    WS2812 array test fixture - front dark
    WS2812 array test fixture – front dark

    You’ll find many easier ways to get RGB LED panels, but that’s not the point here; I’m waiting for these things to die an unnatural death.

    The OpenSCAD source code as a GitHub Gist:

    // LED Test Fixture
    // Ed Nisley KE4ZNU – February 2017
    ClampFlange = true;
    Channel = false;
    //- Extrusion parameters – must match reality!
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    Protrusion = 0.1;
    HoleWindage = 0.2;
    //- Screw sizes
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Insert = [2.8,3.5,4.0]; // M2 threaded insert
    ScrewOD = 2.0;
    WasherOD = 5.0;
    //- Component sizes
    PCBSize = [18.0,43.5,1.6]; // microcontroller PCB
    PCBClear = 2*[ThreadWidth,ThreadWidth,0]; // clearance around board
    PCBShelf = [ThreadWidth,ThreadWidth,0]; // shelf under perimeter
    PCBCavity = PCBSize – PCBShelf + [0,0,2.5]; // support shelf around bottom parts
    LEDPanel = [70,40,4.0]; // lying flat, LEDs upward
    LEDWire = [LEDPanel[0],LEDPanel[1] + 2*5.0,2.0]; // power wires along sides
    Diffuser = [LEDPanel[0],LEDPanel[1] + 2*4.0,3.5];
    echo(str("Diffuser panel: ",Diffuser));
    WallThick = 8.0;
    BaseThick = 3*ThreadThick + Insert[LENGTH] + PCBCavity[2];
    Block = [3*WallThick + PCBSize[0] + LEDPanel[2] + Diffuser[2],
    2*WallThick + IntegerMultiple(max(PCBSize[1],LEDWire[1]),5),
    BaseThick + LEDPanel[0]];
    echo(str("Block: ",Block));
    CornerRadius = 5.0;
    NumSides = 4*5;
    //- Adjust hole diameter to make the size come out right
    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);
    }
    //- Build it
    difference() {
    hull() // main block with rounded corners
    for (i=[-1,1], j=[-1,1])
    translate([i*(Block[0]/2 – CornerRadius),j*(Block[1]/2 – CornerRadius),,0])
    cylinder(r=CornerRadius,h=Block[2],$fn=NumSides);
    translate([2*WallThick + PCBSize[0] – Block[0],
    0,
    (Block[2]/2 + BaseThick)])
    cube(Block + [0,2*Protrusion,0],center=true); // cut out over PCB
    translate([WallThick + (PCBSize + PCBClear)[0]/2 – Block[0]/2,
    0,
    0]) {
    translate([0,0,(BaseThick + (Protrusion – PCBSize[2])/2)])
    cube(PCBSize + PCBClear + [0,0,Protrusion],center=true); // PCB recess
    translate([0,0,(BaseThick + (Protrusion – PCBCavity[2])/2)])
    cube(PCBCavity + [0,0,Protrusion],center=true); // cavity under PCB
    translate([PCBSize[0]/2 + WallThick/2 – Protrusion/2,PCBSize[1]/2 – 15/2,BaseThick – PCBCavity[2]/2 + Protrusion/2])
    cube([WallThick + PCBShelf[0] + Protrusion,
    15,PCBCavity[2] + Protrusion],center=true); // wiring cutout
    for (i=[-1,1], j=[-1,1]) // screw inserts
    translate([i*(PCBSize[0] + ScrewOD)/2,j*(PCBSize[1] + ScrewOD)/2,-Protrusion])
    rotate(180/(2*6))
    PolyCyl(Insert[OD],BaseThick + 2*Protrusion,6);
    }
    resize([2*Block[0],0,LEDPanel[0] + Protrusion]) // LED panel outline
    translate([0,0,BaseThick])
    rotate([0,-90,0])
    translate([(LEDPanel[0] + Protrusion)/2,0,0])
    cube(LEDPanel + [Protrusion,0,0],center=true);
    translate([-Block[0]/2 + 2*WallThick + PCBSize[0] + LEDWire[2]/2 + 5*ThreadWidth,
    0,BaseThick]) // LED wiring recess
    rotate([0,-90,0])
    translate([(LEDWire[0] + Protrusion)/2,0,0])
    cube(LEDWire + [Protrusion,0,0],center=true);
    translate([Block[0]/2 – Diffuser[2]/2 – 5*ThreadWidth,0,BaseThick]) // diffuser
    rotate([0,-90,0])
    translate([(Diffuser[0] + Protrusion)/2,0,0])
    cube(Diffuser + [Protrusion,0,0],center=true);
    }
  • Vacuum Tube Lights: Plate Wire Plug

    After replacing the WS2812 LED in the 21HB5A socket, I drilled out the hole in the disk platter for a 3.5 mm stereo jack, wired a nice knurled metal plug onto the plate lead, and it’s all good:

    21HB5A - Audio plug cable
    21HB5A – Audio plug cable

    The plug had a rather large cable entry that cried out for a touch of brass:

    Audio plug - brass trim turning
    Audio plug – brass trim turning

    Fancy plugs have a helical spring strain relief insert about the size & shape of that brass snout; might have to buy me some fancy plugs.

    This time, I got the alignment right by clamping everything in the lathe while the epoxy cured:

    Audio plug - brass trim gluing
    Audio plug – brass trim gluing

    I flipped the drill end-for-end, which was surely unnecessary.

    It’s now sitting on the kitchen table, providing a bit of light during supper while I wait for a WS2812 controller failure. Again.