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: Oddities

Who’d’a thunk it?

  • MPCNC: Autolevel Probe, Endstop Edition

    When in doubt, use an endstop switch:

    MPCNC - Endstop Z probe - USB camera
    MPCNC – Endstop Z probe – USB camera

    The USB camera lurks in the upper right.

    Just after that picture, I clipped off the NC switch terminal so I can wire this endstop in parallel with the tool length probe. Epoxy coating to follow.

    The DW660 collet grabs a length of 1/8 inch drill rod jammed into a hole positioned to put the switch actuator directly in line with the spindle axis when it trips the switch, so as to measure a known and useful location:

    Z Axis Height Probe - MBI endstop - Slic3r
    Z Axis Height Probe – MBI endstop – Slic3r

    After mulling things over for a while, I fired up the Sherline, drilled a #54 hole in the actuator, and epoxied a 3/32 inch bearing ball in the hole:

    MPCNC - Endstop Z probe - bearing
    MPCNC – Endstop Z probe – bearing

    A #54 drill hole is half the diameter of the ball and, with a bit of luck, enough of the ball will stick through into the epoxy on the underside for a good grip:

    MPCNC - Endstop Z probe - bearing - detail
    MPCNC – Endstop Z probe – bearing – detail

    The general idea is to convert the stamped steel actuator into a single, albeit not particularly sharp, contact point that can glide over the platform / PCB / sheet-of-whatever to measure the surface. The actuator pivots as it depresses, so the ball must slide horizontally just a bit. I prefer a rod-in-tube probe poking a linear button switch, but those weren’t getting me anywhere.

    If I were really cool, I’d use a ruby ball. Maybe silicon nitride?

    The OpenSCAD source code as a GitHub Gist:

    // MPCNC Z Axis Height Probe – MBI endstop in router collet
    // Ed Nisley KE4ZNU – 2018-02-17
    Layout = "Build"; // Build, Show
    /* [Extrusion] */
    ThreadThick = 0.25; // [0.20, 0.25]
    ThreadWidth = 0.40; // [0.40]
    /* [Hidden] */
    Protrusion = 0.1; // [0.01, 0.1]
    HoleWindage = 0.2;
    inch = 25.4;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    ID = 0;
    OD = 1;
    LENGTH = 2;
    //- 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);
    }
    PCB = [40.0,1.6,16.5]; // endstop PCB, switch downward, facing parts
    Touchpoint = [4.8,4.8,-4.5]; // contact point from PCB edges, solder side
    TapeThick = 1.0; // foam mounting tape
    ShankOD = 0.125 * inch; // rod into tool collet
    ShankInsert = 3*ShankOD; // … insertion into switch holder
    WallThick = 3.0; // basic wall & floor thickness
    Mount = [PCB.x,
    (WallThick + TapeThick + Touchpoint.y) + (ShankOD/2 + WallThick),
    PCB.z + ShankInsert
    ];
    NumSides = 2*4;
    //—–
    // Define shapes
    module SwitchMount() {
    difference() {
    translate([PCB.x/2 – Touchpoint.x, // overall block
    Mount.y/2 – (ShankOD/2 + WallThick),
    (PCB.z + ShankInsert)/2])
    cube(Mount,center=true);
    translate([0,0,-Protrusion]) // collet shank hole
    PolyCyl(ShankOD,2*Mount.z,NumSides);
    translate([PCB.x/2 – Touchpoint.x, // PCB recess
    -Mount.y/2 + TapeThick + Touchpoint.y,
    PCB.z/2 – Protrusion/2])
    cube([Mount.x + 2*Protrusion,
    Mount.y,
    PCB.z + Protrusion
    ]
    ,center=true);
    }
    }
    //—–
    // Build it
    if (Layout == "Show")
    SwitchMount();
    if (Layout == "Build") {
    translate([0,0,Mount.z])
    rotate([180,0,-90])
    SwitchMount();
    }
  • Red Oaks Mill: Rt 376 Infrastructure Decay

    NYS DOT’s recent Rt 376 repaving projects improved the road surface, but the infractructure seems to be crumbling apace, as we spotted on a recent walk across the bridge over Wappinger Creek:

    Red Oaks Mill bridge - dangling concrete
    Red Oaks Mill bridge – dangling concrete

    The ragged edge of the deck shows other slivers have fallen into the creek.

    My arms aren’t long enough to get a closer view:

    Red Oaks Mill bridge - dangling concrete - detail
    Red Oaks Mill bridge – dangling concrete – detail

    The concrete roadway is developing potholes in the right hand southbound lane, so the upper surface has begun crumbling, too.

    I think the bridge dates to the mid-1990s, based on the aerial photo history from Dutchess GIS, so it’s a bit over twenty years old. Nothing lasts.

    Repairing stuff is hard

  • Streaming Radio Player: OLED Garble

    Even in the dim light of dawn, it’s obvious slowing the SPI clock to 1 MHz didn’t quite solve the problem:

    RPi OLED display - garbled
    RPi OLED display – garbled

    The display started up fine, became encrypted during the next few hours, and remained garbled as the track information changed. This is almost certainly a bad SPI transfer trashing the OLED module’s control registers.

    Dropping the clock to the absolute minimum of 0.5 MHz didn’t help, either:

    serial = spi(device=0,port=0,bus_speed_hz=500000)
    device = sh1106(serial)
    

    This particular display woke up blank after loading the new code, then worked OK after another reset. The other streamers lit up as expected on the first try, so the slower SPI isn’t making the situation instantly worse.

    Running the clock at 1 MHz definitely reduced the failure rate, which suggests it’s a glitchy thing.

    Good embedded systems practice suggests resetting the entire display from scratch every now and again, but my streamer code has no concept of elapsed time. Opening that particular can o’ worms would almost certainly result in an on-screen clock and I do not want to go there.

    I suppose I must get a new oscilloscope with SPI bus decoding to verify all the SPI setup and hold times …

  • Monthly Image: Red Sky in the Morning

    You can tell the day’s weather won’t be good when you see this:

    Red Sky in the Morning - 2018-02-07
    Red Sky in the Morning – 2018-02-07

    Taken just before the snow started …

    I wish I could run the snowblower up and down the driveway to preemptively level it at -5 inches, so the snowfall would end with almost bare asphalt.

    Long ago, they promised me heated driveways and sidewalks to eliminate snow shoveling, but it hasn’t worked out that way, either.

  • Stepper Motor Current Measurement Setup

    As part of installing the bar clamps, I packed away the Tek Hall effect current probes measuring the stepper winding currents:

    MPCNC Z Axis AB current probe - overview
    MPCNC Z Axis AB current probe – overview

    The hulking pistol is a Tektronix A6203 100 A probe, the little black pencil is a Tek A6302 20 A probe:

    MPCNC Z Axis AB current probe - detail
    MPCNC Z Axis AB current probe – detail

    The absurdity of measuring a 600 mA (peak!) current with a 100 A probe isn’t lost on me, but those things have become genuine eBay collectibles over the last few years.

    For low-frequency signals, you could probably get by with a Fluke i410 Hall effect current clamp.

    Yo, Eks, babes, remember me in your will … [grin]

  • Wouxun KG-UV3D: Enemy Action

    Once is happenstance, twice is coincidence, three times is enemy action:

    Wouxun KG-UV3D - failure 3
    Wouxun KG-UV3D – failure 3

    All of the (surviving) battery packs produce 9.0 to 9.2 V, a bit hotter than the pair of fully charged lithium cells the radio expects to see, but the first two radios lasted for six years under that abuse.

    This one failed after a few hours. It’s a new radio, but I’m willing to assume I killed the thing and will just eat the cost.

    I have no theories about what’s going on, but I must tweak my APRS interface to work with a Baofeng radio I have on the shelf.

    From now on, though, both radios will run from their stock battery packs.

    Maybe I’m just a slow learner.

  • Furiosa’s Home Away From Home

    You never know who or what you’ll meet on the road:

    Mad Max - Home Away From Home
    Mad Max – Home Away From Home

    A bit more detail:

    Mad Max - Home Away From Home - detail
    Mad Max – Home Away From Home – detail

    Maybe she’s on vacation?

    Spotted on one of our walks around the block.