Archive for August 6th, 2011
Thing-O-Matic: Overhead Filament Spool Holder
Posted by Ed in Machine Shop on 2011-08-06
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:
The endplate solid model looks about like you’d expect:
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.
With all that in hand, up it went:
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();
Blowback