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

  • LXI-Tools for Siglent SDS2304X Oscilloscope and SDM3045X Multimeter

    For whatever reason, my Siglent SDS2304X Oscilloscope and SDM3045X Multimeter partially implement their documented command sets through partial implementations of the VXI instrumentation driver network protocol. The Linux command-line side comes from lxi-tools, which one must fetch from its repository and compile from source(do liblxi first, then lxi-tools)  through the usual ./configure - make - sudo make install process, after tediously installing whatever dependencies might be revealed by incremental progress through the configuration(s) on your system(s).

    The alternative, of course, is Labview on Windows.

    The SDS2304X scope doesn’t respond to the LXI discover broadcast, so you must know and specify its IP address in the command. It’s easiest to configure the Siglent instruments at fixed IP addresses and be done with it:

    lxi scpi -a 192.168.1.41 "*idn?"
    Siglent Technologies,SDM3045X,SDM34whatever,5.01.01.03
    lxi scpi -a 192.168.1.42 "*idn?"
    *IDN SIGLENT,SDS2304X,SDS2Xwhatever,1.2.2.2 R10
    

    Although the LXI tools also come in a Snap package, installing them that way prevents storing files outside the user’s home directory; having evolved a fairly extensive NFS filesystem, Snaps seem basically useless for my purposes. I don’t see much more security exposure from downloading and running a Snap than from downloading, compiling, and running the source code, but they obviously know what’s best for me.

  • Turtle Teleportation: Vassar Road

    As always, we knew this wouldn’t end well for the small lump just in front of the car’s rear wheel (clicky for more, albeit fuzzy, dots):

    Turtle 0134 - Vassar Rd - 2018-05-20
    Turtle 0134 – Vassar Rd – 2018-05-20

    So I stopped to lend a hand:

    Turtle 1280 - Vassar Rd - 2018-05-20
    Turtle 1280 – Vassar Rd – 2018-05-20

    A fumbling hand, as it turned out, on the turtle’s slippery shell:

    Turtle 1364 - Vassar Rd - 2018-05-20
    Turtle 1364 – Vassar Rd – 2018-05-20

    A belly-up turtle in the middle of the road knows the solution to the Halting Problem.

    I hoped a secluded spot under a pine tree was closer to its destination:

    Turtle 1724 - Vassar Rd - 2018-05-20
    Turtle 1724 – Vassar Rd – 2018-05-20

    However, if the turtle is a female in search of an egg-laying site, then she and all her progeny must cross Vassar Road in the other direction to reach the Mighty Wappinger Creek.

    We’ll teleport them if we see them, too …

  • MPCNC: Relocated Camera

    The original camera position put it close to the MPCNC’s DW660 spindle:

    MPCNC - original camera location
    MPCNC – original camera location

    Unfortunately, it sat slightly too close to the gantry roller along the X-axis for comfort.

    The effort required to pry the mount off its hot-melt glue bed showed it wasn’t ever going to shake loose, so I fired up the glue gun and stuck it to a better spot on the XY assembly:

    MPCNC - relocated camera - front view
    MPCNC – relocated camera – front view

    Seen from the side:

    MPCNC - relocated camera - side view
    MPCNC – relocated camera – side view

    Bonus: it’s now trivially easy to tweak the locking screw!

    Realigning the camera and recalibrating its offset proceeded as before.

  • Zeiss Ikon Ikoflash 4

    A flash gun is hard to beat for straight-up nostalgia:

    Zeiss Ikon Ikoblitz 4 - box
    Zeiss Ikon Ikoblitz 4 – box

    This Zeiss Ikon Ikoblitz 4 is in fine shape:

    Zeiss Ikon Ikoblitz 4 - front
    Zeiss Ikon Ikoblitz 4 – front

    And no more grubby than one might expect after all those decades:

    Zeiss Ikon Ikoblitz 4 - back
    Zeiss Ikon Ikoblitz 4 – back

    I distinctly remember Flash Guide Numbers:

    Zeiss Ikon Ikoblitz 4 - guide-number calculator
    Zeiss Ikon Ikoblitz 4 – guide-number calculator

    The red dial scale has the Guide Numbers (aperture × feet) and the lower black dial scale gives the lens apertures. The manual doesn’t mention the black figures above the red Guide Numbers; they’re metric Guide Number (aperture × meters), which would have been obvious back in the day.

    The tidy shell slides off when you release a latch in the back:

    Zeiss Ikon Ikoblitz 4 - front - stowed
    Zeiss Ikon Ikoblitz 4 – front – stowed

    Then the reflector unfurls:

    Zeiss Ikon Ikoblitz 4 - front unfurled
    Zeiss Ikon Ikoblitz 4 – front unfurled

    Mirabile dictu, the previous owner removed the 15 V “hearing aid” battery (Eveready 504, 60 mA·h in the 504A alkaline version) before storing the flash, leaving the contacts in pristine condition:

    Zeiss Ikon Ikoblitz 4 - CR123A test fit
    Zeiss Ikon Ikoblitz 4 – CR123A test fit

    A 3 V CR123A primary lithium cell snaps perfectly into the battery holder, which I define as a Good Omen: a dab of circuitry could turn this into self-powered and highly attractive Art. This would be one of the very few applications well-suited for the coldest blue-white LEDs.

    One could adapt an A23 12 V alkaline battery (33 mA·h) to the holder, at the cost of half the capacity.

    The silver shield just to the left of the battery conceals a 250 μF (!) nonpolarized capacitor.

    One could build a bayonet-base (GE #5 / Press 25) adapter or poke a doodad with a 9 mm cylindrical base into the M2 bulb adapter (unrelated to my M2 printer):

    Zeiss Ikon Ikoblitz 4 - bulb adapter
    Zeiss Ikon Ikoblitz 4 – bulb adapter

    Herewith, the Zeiss Ikon Ikoblitz 4 – Instruction Manual, should you need more details.

    This hardware may be a progenitor of Gibson’s vat-grown Zeiss Ikon eyes.

  • Digital Chicken

    Because you get white eggs from white chickens and brown eggs from brown chickens (*), this one came from a brown chicken with the digital option:

    Date-coded brown egg
    Date-coded brown egg

    The egg matched the carton date stamp, so this must be an additional part of the process.

    Some casual searching shows egg shell printing is a production-line thing.

    I suppose RFID-per-egg will eventually be the Next New Thing.

    (*) Yes, and chocolate milk from brown cows. Work with me on this, OK?

  • MPCNC: Ground Shaft Pen Holder

    Drilling a pair of holes into a length of ground steel shaft turned it into a holder for a Sakura Micron pen:

    DW660 Pen Holder - printed plastic vs ground steel
    DW660 Pen Holder – printed plastic vs ground steel

    The aluminum ring epoxied to the top keeps it from falling completely through the linear bearing.

    The hole sizes are the nearest inch drills matching the pen’s hard metric sizes:

    Ground 12 mm rod - Sakura pen drill diameters
    Ground 12 mm rod – Sakura pen drill diameters

    While I was at the lathe, I turned another layer of epoxy on the printed holder down to a consistent 11.95+ OD. It fits the bearing nearly as well as the steel shaft, although it’s not quite as smooth.

    The steel version weighs about 20 g with the pen, so it applies about the same downforce on the pen nib as the HP 7475A plotter. The force varies from about 19 g as the Z axis moves upward to 23 g as it move downward, so the stiction amounts to less than 10% of the weight:

    DW660 Pen Holder - ground shaft
    DW660 Pen Holder – ground shaft

    However, the more I ponder this setup, the less I like it.

    When the Z-axis moves downward and the nib hits the paper, it must decelerate the weight of the pen + holder + ballast within a fraction of a millimeter, without crushing the nib. If the pen moves downward at 3000 mm/min = 50 mm/s, stopping in 0.3 mm requires an acceleration of 4.2 m/s² and a 20 g = 2/3 oz mass will apply 0.08 N = 0.3 oz to the nib. Seems survivable, but smashing the tip a few hundred times while drawing the legends can’t possibly be good for it.

    Also, the tool length probe switch trips at 60 (-ish) g, which means the pen can’t activate the switch. Adding a manual latch seems absurd, but you can get used to anything if you do it enough.

  • Propane Tank QD Fitting Adapter, PETG Edition

    Smoking bacon during the winter months brought the third tank into play, requiring the POL-to-QD adapter I’d had in the drawer for just such an occasion. Not much to my surprise, the old PLA fitting adapter snapped along the layers near the outside end of the triangular snout:

    IMG_20180408_125018
    IMG_20180408_125018

    So I ran off the two orange ones in PETG with six perimeter layers and 50% infill density:

    Propane QD Adapter Tool - Slic3r
    Propane QD Adapter Tool – Slic3r

    Those should last roughly forever …

    The OpenSCAD source code as a GitHub Gist:

    // Propane tank QD connector adapter tool
    // Ed Nisley KE4ZNU November 2012
    // 2018-04-08 toss MCAD includes overboard
    //- Extrusion parameters must match reality!
    // Print with about half a dozen perimeter threads and 50% infill
    ThreadThick = 0.25;
    ThreadWidth = 2.0 * ThreadThick;
    HoleWindage = 0.2;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    Protrusion = 0.1; // make holes end cleanly
    inch = 25.4;
    //———————-
    // Dimensions
    WrenchSize = (5/8) * inch; // across the flats
    WrenchThick = 10;
    NoseDia = 8.6;
    NoseLength = 9.0;
    LockDia = 12.5;
    LockRingLength = 1.0;
    LockTaperLength = 1.5;
    TriDia = 15.1;
    TriWide = 12.2; // from OD across center to triangle side
    TriOffset = TriWide – TriDia/2; // from center to triangle side
    TriLength = 9.8;
    NeckDia = TriDia;
    NeckLength = 4.0;
    //———————-
    // 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);
    }
    /*
    module ShowPegGrid(Space = 10.0,Size = 1.0) {
    Range = floor(50 / Space);
    for (x=[-Range:Range])
    for (y=[-Range:Range])
    translate([x*Space,y*Space,Size/2])
    %cube(Size,center=true);
    }
    */
    //——————-
    // Build it…
    $fn = 4*6;
    //ShowPegGrid();
    union() {
    translate([0,0,(WrenchThick + NeckLength + TriLength – LockTaperLength – LockRingLength + Protrusion)])
    cylinder(r1=NoseDia/2,r2=LockDia/2,h=LockTaperLength);
    translate([0,0,(WrenchThick + NeckLength + TriLength – LockRingLength)])
    cylinder(r=LockDia/2,h=LockRingLength);
    difference() {
    union() {
    translate([0,0,WrenchThick/2])
    cube([WrenchSize,WrenchSize,WrenchThick],center=true);
    cylinder(r=TriDia/2,h=(WrenchThick + NeckLength +TriLength));
    cylinder(r=NoseDia/2,h=(WrenchThick + NeckLength + TriLength + NoseLength));
    }
    for (a=[-1:1]) {
    rotate(a*120)
    translate([(TriOffset + WrenchSize/2),0,(WrenchThick + NeckLength + TriLength/2 + Protrusion/2)])
    cube([WrenchSize,WrenchSize,(TriLength + Protrusion)],center=true);
    }
    }
    }