Created
September 2, 2019 20:53
-
-
Save ednisley/9344743631c4b7adb9c029508580b7ef to your computer and use it in GitHub Desktop.
OpenSCAD source code: Diamond drag bit holder with LM6UU bearings for CNC 3018-Pro
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Diamond Scribe in linear bearings for CNC3018 | |
// Ed Nisley KE4ZNU - 2019-08-9 | |
Layout = "Build"; // [Build, Show, Base, Mount, Plate] | |
/* [Hidden] */ | |
ThreadThick = 0.25; // [0.20, 0.25] | |
ThreadWidth = 0.40; // [0.40, 0.40] | |
/* [Hidden] */ | |
Protrusion = 0.1; // [0.01, 0.1] | |
HoleWindage = 0.2; | |
inch = 25.4; | |
function IntegerMultiple(Size,Unit) = Unit * ceil(Size / Unit); | |
ID = 0; | |
OD = 1; | |
LENGTH = 2; | |
//- Adjust hole diameter to make the size come out right | |
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); | |
} | |
//- Dimensions | |
// Knife holder & suchlike | |
ScribeOD = 3.0; // diamond scribe shaft | |
Bearing = [6.0,12.0,19.0]; // linear bearing body, ID = shaft diameter | |
Spring = [4.5,5.5,3*ThreadThick]; // compression spring around shaft, LENGTH = socket depth | |
//Spring = [9.5,10.0,3*ThreadThick]; // compression spring around shaft, LENGTH = socket depth | |
WallThick = 4.0; // minimum thickness / width | |
Screw = [3.0,6.75,25.0]; // holding it all together, OD = washer | |
Insert = [3.0,5.0,8.0]; // brass insert | |
//Insert = [4.0,6.0,10.0]; | |
Clamp = [43.2,44.0,34.0]; // tool clamp ring, OD = clearance around top | |
LipHeight = IntegerMultiple(2.0,ThreadThick); // above clamp for retaining | |
BottomExtension = 25.0; // below clamp to reach workpiece | |
MountOAL = LipHeight + Clamp[LENGTH] + BottomExtension; // total mount length | |
echo(str("Mount OAL: ",MountOAL)); | |
Plate = [1.5*ScribeOD,Clamp[ID] - 0*2*WallThick,WallThick]; // spring reaction plate | |
NumScrews = 3; | |
ScrewBCD = Bearing[OD] + Insert[OD] + 2*WallThick; | |
echo(str("Retainer max OD: ",ScrewBCD - Screw[OD])); | |
NumSides = 9*4; // cylinder facets (multiple of 3 for lathe trimming) | |
// Basic mount shape | |
module CNC3018Base() { | |
translate([0,0,MountOAL - LipHeight]) | |
cylinder(d=Clamp[OD],h=LipHeight,$fn=NumSides); | |
translate([0,0,MountOAL - LipHeight - Clamp[LENGTH] - Protrusion]) | |
cylinder(d=Clamp[ID],h=(Clamp[LENGTH] + 2*Protrusion),$fn=NumSides); | |
cylinder(d1=Bearing[OD] + 2*WallThick,d2=Clamp[ID],h=BottomExtension + Protrusion,$fn=NumSides); | |
} | |
// Mount with holes & c | |
module Mount() { | |
difference() { | |
CNC3018Base(); | |
translate([0,0,-Protrusion]) // bearing | |
PolyCyl(Bearing[OD],2*MountOAL,NumSides); | |
for (i=[0:NumScrews - 1]) // clamp screws | |
rotate(i*360/NumScrews) | |
translate([ScrewBCD/2,0,MountOAL - Clamp[LENGTH]]) | |
rotate(180/8) | |
PolyCyl(Insert[OD],Clamp[LENGTH] + Protrusion,8); | |
} | |
} | |
module SpringPlate() { | |
difference() { | |
cylinder(d=Plate[OD],h=Plate[LENGTH],$fn=NumSides); | |
translate([0,0,-Protrusion]) | |
PolyCyl(Plate[ID],2*MountOAL,NumSides); | |
translate([0,0,Plate[LENGTH] - Spring[LENGTH]]) // spring retainer | |
PolyCyl(Spring[OD],Spring[LENGTH] + Protrusion,NumSides); | |
for (i=[0:NumScrews - 1]) // clamp screws | |
rotate(i*360/NumScrews) | |
translate([ScrewBCD/2,0,-Protrusion]) | |
rotate(180/8) | |
PolyCyl(Screw[ID],2*MountOAL,8); | |
} | |
} | |
//----- | |
// Build it | |
if (Layout == "Base") | |
CNC3018Base(); | |
if (Layout == "Mount") | |
Mount(); | |
if (Layout == "Plate") | |
SpringPlate(); | |
if (Layout == "Show") { | |
Mount(); | |
translate([0,0,1.25*MountOAL]) | |
rotate([180,0,0]) | |
SpringPlate(); | |
} | |
if (Layout == "Build") { | |
translate([0,-0.75*Clamp[OD],MountOAL]) | |
rotate([180,0,0]) | |
Mount(); | |
translate([0,0.75*Plate[OD],0]) | |
SpringPlate(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
More details on my blog at https://wp.me/poZKh-8rK