summaryrefslogtreecommitdiff
authorMichael Krelin <hacker@klever.net>2016-07-15 21:52:56 (UTC)
committer Michael Krelin <hacker@klever.net>2016-07-15 21:52:56 (UTC)
commita81ecf3156452706c5f39d2d5d8edf3970a9ccb7 (patch) (unidiff)
tree897a3dcb482928b87fead8c3904bb081f393f082
parentd67ab62d587d8108c93a7cbd1dcc9c0af1381076 (diff)
downloadcarriagery-a81ecf3156452706c5f39d2d5d8edf3970a9ccb7.zip
carriagery-a81ecf3156452706c5f39d2d5d8edf3970a9ccb7.tar.gz
carriagery-a81ecf3156452706c5f39d2d5d8edf3970a9ccb7.tar.bz2
let ties tie tighter
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--x-carriage.scad7
1 files changed, 5 insertions, 2 deletions
diff --git a/x-carriage.scad b/x-carriage.scad
index 47ba499..3c2ee2f 100644
--- a/x-carriage.scad
+++ b/x-carriage.scad
@@ -13,98 +13,101 @@ rod_d = 8;
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; 24beltholder_chamfer = 1;
25 25
26tiehole_id = bearings_d+3; 26tiehole_id = bearings_d+3;
27tiehole_od = bearings_d+10; 27tiehole_od = bearings_d+10;
28tiehole_w = 4; 28tiehole_w = 4;
29 29
30screw_d = 3; 30screw_d = 3;
31screwhead_d = 5.5; 31screwhead_d = 5.5;
32screwhead_h = 3; 32screwhead_h = 3;
33 33
34module 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) {
35 translate([-l/2,-width/2,-thickness]) 35 translate([-l/2,-width/2,-thickness])
36 intersection() { 36 intersection() {
37 union() { 37 union() {
38 cube(size=[l,width,thickness+tolerance]); 38 cube(size=[l,width,thickness+tolerance]);
39 for(x=[0:pitch:l/2]) for(s=[-1,1]) 39 for(x=[0:pitch:l/2]) for(s=[-1,1])
40 translate([l/2+s*x,0,thickness]) 40 translate([l/2+s*x,0,thickness])
41 rotate([-90,0,0]) 41 rotate([-90,0,0])
42 cylinder(r=tooth+tolerance,h=width,$fn=6); 42 cylinder(r=tooth+tolerance,h=width,$fn=6);
43 } 43 }
44 translate([0,-1,0]) 44 translate([0,-1,0])
45 cube(size=[l,width+2,thickness+tooth+1]); 45 cube(size=[l,width+2,thickness+tooth+1]);
46 } 46 }
47} 47}
48 48
49module xcarriage() { 49module xcarriage() {
50 cw = bearings_l+2*bearings_m;// carriage width 50 cw = bearings_l+2*bearings_m;// carriage width
51 % for(mz=[0,1]) mirror([0,0,mz]) translate([0,0,-belts_apart/2]) belt(l=cw+2); 51 % for(mz=[0,1]) mirror([0,0,mz]) translate([0,0,-belts_apart/2]) belt(l=cw+2);
52 difference() { 52 difference() {
53 translate([-cw/2,-belt_width/2,-(rods_apart+bearings_d+bearings_m)/2]) 53 translate([-cw/2,-belt_width/2,-(rods_apart+bearings_d+bearings_m)/2])
54 cube(size=[cw,bearings_d/2+bearings_s+belt_width/2,rods_apart+bearings_d+bearings_m]); 54 cube(size=[cw,bearings_d/2+bearings_s+belt_width/2,rods_apart+bearings_d+bearings_m]);
55 55
56 for(sz=[-1,1]) translate([0,0,sz*rods_apart/2]) { 56 for(sz=[-1,1]) translate([0,0,sz*rods_apart/2]) {
57 rotate([0,90,0]) 57 rotate([0,90,0])
58 cylinder(d=bearings_d,h=bearings_l,center=true,$fn=60); 58 cylinder(d=bearings_d,h=bearings_l,center=true,$fn=60);
59 translate([0,-bearings_d/2,0]) 59 translate([0,-bearings_d/2,0])
60 cube(size=[bearings_l,bearings_d,bearings_d],center=true); 60 cube(size=[bearings_l,bearings_d,bearings_d],center=true);
61 for(sx=[-1,1]) translate([sx*bearings_l/4,0,0])
62 rotate([0,90,0]) cylinder(d=bearings_d-bearings_m,h=cw+2,center=true,$fn=60); 61 rotate([0,90,0]) cylinder(d=bearings_d-bearings_m,h=cw+2,center=true,$fn=60);
63 translate([-cw/2-1,-belt_width,-(bearings_d-bearings_m)/2]) 62 translate([-cw/2-1,-belt_width,-(bearings_d-bearings_m)/2])
64 cube(size=[cw+2,belt_width,bearings_d-bearings_m]); 63 cube(size=[cw+2,belt_width,bearings_d-bearings_m]);
64 for(sx=[-1,1]) translate([sx*bearings_l/4,0,0]) {
65 rotate([0,90,0]) difference() { 65 rotate([0,90,0]) difference() {
66 cylinder(d=tiehole_od,h=tiehole_w,center=true,$fn=60); 66 cylinder(d=tiehole_od,h=tiehole_w,center=true,$fn=60);
67 cylinder(d=tiehole_id,h=tiehole_w+2,center=true,$fn=60); 67 cylinder(d=tiehole_id,h=tiehole_w+2,center=true,$fn=60);
68 } 68 }
69 } 69 translate([0,-tiehole_od/2,0])
70 cube(size=[tiehole_w,tiehole_od,tiehole_od],center=true);
71 } // translate for(sx)
72 } // for(sz)
70 73
71 difference() { 74 difference() {
72 gap=belts_apart/6; 75 gap=belts_apart/6;
73 translate([0,-.5,-gap/2]) 76 translate([0,-.5,-gap/2])
74 cube(size=[cw+2,belt_width+2,belts_apart+2*belt_thickness+gap],center=true); 77 cube(size=[cw+2,belt_width+2,belts_apart+2*belt_thickness+gap],center=true);
75 for(mx=[0,1]) mirror([mx,0,0]) { 78 for(mx=[0,1]) mirror([mx,0,0]) {
76 ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center 79 ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center
77 r=1; 80 r=1;
78 x0 = ofc+r; x1=cw/2-r; 81 x0 = ofc+r; x1=cw/2-r;
79 z0 = r; z1 = belts_apart/2-belt_thickness; 82 z0 = r; z1 = belts_apart/2-belt_thickness;
80 difference() { 83 difference() {
81 hull() for(x=[x0,x1]) for(z=[z0,z1]) 84 hull() for(x=[x0,x1]) for(z=[z0,z1])
82 translate([x,0,z]) 85 translate([x,0,z])
83 rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30); 86 rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30);
84 translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance); 87 translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance);
85 } 88 }
86 bgap = belt_thickness+belt_tooth+fit_tolerance; 89 bgap = belt_thickness+belt_tooth+fit_tolerance;
87 r1 = (belts_apart/3-bgap)/2; 90 r1 = (belts_apart/3-bgap)/2;
88 hull() for(x=[mounting_holes_apart/2,x1]) 91 hull() for(x=[mounting_holes_apart/2,x1])
89 translate([x,0,-r1-bgap]) 92 translate([x,0,-r1-bgap])
90 rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30); 93 rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30);
91 } 94 }
92 } // difference 95 } // difference
93 96
94 translate([0,0,30/*heatsink height*//2]) 97 translate([0,0,30/*heatsink height*//2])
95 for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) { 98 for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) {
96 rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30); 99 rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30);
97 translate([0,belt_width/2+screwhead_h+play_tolerance,0]) 100 translate([0,belt_width/2+screwhead_h+play_tolerance,0])
98 rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30); 101 rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30);
99 } 102 }
100 ccs = (belt_thickness+2*beltholder_chamfer)/sqrt(2); 103 ccs = (belt_thickness+2*beltholder_chamfer)/sqrt(2);
101 translate([0,-belt_width/2,belts_apart/2+belt_thickness/2-fit_tolerance/2]) 104 translate([0,-belt_width/2,belts_apart/2+belt_thickness/2-fit_tolerance/2])
102 rotate([45,0,0]) cube(size=[cw+2,ccs,ccs],center=true); 105 rotate([45,0,0]) cube(size=[cw+2,ccs,ccs],center=true);
103 106
104 } // difference 107 } // difference
105} 108}
106 109
107print=false; 110print=false;
108if(print) rotate([-90,0,0]) xcarriage(); 111if(print) rotate([-90,0,0]) xcarriage();
109else xcarriage(); 112else xcarriage();
110 113