# Archive for December 12th, 2013

### Sherline Four-Jaw Chuck Speed Wrenches: 3D Printed Edition

Posted by Ed in Machine Shop on 2013-12-12

A Home Shop Machinist article (*A Speed Key for Your Four-Jaw Chuck*, p 67 Nov-Dec 2013, David Morrow) showed some lovely knurled steel knobs. These 3D printed knobs aren’t nearly as pretty, but they do much the same thing:

The solid model resembles the illegitimate offspring of a wine bottle and a pineapple:

The knurling comes from aubenc’s Knurled Surface Library v2. I ran off a prototype (on the left), then tweaked the dimensions to get the final version on the right:

Being that type of guy, I define the knurl in terms of its diametral pitch, compute the diamond width & length to fit in the available space, then hand those measurements to the knurling library… which recomputes everything and decides on one less diamond than I do: `NumSides`

has a Finagle Constant of -1 to make the answer come out right. We may be using a different diameter or something, but I haven’t deciphered the source code. It’s parametric out the wazoo, as usual, so you can spin up what you like, how you like it.

*Anyhow*, a 24 DP knurl with 1.0 mm depth looks and feels pretty good; the XY resolution isn’t good enough for a 48 DP knurl around that knob diameter. The diamonds don’t come out as crisp and pointy as crushed steel knurls, but they’re OK for my fingers.

Doing half a dozen doesn’t take much longer than doing a few, because there’s a 20 second minimum layer time in effect and those things don’t have much plastic, so now I have one for the hold-down clamps and another for Show-n-Tell sessions:

I chopped a 5/32 inch hex key into five 15 mm lengths with a Dremel cutoff wheel, then filed both ends flat and broke the edges. The hex stubs were a press fit in the hex holes, so I finger-started them, grabbed the hex in the drill press, aligned the handle below, and rammed the stub about 5 mm deep. The final depth comes from jamming the wrench into the chuck and pressing firmly, so the stubs project *exactly* as far as possible:

One might quibble about the infill on the end; one may go adjust one’s own printer as one prefers.

There’s 0.1 mm more `HoleWindage`

than usual, because these holes must fix a *hex* shaft, not a circular pin, and the corners need some clearance. They came out a firm press fit: exactly what’s needed.

They’re no good for final tightening of those chuck jaws, but that’s not their purpose…

The OpenSCAD source code:

// Knurled handles for Sherline hex keys // Ed Nisley - KE4ZNU - November 2013 use <knurledFinishLib_v2.scad> //- Extrusion parameters must match reality! // Print with 2 shells and 3 solid layers ThreadThick = 0.20; ThreadWidth = 0.40; HoleWindage = 0.3; // extra clearance to improve hex socket fit Protrusion = 0.1; // make holes end cleanly PI = 3.14159265358979; inch = 25.4; //---------------------- // Dimensions ShaftDia = 10.5; // un-knurled section diameter ShaftLength = 15.0; // ... length SocketDia = (5/32) * inch; // hex key size SocketDepth = 10.0; KnurlLen = 20.0; // length of knurled section KnurlDia = 15.0; // ... diameter KnurlDPNom = 24; // Nominal diametral pitch = (# diamonds) / (OD inches) DiamondDepth = 1.0; // ... depth of diamonds DiamondAspect = 2; // length to width ratio NumDiamonds = floor(KnurlDPNom * KnurlDia / inch); echo(str("Num diamonds: ",NumDiamonds)); NumSides = 4*(NumDiamonds - 1); // 4 facets per diamond. Library computes diamonds separately! KnurlDP = NumDiamonds / (KnurlDia / inch); // actual DP echo(str("DP Nom: ",KnurlDPNom," actual: ",KnurlDP)); DiamondWidth = (KnurlDia * PI) / NumDiamonds; DiamondLenNom = DiamondAspect * DiamondWidth; // nominal diamond length DiamondLength = KnurlLen / round(KnurlLen/DiamondLenNom); // ... actual TaperLength = 0.75*DiamondLength; //---------------------- // 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) { Range = floor(50 / Space); for (x=[-Range:Range]) for (y=[-Range:Range]) translate([x*Space,y*Space,Size/2]) %cube(Size,center=true); } //- Build it ShowPegGrid(); difference() { union() { render(convexity=10) translate([0,0,TaperLength]) knurl(k_cyl_hg=KnurlLen, k_cyl_od=KnurlDia, knurl_wd=DiamondWidth, knurl_hg=DiamondLength, knurl_dp=DiamondDepth, e_smooth=DiamondLength/2); color("Orange") cylinder(r1=ShaftDia/2, r2=(KnurlDia - DiamondDepth)/2, h=(TaperLength + Protrusion), $fn=NumSides); color("Orange") translate([0,0,(TaperLength + KnurlLen - Protrusion)]) cylinder(r2=ShaftDia/2, r1=(KnurlDia - DiamondDepth)/2, h=(TaperLength + Protrusion), $fn=NumSides); color("Moccasin") translate([0,0,(2*TaperLength + KnurlLen - Protrusion)]) cylinder(r=ShaftDia/2,h=(ShaftLength + Protrusion),$fn=NumSides); } translate([0,0,(2*TaperLength + KnurlLen + ShaftLength - SocketDepth + Protrusion)]) PolyCyl(SocketDia,(SocketDepth + Protrusion),6); }

This might be a good stocking stuffer for that guy who has everything, but you’d need his shop to make it, so what’s the point in that?

## Blowback