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

  • Hose Fitting vs. Lawn Mower

    Hose Fitting vs. Lawn Mower

    This appeared while we uprooted a row of forsythia along the north border:

    Brass hose fitting vs lawnmower
    Brass hose fitting vs lawnmower

    Although FOD has killed a good share of my lawn mowers and blades over the decades, this happened long before my administration and I can’t take credit for the precision targeting.

  • Tek Circuit Computer: Cursor Fixture Adhesion

    Tek Circuit Computer: Cursor Fixture Adhesion

    After removing debris, flattening the top surface, and generally paying more attention to detail, the PETG sheet has much better adhesion to the fixture:

    Tek CC - Milled cursor - cleaned fixture
    Tek CC – Milled cursor – cleaned fixture

    This time, I traced the inside of a drag-knife cut cursor to extract the blank from the stock and, yes, used new double-sided tape under the lower white protective film on the PETG.

    Fewer air bubbles means better adhesion:

    Tek CC - Milled cursor - fixture adhesion
    Tek CC – Milled cursor – fixture adhesion

    Spinning the 1/8 inch end mill at about 5000 RPM produced finer swarf at the Sherline’s maximum 609 mm/min = 24 inch/min pace, with less uplift. I suspect Moah RPMs! would be even better, constrained by melting the plastic into heartache & confusion.

    Scribe the hairline with the diamond tool, ease the finished cursor off the fixture, scribble Sharpie into the scratch, and wipe

    Tek CC - Milled cursor - second try
    Tek CC – Milled cursor – second try

    It’s Pretty Good™ when seen against an un-laminated bottom deck drawn with a Pilot V5RT pen:

    Tek CC - Milled cursor - unlaminated bottom deck
    Tek CC – Milled cursor – unlaminated bottom deck

    The diamond point tears a slightly gritty path through the PETG, which then looks a bit more granular than a real hairline. I’ve been using four passes for emphasis; perhaps fewer would be better.

  • Clearing The Noto Font Clutter

    The Noto (“No Tofu”) font family includes nearly All. The. Languages., which is certainly a noble goal, but I’m just not ever going to need fonts like these:

    ./NotoSerifTelugu-Regular.ttf
    ./NotoSansBengali-Bold.ttf
    ./NotoSansGurmukhiUI-Bold.ttf
    ./NotoSansGurmukhi-Bold.ttf
    ./NotoSerifTamil-Regular.ttf
    ./NotoSansOriyaUI-Bold.ttf
    ./NotoSerifSinhala-Regular.ttf
    ./NotoSerifSinhala-Bold.ttf
    ./NotoSerifMalayalam-Bold.ttf
    ./NotoSansTelugu-Bold.ttf
    ./NotoSansAvestan-Regular.ttf
    … and so forth and so on …

    A bit of searching & listing identified the few I might ever use, so armor those against the coming catastrophe:

    cd /usr/share/fonts/truetype/noto/
    sudo chmod a-w NotoMono-Regular.ttf
    sudo chmod a-w NotoSans-Bold*
    sudo chmod a-w NotoSansDisplay-*
    sudo chmod a-w NotoSans-Italic.ttf
    sudo chmod a-w NotoSansGothic-Regular.ttf
    sudo chmod a-w NotoSansMono-*
    sudo chmod a-w NotoSans-Regular.ttf 
    sudo chmod a-w NotoSansSymbols-*
    sudo chmod a-w NotoSerif-Bold*
    sudo chmod a-w NotoSerifDisplay-*
    sudo chmod a-w NotoSerif-Italic.ttf 
    sudo chmod a-w NotoSerif-Regular.ttf

    There seems no regex-ish way of picking those out; next time, I’ll recycle the list as a script.

    With armor in place, remove the rest:

    find . -perm -u=w -type f -exec sudo rm '{}' \;

    Rebuild the font caches:

    sudo fc-cache -v -f

    Maybe do such things near the end of the day, when you’re going to shut down anyway, because you’ll want to restart any programs using fonts in any nontrivial way.

    Making the desired fonts read-only may confuse the next update involving the Noto fonts, but this setup (Xubuntu 18.04 LTS) is getting old and maybe something else will happen when I get around to installing a whole new release.

  • Monthly Science: Praying Mantis Ootheca

    Monthly Science: Praying Mantis Ootheca

    We extracted the Praying Mantis oothecae while clearcutting the decorative grasses bracketing the front door. As far as I can tell, they’re still charged up and ready for use.

    The masses resemble rigid foam wrapped around grass stems:

    Praying Mantis ootheca - stem side
    Praying Mantis ootheca – stem side

    It’s a mechanical joint, not an adhesive bond, and the dried stems slide freely through the openings:

    Praying Mantis ootheca - bottom
    Praying Mantis ootheca – bottom

    From one side:

    Praying Mantis ootheca - right
    Praying Mantis ootheca – right

    And the other:

    Praying Mantis ootheca - left
    Praying Mantis ootheca – left

    They’re now tied to stems of the bushes along the front of the house, which (I hope) will resemble what the little ones expect to find when they emerge, whenever they do.

  • Tek Circuit Computer: Cursor Milling

    Tek Circuit Computer: Cursor Milling

    The white separating film on the double-sided tape makes the cursor milling fixture look presentable:

    Tek CC - Cursor milling fixture - 2-side tape applied
    Tek CC – Cursor milling fixture – 2-side tape applied

    Some deft X-acto knife work exposed the trench around what will be the cursor’s perimeter, in the hope of keeping tape stickiness out of the milling cutter.

    Peeling off the white film and sticking a PETG cursor blank to the tape reveals I didn’t do a particularly good job of cleaning the rubble from the trench edges:

    Tek CC - Milled cursor - bad tape application
    Tek CC – Milled cursor – bad tape application

    These PETG sheets arrive with a transparent film on one side and a white film on the other. The picture shows the white film on the bottom of the PETG sheet, with the dark areas corresponding to places where the film sticks to the tape and the tape sticks to the fixture. The lighter areas show an air gap in (at least) one of those interfaces; given the amount of clutter, I think it’s mostly between the tape and the fixture.

    I milled the cursor with a 1/8 inch = 3.175 mm cutter:

    Tek CC - Milled cursor - outline
    Tek CC – Milled cursor – outline

    The ball of swarf around the cutter wasn’t as threatening as it appears, because it had very little adhesive holding it together. The rows of swarf surrounding the PETG show why putting the tape all over the fixture isn’t a particularly good idea. ‘Nuff said.

    Engraving the hairline with the diamond drag bit was entirely uneventful:

    Tek CC - Milled cursor - hairline scribe
    Tek CC – Milled cursor – hairline scribe

    Four passes at Z=-2 mm = 300 g downforce put a delicate scratch across the surface. Run a fat black Sharpie along the hairline, wipe off the excess with denatured alcohol, and peel the white film from the other side:

    Tek CC - Milled cursor - first try
    Tek CC – Milled cursor – first try

    It’s sitting atop the doodle giving the dimensions, such as they are, for the milling fixture.

    The hairline came out so fine it makes the Pilot V5RT ballpoint pen lines look downright chunky:

    Tek CC - Yellow Cardstock - Pilot V5RT - Milled Cursor
    Tek CC – Yellow Cardstock – Pilot V5RT – Milled Cursor

    Seen over the engraving test piece with scraped Testors paint, however, things look just the way they should:

    Tek CC - Engraved - Testors Paint - Milled Cursor
    Tek CC – Engraved – Testors Paint – Milled Cursor

    In a techie kind of way, of course, which is the only way that matters on Planet Slipstick …

  • Tek Circuit Computer: Cursor Milling Fixture

    Tek Circuit Computer: Cursor Milling Fixture

    The original Tektronix Circuit Computer cursor is a floppy sheet of plastic with a hairline printed on it. I’m making the homage version from 0.5 mm PETG sheet with an engraved hairline:

    Tek CC - radial text example
    Tek CC – radial text example

    But I don’t foresee enough ahem production volume to justify making a punch-and-die to cut the thing out, so I need a milling fixture to hold the sheet in place while I have my way with it.

    Start by squaring up a suitably sized scrap from the Box o’ Plastic Scrap:

    Tek CC - Cursor milling fixture - squaring sides
    Tek CC – Cursor milling fixture – squaring sides

    It need not be particularly square, but getting rid of the ragged edges seemed like a Good Idea. I think it’s polycarbonate and, yes, it’s just about that green in real life.

    Align it square-ish to the tooling plate and drill three #7 holes on 1.16 inch centers to line up with the plate and clear the Sherline’s 10-32 screws:

    Tek CC - Cursor milling fixture - hole drilling
    Tek CC – Cursor milling fixture – hole drilling

    The two outer holes will clamp the fixture to the table. The third hole may be useful to clamp a stack of cursors to the fixture, should I need more than a few.

    Screw it to the tooling plate, mill the outline of the cursor into the fixture, apply a layer of double sticky tape, then cut out the cursor outline so the milling bit won’t accrete a giant whirling ball of adhesive & swarf:

    Tek CC - Cursor milling fixture - 2-side tape applied
    Tek CC – Cursor milling fixture – 2-side tape applied

    I milled the perimeter 2 mm deep, anticipating a 1 mm cut depth for the cursor, and milled a small step inside the perimeter by compiling the GCMC code with a 2.5 mm cutter diameter instead of the actual 3.175 mm. I tweaked the cursor code for proper offset milling, about which more later.

    With the tape in place, it’s not entirely obvious this will work the way I expect, but it wasn’t too difficult.

  • Fu Mask Cutting Templates

    Fu Mask Cutting Templates

    A local hospital contacted Mary’s quilting group to sew up cloth covers to prolong the life of their medical-grade N95 masks. Their recommended pattern, the Fu Face Mask from the FreeSewing group, comes in three sizes:

    Freesewing - Fu Mask
    Freesewing – Fu Mask

    N.B.: Use their original PDF, because a JPG picture probably won’t come out at the right size.

    Also N.B.: Used by itself, this is not a medical-grade filter mask.

    The patterns do not include the usual 1/4 inch seam allowance around the outside, so I cranked out 3D printed plastic cutting templates.

    If you’re not interested in 3D printing, 2D print the PDF file on cardboard, sketch a seam allowance, and cut it out, as quilters have been doing since slightly after home printers happened.

    The plan of attack:

    • Convert mask outlines into a bitmap image (GIMP)
    • Create Bezier curves by tracing outlines (Inkscape)
    • Save curves as SVG files
    • Convert SVG into solid model (OpenSCAD)
    • Add stiffening ribs &c
    • Save as STL solid model
    • Slice into G-Code file (Slic3r)
    • Fire the M2!

    So, we begin …

    Import the PDF into The GIMP, delete the text & suchlike, convert to monochrome, and save the pattern outlines as a PNG file:

    Fu Facemask - outlines
    Fu Facemask – outlines

    It turns out Inkscape can directly import the PDF, but it valiantly tries to convert all the text and the incidental graphic elements, none of which will be useful in this situation. It’s easier to delete them in The GIMP and make a bank shot off a PNG file.

    Update: Scruss’s comment provides a much simpler workflow!

    Import the PNG into Inkscape and trace one outline with the Bezier curve tool:

    Fu Mask - Inkscape Bezier trace
    Fu Mask – Inkscape Bezier trace

    If you squint really carefully, you’ll see Bezier control handles sticking out of the nodes. I laid three nodes along the top arc and four along the right side, but do what’cha like; the Insert key or Shift+I inserts and Delete removes nodes. It’s easier to center a node in the middle of the PNG line with snapping turned off: Shift+drag while mousing or globally with #.

    You could unleash the bitmap auto-tracer, but it generates a bazillion uselessly tiny Bezier curves.

    When you’re happy, select and copy the path with Ctrl+C, paste it into a shiny new Inkscape document (Ctrl+N) with Ctrl-V, save it with a catchy file name like Fu Mask - Small - nominal.svg, and close that document to return to the document with the PNG outlines and the original path.

    Select the original path again, create a dynamic offset with Ctrl+J, open the XML editor with Ctrl+Shift+X (which automagically selects the proper SVG element), and change the inkscape:radius value from 0 to 6.35 (mm, which everyone should use) to get a 1/4 inch seam allowance:

    Fu Mask - Inkscape XML Editor - Offset radius
    Fu Mask – Inkscape XML Editor – Offset radius

    The path will puff out with curved corners:

    Fu Mask - Inkscape offset
    Fu Mask – Inkscape offset

    Copy into a new document, save as Fu Mask - Small - seam allowance.svg, and close.

    Repeat that process for each of the three mask sizes to create three pairs of SVG files: the nominal mask outline and the corresponding seam allowance outline for each size.

    The OpenSCAD program imports the SVG files, removes the nominal outline from within the seam allowance to leave the outline, adds stiffening ribs, and stamps an ID letter on both sides of the central button:

    Fu Mask Cutting Template - Small - solid model
    Fu Mask Cutting Template – Small – solid model

    Choose one of the three sizes with the OpenSCAD customizer, save the resulting model as an STL file, repeat for the three sizes, and you’re done.

    This process can convert any outline paths in SVG files into cutting templates, so, should the Fu Mask not suit your fancy, Use The Source.

    For convenience, the STL files are on Thingiverse.

    From the comments, a Washington hospital uses a similar pattern: their PDF with assembly instructions.

    The OpenSCAD source code as a GitHub Gist:

    // Fu Mask cutting templates
    // Ed Nisley – KE4ZNU – 2020-03
    // Mask patterns from:
    // https://freesewing.org/blog/facemask-frenzy/
    // More info on my blog:
    // https://softsolder.com/2020/03/29/fu-mask-cutting-templates/
    /* [Mask Size] */
    Name = "Small"; // [Small, Medium, Large, Test]
    /* [Hidden] */
    Templates = [ // center ID letter and file name
    ["S","Small"],
    ["M","Medium"],
    ["L","Large"],
    ["T","Test"], // for whatever you like
    ];
    T_ID = 0; // Template indexes
    T_NAME = 1;
    BarThick = 4.0; // template thickness
    HubOD = 20.0; // center button diameter
    // These should match slicer values
    ThreadThick = 0.25;
    ThreadWidth = 0.40;
    Protrusion = 0.1; // make clean holes
    //— Build it
    t = Templates[search([Name],Templates,1,1)[0]]; // find template index
    Dir = "./";
    FnOuter = str(Dir,"Fu Facemask – ",t[T_NAME]," – seam allowance.svg");
    FnInner = str(Dir,"Fu Facemask – ",t[T_NAME]," – nominal.svg");
    difference() {
    linear_extrude(BarThick,convexity=5) {
    intersection() {
    import(FnOuter,center=true);
    union() {
    square([200.0,5.0],center=true); // horizontal bar
    square([5.0,200.0],center=true); // vertical bar
    }
    }
    circle(d=HubOD); // central button
    difference() { // cutting template!
    import(FnOuter,center=true);
    import(FnInner,center=true);
    }
    }
    translate([0,0,BarThick – ThreadThick]) // top ID recess
    cylinder(d=HubOD – 6*ThreadWidth,h=ThreadThick + Protrusion);
    translate([0,0,-Protrusion]) // bottom ID recess
    cylinder(d=HubOD – 6*ThreadWidth,h=ThreadThick + Protrusion);
    }
    translate([0,0,2*BarThick/3]) // top ID
    linear_extrude(height=BarThick/3,convexity=2)
    text(text=t[T_ID],size=10,
    font="Arial:style:Bold",halign="center",valign="center");
    mirror([1,0,0]) // bottom ID
    linear_extrude(height=BarThick/3,convexity=2)
    text(text=t[T_ID],size=10,
    font="Arial:style:Bold",halign="center",valign="center");

    Verily, there’s nothing like a good new problem to take your mind off all your old problems …