-
CNC 3018-Pro: LM6UU Linear-bearing Diamond Drag Bit Holder
The CNC 3018-Pro normally holds a small DC motor with a nicely cylindrical housing,so this was an easy adaptation of the MPCNC’s diamond drag bit holder:

CNC 3018-Pro – Diamond bit – overview The lip around the bottom part rests atop the tool clamp, with the spring reaction plate sized to clear the notch in the Z-axis stage.
The solid model looks about like you’d expect:

Diamond Scribe – Mount – solid model The New Thing compared to the MPCNC holder is wrapping LM6UU bearings around an actual 6 mm shaft, instead of using LM3UU bearings for the crappy diamond bit shank:

CNC 3018-Pro – Diamond bit – epoxy curing I cut the shank in two pieces, epoxied them into 3 mm holes drilled into the 6 mm shaft, then epoxied the knurled stop ring on the end. The ring is curing in the bench block to stay perpendicular to the 6 mm shaft.
The spring constant is 55 g/mm and it’s now set for 125 g preload:

CNC 3018-Pro – Diamond bit – force measurement A quick test says all the parts have begun flying in formation:

CNC 3018-Pro – Diamond bit – test CD It’s definitely more rigid than the MPCNC!
The OpenSCAD source code as a GitHub Gist:
This file contains hidden or 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(); }