summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--x-carriage.scad5
1 files changed, 5 insertions, 0 deletions
diff --git a/x-carriage.scad b/x-carriage.scad
index 8a9f0d9..c2552d2 100644
--- a/x-carriage.scad
+++ b/x-carriage.scad
@@ -1,47 +1,48 @@
1slide_tolerance = .3; 1slide_tolerance = .3;
2play_tolerance=.4; 2play_tolerance=.4;
3fit_tolerance = .25; 3fit_tolerance = .25;
4 4
5 bearings_l = 30;// LM8UU: 25 5 bearings_l = 30;// LM8UU: 25
6 bearings_d = 12;// LM8UU: 15 6 bearings_d = 12;// LM8UU: 15
7 bearings_m = 2.5;// thickness of the bearing end holder 7 bearings_m = 2.5;// thickness of the bearing end holder
8 bearings_s = 2.5;// the minimum shell between bearings and carriage front 8 bearings_s = 2.5;// the minimum shell between bearings and carriage front
9 9
10rods_apart = 45; 10rods_apart = 45;
11rod_d = 8; 11rod_d = 8;
12 12
13 mounting_holes_from_top = [// the offsets of mounting holes on the back 13 mounting_holes_from_top = [// the offsets of mounting holes on the back
14 [0, 20], [-4.5,10], [4.5,10] 14 [0, 20], [-4.5,10], [4.5,10]
15]; 15];
16mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0]; 16mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0];
17 17
18belt_tooth=0.70; 18belt_tooth=0.70;
19belt_thickness=0.75; 19belt_thickness=0.75;
20belts_thickness = belt_thickness*2+belt_tooth+0.5; 20belts_thickness = belt_thickness*2+belt_tooth+0.5;
21belt_width = 6 + slide_tolerance; 21belt_width = 6 + slide_tolerance;
22belts_apart = 12; 22belts_apart = 12;
23belt_pitch = 2; 23belt_pitch = 2;
24beltholder_chamfer = 1;
24 25
25tiehole_id = bearings_d+3; 26tiehole_id = bearings_d+3;
26tiehole_od = bearings_d+10; 27tiehole_od = bearings_d+10;
27tiehole_w = 4; 28tiehole_w = 4;
28 29
29screw_d = 3; 30screw_d = 3;
30screwhead_d = 5.5; 31screwhead_d = 5.5;
31screwhead_h = 3; 32screwhead_h = 3;
32 33
33module belt(pitch=belt_pitch,width=belt_width,thickness=belt_thickness,tooth=belt_tooth,l=100,tolerance=0) { 34module belt(pitch=belt_pitch,width=belt_width,thickness=belt_thickness,tooth=belt_tooth,l=100,tolerance=0) {
34 translate([-l/2,-width/2,-thickness]) 35 translate([-l/2,-width/2,-thickness])
35 intersection() { 36 intersection() {
36 union() { 37 union() {
37 cube(size=[l,width,thickness+tolerance]); 38 cube(size=[l,width,thickness+tolerance]);
38 for(x=[0:pitch:l/2]) for(s=[-1,1]) 39 for(x=[0:pitch:l/2]) for(s=[-1,1])
39 translate([l/2+s*x,0,thickness]) 40 translate([l/2+s*x,0,thickness])
40 rotate([-90,0,0]) 41 rotate([-90,0,0])
41 cylinder(r=tooth+tolerance,h=width,$fn=6); 42 cylinder(r=tooth+tolerance,h=width,$fn=6);
42 } 43 }
43 translate([0,-1,0]) 44 translate([0,-1,0])
44 cube(size=[l,width+2,thickness+tooth+1]); 45 cube(size=[l,width+2,thickness+tooth+1]);
45 } 46 }
46} 47}
47 48
@@ -72,31 +73,35 @@ module xcarriage() {
72 ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center 73 ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center
73 r=1; 74 r=1;
74 x0 = ofc+r; x1=cw/2-r; 75 x0 = ofc+r; x1=cw/2-r;
75 z0 = r; z1 = belts_apart/2-belt_thickness; 76 z0 = r; z1 = belts_apart/2-belt_thickness;
76 difference() { 77 difference() {
77 hull() for(x=[x0,x1]) for(z=[z0,z1]) 78 hull() for(x=[x0,x1]) for(z=[z0,z1])
78 translate([x,0,z]) 79 translate([x,0,z])
79 rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30); 80 rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30);
80 translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance); 81 translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance);
81 } 82 }
82 bgap = belt_thickness+belt_tooth+fit_tolerance; 83 bgap = belt_thickness+belt_tooth+fit_tolerance;
83 r1 = (belts_apart/3-bgap)/2; 84 r1 = (belts_apart/3-bgap)/2;
84 hull() for(x=[mounting_holes_apart/2,x1]) 85 hull() for(x=[mounting_holes_apart/2,x1])
85 translate([x,0,-r1-bgap]) 86 translate([x,0,-r1-bgap])
86 rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30); 87 rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30);
87 } 88 }
88 } // difference 89 } // difference
89 90
90 translate([0,0,30/*heatsink height*//2]) 91 translate([0,0,30/*heatsink height*//2])
91 for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) { 92 for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) {
92 rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30); 93 rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30);
93 translate([0,belt_width/2+screwhead_h+play_tolerance,0]) 94 translate([0,belt_width/2+screwhead_h+play_tolerance,0])
94 rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30); 95 rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30);
95 } 96 }
97 ccs = (belt_thickness+2*beltholder_chamfer)/sqrt(2);
98 translate([0,-belt_width/2,belts_apart/2+belt_thickness/2-fit_tolerance/2])
99 rotate([45,0,0]) cube(size=[cw+2,ccs,ccs],center=true);
100
96 } // difference 101 } // difference
97} 102}
98 103
99print=false; 104print=false;
100if(print) rotate([-90,0,0]) xcarriage(); 105if(print) rotate([-90,0,0]) xcarriage();
101else xcarriage(); 106else xcarriage();
102 107