author | Michael Krelin <hacker@klever.net> | 2016-07-15 21:52:56 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2016-07-15 21:52:56 (UTC) |
commit | a81ecf3156452706c5f39d2d5d8edf3970a9ccb7 (patch) (unidiff) | |
tree | 897a3dcb482928b87fead8c3904bb081f393f082 | |
parent | d67ab62d587d8108c93a7cbd1dcc9c0af1381076 (diff) | |
download | carriagery-a81ecf3156452706c5f39d2d5d8edf3970a9ccb7.zip carriagery-a81ecf3156452706c5f39d2d5d8edf3970a9ccb7.tar.gz carriagery-a81ecf3156452706c5f39d2d5d8edf3970a9ccb7.tar.bz2 |
let ties tie tighter
-rw-r--r-- | x-carriage.scad | 7 |
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 | ]; |
16 | mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0]; | 16 | mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0]; |
17 | 17 | ||
18 | belt_tooth=0.70; | 18 | belt_tooth=0.70; |
19 | belt_thickness=0.75; | 19 | belt_thickness=0.75; |
20 | belts_thickness = belt_thickness*2+belt_tooth+0.5; | 20 | belts_thickness = belt_thickness*2+belt_tooth+0.5; |
21 | belt_width = 6 + slide_tolerance; | 21 | belt_width = 6 + slide_tolerance; |
22 | belts_apart = 12; | 22 | belts_apart = 12; |
23 | belt_pitch = 2; | 23 | belt_pitch = 2; |
24 | beltholder_chamfer = 1; | 24 | beltholder_chamfer = 1; |
25 | 25 | ||
26 | tiehole_id = bearings_d+3; | 26 | tiehole_id = bearings_d+3; |
27 | tiehole_od = bearings_d+10; | 27 | tiehole_od = bearings_d+10; |
28 | tiehole_w = 4; | 28 | tiehole_w = 4; |
29 | 29 | ||
30 | screw_d = 3; | 30 | screw_d = 3; |
31 | screwhead_d = 5.5; | 31 | screwhead_d = 5.5; |
32 | screwhead_h = 3; | 32 | screwhead_h = 3; |
33 | 33 | ||
34 | module belt(pitch=belt_pitch,width=belt_width,thickness=belt_thickness,tooth=belt_tooth,l=100,tolerance=0) { | 34 | module 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 | ||
49 | module xcarriage() { | 49 | module 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 | ||
107 | print=false; | 110 | print=false; |
108 | if(print) rotate([-90,0,0]) xcarriage(); | 111 | if(print) rotate([-90,0,0]) xcarriage(); |
109 | else xcarriage(); | 112 | else xcarriage(); |
110 | 113 | ||