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.

The New Hotness

  • Polymaker PolyDryer Box: PC4 Fitting Adapter

    Having recently replaced the MMU3’s filament buffer with Polymaker PolyDryer boxes and auto-rewind spindles:

    PolyDryer PC4 Fitting - Prusa MMU3 setup
    PolyDryer PC4 Fitting – Prusa MMU3 setup

    Their rubbery port covers work best with 6 mm OD PTFE tubes, but let the MMU3’s 4 mm tubes slide into / out of the boxes under normal filament extrusion / retraction forces, so I conjured an adapter for PC4-M10 pneumatic fittings:

    PolyDryer PC4 Fitting - installed
    PolyDryer PC4 Fitting – installed

    A pair of M3 screws hold the adapter plate in place, with an EVA foam gasket sealing against the cover:

    PolyDryer PC4 Fitting - interior view
    PolyDryer PC4 Fitting – interior view

    The PC4-M10 fittings let the 4 mm tubing slide right through, so the adapter has a 0.5 mm bottom sheet to block the tube, with a small hole for the filament:

    PC4 Fitting Plates - bottom - solid model
    PC4 Fitting Plates – bottom – solid model

    You could use PC4-M6 fittings to block the tubing, but the 2 mm lumen on the fittings I have barely pass 1.75 mm nominal filament. Comments found elsewhere suggest identical PC4-M6 fittings have smaller lumens that snag the filament as it moves in one direction or the other.

    The two blind holes get heat-staked 4×4mm M3 brass inserts.

    The top has a threaded hole for the fitting:

    PC4 Fitting Plates - top - solid model
    PC4 Fitting Plates – top – solid model

    Despite what the description says, the thread is not an M10 metric straight thread: it is a tapered pipe thread used for gas- and liquid-tight fittings. Considerable measurement & searching suggested a ⅛BSP-28 thread, because:

    • British Standard Pipe threads are used everywhere in the world except the USA
    • Both my metric tap sets have a ⅛BSP-28 tap along with all their hard-metric straight taps

    The thread is painfully close to ⅛NPT-27, which would probably work in a pinch if it was the only tap you had.

    Those PC4-M6 fittings might sport 1/16BSP-28 threads, but you’re on your own.

    Further searching suggests nobody uses the corresponding tapered female pipe threads and everybody goes with a straight internal thread, so I conjured a stumpy threaded rod using the BOSL2 library and removed it from the adapter plate:

          threaded_rod(d=9.7,l=ThreadLength + Protrusion,pitch=INCH/28,internal=true,bevel2=true,anchor=BOTTOM);
    
    

    The 9.7 mm diameter is the ⅛BSP-28 “major diameter”, rather than its “gauge diameter”, simply because it produced a good fit. The beveled top guides the fitting into the hole, but I still managed to cross-thread one.

    The OpenSCAD code also produces SVG files to laser-cut the foam gasket and a drill template:

    PolyDryer PC4 Fitting - drill template
    PolyDryer PC4 Fitting – drill template

    The holes were step-drilled to ⅛ inch (which has a historic relation to the ⅛BSP-28 size, because iron pipe) for a generous fit around the M3 screws.

    That was way more complicated than I expected and I’m really glad to live in the future where this is a 3D printer project, not a metalworking project involving an actual tap in, say, steel.

    The OpenSCAD source code as a GitHub Gist:

    // PC4 Fitting Plates for PolyDryer
    // Ed Nisley – KE4ZNU
    // 2025-05-02
    include <BOSL2/std.scad>
    include <BOSL2/threading.scad>
    Layout = "Plate"; // [Plate,Gasket,DrillGuide]
    /* [Hidden] */
    HoleWindage = 0.2;
    Protrusion = 0.1;
    NumSides = 3*3*4;
    Gap = 5.0;
    TubeStop = 0.5; // prevent PTFE tube from sliding through
    ThreadLength = 6.0;
    PlateOA = [28.0,22.0,ThreadLength + TubeStop];
    ScrewOC = 20.0;
    $fn=4*3*4;
    //———-
    // Define it
    module Plate() {
    difference() {
    cuboid(PlateOA,anchor=BOTTOM,rounding=4.0,edges="Z"); // plate to fit PolyDryer
    up(TubeStop) // thread for fitting
    threaded_rod(d=9.7,l=ThreadLength + Protrusion,pitch=INCH/28,internal=true,bevel2=true,anchor=BOTTOM);
    down(Protrusion)
    for (i = [-1,1])
    right(i*ScrewOC/2)
    cylinder(4.5 + TubeStop + Protrusion,d=3.7,anchor=BOTTOM); // M3 4×4 inserts
    down(Protrusion)
    cylinder(2*TubeStop,d=2.5,anchor=BOTTOM); // filament clearance
    }
    }
    //———-
    // Build things
    if (Layout == "Plate")
    Plate();
    if (Layout == "Gasket")
    projection(cut=true)
    Plate();
    if (Layout == "DrillGuide")
    difference() {
    projection(cut=true)
    Plate();
    circle(d=10);
    }