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:

The solid model shows off the fluted rod that passes through the spool:

It’s more impressive from the other 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:

The dome gets glued to the rod base plate:

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:

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();
}
Comments
5 responses to “Large Spool Adapter: Right-angle Version”
Haven’t seen a basic Arduino post lately, and the Squidwrench presentation didn’t cover it, so here goes:
How do you make sure Java doesn’t get a chance to let malefactors at your system? I’ll probably do most my stuff on a Linux box with only sneakernet access, but that could change. I’ve de-installed the JRE on my Win 7 box, and Pale Moon will disable JRE (I think IE 11 will do so, too), but it’s not a good feeling having that gubbage in a machine that looks at the ‘net.
I think NoScript combined with AdBlock Plus is your friend: disable everything unless / until you need it for a particular website.
Basically, you can’t navigate the contemporary Web without allowing active content, but you must have tight control over when it’s active.
I’ve been using that combination for a long time (Web 2.0 and dialup don’t play well together, but with NoScript and AdBlock+, I can get tolerable load times), though I haven’t seen any per-site way to block Java*. I disabled Java in Firefox when the alerts came out. When NOAA dropped it in favor of Flash** for radar loops, I was ready to de-install the JRE. If I do the Arduino software on the Windows box, I’ll disable at the browsers, or at Java directly. (I read this is possible with the JRE 7 package.)
** I keep Flash up to date and use it as little as possible because of its own vulnerabilities.
But that’s what NoScript does, for both Javascript and Java, so you’re most of the way toward the goal. Combine it with Linux and you’re good to go!
Ah! Java has been getting rare enough that I overlooked that functionality in NoScript.
Thanks!