|
| 1 | +//By Glen Chung, 2013. |
| 2 | +//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later |
| 3 | + |
| 4 | +include <MCAD/units.scad> |
| 5 | +include <MCAD/materials.scad> |
| 6 | + |
| 7 | +LINEAR_BEARING_dr = 0; //Inscribed circle |
| 8 | +LINEAR_BEARING_D = 1; //Outer diameter |
| 9 | +LINEAR_BEARING_L = 2; //Length |
| 10 | +LINEAR_BEARING_B = 3; //Outer locking groove B |
| 11 | +LINEAR_BEARING_D1 = 4; //Outer locking groove D1 |
| 12 | +LINEAR_BEARING_W = 5; //W |
| 13 | + |
| 14 | + |
| 15 | +// Common bearing names |
| 16 | +LinearBearing = "LM8UU"; |
| 17 | + |
| 18 | +// Linear Bearing dimensions |
| 19 | +// model == "XXXXX" ? [ dr, D, L, B, D1, W]: |
| 20 | +function linearBearingDimensions(model) = |
| 21 | + model == "LM3UU" ? [ 3*mm, 7*mm, 10*mm, 0.0*mm, 0.0*mm, 0.00*mm]: |
| 22 | + model == "LM4UU" ? [ 4*mm, 8*mm, 12*mm, 0.0*mm, 0.0*mm, 0.00*mm]: |
| 23 | + model == "LM5UU" ? [ 5*mm, 10*mm, 15*mm, 10.2*mm, 9.6*mm, 1.10*mm]: |
| 24 | + model == "LM6UU" ? [ 6*mm, 12*mm, 19*mm, 13.5*mm, 11.5*mm, 1.10*mm]: |
| 25 | + model == "LM8SUU" ? [ 8*mm, 15*mm, 17*mm, 11.5*mm, 14.3*mm, 1.10*mm]: |
| 26 | + model == "LM10UU" ? [ 10*mm, 19*mm, 29*mm, 22.0*mm, 18.0*mm, 1.30*mm]: |
| 27 | + model == "LM12UU" ? [ 12*mm, 21*mm, 30*mm, 23.0*mm, 20.0*mm, 1.30*mm]: |
| 28 | + model == "LM13UU" ? [ 13*mm, 23*mm, 32*mm, 23.0*mm, 22.0*mm, 1.30*mm]: |
| 29 | + model == "LM16UU" ? [ 16*mm, 28*mm, 37*mm, 26.5*mm, 27.0*mm, 1.60*mm]: |
| 30 | + model == "LM20UU" ? [ 20*mm, 32*mm, 42*mm, 30.5*mm, 30.5*mm, 1.60*mm]: |
| 31 | + model == "LM25UU" ? [ 25*mm, 40*mm, 59*mm, 41.0*mm, 38.0*mm, 1.85*mm]: |
| 32 | + model == "LM30UU" ? [ 30*mm, 45*mm, 64*mm, 44.5*mm, 43.0*mm, 1.85*mm]: |
| 33 | + model == "LM35UU" ? [ 35*mm, 52*mm, 70*mm, 49.5*mm, 49.0*mm, 2.10*mm]: |
| 34 | + model == "LM40UU" ? [ 40*mm, 60*mm, 80*mm, 60.5*mm, 57.0*mm, 2.10*mm]: |
| 35 | + model == "LM50UU" ? [ 50*mm, 80*mm, 100*mm, 74.0*mm, 76.5*mm, 2.60*mm]: |
| 36 | + model == "LM60UU" ? [ 60*mm, 90*mm, 110*mm, 85.0*mm, 86.5*mm, 3.15*mm]: |
| 37 | + model == "LM80UU" ? [ 80*mm, 120*mm, 140*mm, 105.5*mm, 116.0*mm, 4.15*mm]: |
| 38 | + model == "LM100UU" ? [100*mm, 150*mm, 150*mm, 125.5*mm, 145.0*mm, 4.15*mm]: |
| 39 | + /*model == "LM8UU" ?*/ [ 8*mm, 15*mm, 24*mm, 17.5*mm, 14.3*mm, 1.10*mm]; |
| 40 | + |
| 41 | + |
| 42 | +function linearBearing_dr(model) = linearBearingDimensions(model)[LINEAR_BEARING_dr]; |
| 43 | +function linearBearing_D(model) = linearBearingDimensions(model)[LINEAR_BEARING_D]; |
| 44 | +function linearBearing_L(model) = linearBearingDimensions(model)[LINEAR_BEARING_L]; |
| 45 | +function linearBearing_B(model) = linearBearingDimensions(model)[LINEAR_BEARING_B]; |
| 46 | +function linearBearing_D1(model) = linearBearingDimensions(model)[LINEAR_BEARING_D1]; |
| 47 | +function linearBearing_W(model) = linearBearingDimensions(model)[LINEAR_BEARING_W]; |
| 48 | + |
| 49 | +module linearBearing(pos=[0,0,0], angle=[0,0,0], model=LinearBearing, |
| 50 | + material=Steel, sideMaterial=BlackPaint) { |
| 51 | + dr = linearBearing_dr(model); |
| 52 | + D = linearBearing_D(model); |
| 53 | + L = linearBearing_L(model); |
| 54 | + B = linearBearing_B(model); |
| 55 | + D1 = linearBearing_D1(model); |
| 56 | + W = linearBearing_W(model); |
| 57 | + |
| 58 | + innerRim = dr + (D - dr) * 0.2; |
| 59 | + outerRim = D - (D - dr) * 0.2; |
| 60 | + midSink = W/4; |
| 61 | + |
| 62 | + translate(pos) rotate(angle) union() { |
| 63 | + color(material) |
| 64 | + difference() { |
| 65 | + // Basic ring |
| 66 | + Ring([0,0,0], D, dr, L, material, material); |
| 67 | + |
| 68 | + if(W) { |
| 69 | + // Side shields |
| 70 | + Ring([0,0,-epsilon], outerRim, innerRim, L*epsilon+midSink, sideMaterial, material); |
| 71 | + Ring([0,0,L-midSink-epsilon], outerRim, innerRim, L*epsilon+midSink, sideMaterial, material); |
| 72 | + //Outer locking groove |
| 73 | + Ring([0,0,(L-B)/2], D+epsilon, outerRim+W/2, W, material, material); |
| 74 | + Ring([0,0,L-(L-B)/2], D+epsilon, outerRim+W/2, W, material, material); |
| 75 | + } |
| 76 | + } |
| 77 | + if(W) |
| 78 | + Ring([0,0,midSink], D-L*epsilon, dr+L*epsilon, L-midSink*2, sideMaterial, sideMaterial); |
| 79 | + } |
| 80 | + |
| 81 | + module Ring(pos, od, id, h, material, holeMaterial) { |
| 82 | + color(material) { |
| 83 | + translate(pos) |
| 84 | + difference() { |
| 85 | + cylinder(r=od/2, h=h, $fn = 100); |
| 86 | + color(holeMaterial) |
| 87 | + translate([0,0,-10*epsilon]) |
| 88 | + cylinder(r=id/2, h=h+20*epsilon, $fn = 100); |
| 89 | + } |
| 90 | + } |
| 91 | + } |
| 92 | + |
| 93 | +} |
| 94 | + |
| 95 | + |
| 96 | +//examples |
| 97 | +//linearBearing(model="LM8UU"); |
| 98 | +//linearBearing(model="LM10UU"); |
0 commit comments