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: Machine Shop

Mechanical widgetry

  • Kenmore Progressive Vacuum Tool Adapters: Third Failure

    The adapter for an old Electrolux crevice tool (not the dust brush) snapped at the usual stress concentration after about three years:

    Crevice tool adapter - broken vs PVC pipe
    Crevice tool adapter – broken vs PVC pipe

    The lower adapter is the new version, made from a length of 1 inch PVC pipe (that’s the ID, kinda-sorta) epoxied into a revised Kenmore adapter fitting.

    The original OpenSCAD model provided the taper dimensions:

    Electrolux Crevice Tool Adapter - PVC taper doodles
    Electrolux Crevice Tool Adapter – PVC taper doodles

    The taper isn’t quite as critical as it seems, because the crevice tool is an ancient molded plastic part, but a smidge over half a degree seemed like a good target.

    Start by boring out the pipe ID until it’s Big Enough (or, equally, the walls aren’t Scary Thin) at 28 mm:

    Crevice tool adapter - boring PVC
    Crevice tool adapter – boring PVC

    Alas, the mini-lathe’s craptastic compound has 2° graduations:

    Minilathe compound angle scale
    Minilathe compound angle scale

    So I set the angle using a somewhat less craptastic protractor and angle gauge:

    Crevice tool adapter - compound angle
    Crevice tool adapter – compound angle

    The little wedge of daylight near the gauge pivot is the difference between the normal perpendicular-to-the-spindle axis setting and half-a-degree-ish.

    Turning PVC produces remarkably tenacious swarf:

    Crevice tool adapter - PVC swarf
    Crevice tool adapter – PVC swarf

    The gash along the top comes from a utility knife; just pulling the swarf off didn’t work well at all.

    The column of figures down the right side of the doodles shows successive approximations to the target angle, mostly achieved by percussive adjustment, eventually converging to about the right taper with the proper dimensions.

    Cutting off the finished product with the (newly angled) cutoff bit:

    Crevice tool adapter - cutoff
    Crevice tool adapter – cutoff

    And then It Just Worked™.

    The OpenSCAD source code for all the adapters as a GitHub Gist:

    // Kenmore vacuum cleaner nozzle adapters
    // Ed Nisley KE4ZNU November 2015 and ongoing
    // Layout options
    Layout = "CrevicePipe"; // MaleFitting CoilWand FloorBrush
    // CreviceTool Crevice Pipe ScrubbyTool LuxBrush DustBrush
    //- Extrusion parameters must match reality!
    // Print with +1 shells and 3 solid layers
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    HoleWindage = 0.2;
    function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit);
    Protrusion = 0.1; // make holes end cleanly
    //———————-
    // Dimensions
    ID1 = 0; // for tapered tubes
    ID2 = 1;
    OD1 = 2;
    OD2 = 3;
    LENGTH = 4;
    OEMTube = [35.0,35.0,41.7,40.5,30.0]; // main fitting tube
    EndStop = [OEMTube[ID1],OEMTube[ID2],47.5,47.5,6.5]; // flange at end of main tube
    FittingOAL = OEMTube[LENGTH] + EndStop[LENGTH];
    $fn = 12*4;
    //———————-
    // 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);
    }
    //——————-
    // Male fitting on end of Kenmore tools
    // This slides into the end of the handle or wand and latches firmly in place
    module MaleFitting() {
    Latch = [40,11.5,5.0]; // rectangle latch opening
    EntryAngle = 45; // latch entry ramp
    EntrySides = 16;
    EntryHeight = 15.0; // lower edge on *inside* of fitting
    KeyRadius = 1.0;
    translate([0,0,6.5])
    difference() {
    union() {
    cylinder(d1=OEMTube[OD1],d2=OEMTube[OD2],h=OEMTube[LENGTH]); // main tube
    hull() // insertion guide
    for (i=[-(6.0/2 – KeyRadius),(6.0/2 – KeyRadius)],
    j=[-(28.0/2 – KeyRadius),(28.0/2 – KeyRadius)],
    k=[-(26.0/2 – KeyRadius),(26.0/2 – KeyRadius)])
    translate([(i – (OEMTube[ID1]/2 + OEMTube[OD1]/2)/2 + 6.0/2),j,(k + 26.0/2 – 1.0)])
    sphere(r=KeyRadius,$fn=8);
    translate([0,0,-EndStop[LENGTH]]) // wand tube butts against this
    cylinder(d=EndStop[OD1],h=EndStop[LENGTH] + Protrusion);
    }
    translate([0,0,-OEMTube[LENGTH]]) // main bore
    cylinder(d=OEMTube[ID1],h=2*OEMTube[LENGTH] + 2*Protrusion);
    translate([0,-11.5/2,23.0 – 5.0]) // latch opening
    cube(Latch);
    translate([OEMTube[ID1]/2 + EntryHeight/tan(90-EntryAngle),0,0]) // latch ramp
    translate([(Latch[1]/cos(180/EntrySides))*cos(EntryAngle)/2,0,(Latch[1]/cos(180/EntrySides))*sin(EntryAngle)/2])
    rotate([0,-EntryAngle,0])
    intersection() {
    rotate(180/EntrySides)
    PolyCyl(Latch[1],Latch[0],EntrySides);
    translate([-(2*Latch[0])/2,0,-Protrusion])
    cube(2*Latch[0],center=true);
    }
    }
    }
    //——————-
    // Refrigerator evaporator coil wand
    module CoilWand() {
    union() {
    translate([0,0,50.0])
    rotate([180,0,0])
    difference() {
    cylinder(d1=EndStop[OD1],d2=42.0,h=50.0);
    translate([0,0,-Protrusion])
    cylinder(d1=35.0,d2=35.8,h=100);
    }
    translate([0,0,50.0 – Protrusion])
    MaleFitting();
    }
    }
    //——————-
    // Samsung floor brush
    module FloorBrush() {
    union() {
    translate([0,0,60.0])
    rotate([180,0,0])
    difference() {
    union() {
    cylinder(d1=EndStop[OD1],d2=32.4,h=10.0);
    translate([0,0,10.0 – Protrusion])
    cylinder(d1=32.4,d2=30.7,h=50.0 + Protrusion);
    }
    translate([0,0,-Protrusion])
    cylinder(d1=28.0,d2=24.0,h=100);
    }
    translate([0,0,60.0 – Protrusion])
    MaleFitting();
    }
    }
    //——————-
    // Crevice tool
    module CreviceTool() {
    union() {
    translate([0,0,60.0])
    rotate([180,0,0])
    difference() {
    union() {
    cylinder(d1=EndStop[OD1],d2=32.0,h=10.0);
    translate([0,0,10.0 – Protrusion])
    cylinder(d1=32.0,d2=30.4,h=50.0 + Protrusion);
    }
    translate([0,0,-Protrusion])
    cylinder(d1=28.0,d2=24.0,h=100);
    }
    translate([0,0,60.0 – Protrusion])
    MaleFitting();
    }
    }
    //——————-
    // Crevice tool
    // Hacked for 1 inch Schedule 40 PVC pipe stiffening tube
    module CrevicePipe() {
    PipeOD = 33.5;
    union() {
    translate([0,0,10.0])
    rotate([180,0,0])
    difference() {
    cylinder(d1=EndStop[OD1],d2=PipeOD+2*8*ThreadWidth,h=10.0);
    translate([0,0,-Protrusion])
    cylinder(d=PipeOD,h=100);
    }
    translate([0,0,10.0])
    MaleFitting();
    }
    }
    //——————-
    // Mystery brush
    module ScrubbyTool() {
    union() {
    translate([0,0,60.0])
    rotate([180,0,0])
    difference() {
    union() {
    cylinder(d1=EndStop[OD1],d2=31.8,h=10.0);
    translate([0,0,10.0 – Protrusion])
    cylinder(d1=31.8,d2=31.0,h=50.0 + Protrusion);
    }
    translate([0,0,-Protrusion])
    cylinder(d1=26.0,d2=24.0,h=100);
    }
    translate([0,0,60.0 – Protrusion])
    MaleFitting();
    }
    }
    //——————-
    // eBay horsehair dusting brush
    // Hacked for 3/4" Schedule 40 PVC stiffening tube
    // eBay: 30.0 32.0 30.0
    // Shopvac: 30.3 31.0 25.0
    // Must build snout down with brim to avoid support
    module DustBrush() {
    PipeOD = 27.0; // stiffening pipe
    Snout = [0,0, 31.0, 30.3, 25.0];
    TaperLength = 10.0; // transition cone from fitting to snout
    union() {
    translate([0,0,Snout[LENGTH] + TaperLength])
    rotate([180,0,0])
    difference() {
    union() {
    cylinder(d1=EndStop[OD1],d2=Snout[OD1],h=TaperLength);
    translate([0,0,TaperLength – Protrusion])
    cylinder(d1=Snout[OD1],d2=Snout[OD2],h=Snout[LENGTH] + Protrusion);
    }
    translate([0,0,-Protrusion]) // 3/4 inch Sch 40 PVC
    PolyCyl(PipeOD,100);
    }
    translate([0,0,Snout[LENGTH] + TaperLength – Protrusion])
    MaleFitting();
    }
    }
    //——————-
    // Electrolux brush ball
    module LuxBrush() {
    union() {
    translate([0,0,30.0])
    rotate([180,0,0])
    difference() {
    union() {
    cylinder(d1=EndStop[OD1],d2=30.8,h=10.0);
    translate([0,0,10.0 – Protrusion])
    cylinder(d1=30.8,d2=30.0,h=20.0 + Protrusion);
    }
    translate([0,0,-Protrusion])
    cylinder(d1=25.0,d2=23.0,h=30 + 2*Protrusion);
    }
    translate([0,0,30.0 – Protrusion])
    MaleFitting();
    }
    }
    //———————-
    // Build it!
    if (Layout == "MaleFitting")
    MaleFitting();
    if (Layout == "CoilWand")
    CoilWand();
    if (Layout == "FloorBrush")
    FloorBrush();
    if (Layout == "CreviceTool")
    CreviceTool();
    if (Layout == "CrevicePipe")
    CrevicePipe();
    if (Layout == "DustBrush")
    DustBrush();
    if (Layout == "ScrubbyTool")
    ScrubbyTool();
    if (Layout == "LuxBrush")
    LuxBrush();
  • Un-bending a Machinist’s Parallel Clamp Jaw

    A previous owner used a little too much force on this machinist’s parallel clamp:

    Bent parallel clamp jaw
    Bent parallel clamp jaw

    It’s been in the bottom of my clamp box forever, so I figured I should either fix it or toss it. Grabbing the butt end in the bench vise and applying some percussive adjustment with a 3 pound hammer straightened it right out:

    Parallel clamps in action
    Parallel clamps in action

    Done!

  • Modifying a 2.5 mm Collet Pen Holder for a 3 mm Diamond Engraver

    Of course, the diamond engraving points have a 3 mm shaft that doesn’t fit in the 2.5 mm Collet Pen Holder, but making a hole bigger isn’t much of a problem …

    Commence by drilling out the collet closer nut:

    Collet Holder - closer nut drilling
    Collet Holder – closer nut drilling

    The hole didn’t start out on center and I didn’t improve it in the least. A touch of the lathe bit and a little file work eased off the razor edge around the snout.

    The knurled ridges at the top are larger than the threaded body, which requires a shim around the threads to fit them into the lathe chuck. Start by cutting a slightly larger ID brass tube to the length of the threaded section:

    Collet Holder - brass shim cutoff
    Collet Holder – brass shim cutoff

    I finally got a Round Tuit and ground opposing angles on the cutoff tool ends, so I can choose which side of the cut goes through first. In this case, the left side cuts cleanly and the scrap end carries the thinned slot into the chip tray.

    Grab the tube in a pair of machinist vises and hacksaw a slot:

    Collet Holder - brass shim slitting
    Collet Holder – brass shim slitting

    Apply a nibbler to embiggen the slot enough to leave an opening when it’s squashed around the threads:

    Collet Holder - brass shim around threads
    Collet Holder – brass shim around threads

    Put a nut on the collet threads in an attempt to keep them neatly lined up while drilling:

    Collet Holder - collet drilling
    Collet Holder – collet drilling

    Drill the hole to a bit over 3 mm in small steps, because it’s not the most stable setup you’ve ever used. Eventually, the diamond point just slips right in:

    Collet Holder - 3 mm scribe test fit
    Collet Holder – 3 mm scribe test fit

    Reassemble in reverse order and It Just Works:

    Collet Holder - finished
    Collet Holder – finished

    Now, to scratch up some acrylic!

  • Cheese Slicer Rebuild

    Cheese Slicer Rebuild

    The cheese slicer frame looked much better after sandblasting with 220 aluminum oxide grit:

    Cheese slicer - sandblasted
    Cheese slicer – sandblasted

    The flower bed outside the Basement Laboratory door seems a bit dusty, though.

    Slathering it with JB Weld steel-filled epoxy went reasonably well:

    Cheese slicer - JB Weld curing
    Cheese slicer – JB Weld curing

    JB Weld is much much more viscous than the clear XTC-3D I used last year and the final coating, while smoother than what you see here, has too many sags and dents to say “good job”. I didn’t bother coating the upper tips, because the epoxy will wear off from my morning KP.

    The aluminum roller turned on those bare stainless steel screws in the tray, with the threads chewing into the roller bore. While the epoxy was curing, I drilled out the roller to remove most of the ridges:

    Cheese slicer - drilling roller
    Cheese slicer – drilling roller

    Cut a pair of stainless screws slightly longer than the old screws, then turn the threads off to make a shaft:

    Cheese slicer - screw reshaping
    Cheese slicer – screw reshaping

    The lathe spindle runs in reverse, so the cutting force tends to tighten the screw in the nuts. The big old South Bend lathe had a screw-on chuck and didn’t really like turning backwards.

    The new screws won’t win any beauty prizes, but they get the job done:

    Cheese slicer - screw shafts
    Cheese slicer – screw shafts

    Turn a Delrin rod to a press fit in the drilled-out roller:

    Cheese slicer - turning Delrin bearing
    Cheese slicer – turning Delrin bearing

    Part it off, repeat, ram them into the roller, then drill to a loose fit around the smooth-ish screw shafts:

    Cheese slicer - drilling Delrin bearing
    Cheese slicer – drilling Delrin bearing

    Reassemble in reverse order:

    Cheese slicer - rebuilt
    Cheese slicer – rebuilt

    Looks downright industrial, it does.

    Stipulated: this makes no economic sense, absent the simple fact we appreciate utensils that just work.

  • Badger Propel Air Fittings: DIY Cork Washers

    The tiny sandblaster turns out to be a Badger 260 with miniature Propel threaded fittings on the air line:

    Badger Propel air fitting - DIY cork washers
    Badger Propel air fitting – DIY cork washers

    Foreseeing a Propel washer getting lost in the confusion, I punched a few from a cork sheet and trimmed them to half-thickness. The little brass hole punch isn’t good for more than a few whacks, but that’s all I needed. My cork is crumblier than theirs, but I got a few decent-looking washers and, with a bit of luck, won’t need any of them.

    Maybe I should make a soft gasket from a thin plastic sheet?

  • Monthly Science: End of the Cheese Slicer Epoxy Coating

    The corrosion growing on our long-suffering cheese slicer finally ruptured its epoxy coating:

    Cheese Slicer - epoxy coating split
    Cheese Slicer – epoxy coating split

    Most of the epoxy remains in good shape, but it’s obviously not the right hammer for this job.

    Having recently spotted my tiny sandblaster, I think I can clear off the corrosion and epoxy well enough to try again with good old JB Weld epoxy. It’s not rated for underwater use, so I don’t expect long-term goodness, but it’ll be an interesting comparison.

    Bonus: the slicer will start with a uniform gray surface!

     

  • MPCNC Vinyl Cutting: Squidwrench Logo

    The Mighty Thor provided the new-ish Squidwrench logo in various digital formats, not including DXF, but dxf2gcode can process PDF files (and a few others), and the cutting / weeding / transfer ended well:

    MPCNC Vinyl Cutting - Squidwrench logo on mug
    MPCNC Vinyl Cutting – Squidwrench logo on mug

    That’s the same 14 mil gold vinyl you saw in the Crown test.

    Alas, I re-covered the pattern with the transfer film when I ran the mug through the dishwasher, in the mistaken belief the film would protect the vinyl. Come to find out the film adheres better to the vinyl than to the mug: it pulled loose during washing and peeled most of the logo off the mug.

    Setting the drag knife to cut hot pink 9 mil = 0.25 mm vinyl film produced another logo:

    SqWr logo - hot pink
    SqWr logo – hot pink

    It’s now survived several trips through the dishwasher with no protection, so I’ll call it a win.

    I set dxf2gcode to use a cutting depth = 1.0 mm for about 400 g of downforce, which seems to work, although the vinyl surface showed some marks from the flat nose around the drag knife blade.

    The USB camera provides a convenient way to set the “workpiece origin” before cutting:

    bCNC - Video align
    bCNC – Video align

    Because the camera sits 130 mm beyond the blade in the +Y direction, it can’t see the swathe along the front of the MPCNC. Hard and soft limits in bCNC / GRBL keep you (well, me) from smashing the gantry into the rails, but it’s a nuisance when you forget to tape the vinyl far enough from the front.