-
Large Spool Adapter: Right-angle Version
Mary recently learned that large spools of thread have a cross-wound lay that should feed over the end, not from the side as do ordinary stack-wound spools. So I built a right-angle adapter that fits over the not-quite-vertical spool pin on the sewing machine and aims directly at the thread tensioner:

Large spool adapter – on sewing machine The solid model shows off the fluted rod that passes through the spool:

Large Spool Adapter – solid model – mount It’s more impressive from the other end:

Large Spool Adapter – solid model – spool end The first pass at the rod had six flutes, but that seemed unreasonably fine; now it has four. The round base on the rod provides more griptivity to the platform while building and has enough space for the two alignment pins that position it in the middle of the dome:

Large Spool Adapter – solid model – alignment holes The dome gets glued to the rod base plate:

Large spool adapter – clamped The spool pin hole is a snug fit around the pin on the sewing machine, because otherwise it would tend to rotate until the spool pointed to the rear of the machine. The fluted rod is a snug friction fit inside the (cardboard) spool. Some useful dimensions:
- Spool pin (on Model 158): 5 mm OD, 40 mm tall
- Large spool cores: 16 mm ID, 27 mm OD, 70 mm long
I had all manner of elaborate plans to make an expanding fluted rod, but came to my senses and built the simple version first. If that rod isn’t quite big enough, I can build another adapter, just like this one, only slightly larger. The source code includes a 0.5 mm taper, which may suffice.
Back in the day, shortly after the Thing-O-Matic started producing dependable results, one of the very first things I made was a simple adapter to mount large spools on the pin in the most obvious way:

Large spool adapter – old TOM version Now we all know better than that, my OpenSCAD-fu has grown stronger, and the M2 produces precise results. Life is good!
The OpenSCAD source code:
// Large thread spool adapter // Ed Nisley - KE4ZNU - August 2014 Layout = "Show"; // Build Show Spindle Spool Gap = 10.0; // between pieces in Show //- Extrusion parameters must match reality! // Print with 4 shells and 3 solid layers ThreadThick = 0.20; ThreadWidth = 0.40; HoleWindage = 0.2; // extra clearance Protrusion = 0.1; // make holes end cleanly AlignPinOD = 1.70; // assembly alignment pins: filament dia function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); //---------------------- // Dimensions LEN = 0; // subscripts for cylindrical objects ID = 1; OD = 2; Spindle = [40.0,5.0,14.0]; // spool spindle on sewing machine Spool = [70.0,16.0,27.0]; // spool core Taper = 0.50; // spool diameter increase at base CottonRoll = [65.0,Spool[OD],45.0]; // thread on spool Mount = [Spindle[LEN],(Spindle[ID] + 4*ThreadWidth),1.0*Spool[ID]]; Flutes = 4; Flange = [2.0,Spool[OD],Spool[OD]]; ScrewHole = [10.0,4.0 - 0.7,5.0]; // retaining screw PinOC = Spool[ID]/4; // alignment pin spacing //---------------------- // 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); } module ShowPegGrid(Space = 10.0,Size = 1.0) { RangeX = floor(100 / Space); RangeY = floor(125 / Space); for (x=[-RangeX:RangeX]) for (y=[-RangeY:RangeY]) translate([x*Space,y*Space,Size/2]) %cube(Size,center=true); } //- Locating pin hole with glue recess // Default length is two pin diameters on each side of the split module LocatingPin(Dia=AlignPinOD,Len=0.0) { PinLen = (Len != 0.0) ? Len : (4*Dia); translate([0,0,-ThreadThick]) PolyCyl((Dia + 2*ThreadWidth),2*ThreadThick,4); translate([0,0,-2*ThreadThick]) PolyCyl((Dia + 1*ThreadWidth),4*ThreadThick,4); translate([0,0,-(Len/2 + ThreadThick)]) PolyCyl(Dia,(Len + 2*ThreadThick),4); } //---------------------- // Spindle module SpindleMount() { render(convexity=4) difference() { union() { resize([0,0,Mount[OD]]) // spool backing plate translate([0,CottonRoll[OD]/2,0]) sphere(d=CottonRoll[OD],center=true); translate([0,CottonRoll[OD]/4,0]) // mounting post rotate([90,0,0]) cylinder(d=Mount[OD],h=CottonRoll[OD]/2,center=true); } translate([0,(2*Mount[LEN] - Protrusion),Mount[OD]/4]) // punch spindle hole rotate([90,0,0]) // PolyCyl(Spindle[ID],2*Mount[LEN],6); cylinder(d=Spindle[ID],h=2*Mount[LEN],$fn=6); for (i=[-1,1]) { // punch alignment pin holes translate([i*PinOC,CottonRoll[OD]/2,0]) LocatingPin(Len=Mount[OD]/3); } translate([0,0,-CottonRoll[OD]]) // remove half toward spool cube(2*CottonRoll[OD],center=true); } } //---------------------- // Spool holder module SpoolMount() { difference() { union() { translate([0,0,(Flange[LEN] - Protrusion)]) difference() { cylinder(d1=(Spool[ID] + Taper),d2=Spool[ID],h=Spool[LEN],$fn=2*Flutes); // fit spool ID for (a=[0 : 360/Flutes : 360-1]) // create flutes rotate(a + 180/Flutes) translate([Spool[ID]/2,0,-Protrusion]) rotate(180/16) cylinder(r=Spool[ID]/4,h=(Spool[LEN] + 2*Protrusion),$fn=16); translate([0,0,(Spool[LEN] - ScrewHole[LEN])]) // punch screw hole PolyCyl(ScrewHole[ID],(ScrewHole[LEN] + Protrusion),6); } cylinder(d=Flange[OD],h=Flange[LEN]); // base flange } for (i=[-1,1]) // punch alignment pin holes translate([0,i*PinOC,0]) // ... orients solid flange up LocatingPin(Len=Flange[LEN]); } } ShowPegGrid(); if (Layout == "Spindle") { SpindleMount(); } if (Layout == "Spool") { SpoolMount(); } if (Layout == "Show") { translate([0,Mount[OD]/4,2.0]) { rotate([90,0,0]) SpindleMount(); translate([0,Gap,CottonRoll[OD]/2]) rotate([-90,0,0]) rotate(90) SpoolMount(); } color("Orange") { translate([0,0,2]) cylinder(d=Spindle[ID],h=Spindle[LEN],$fn=6); cylinder(d=Spindle[OD],h=2.0,$fn=18); } } if (Layout == "Build") { translate([-5,0,0]) rotate(90) SpindleMount(); translate([Flange[OD]/2,0,0]) SpoolMount(); }