Work on the Y linear bearing holders

pull/20/head
Carlos Garcia Saura 2014-07-24 01:35:51 +02:00
parent fa6d5e8dea
commit a487d89c91
3 changed files with 170 additions and 24 deletions

View File

@ -70,21 +70,50 @@ module Cyclone_YsubPart_nutHolder() {
}
//use <libs/linear_bearing.scad>;
module Cyclone_YsubPart_singleLinearBearingHolder() {
linearBearingModel = "LM8UU";
linearBearingLength = linearBearing_L(linearBearingModel);
linearBearingDiameter = linearBearing_D(linearBearingModel);
dimX = linearBearingDiameter+10;
dimY = linearBearingLength;
dimZ = workbed_separation_from_Y_smooth_rod+axes_Ysmooth_rodD/2;
holderExtension = 10;
footThickness = 10;
difference() {
union() {
translate([0,0,dimZ/2])
bcube([dimX,dimY,dimZ], cr=3, cres=10);
hull() {
translate([0,0,dimZ/2+footThickness/4])
cylinder(r=dimY/2,h=footThickness,center=true);
translate([dimX/2,0,dimZ/2+footThickness/4])
cylinder(r=dimY/2,h=footThickness,center=true);
}
translate([0,0,-holderExtension/2])
bcube([dimX,dimY,holderExtension], cr=3, cres=10);
}
translate([0,linearBearingLength/2,0])
rotate([90,0,0]) linearBearingHole(model=linearBearingModel, renderPart=true);
}
translate([0,linearBearingLength/2,0])
rotate([90,0,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
}
module Cyclone_YsubPart_linearBearingHolders() {
baseHeight = workbed_separation_from_Y_smooth_rod-1;
color("lightgreen") {
translate([0,0,axes_Y_smoothThreaded_verticalSeparation+baseHeight/2]) {
translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
cube([10,10,10+baseHeight], center=true);
translate([-axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
cube([10,10,10+baseHeight], center=true);
translate([-axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
cube([10,10,10+baseHeight], center=true);
translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
cube([10,10,10+baseHeight], center=true);
}
}
translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
Cyclone_YsubPart_singleLinearBearingHolder();
translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
Cyclone_YsubPart_singleLinearBearingHolder();
scale([-1,1,1]) translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
Cyclone_YsubPart_singleLinearBearingHolder();
scale([-1,1,1]) translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
Cyclone_YsubPart_singleLinearBearingHolder();
}
module Cyclone_Y_carriage() {
@ -92,13 +121,16 @@ module Cyclone_Y_carriage() {
projection(cut = true)
translate([0,0,-workbed_separation_from_Y_threaded_rod]) {
Cyclone_YsubPart_nutHolder();
Cyclone_YsubPart_linearBearingHolders();
translate([0,0,axes_Y_smoothThreaded_verticalSeparation])
Cyclone_YsubPart_linearBearingHolders();
color([0.9,0.8,0.8,0.5]) translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness])
beveledBase(size=[workbed_size_X,workbed_size_Y,workbed_thickness], radius=3, res=15, echoPart=true, renderPart=render_bases_outline);
}
} else {
if(draw_references) color("red") %frame(20);
Cyclone_YsubPart_nutHolder();
Cyclone_YsubPart_linearBearingHolders();
translate([0,0,axes_Y_smoothThreaded_verticalSeparation])
Cyclone_YsubPart_linearBearingHolders();
color([0.9,0.8,0.8,0.5]) translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness])
beveledBase(size=[workbed_size_X,workbed_size_Y,workbed_thickness], radius=3, res=15, echoPart=true);
}

View File

@ -0,0 +1,98 @@
//By Glen Chung, 2013.
//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later
include <MCAD/units.scad>
include <MCAD/materials.scad>
LINEAR_BEARING_dr = 0; //Inscribed circle
LINEAR_BEARING_D = 1; //Outer diameter
LINEAR_BEARING_L = 2; //Length
LINEAR_BEARING_B = 3; //Outer locking groove B
LINEAR_BEARING_D1 = 4; //Outer locking groove D1
LINEAR_BEARING_W = 5; //W
// Common bearing names
LinearBearing = "LM8UU";
// Linear Bearing dimensions
// model == "XXXXX" ? [ dr, D, L, B, D1, W]:
function linearBearingDimensions(model) =
model == "LM3UU" ? [ 3*mm, 7*mm, 10*mm, 0.0*mm, 0.0*mm, 0.00*mm]:
model == "LM4UU" ? [ 4*mm, 8*mm, 12*mm, 0.0*mm, 0.0*mm, 0.00*mm]:
model == "LM5UU" ? [ 5*mm, 10*mm, 15*mm, 10.2*mm, 9.6*mm, 1.10*mm]:
model == "LM6UU" ? [ 6*mm, 12*mm, 19*mm, 13.5*mm, 11.5*mm, 1.10*mm]:
model == "LM8SUU" ? [ 8*mm, 15*mm, 17*mm, 11.5*mm, 14.3*mm, 1.10*mm]:
model == "LM10UU" ? [ 10*mm, 19*mm, 29*mm, 22.0*mm, 18.0*mm, 1.30*mm]:
model == "LM12UU" ? [ 12*mm, 21*mm, 30*mm, 23.0*mm, 20.0*mm, 1.30*mm]:
model == "LM13UU" ? [ 13*mm, 23*mm, 32*mm, 23.0*mm, 22.0*mm, 1.30*mm]:
model == "LM16UU" ? [ 16*mm, 28*mm, 37*mm, 26.5*mm, 27.0*mm, 1.60*mm]:
model == "LM20UU" ? [ 20*mm, 32*mm, 42*mm, 30.5*mm, 30.5*mm, 1.60*mm]:
model == "LM25UU" ? [ 25*mm, 40*mm, 59*mm, 41.0*mm, 38.0*mm, 1.85*mm]:
model == "LM30UU" ? [ 30*mm, 45*mm, 64*mm, 44.5*mm, 43.0*mm, 1.85*mm]:
model == "LM35UU" ? [ 35*mm, 52*mm, 70*mm, 49.5*mm, 49.0*mm, 2.10*mm]:
model == "LM40UU" ? [ 40*mm, 60*mm, 80*mm, 60.5*mm, 57.0*mm, 2.10*mm]:
model == "LM50UU" ? [ 50*mm, 80*mm, 100*mm, 74.0*mm, 76.5*mm, 2.60*mm]:
model == "LM60UU" ? [ 60*mm, 90*mm, 110*mm, 85.0*mm, 86.5*mm, 3.15*mm]:
model == "LM80UU" ? [ 80*mm, 120*mm, 140*mm, 105.5*mm, 116.0*mm, 4.15*mm]:
model == "LM100UU" ? [100*mm, 150*mm, 150*mm, 125.5*mm, 145.0*mm, 4.15*mm]:
/*model == "LM8UU" ?*/ [ 8*mm, 15*mm, 24*mm, 17.5*mm, 14.3*mm, 1.10*mm];
function linearBearing_dr(model) = linearBearingDimensions(model)[LINEAR_BEARING_dr];
function linearBearing_D(model) = linearBearingDimensions(model)[LINEAR_BEARING_D];
function linearBearing_L(model) = linearBearingDimensions(model)[LINEAR_BEARING_L];
function linearBearing_B(model) = linearBearingDimensions(model)[LINEAR_BEARING_B];
function linearBearing_D1(model) = linearBearingDimensions(model)[LINEAR_BEARING_D1];
function linearBearing_W(model) = linearBearingDimensions(model)[LINEAR_BEARING_W];
module linearBearing(pos=[0,0,0], angle=[0,0,0], model=LinearBearing,
material=Steel, sideMaterial=BlackPaint) {
dr = linearBearing_dr(model);
D = linearBearing_D(model);
L = linearBearing_L(model);
B = linearBearing_B(model);
D1 = linearBearing_D1(model);
W = linearBearing_W(model);
innerRim = dr + (D - dr) * 0.2;
outerRim = D - (D - dr) * 0.2;
midSink = W/4;
translate(pos) rotate(angle) union() {
color(material)
difference() {
// Basic ring
Ring([0,0,0], D, dr, L, material, material);
if(W) {
// Side shields
Ring([0,0,-epsilon], outerRim, innerRim, L*epsilon+midSink, sideMaterial, material);
Ring([0,0,L-midSink-epsilon], outerRim, innerRim, L*epsilon+midSink, sideMaterial, material);
//Outer locking groove
Ring([0,0,(L-B)/2], D+epsilon, outerRim+W/2, W, material, material);
Ring([0,0,L-(L-B)/2], D+epsilon, outerRim+W/2, W, material, material);
}
}
if(W)
Ring([0,0,midSink], D-L*epsilon, dr+L*epsilon, L-midSink*2, sideMaterial, sideMaterial);
}
module Ring(pos, od, id, h, material, holeMaterial) {
color(material) {
translate(pos)
difference() {
cylinder(r=od/2, h=h, $fn = 100);
color(holeMaterial)
translate([0,0,-10*epsilon])
cylinder(r=id/2, h=h+20*epsilon, $fn = 100);
}
}
}
}
//examples
//linearBearing(model="LM8UU");
//linearBearing(model="LM10UU");

View File

@ -105,7 +105,7 @@ module screw_and_nut(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tole
module nut(size=8, chamfer=false, renderPart=false, echoPart=false) {
renderStandardPart(renderPart)
color(steel)
color(Steel)
flat_nut(size, apply_chamfer=chamfer);
if(echoPart) {
if(chamfer)
@ -119,14 +119,13 @@ module nut(size=8, chamfer=false, renderPart=false, echoPart=false) {
module hole_for_nut(size=3,nutAddedLen=0,captiveLen=0,tolerance=0.35) {
radius = METRIC_NUT_AC_WIDTHS[size]/2+tolerance;
height = METRIC_NUT_THICKNESS[size]+tolerance;
translate([0,height+nutAddedLen+nutDepth-0.01,0])
scale([1,(height+nutAddedLen)/height,1])
rotate([90,0,0])
hull() {
scale([1,(height+nutAddedLen)/height,1])
rotate([90,0,0])
hull() {
nutHole(size=size, tolerance=tolerance, proj=-1);
translate([0,captiveLen,0])
nutHole(size=size, tolerance=tolerance, proj=-1);
translate([0,captiveLen,0])
nutHole(size=size, tolerance=tolerance, proj=-1);
}
}
}
@ -211,7 +210,7 @@ module radialBearing(model=608, renderPart=false, echoPart=false) {
module washer_single(diam=15.8, thickness=1.6, tolerance=0, renderPart=false, echoPart=false) {
renderStandardPart(renderPart)
color(steel)
color(Steel)
rotate([90,0,0]) translate([0,0,-tolerance])
difference() {
cylinder(r=diam/2+tolerance, h=thickness+2*tolerance);
@ -221,3 +220,20 @@ module washer_single(diam=15.8, thickness=1.6, tolerance=0, renderPart=false, ec
}
include <linear_bearing.scad>;
module linearBearing_single(model="LM8UU", renderPart=false, echoPart=false) {
renderStandardPart(renderPart)
linearBearing(model=model);
if(echoPart) echo(str("BOM: Linear bearing. Model ", model));
}
module linearBearingHole(model="LM8UU", tolerance=0.1) {
translate([0,0,-tolerance])
cylinder(r=linearBearing_D(model)/2+tolerance, h=linearBearing_L(model)+2*tolerance);
}