-rw-r--r-- | X-Axis_carridge2.scad | 144 | ||||
-rw-r--r-- | x-carriage.scad | 111 |
2 files changed, 111 insertions, 144 deletions
diff --git a/X-Axis_carridge2.scad b/X-Axis_carridge2.scad deleted file mode 100644 index d7285b9..0000000 --- a/X-Axis_carridge2.scad +++ b/dev/null | |||
@@ -1,144 +0,0 @@ | |||
1 | part="mount"; //mount or carridge | ||
2 | |||
3 | // LM8UU dimentions | ||
4 | LM8UU_length = 25; | ||
5 | LM8UU_diameter = 15; | ||
6 | |||
7 | // X Axis dimensions | ||
8 | x_rod_spacing = 45; | ||
9 | x_rod_radius = 4; | ||
10 | |||
11 | //Belt | ||
12 | belt_thickness_no_tooth = 0.75; | ||
13 | belt_thickness_tooth = 1.45; | ||
14 | belt_double = belt_thickness_no_tooth+belt_thickness_tooth+0.5; | ||
15 | |||
16 | //Carriage | ||
17 | carriage_width = 30; | ||
18 | carriage_padding = 0.1; | ||
19 | carriage_height = x_rod_spacing+LM8UU_diameter+carriage_padding*2; | ||
20 | carriage_depth = 12; | ||
21 | |||
22 | //cyclops | ||
23 | heatbreak_x1=6; | ||
24 | heatbreak_x2=24; | ||
25 | heatbreak_z1=3; | ||
26 | heatbreak_z2=11; | ||
27 | heatbreak_diameter=4; | ||
28 | heatsink_baseline=carriage_padding*2+LM8UU_diameter-1; | ||
29 | mount_x1=15; | ||
30 | mount_z1=10; | ||
31 | mount_x2=10.5; | ||
32 | mount_z2=20; | ||
33 | mount_x3=19.5; | ||
34 | mount_z3=20; | ||
35 | mount_diameter=3.8; | ||
36 | |||
37 | module tie(){ | ||
38 | difference(){ | ||
39 | rotate([0,90,0]) cylinder(d=LM8UU_diameter+10, h=4, $fn=50); | ||
40 | rotate([0,90,0]) cylinder(d=LM8UU_diameter+3, h=4, $fn=50); | ||
41 | } | ||
42 | } | ||
43 | |||
44 | module heatbreak_hole(){ | ||
45 | rotate([-90,0,0]) cylinder(d=heatbreak_diameter, h=carriage_depth*2+10, $fn=50); | ||
46 | //translate([0,-4,0]) rotate([-90,0,0]) cylinder(d=heatbreak_diameter+3, h=carriage_depth+2, $fn=100); | ||
47 | } | ||
48 | |||
49 | module mount_hole(){ | ||
50 | rotate([-90,0,0]) cylinder(d=mount_diameter, h=carriage_depth*2+10, $fn=50); | ||
51 | if (part=="carridge") translate([0,-4,0]) rotate([-90,0,0]) cylinder(d=mount_diameter+3, h=carriage_depth+2, $fn=50); | ||
52 | } | ||
53 | |||
54 | module lug_hole(){ | ||
55 | rotate([-90,0,0]) cylinder(d=4, h=carriage_depth+2, $fn=50); | ||
56 | //translate([0,0,-2]) rotate([-90,0,0]) cylinder(d=5, h=carriage_depth+2, $fn=100); | ||
57 | } | ||
58 | |||
59 | |||
60 | difference(){ | ||
61 | if (part=="carridge") { | ||
62 | //back plane | ||
63 | cube(size=[carriage_width,carriage_depth,carriage_height+1]); | ||
64 | } | ||
65 | else if (part=="mount") { | ||
66 | local_height = x_rod_spacing-LM8UU_diameter-carriage_padding*2-3; | ||
67 | translate([0,8,LM8UU_diameter+carriage_padding*2]) | ||
68 | cube(size=[carriage_width,8,local_height]); | ||
69 | } | ||
70 | |||
71 | if (part=="carridge"){ | ||
72 | //LM8UU | ||
73 | translate([2.5,0,carriage_padding+LM8UU_diameter/2]) rotate([0,90,0]) cylinder(d=LM8UU_diameter, h=LM8UU_length, $fn=50); | ||
74 | translate([2.5,0,carriage_height-carriage_padding-LM8UU_diameter/2]) rotate([0,90,0]) cylinder(d=LM8UU_diameter, h=LM8UU_length, $fn=50); | ||
75 | |||
76 | //ties | ||
77 | translate([8,0,carriage_padding+LM8UU_diameter/2]) tie(); | ||
78 | translate([carriage_width-12,0,carriage_padding+LM8UU_diameter/2]) tie(); | ||
79 | translate([6,0,carriage_height-carriage_padding-LM8UU_diameter/2]) tie(); | ||
80 | translate([carriage_width-10,0,carriage_height-carriage_padding-LM8UU_diameter/2]) tie(); | ||
81 | |||
82 | translate([8,-1,-1]) cube(size=[4,LM8UU_diameter/2,3]); | ||
83 | translate([carriage_width-12,-1,-1]) cube(size=[4,LM8UU_diameter/2,3]); | ||
84 | |||
85 | //translate([8,LM8UU_diameter/2-.01,LM8UU_diameter/8]) cube(size=[3,carriage_depth,LM8UU_diameter/3*2+1]); | ||
86 | // translate([carriage_width-11,LM8UU_diameter/2-.01,LM8UU_diameter/8]) cube(size=[3,carriage_depth,LM8UU_diameter/3*2+1]); | ||
87 | |||
88 | //rods | ||
89 | translate([-1,0,carriage_padding+x_rod_radius+3.5]) rotate([0,90,0]) cylinder(r=x_rod_radius+2, h=carriage_width+2, $fn=50); | ||
90 | translate([-1,0,carriage_height-x_rod_radius-3.5-carriage_padding]) rotate([0,90,0]) cylinder(r=x_rod_radius+2, h=carriage_width+2, $fn=50); | ||
91 | |||
92 | //belt | ||
93 | translate([-1,-1,LM8UU_diameter+carriage_padding*2+1]) difference(){ | ||
94 | local_height = x_rod_spacing-LM8UU_diameter-carriage_padding*2-5; | ||
95 | cube(size=[carriage_width+2,8,local_height]); | ||
96 | |||
97 | //posts | ||
98 | translate([3,-1,12.5]) lug_hole(); | ||
99 | translate([29,-1,12.5]) lug_hole(); | ||
100 | //channels | ||
101 | translate([0,0,carriage_padding*2]){ | ||
102 | difference() { | ||
103 | union() { | ||
104 | translate([1,-1,local_height-belt_double-5]) cube(size=[4,10,5]); | ||
105 | translate([27,-1,local_height-belt_double-5]) cube(size=[4,10,5]); | ||
106 | |||
107 | translate([5,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=5,h=100,$fn=50); | ||
108 | translate([27,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=5,h=100,$fn=50); | ||
109 | } | ||
110 | translate([5,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=3.5,h=100,$fn=50); | ||
111 | translate([27,0,local_height-belt_double-2.5]) rotate([-90,0,0]) cylinder(d=3.5,h=100,$fn=50); | ||
112 | } | ||
113 | } | ||
114 | } | ||
115 | } | ||
116 | |||
117 | //Cyclops heatbreak | ||
118 | translate([heatbreak_x1,-1,heatbreak_z1+heatsink_baseline]) heatbreak_hole(); | ||
119 | translate([heatbreak_x2,-1,heatbreak_z1+heatsink_baseline]) heatbreak_hole(); | ||
120 | translate([heatbreak_x1,-1,heatbreak_z2+heatsink_baseline]) heatbreak_hole(); | ||
121 | translate([heatbreak_x2,-1,heatbreak_z2+heatsink_baseline]) heatbreak_hole(); | ||
122 | |||
123 | //Cyclops mount | ||
124 | translate([mount_x1,-1,mount_z1+heatsink_baseline]) mount_hole(); | ||
125 | translate([mount_x2,-1,mount_z2+heatsink_baseline]) mount_hole(); | ||
126 | translate([mount_x3,-1,mount_z3+heatsink_baseline]) mount_hole(); | ||
127 | |||
128 | //cooling | ||
129 | if (part=="mount") translate([0.001,7,LM8UU_diameter+carriage_padding*2-1]){ | ||
130 | local_height = x_rod_spacing-LM8UU_diameter-carriage_padding*2+2; | ||
131 | translate([2,0,0]) cube(size=[2,3,local_height]); | ||
132 | translate([6,0,0]) cube(size=[2,3,local_height]); | ||
133 | translate([10,0,0]) cube(size=[2,3,local_height]); | ||
134 | translate([14,0,0]) cube(size=[2,3,local_height]); | ||
135 | translate([18,0,0]) cube(size=[2,3,local_height]); | ||
136 | translate([22,0,0]) cube(size=[2,3,local_height]); | ||
137 | translate([26,0,0]) cube(size=[2,3,local_height]); | ||
138 | } | ||
139 | |||
140 | |||
141 | //translate([-1,LM8UU_diameter/2+1,-1]) cube(size=[carriage_width+2,carriage_depth-LM8UU_diameter/2+1,LM8UU_diameter]); | ||
142 | } | ||
143 | |||
144 | |||
diff --git a/x-carriage.scad b/x-carriage.scad new file mode 100644 index 0000000..a546bb7 --- a/dev/null +++ b/x-carriage.scad | |||
@@ -0,0 +1,111 @@ | |||
1 | slide_tolerance = .3; | ||
2 | play_tolerance=.4; | ||
3 | fit_tolerance = .2; | ||
4 | |||
5 | bearings_l = 25;// 15; | ||
6 | bearings_d = 15;// 12; | ||
7 | bearings_m = 2.5;// thickness of the bearing end holder | ||
8 | bearings_s = 4.5;// the minimum shell between bearings and carriage front | ||
9 | |||
10 | rods_apart = 45; | ||
11 | rod_d = 8; | ||
12 | |||
13 | mounting_holes_from_top = [// the offsets of mounting holes on the back | ||
14 | [0, 20], [-4.5,10], [4.5,10] | ||
15 | ]; | ||
16 | mounting_holes_apart = mounting_holes_from_top[2][0]-mounting_holes_from_top[1][0]; | ||
17 | |||
18 | belt_tooth=0.70; | ||
19 | belt_thickness=0.75; | ||
20 | belts_thickness = belt_thickness*2+belt_tooth+0.5; | ||
21 | belt_width = 6; | ||
22 | belts_apart = 12; | ||
23 | belt_pitch = 2; | ||
24 | |||
25 | tiehole_id = bearings_d+3; | ||
26 | tiehole_od = bearings_d+10; | ||
27 | tiehole_w = 4; | ||
28 | |||
29 | screw_d = 3; | ||
30 | screwhead_d = 5.5; | ||
31 | screwhead_h = 3; | ||
32 | |||
33 | module 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 | intersection() { | ||
36 | union() { | ||
37 | cube(size=[l,width,thickness+tolerance]); | ||
38 | for(x=[0:pitch:l/2]) for(s=[-1,1]) | ||
39 | translate([l/2+s*x,0,thickness]) | ||
40 | rotate([-90,0,0]) | ||
41 | cylinder(r=tooth+tolerance,h=width,$fn=6); | ||
42 | } | ||
43 | translate([0,-1,0]) | ||
44 | cube(size=[l,width+2,thickness+tooth+1]); | ||
45 | } | ||
46 | } | ||
47 | |||
48 | module xcarriage() { | ||
49 | cw = bearings_l+2*bearings_m;// carriage width | ||
50 | % for(mz=[0,1]) mirror([0,0,mz]) translate([0,0,-belts_apart/2]) belt(); | ||
51 | difference() { | ||
52 | translate([-cw/2,-belt_width/2,-rods_apart/2-bearings_d/2]) | ||
53 | cube(size=[cw,bearings_d/2+bearings_s+belt_width/2,rods_apart+bearings_d]); | ||
54 | |||
55 | for(sz=[-1,1]) translate([0,0,sz*rods_apart/2]) { | ||
56 | rotate([0,90,0]) | ||
57 | cylinder(d=bearings_d,bearings_l,center=true,$fn=60); | ||
58 | for(sx=[-1,1]) translate([sx*bearings_l/4,0,0]) | ||
59 | rotate([0,90,0]) difference() { | ||
60 | cylinder(d=tiehole_od,h=tiehole_w,center=true,$fn=60); | ||
61 | cylinder(d=tiehole_id,h=tiehole_w+2,center=true,$fn=60); | ||
62 | } | ||
63 | rotate([0,90,0]) cylinder(d=bearings_d-bearings_m,h=cw+2,center=true,$fn=60); | ||
64 | } | ||
65 | |||
66 | difference() { | ||
67 | gap=3; | ||
68 | translate([0,-.5,-gap/2]) | ||
69 | cube(size=[cw+2,belt_width+2,belts_apart+2*belt_thickness+gap],center=true); | ||
70 | for(mx=[0,1]) mirror([mx,0,0]) { | ||
71 | ofc = mounting_holes_apart/2+screwhead_d/2+belt_thickness+belt_tooth+play_tolerance; // offset from center | ||
72 | r=1; | ||
73 | x0 = ofc+r; x1=cw/2-r; | ||
74 | z0 = r; z1 = belts_apart/2-belt_thickness; | ||
75 | difference() { | ||
76 | hull() for(x=[x0,x1]) for(z=[z0,z1]) | ||
77 | translate([x,0,z]) | ||
78 | rotate([90,0,0]) cylinder(r=r,h=belt_width+2,center=true,$fn=30); | ||
79 | translate([cw/2,0,belts_apart/2]) mirror([0,0,1]) belt(width=belt_width+2,l=cw/2+2,tolerance=fit_tolerance); | ||
80 | } | ||
81 | bgap = belt_thickness+belt_tooth+fit_tolerance; | ||
82 | r1 = (belts_apart/3-bgap)/2; | ||
83 | echo(r1); | ||
84 | hull() for(x=[mounting_holes_apart/2,x1]) | ||
85 | translate([x,0,-r1-bgap]) | ||
86 | rotate([90,0,0]) cylinder(r=r1,h=belt_width+2,center=true,$fn=30); | ||
87 | dgn= sqrt(pow(x1-x0,2)+pow(z1-z0,2)); | ||
88 | echo(dgn); | ||
89 | translate([x0,0,z0]) | ||
90 | rotate([90,0,0]) | ||
91 | * cylinder(r=dgn/2-r-belt_thickness,h=belt_width+2,center=true,$fn=30); | ||
92 | /* | ||
93 | pd = 4.5;// post diameter | ||
94 | bhd = 5;// belt holder diameter | ||
95 | translate([cw/2-pd/2,0,belts_apart/2-belts_thickness-bhd/2]) cube(size=[pd,belt_width,bhd],center=true); | ||
96 | translate([(cw-pd)/2,0,0]) // TODO: z | ||
97 | rotate([-90,0,0]) translate([0,0,-1]) cylinder(d=pd,h=belt_width+2,center=true,$fn=30); */ | ||
98 | } | ||
99 | } // difference | ||
100 | |||
101 | translate([0,0,30/*heatsink height*//2]) | ||
102 | for(mhft = mounting_holes_from_top) translate([mhft[0],0,-mhft[1]]) { | ||
103 | rotate([90,0,0]) cylinder(d=screw_d+2*play_tolerance,h=bearings_d+2*bearings_s+2,center=true,$fn=30); | ||
104 | translate([0,belt_width/2+screwhead_h+play_tolerance,0]) | ||
105 | rotate([90,0,0]) cylinder(d=screwhead_d+2*play_tolerance,h=screwhead_h+play_tolerance+1,$fn=30); | ||
106 | } | ||
107 | } // difference | ||
108 | } | ||
109 | |||
110 | xcarriage(); | ||
111 | |||