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.

Day: August 6, 2011

  • Thing-O-Matic: Overhead Filament Spool Holder

    Three spools of filament just arrived and needed a home; up to this point, I’ve been using the Lazy Susan Filament Spool for loose bundles atop the Thing-O-Matic. Until I use the last of the loose filament, which could take a while, I figured I could tack the spools to the floor joists.

    It turns out 1-1/2 inch PVC drain pipe fits perfectly through the spool bore, so I squared up the ends of a chunk long enough to span the floor joists at a convenient distance from the printer. That steady rest doesn’t see a lot of use, but when I need it, I need it bad:

    Turning spool axle
    Turning spool axle

    The endplate solid model looks about like you’d expect:

    Filament spool axle endplates
    Filament spool axle endplates

    I could turn those things from two chunks of plate, but this is much neater; a 3D printer makes short work of custom-sized parts.

    The two pegs of yellow filament keep the axle endplate from turning on the central screw (and, inevitably, unscrewing themselves); add glue in the blind holes and trim to fit with a flush-cutting nipper. The aluminum brackets come from a pile I’ve been using for years: as almost always, the holes were in exactly the right places.

    Filament spool axle endplate
    Filament spool axle endplate

    With all that in hand, up it went:

    Overhead filament spools
    Overhead filament spools

    I bent some coat hanger wire into a guide bar with three eyelets for the filaments, plus another chunk to hold the guide in position. Three small (color coordinated!) clamps prevent the unused filament from unwinding.

    I’m not completely happy with this arrangement, because there’s not enough control over the filament energy: the coil around each spool wants to expand into a tangle exactly the size and shape of the Basement Laboratory and there’s not a lot preventing that. I think a variation on tbuser’s Spool Guard theme might be in order: let the filament expand within a tightly enclosed space around each spool.

    The OpenSCAD source code:

    // Filament spool shaft adapter
    // Ed Nisley KE4ZNU July 2011
    
    include </home/ed/Thing-O-Matic/lib/MCAD/units.scad>
    
    Layout = "Show";					// Show or Build
    
    //-- Extrusion parameters
    
    ThreadThick = 0.33;
    ThreadWT = 2.0;
    ThreadWidth = ThreadThick * ThreadWT;
    
    HoleWindage = 0.1;			// enlarge hole dia by this amount
    Protrusion = ThreadThick;
    
    //-- End Plate dimensions
    
    PlateOD = 51.0;
    PlateThick = ThreadThick * ceil(3.0 / ThreadThick);
    
    AxleID = 40.0;
    AxleThick = ThreadThick * ceil(5.0 / ThreadThick);
    
    HoleSpacing = 0.75 * inch;
    
    StubDepth = ThreadThick * ceil(2.5 / ThreadThick);
    StubDia = 3.0;
    
    ScrewDepth = PlateThick + AxleThick;
    
    PrintOffset = 0.8*PlateOD/2;			// fraction of dia to offset objects for printing
    
    Tap6_32 = 0.1065 * inch;
    Clear6_32 = 0.1495 * inch;
    Head6_32 = 0.270 * inch;
    Head6_32Thick = 0.097 * inch;
    Nut6_32Dia = 0.361 * inch;		// across points
    Nut6_32Thick = 0.114 * inch;
    
    //----------------------
    // 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);
    }
    
    PegSize = 1.0;
    
    module ShowPegGrid(Size) {
    	for (x=[-5:5])
    	  for (y=[-5:5])
    		translate([x*10,y*10,Size/2])
    		  %cube(Size,center=true);
    
    }
    
    //----------------------
    // Single endplate
    
    module AxleEndPlate() {
    
      difference() {
    	union() {
    	  cylinder(r=PlateOD/2,h=PlateThick,$fa=10);
    	  translate([0,0,PlateThick])
    		cylinder(r=AxleID/2,h=AxleThick,$fa=10);
    	}
    
    	translate([0,0,-Protrusion])
    	  PolyCyl(Tap6_32,ScrewDepth + 2*Protrusion);
    
    	for(y=[-HoleSpacing,HoleSpacing])
    	  translate([0,y,-Protrusion])
    		PolyCyl(StubDia,StubDepth + Protrusion);
    
      }
    
    }
    
    //----------------------
    // Lash it together
    
    if (Layout == "Show")
    	ShowPegGrid(PegSize);
    
    translate([-PrintOffset,-PrintOffset,0]) AxleEndPlate();
    
    translate([PrintOffset,PrintOffset,0]) AxleEndPlate();