Sherline Collet Pusher Pin Holder

Locking pin holder in use
Locking pin holder in use

Although that collet pusher works fine, the locking pin holder often teleported itself inside the vacuum cleaner. It recently reappeared on the far end of the main workbench, a good 15 feet away from the Sherline as the swarf flies. This, to misquote Churchill, is an impertinence up with which I shall not put.

Herewith, a replacement offering several advantages:

  • Won’t fit up the vacuum’s snout
  • Easy to grip
  • Perfect pin alignment
  • 3D printing FTW!

It’s a flat block resting on the flat top of the pulley, with a nice arc matching the pusher’s OD. A small hole for the pin at exactly the right altitude makes the whole thing rock-solid stable: it slides firmly into position.

The 3D model looks like you’d expect:

Pin holder - OpenSCAD model
Pin holder - OpenSCAD model

The finger grips were just for pretty, as you don’t need that much traction to extract the thing.

A similar view of the real object with the bottom surface up and some flash around the edges:

Locking pin holder - spindle end view
Locking pin holder - spindle end view

The as-printed block put the pin about 0.2 mm above the spindle hole, so I rubbed it on Mr Belt Sander (with the power off) until it fit. I printed the block on the aluminum plate platform; the Z height home setting evidently needs a tweak. However, the hole was exactly the correct distance from the top surface: flipping the block over fit perfectly.

The OpenSCAD source code:

// Collet extractor locking pin holder for Sherline spindle
// Ed Nisley - KE4ZNU - Feb 2011

include </home/ed/Thing-O-Matic/lib/MCAD/boxes.scad>
include </home/ed/Thing-O-Matic/lib/MCAD/units.scad>

PusherOD = 17.35;					// Shell of collet pusher

PulleyOD = 65.5;					// For 3k rpm head

PinHoleCtr = (3/16) * inch;			// pin hole center above pulley surface
PinDia = 2.50;						// pin is about #40 drill
PinHoleDepth = 10.0;				// hole depth from PusherOD

HoleWindage = 0.55;					// Approximate extrusion width
Padding = 0.1;						// A bit of spacing to make things obvious

HolderWidth = 2 * PusherOD;						// Overall holder width
HolderProtrusion = 15;							// sticks out beyond pulley
HolderLength = PulleyOD/2 + HolderProtrusion;	//	... length
HolderThickness = 2*PinHoleCtr;					//	... thickness
HolderRounding = HolderWidth/5;					// corner rounding

GripLength = 0.70 * HolderWidth;	// grip notch
GripWidth = 0.25 * GripLength;
GripIndent = HolderProtrusion/2;

difference() {

// main slab

  translate([-HolderLength/2,0,0])
	roundedBox([HolderLength,HolderWidth,HolderThickness],HolderRounding,true,$fn=4*8);

// pin hole

  translate([-(PusherOD/2 + PinHoleDepth/2 - Padding),0,0])
  rotate([0,90,0])
	cylinder(r=PinDia/2,h=(PinHoleDepth + Padding),center=true,$fn=8);

// upper grip

  translate([-(HolderLength - GripIndent),0,(HolderThickness/2)])
  rotate([90,0,0])
	cylinder(r=GripWidth/2,h=(GripLength - GripWidth),center=true);

  translate([-(HolderLength - GripIndent),((GripLength - GripWidth)/2),(HolderThickness/2)])
	sphere(r=GripWidth/2,$fn=10);

  translate([-(HolderLength - GripIndent),-((GripLength - GripWidth)/2),(HolderThickness/2)])
	sphere(r=GripWidth/2,$fn=10);

// lower grip

  translate([-(HolderLength - GripIndent),0,-(HolderThickness/2)])
  rotate([90,0,0])
	cylinder(r=GripWidth/2,h=(GripLength - GripWidth),center=true);

  translate([-(HolderLength - GripIndent),((GripLength - GripWidth)/2),-(HolderThickness/2)])
	sphere(r=GripWidth/2,$fn=8);

  translate([-(HolderLength - GripIndent),-((GripLength - GripWidth)/2),-(HolderThickness/2)])
	sphere(r=GripWidth/2,$fn=8);

// spindle shaft

  cylinder(r=(PusherOD/2)+HoleWindage,h=(HolderThickness + 2*Padding),center=true);

}