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.

Category: Science

If you measure something often enough, it becomes science

  • Six Gallon Can Lid Adapter to Platform Bird Feeder

    A House Finch suffering from Finch Eye Disease prompted me to sterilize our feeder, which meant providing a temporary feeder to keep the birds flying. Having an abundance of lids from six gallon plastic cans / buckets, this made sense:

    Can Lid Feeder - installed
    Can Lid Feeder – installed

    Which required an adapter betwixt pole and lid:

    Can Lid Feeder - assembled
    Can Lid Feeder – assembled

    Which requires a bit of solid modeling:

    Can Lid Platform Feeder Mount - solid model - bottom
    Can Lid Platform Feeder Mount – solid model – bottom

    The lids have a central boss, presumably for stiffening, so the model includes a suitable recess:

    Can Lid Platform Feeder Mount - solid model - support structure
    Can Lid Platform Feeder Mount – solid model – support structure

    As usual, automatically generated support fills the entire recess, so I designed a minimal support structure into the model and cracked it out with very little effort:

    Can Lid Feeder - support structure
    Can Lid Feeder – support structure

    The tangle off to the right comes from a bridge layer with a hole in the middle, which never works well even with support:

    Can Lid Platform Feeder Mount - Slic3r - bridge layer
    Can Lid Platform Feeder Mount – Slic3r – bridge layer

    Didn’t bother the birds in the least, though, so it’s all good.

    I loves me my 3D printer …

    The OpenSCAD source code as a GitHub Gist:

    // Adapter from steel pole to 5 gallon plastic can lid
    // Turns the lid into a improvised platform feeder
    // Ed Nisley – KE4ZNU – 2018-11
    Layout = "Build"; // Show Build
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    Protrusion = 0.1; // make holes end cleanly
    // Sizes
    ID = 0;
    OD = 1;
    LENGTH = 2;
    Wall = 10; // minimum thickness or width for anything
    Boss = [15,50,9]; // central boss on lie
    Flange = [50,110,Boss[LENGTH] + Wall];
    echo(Boss);
    echo(Flange);
    Pole = [(23.5 + 4*HoleWindage),26,45]; // small end of steel pole
    Screw = [5.0,8.0,25.0]; // 5 mm or 10-32
    ScrewOC = 80; // lid mounting screws
    NumScrews = 3;
    NumSides = NumScrews*2*4;
    $fn = NumSides;
    //———————-
    // 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);
    }
    //———————-
    // Build it
    module Bracket() {
    difference() {
    union() {
    rotate(180/(NumSides/2)) {
    cylinder(d=Flange[OD],h=Flange[LENGTH],$fn=NumSides/2); // fewer sides is OK
    cylinder(d=Pole[OD] + 2*Wall,h=Pole[LENGTH] + Flange[LENGTH],$fn=NumSides/2);
    }
    }
    translate([0,0,-Protrusion])
    rotate(180/NumSides)
    cylinder(d=Boss[OD],h=Boss[LENGTH] + Protrusion,$fn=NumSides);
    translate([0,0,-Protrusion])
    rotate(180/NumSides)
    cylinder(d=Pole[ID],h=2*(Pole[LENGTH] + Flange[LENGTH]),$fn=NumSides);
    for (i=[0:NumScrews-1])
    rotate(i*(360/NumScrews))
    translate([ScrewOC/2,0,-Protrusion])
    PolyCyl(Screw[ID],2*Flange[LENGTH],6);
    }
    }
    module Support() {
    NumRibs = NumSides/2;
    Rib = [0.95*(Boss[OD] – Pole[ID])/2,2*ThreadWidth,Boss[LENGTH] – ThreadThick];
    color("Yellow") {
    for (i=[0:NumRibs-1]) {
    a = i*360/NumRibs;
    rotate(a)
    translate([Pole[ID]/2 + Rib.x/2,0,Rib.z/2])
    cube(Rib,center=true);
    }
    rotate(180/NumSides)
    difference() {
    cylinder(d=Pole[ID] + 10*ThreadWidth,h=1*ThreadThick,$fn=NumSides);
    translate([0,0,-Protrusion])
    cylinder(d=Pole[ID],h=Rib.z + 2*Protrusion,$fn=NumSides);
    }
    }
    }
    if (Layout == "Show")
    Bracket();
    if (Layout == "Build") {
    Bracket();
    Support();
    }
  • JYE Tech DSO150 Oscilloscope vs. Actual Signals

    The DSO150 oscilloscope’s specs give a 200 kHz bandwidth, so a 50 kHz sine wave looks pretty good:

    DSO150 - sine wave 50 kHz 10 us-div
    DSO150 – sine wave 50 kHz 10 us-div

    A 100 kHz sine wave looks chunky, with maybe 25 samples per cycle:

    DSO150 - sine wave 100 kHz 10 us-div
    DSO150 – sine wave 100 kHz 10 us-div

    The DSO150 tops out at 10 µs/div, so you can’t expand the waveform more than you see; 25 samples in 10 µs seems to be 2.5 Msample/s, exceeding the nominal 1 Msample/s spec. I have no explanation.

    A 10 kHz square wave shows a blip just before each transition that isn’t on the actual signal:

    DSO150 - square wave 10 kHz 20 us-div
    DSO150 – square wave 10 kHz 20 us-div

    At 50 kHz, there’s not much square left in the wave:

    DSO150 - square wave 50 kHz 10 us-div
    DSO150 – square wave 50 kHz 10 us-div

    And, just for completeness, a 200 kHz square wave completely loses its starch:

    DSO150 - square wave 200 kHz 10 us-div
    DSO150 – square wave 200 kHz 10 us-div

    A 10% (-ish) duty cycle pulse at 25 kHz has frequency components well beyond the scope’s limits, so it’s more of a blip than a pulse:

    DSO150 - pulse 25 kHz 10 us-div
    DSO150 – pulse 25 kHz 10 us-div

    The pulse repetition frequency beats with the scope sampling and sweep speeds to produce weird effects:

    DSO150 - pulse 25 kHz 100 us-div
    DSO150 – pulse 25 kHz 100 us-div

    Tuning the pulse frequency for maximum weirdness:

    DSO150 - pulse 15 kHz 200 us-div
    DSO150 – pulse 15 kHz 200 us-div

    None of this is unique to the DSO150, of course, as all digital scopes (heck, all sampled-data systems) have the same issues. The DSO150’s slow sampling rate just makes them more obvious at lower frequencies.

    Key takeaway: use the DSO150 for analog signals in the audio range, up through maybe 50 kHz, and it’ll produce reasonable results.

    Using it for digital signals, even at audio frequencies, isn’t appropriate, because the DSO150’s low bandwidth will produce baffling displays.

     

  • Monthly Science: Motel Water Pressure vs. Height

    Being a sucker for infrastructure and numbers, the fire sprinkler system pressure gauges in the motel stairwell proved irresistible.

    The first floor gauge shows a nice round 100 psi:

    Hotel water pressure - floor 1
    Hotel water pressure – floor 1

    Up on the second floor, it’s 90 psi:

    Hotel water pressure - floor 2
    Hotel water pressure – floor 2

    With a different brand of gauge, it’s also 90 psi on the third floor:

    Hotel water pressure - floor 3
    Hotel water pressure – floor 3

    Maybe 85 psi on the fourth:

    Hotel water pressure - floor 4
    Hotel water pressure – floor 4

    Squinting at the parallax, call it 80 psi on the fifth:

    Hotel water pressure - floor 5
    Hotel water pressure – floor 5

    At the top of the vertical pipe on the fifth, on the other side of a valve, we return to the original valve company at 78 psi:

    Hotel water pressure - floor 5 - top
    Hotel water pressure – floor 5 – top

    Water weighs just over 62 lb/ft³ at room temperature, which works out to 0.43 lb/in² per vertical foot. Not having packed my laser distance widget, I’ll guesstimate 12 feet and 5 psi per floor.

    A quick graph with an eyeballometric straight-line fit:

    Motel sprinkler water pressures
    Motel sprinkler water pressures

    Call it 0.42 psi/ft, which is pretty close to the right answer.

  • Astable Multivibrator vs. Charged NP-BX1 Lithium Battery

    Hitching a charged, albeit worn, NP-BX1 lithium battery to the astable multivibrator produces a blinding flash:

    NP-BX1 Holder - SMT pogo pins
    NP-BX1 Holder – SMT pogo pins

    The current pulse shows the wearable LED really takes a beating:

    Astable - NP-BX1 4V - 100mA-div
    Astable – NP-BX1 4V – 100mA-div

    The current trace is at 100 mA/div: the pulse starts at 400 mA, which seems excessive even to me, and tapers down to 200 mA. It’s still an order of magnitude too high at the end of the pulse.

    On the other paw, maybe a 14% duty cycle helps:

    Astable - NP-BX1 4V - base V - 100mA-div
    Astable – NP-BX1 4V – base V – 100mA-div

    The top trace shows the base drive voltage dropping slightly, although I suspect the poor little transistor can’t take the strain.

    The LED really does need a ballast resistor …

  • Squidwrench Electronics Workshop: Session 6 Whiteboards

    Coverage of capacitors as charge-storage devices, rather than filters:

    Session 6 - Whiteboard 1 - overview
    Session 6 – Whiteboard 1 – overview

    We avoided all the calculus and derivations, taking the exponential waveform as a given for RC circuits:

    Session 6 - Whiteboard 1 - exponential detail
    Session 6 – Whiteboard 1 – exponential detail

    Discussions of dielectrics, plate spacing / area, and suchlike:

    Session 6 - Whiteboard 1 - dielectric permittivity
    Session 6 – Whiteboard 1 – dielectric permittivity

    Some handwaving discussion of construction, electrolytic capacitor innards, and The Plague:

    Session 6 - Whiteboard 1 - cap construction
    Session 6 – Whiteboard 1 – cap construction

    A 1 F cap charged through a 1.8 kΩ resistor during most of the session to show what an 1800 s time constant looked like. Nope, it never quite got to the 3.5 V from the power supply, even when we all decided it was time to shut down!

  • Monthly Image: AMP Plug Board

    Around 1960, somebody my father knew at the Harrisburg AMP factory gave me a chunk of plugboard bandsawed from a scrapped computer or industrial controller, because he knew I’d enjoy it:

    AMP Plug Board
    AMP Plug Board

    He was right.

    I spent months rearranging those little cubes (some with cryptic legends!) into meaningful (to me) patterns, plugging cables between vital spots, and imagining how the whole thing worked:

    AMP Plug Board - detail
    AMP Plug Board – detail

    Long springs ran through the notches under the top of the blocks to connect the plug shells to circuit ground. The ends of the steel rails (still!) have raw bandsaw cuts, some of the blocks were sliced in two, the tip contact array behind the panel wasn’t included, and none of that mattered in the least.

    Only a fraction of the original treasure trove survives. It was absolutely my favorite “toy” ever.

    Quite some years ago, our Larval Engineer assembled the pattern you see; the hardware still had some attraction.

    I’ve asked Mary to toss it in the hole with whatever’s left of me, when that day arrives …

  • Bird Feeder Unbending

    At some point in its history, the left rail holding the wood perch on our industrial-strength “squirrel proof” seed feeder took a hit, most likely from being dropped:

    Squirrel on bird feeder
    Squirrel on bird feeder

    I finally got a Round Tuit and un-bent the poor thing:

    Bird feeder - rail un-bending
    Bird feeder – rail un-bending

    Because the bend happened at the base of the vertical strut holding the shutter, I clamped a Genuine Vise-Grip sheet metal pliers along the straight section. The Craftsman knock-off Vise-Grip then applied torque at the bend, rather than just making things worse, and some two-axis tweakage lined up the rail pretty well.

    With the bend taken care of, I clamped the rail in the bench vise with some scrap wood around the strut:

    Bird feeder - warped rail
    Bird feeder – warped rail

    A percussive adjustment jam session flattened the top flange, leaving both sections as flat as they’re gonna get.

    While I was at it, I turned a pair of stepped aluminum washers for the new wood rod:

    Bird feeder - parting off washer
    Bird feeder – parting off washer

    Which looked about like you’d expect, including a little chatter from the cut off tool:

    Bird feeder - perch hardware
    Bird feeder – perch hardware

    Yeah, I drilled the wood rod on the lathe, too; I loves me some simple lathe action.

    Reassemble in reverse order and it’s all good:

    Bird feeder - perch installed
    Bird feeder – perch installed

    We’re supposed to bleach the feeder every week to kill off the bacteria causing House Finch Eye Disease and, while I can’t promise a weekly schedule, we’ll (try to) reduce the amount of crud on the feeder this year.

    If you’ve got a feeder, sign up for Project Feederwatch and do some citizen science!