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

  • Sonicare Essence: Final Battery Replacement

    After a bit over five years, the NiMH cells in my ancient Philips Sonicare Essence toothbrush finally gave out:

    Sonicare recharge dates - 2017-2018
    Sonicare recharge dates – 2017-2018

    Down near the end, the poor thing barely gave one brushing after an overnight charge.

    While I was dismantling the case, I charged the last two new-old-stock NiMH cells:

    Sonicare Essence - charging short cells
    Sonicare Essence – charging short cells

    They arrived the same five years ago as the deaders in the toothbrush, but haven’t been used in the interim and charged well enough. The NiteCore D4 charger arrived after they did and isn’t really intended for 2/3 AA cells, so I used short brass tubes to make up the difference. I should have used the 300 mA low-current charging option (press-and-hold the Mode button for a second), although it didn’t overcook them at 750 mA.

    The process went pretty much as before, with the new cells soldered in place atop the PCB:

    Sonicare Essence - batteries on PCB
    Sonicare Essence – batteries on PCB

    And the PCB tucked back into the case:

    Sonicare Essence - batteries installed
    Sonicare Essence – batteries installed

    I applied a solder bridge to the BLINKY pads, which seemed to disable the blinking and turn the LED on full with the toothbrush in the charger. Without waiting for a full charge cycle, I sucked the solder off the pads and restored the previous blinkiness.

    A few strips of Kapton tape and it’s back in operation:

    Sonicare Essence - retaped
    Sonicare Essence – retaped

    The first charge lasted for two weeks, so things are looking good again. When the stock of knockoff replacement brush heads wears out, it’ll be time to get a whole new toothbrush … even if the batteries aren’t completely dead yet.

  • Astable Multivibrator: SMT LED Ballast Resistor

    The original astable multivibrator ran from a dead CR123 primary lithium cell:

    CR123A Astable - front
    CR123A Astable – front

    With a terminal voltage falling from barely 3 V, the LED drew about 3 mA (1 mA/div), tops, without a ballast resistor:

    Astable - CR123A 2.8 V - 1 mA -green
    Astable – CR123A 2.8 V – 1 mA -green

    Hacking in a charged NP-BX1 secondary lithium cell boosted the supply to 4 V:

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

    Which, diodes being the way they are, raised the LED current to nearly 400 mA (100 mA/div):

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

    Somewhat to my surprise, a few weeks of abuse didn’t do any obvious damage to the LED, but I added a resistor while I was soldering up another holder:

    Astable - 51 ohm SMD ballast
    Astable – 51 ohm SMD ballast

    There’s not quite enough room for a 1/8 W axial resistor, so why not blob in a surface-mount resistor?

    Which cuts the current down to a mere 15 mA (10 mA/div) from a lithium battery at 4 V:

    Astable - NP-BX1 - 51 ohm ballast - 10ma-div
    Astable – NP-BX1 – 51 ohm ballast – 10ma-div

    It’s still blindingly bright, but now I don’t feel bad about it.

     

  • 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!