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

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

  • MPCNC Vinyl Cutting: First Cuts

    It somehow seemed appropriate to use the standard MPCNC Crown drawing for the first vinyl cutting test:

    0102
    0102

    That’s a PNG converted from the SVG original, because WordPress regards SVG and DXF files as security risks.

    Run the DXF through dxf2gcode (from the Ubuntu repository) to produce G-Code suitable for my MPCNC’s GRBL controller, tape a sheet of paper to a sacrificial acrylic sheet, fire up bCNC, set the origins, and run the G-Code:

    First Paper Crown - test cut
    First Paper Crown – test cut

    As expected, the cut paper pulled off the acrylic, because it’s not glued down; I have some Cricut adhesive cutting mats which are definitely in the nature of fine tuning. In any event, the paper showed I could get from a DXF image to drag knife cutting action.

    This being a crown, gaudy gold vinyl seemed appropriate:

    First Vinyl Crown - weeding
    First Vinyl Crown – weeding

    The weeding process removes everything that’s not the crown; I used a razor knife to cut a square and remove the vinyl around the crown. A good needle-nose tweezer works wonders!

    Apply transfer film to the weeded crown and peel it from its backing paper:

    First Vinyl Crown - transfer film
    First Vinyl Crown – transfer film

    Stick it on something desperately in need of decoration and peel off the transfer film:

    MPCNC Vinyl Cutting - crown on mug
    MPCNC Vinyl Cutting – crown on mug

    The tricky part is setting the drag knife cutting depth to match the vinyl sheet thickness (14 mil = 0.36 mm), so the blade cuts the vinyl without cutting through the backing paper. This seems best done with manual trial cuts on scrap vinyl, pressing the drag knife holder down firmly by hand and tweaking the depth adjustment for a clean cut.

    The G-Code cuts at 400 mm/min = 6.7 mm/s, perhaps a bit on the slow side.

  • MPCNC: Drag Knife Holder Spring Constant vs. Stiction

    Sliding a drag knife body in a PETG holder, even after boring the plastic to fit, shows plenty of stiction along 2 mm of travel:

    MPCNC - Drag Knife Holder - spring constant
    MPCNC – Drag Knife Holder – spring constant

    Punching the Z axis downward in 0.5 or 1.0 mm steps produced the lower line at 210 g/mm. Dividing by three springs, each one has a 70 g/mm spring constant, which may come in handy later.

    The wavy upper line shows the stiction as the Z axis drops in 0.1 mm steps. The line is eyeballometrically fit to be parallel to the “good” line, but it’s obvious you can’t depend on the Z axis value to put a repeatable force on the knife.

    I cranked about a turn onto the three screws to preload the springs and ensure the disk with the knife body settles onto the bottom of the holder:

    MPCNC - DW660 adapter drag knife holder - spring loaded
    MPCNC – DW660 adapter drag knife holder – spring loaded

    The screws are M4×0.7, so one turn should apply about 140 g of preload force to the pen holder. Re-taking a few data points with a 0.5 mm step and more attention to an accurate zero position puts the intercept at 200 g, so the screws may have been slightly tighter than I expected. Close enough, anyway.

    The stiction is exquisitely sensitive to the tightness of the two DW660 mount clamp screws (on the black ring), so the orange plastic disk isn’t a rigid body. No surprise there, either.

    Loosening the bored slip fit would allow more lateral motion at the tip. Perhaps top-and-bottom Delrin bushings (in a taller mount) would improve the situation? A full-on linear bearing seems excessive, even to me, particularly because I don’t want to bore out a 16 mm shaft for the blade holder.

    It’s certainly Good Enough™ as-is for the purpose, as I can set the cut depth to, say, 0.5 mm to apply around 250-ish g of downforce or 1.0 mm for 350-ish g. The key point is having enough Z axis compliance to soak up small  table height variations without needing to scan and apply compensation.

  • Cheap Scale Calibration Check

    Before doing another spring constant test with the old Harbor Freight scale, I found deployed my cheap calibration weight sets to verify it displayed the right numbers:

    US-Magnum Scale - calibration check
    US-Magnum Scale – calibration check

    It’s spot on for all weights above 1 g, although I must tap the pan to settle on the reading from above for it get the last 0.1 g right.

    Below 1 g, it’s the wrong hammer for the job; I expected no better from it.

  • MPCNC: Drag Knife Holder

    My attempt to use a HP 7475A plotter as a vinyl cutter failed due to its 19 g pen load limit:

    HP 7475A knife stabilizer - big nut weight
    HP 7475A knife stabilizer – big nut weight

    The MPCNC, however, can apply plenty of downforce, so I tinkered up a quick-and-dirty adapter to put the drag knife “pen” body into the MPCNC’s standard DW660 router holder:

    MPCNC - DW660 adapter drag knife holder - fixed position
    MPCNC – DW660 adapter drag knife holder – fixed position

    That’s using the DW660 adapter upside-down to get the business end of the knife closer to the platform. The solid model descends from the linear-bearing Sakura pen holder by ruthless pruning.

    It didn’t work well at all, because you really need a spring for some vertical compliance and control over the downforce pressure.

    Back to the Comfy Chair:

    Drag Knife Holder - DW660 Mount - solid model
    Drag Knife Holder – DW660 Mount – solid model

    A trio of the lightest springs from a 200 piece assortment (in the front left compartment) pushes the upper plate downward against the drag knife’s flange:

    MPCNC - DW660 adapter drag knife holder - spring loaded
    MPCNC – DW660 adapter drag knife holder – spring loaded

    There’s a bit more going on than may be obvious at first glance.

    The screws slide in brass tubing press-fit into the upper plate, because otherwise their threads hang up on the usual 3D printed layers inside the (drilled-out) holes. Smaller free-floating brass tubing snippets inside the springs keep them away from the screw threads; the gap between the top of the tubing and the screw head limits the vertical compliance to 3 mm. The screws thread into brass inserts epoxied into the bottom disk, with a dab of low-strength Loctite for stay-put adjustment.

    I bored the orange PETG disk to a nice slip fit around the knife body:

    DW660 drag knife holder - boring body
    DW660 drag knife holder – boring body

    The upper plate also required fitting:

    DW660 drag knife holder - boring plate
    DW660 drag knife holder – boring plate

    A few iterations produced reasonably smooth motion over a few millimeters, but it’s definitely not a low-friction / low-stiction drag knife holder. It ought to be good for some proof-of-concept vinyl cutting, though.

    The OpenSCAD source code as a GitHub Gist:

    // Drag Knife Holder for DW660 Mount
    // Ed Nisley KE4ZNU – 2018-09-26
    Layout = "Show"; // Build, Show, Puck, Mount, Plate
    /* [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);
    }
    //- Dimensions
    KnifeBody = [12.0,16.0,2.0]; // body flange — resembles HP plotter pen
    WallThick = 3.0; // minimum thickness / width
    Screw = [4.0,8.5,8.0]; // holding it all together, OD = washer
    Insert = [4.0,6.0,10.0]; // brass insert
    Plate = [KnifeBody[ID],KnifeBody[OD] + 3*Screw[OD],4.0]; // spring reaction plate
    PlateGuide = [4.0,4.8,Plate[LENGTH]]; // … guide tubes
    NumScrews = 3;
    ScrewBCD = 2*(KnifeBody[OD]/2 + Screw[OD]/2 + 0.5);
    NumSides = 9*4; // cylinder facets (multiple of 3 for lathe trimming)
    // Basic shape of DW660 snout fitting into the holder
    // Lip goes upward to lock into MPCNC mount
    Snout = [44.6,50.0,9.6]; // LENGTH = ID height
    Lip = 4.0; // height of lip at end of snout
    PuckOAL = Snout[LENGTH] + Lip; // total height
    Key = [Snout[ID],25.7,PuckOAL]; // rectangular key
    module DW660Puck() {
    translate([0,0,PuckOAL])
    rotate([180,0,0]) {
    cylinder(d=Snout[OD],h=Lip/2,$fn=NumSides);
    translate([0,0,Lip/2])
    cylinder(d1=Snout[OD],d2=Snout[ID],h=Lip/2,$fn=NumSides);
    cylinder(d=Snout[ID],h=PuckOAL,$fn=NumSides);
    intersection() {
    translate([0,0,0*Lip + Key.z/2])
    cube(Key,center=true);
    cylinder(d=Snout[OD],h=Lip + Key.z,$fn=NumSides);
    }
    }
    }
    module MountBase() {
    difference() {
    DW660Puck();
    translate([0,0,-Protrusion]) // knife holder body
    PolyCyl(KnifeBody[ID],2*PuckOAL,NumSides);
    translate([0,0,PuckOAL – KnifeBody[LENGTH]/2]) // … half of flange, loose fit
    PolyCyl(KnifeBody[OD] + 2*HoleWindage,KnifeBody[LENGTH],NumSides);
    for (i=[0:NumScrews – 1]) // clamp screws
    rotate(i*360/NumScrews)
    translate([ScrewBCD/2,0,-Protrusion])
    rotate(180/8)
    PolyCyl(Insert[OD],2*PuckOAL,8);
    }
    }
    module SpringPlate() {
    difference() {
    cylinder(d=Plate[OD],h=Plate[LENGTH],$fn=NumSides);
    translate([0,0,-Protrusion]) // knife holder body
    PolyCyl(KnifeBody[ID],2*PuckOAL,NumSides);
    translate([0,0,Plate[LENGTH] – KnifeBody[LENGTH]/2]) // … half of flange, snug fit
    PolyCyl(KnifeBody[OD],KnifeBody[LENGTH],NumSides);
    for (i=[0:NumScrews – 1]) // clamp screws
    rotate(i*360/NumScrews)
    translate([ScrewBCD/2,0,-Protrusion])
    rotate(180/8)
    PolyCyl(PlateGuide[OD],2*PuckOAL,8);
    }
    }
    //—–
    // Build it
    if (Layout == "Puck")
    DW660Puck();
    if (Layout == "Plate")
    SpringPlate();
    if (Layout == "Mount")
    MountBase();
    if (Layout == "Show") {
    MountBase();
    translate([0,0,2*PuckOAL])
    rotate([180,0,0])
    SpringPlate();
    }
    if (Layout == "Build") {
    translate([0,Snout[OD]/2,0])
    MountBase();
    translate([0,-Snout[OD]/2,0])
    SpringPlate();
    }