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.

Author: Ed

  • Wheelbarrow Drain Holes

    Wheelbarrow Drain Holes

    Attacking a plastic wheelbarrow with a ¾ inch hole saw prevents it from becoming a mosquito breeding station:

    Wheelbarrow drain holes
    Wheelbarrow drain holes

    We had been storing it tipped to one side, resulting in the wheel filling up with water, which can’t be a Good Thing.

    If it must carry a load of sand, I’ll just duct-tape the holes.

    One of Mary’s friend looked at, but did not order, this wheelbarrow on Amazon. Shortly thereafter, she received a wheelbarrow in two packages: the handles and a box with everything else strapped into the barrow. After a discussion with Amazon’s support / help staff, she was told to just keep it at no charge.

    Over the next few weeks, she received five more wheelbarrows, each prompting a discussion and keeping them at no charge. Eventually, somebody figured out how to stop the stream.

    So half a dozen gardeners now have free wheelbarrows, courtesy of a glitch in The Machine.

    Makes you wonder, doesn’t it?

  • Slotted Insects

    Slotted Insects

    Continuing the theme of Halloween decorations (and slots-n-tabs resizing), a Dragonfly took shape:

    Dragonfly - assembled
    Dragonfly – assembled

    It’s about a foot long, which makes one think of those prehistoric insects flying in dense, oxygen-rich air.

    Of course, a Dragonfly needs prey, for which a Mosquito should suffice:

    Mosquito - assembled
    Mosquito – assembled

    It’s about five inches from needle tip to tail and would certainly put up a stiff fight.

    They’re both made from chipboard, with original model slot sizing being Close Enough that I could just resize the whole thing to fit the available sheets.

  • Anker A1215 PowerCore 13000 Power Banks: Five Years

    Anker A1215 PowerCore 13000 Power Banks: Five Years

    After five years of powering the action cameras on our Tour Easy recumbents, the pair of Anker A1215 PowerCore 13000 USB power banks have about 8 A·hr of capacity with a 2 A load after a full charge:

    Anker PowerCore 13000 - 20204-07-26
    Anker PowerCore 13000 – 20204-07-26

    It seems I did not test them on arrival, so I have no idea what their original capacity might have been, but I’m certain it wasn’t the 13 A·hr implied by their name.

    The sawtooth voltage output looks like the internal controller picks a constant boost (or buck) ratio based on the battery voltage, then adjusts it when the output voltage falls below the lower limit. You can imagine it desperately boosting the ratio as the battery voltage falls off a cliff near the end of the curve.

    I have no idea why the two packs behave so differently, although the voltages are certainly within ordinary USB limits.

    They’ll continue powering the camera on my bike for a while, after which I’m sure they’ll come in handy for something …

  • Tour Easy: Anker 20K V2 USB Power Bank

    Tour Easy: Anker 20K V2 USB Power Bank

    After five years, it’s time to replace the Anker 13000 mA·hr USB power banks / chargers I used with the M20 cameras and then the C100 cameras:

    SJCAM M20 Mount - Tour Easy side view
    SJCAM M20 Mount – Tour Easy side view

    The Anker 325 20K V2 power bank is considerably chunkier, as befits its 20,000 mA·hr cell capacity (although the fine print says 12,500 mA·hr output):

    Anker 20K V2 Power Bank - installed
    Anker 20K V2 Power Bank – installed

    The white tape stripe on the top marks the USB port on the end to reduce the fumbling involved in an out-of-sight socket. There’s also a USB-C port on that end for both charging the pack and powering other devices.

    The new mounting cradle descends directly from the 13000 cradle:

    Anker 325 20KV2 Power Bank - slicer preview
    Anker 325 20KV2 Power Bank – slicer preview

    The model includes a projection of the battery on the XY plane for export to an SVG file suitable for laser-cutting an EVA foam pad to cushion the bumps.

    The OpenSCAD source code as a GitHub Gist:

    // Anker PowerCore 325 20K V2 Power Bank
    // Ed Nisley – KE4ZNU
    // 2024-07
    /* [Layout Options] */
    Layout = "Show"; // [Show,Build]
    Part = "Cradle"; // [Cradle,Battery,Pad]
    /* [Extrusion Parameters] */
    ThreadWidth = 0.40;
    ThreadThick = 0.25;
    HoleWindage = 0.2;
    Protrusion = 0.1;
    //—–
    // Dimensions
    /* [Hidden] */
    ID = 0;
    OD = 1;
    LENGTH = 2;
    EmbossDepth = 2*ThreadThick + Protrusion; // recess depth + Protrusion beyond surface
    DebossHeight = EmbossDepth; // text height + Protrusion into part
    Projection = 10; // stick-out to punch through shell sides & suchlike
    FadeColor = "Green";
    FadeAlpha = 0.25;
    //—–
    // Useful routines
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    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);
    }
    //—–
    // Battery
    // Based on Anker PowerCore 325, simplified shapes
    // Includes port punchouts
    Battery = [162.0+0.5,81.5+0.5,24.0]; // X=length, Y=max, Z=max
    module BatteryShape(Jacks = true) {
    USB = [[Projection,20,12],[Projection,18,10]]; // clearance around USB output jacks
    USBOffset = [[0,20.0,0],[0,62.5,0]]; // from -Y edge to center of jack, Z centered
    BatteryRad = 7.0; // corner rounding radius
    BatterySides = 2*3*4;
    hull()
    for (i=[-1,1], j=[-1,1])
    translate([i*(Battery.x/2 – BatteryRad),
    j*(Battery.y/2 – BatteryRad),
    0])
    cylinder(r=BatteryRad,h=Battery.z,$fn=BatterySides,center=true);
    if (Jacks)
    for (i=[0,len(USB)-1])
    translate([(Battery.x + USB[i].x)/2 – Protrusion,-Battery.y/2 + USBOffset[i].y,0])
    cube(USB[i],center=true);
    }
    //—–
    // Battery cradle
    RackWidth = 90.0; // flat width between rack rails
    CradleWall = [4.0,4.0,3.0]; // wall thickness
    CradleRadius = 2.0; // corner rounding
    CradlePad = 1.0; // cushion on battery bottom
    BatteryBase = CradleWall.z + CradlePad; // actual bottom surface of battery
    CradleOA = [Battery.x + 2*CradleWall.x,
    min((Battery.y + 2*CradleWall.y),RackWidth),
    BatteryBase + Battery.z/2];
    echo(str("Cradle OA: ",CradleOA));
    module Cradle() {
    difference() {
    hull()
    for (i=[-1,1], j=[-1,1]) { // box with tidy rounded corners
    translate([i*(CradleOA.x/2 – CradleRadius),
    j*(CradleOA.y/2 – CradleRadius),
    1*(CradleOA.z – CradleRadius)])
    sphere(r=CradleRadius,$fn=6);
    translate([i*(CradleOA.x/2 – CradleRadius),
    j*(CradleOA.y/2 – CradleRadius),
    0*(CradleOA.z/2 – CradleRadius)])
    cylinder(r=CradleRadius,h=CradleOA.z/2,$fn=6);
    }
    translate([0,0,Battery.z/2 + BatteryBase]) // minus the battery
    minkowski(convexity=3) { // … slightly embiggened
    BatteryShape();
    cube(2*CradlePad,center=true);
    }
    translate([0,0,CradleWall.z – ThreadThick + Protrusion/2]) // recess top legend
    cube([55,20,EmbossDepth],center=true);
    translate([0,0,(EmbossDepth – Protrusion)/2]) // recess bottom legend
    cube([70,15,EmbossDepth],center=true);
    }
    translate([0,4.0,CradleWall.z – DebossHeight – Protrusion])
    linear_extrude(height=DebossHeight,convexity=20)
    text(text="PowerCore",size=6,spacing=1.20,
    font="Arial:style:Bold",halign="center",valign="center");
    translate([0,-4.0,CradleWall.z – DebossHeight – Protrusion])
    linear_extrude(height=DebossHeight,convexity=20)
    text(text="20K V2",size=6,spacing=1.20,
    font="Arial:style:Bold",halign="center",valign="center");
    linear_extrude(height=DebossHeight,convexity=20)
    mirror([0,1,0])
    text(text="KE4ZNU",size=10,spacing=1.20,
    font="Arial:style:Bold",halign="center",valign="center");
    }
    //—–
    // Build things
    // Layouts for design & tweaking
    if (Layout == "Show")
    if (Part == "Battery")
    BatteryShape();
    else if (Part == "Cradle") {
    Cradle();
    translate([0,0,Battery.z/2 + CradleWall.z])
    color(FadeColor,FadeAlpha)
    BatteryShape();
    }
    else if (Part == "Pad")
    linear_extrude(height=CradlePad)
    projection(cut=true)
    BatteryShape(Jacks = false);
    // Build layouts for top-level parts
    if (Layout == "Build") {
    if (Part == "Cradle")
    Cradle();
    if (Part == "Pad")
    projection(cut=true)
    BatteryShape(Jacks = false);
    }

  • Please Close The Gate Signs: One Year

    Please Close The Gate Signs: One Year

    They still look pretty good after a year:

    Please Close The Gate - weathered acrylic - 2024-07-20
    Please Close The Gate – weathered acrylic – 2024-07-20

    Which is to say: the orange acrylic hasn’t faded, the black paint’s still in place, and the gates seem to stay closed.

    One might quibble about the missing wire snippet on the lower left corner, but on the whole it doesn’t get much better than that …

  • Breaking Up Is Hard To Watch

    Breaking Up Is Hard To Watch

    These might be aftermarket hood stripes on a not-very-old Mini (or Mini Hatch):

    Must be heartbreaking to watch that happen through the windshield.

    On the other paw, given the Mini’s reliability record, they might be OEM stripes:

    In 2015, Consumer Reports awarded the 2006–2012 Mini Cooper S the title ‘Worst Used Car’, saying that while it was “cute and delightfully entertaining”, the repair frequency was “heartbreaking” because the magazine’s surveyed owners reported problems in the areas of “engine major, engine minor, engine cooling, fuel system, body integrity, and body hardware have issues at an alarming rate”.

    One hopes that puppy had fewer internal problems …

  • Tour Easy: PTT Button Replacement

    Tour Easy: PTT Button Replacement

    After five years and one cleaning, the PTT button on Mary’s Tour Easy became increasingly intermittent, both failing to activate solidly and sticking closed (there being nothing quite like a hot mic during a good hill climb), so it’s time for an autopsy:

    Failed PTT Switch - as extracted
    Failed PTT Switch – as extracted

    The snap dome is much more scarred at the central contact:

    Failed PTT Switch - snap plate
    Failed PTT Switch – snap plate

    That might be a gold flash coating, but it’s pretty well worn away where it hits the central contact:

    Failed PTT Switch - center contact
    Failed PTT Switch – center contact

    Those scratches surely happened during the previous cleaning pass, as I don’t see any way for the dome to create them.

    The corner contact also shows some scuffs, along with a scar where the dome corner pivots:

    Failed PTT Switch - edge contact
    Failed PTT Switch – edge contact

    All in all, though, it worked quite well.

    The replacement switch, also intended for indoor use on a keypad or some such device, pivots around the front edge and may be easier for her fingertip to activate:

    New PTT Switch - installed
    New PTT Switch – installed

    Hot melt glue seems vastly underrated for how wonderful a structural material it is.

    If this one lasts five years, I’ll be perfectly happy.