ソースを参照

Add proper belt mounts to x-carriage

Thomas Buck 6年前
コミット
7a7f8c590b
2個のファイルの変更125行の追加15行の削除
  1. 117
    7
      lib/linear_bearing.scad
  2. 8
    8
      xyRepRap.scad

+ 117
- 7
lib/linear_bearing.scad ファイルの表示

@@ -9,7 +9,7 @@ lm8uu_outer = 15;
9 9
 lm8uu_inner = 8;
10 10
 lm8uu_height = 24;
11 11
 
12
-x_rail_dist = 50;
12
+x_rail_dist = 60;
13 13
 
14 14
 lm8uu_dia_add = 0.5;
15 15
 lm8uu_len_add = 1.0;
@@ -31,6 +31,25 @@ x_rail_cutout_y = x_rail_dist - (2 * y_carriage_len_add);
31 31
 x_rail_hole_off = 5;
32 32
 x_rail_block_len = (y_carriage_length - x_rail_cutout_y) / 2;
33 33
 
34
+x_carriage_width = 80;
35
+x_carriage_len_add = 10;
36
+x_carriage_wall = 10;
37
+x_carriage_bearing_off = 3;
38
+
39
+x_carriage_belt_off = 19;
40
+x_carriage_belt_block_width = 8;
41
+x_carriage_belt_block_length = 8;
42
+x_carriage_belt_block_height = 25;
43
+x_carriage_belt_block_height_b = x_carriage_belt_block_height - 7;
44
+x_carriage_block_hole_off = 4.5;
45
+x_carriage_block_length = 4;
46
+x_carriage_block_off = 2.5;
47
+x_carriage_block_add = 4.4;
48
+
49
+x_carriage_length = x_rail_dist + (2 * x_carriage_len_add);
50
+
51
+x_carriage_block_height = 2 * (x_carriage_block_hole_off + x_carriage_block_add);
52
+
34 53
 draw_x_carriage = false;
35 54
 draw_y_carriage = false;
36 55
 draw_y_carriage_idlers = true;
@@ -148,16 +167,107 @@ module y_carriage(idler_a = [0, 0, 0], idler_b = [0, 0, 0]) {
148 167
     }
149 168
 }
150 169
 
151
-x_carriage_width = 60;
152
-x_carriage_len_add = 10;
153
-x_carriage_wall = 10;
154
-x_carriage_bearing_off = 3;
170
+module belt_fix() {
171
+    difference() {
172
+        color("green")
173
+        cube([x_carriage_belt_block_width, x_carriage_block_length, x_carriage_block_height]);
174
+        
175
+        translate([x_carriage_belt_block_width / 2, -1, x_carriage_block_hole_off - 0.2])
176
+        rotate([-90, 0, 0]) {
177
+            cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
178
+            cylinder(d = 6.1, h = 3.8, $fn = 6);
179
+        }
180
+            
181
+        translate([x_carriage_belt_block_width / 2, -1, x_carriage_block_hole_off + 8.8])
182
+        rotate([-90, 0, 0]) {
183
+            cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
184
+            cylinder(d = 6.1, h = 3.8, $fn = 6);
185
+        }
186
+    }
187
+}
188
+
189
+module belt_mount(top, up) {
190
+    $fn = 15;
191
+    
192
+    difference() {
193
+        color("green")
194
+        if (top) {
195
+            cube([x_carriage_belt_block_width, x_carriage_belt_block_length, x_carriage_belt_block_height]);
196
+        } else {
197
+            cube([x_carriage_belt_block_width, x_carriage_belt_block_length, x_carriage_belt_block_height_b]);
198
+        }
199
+        
200
+        if (top) {
201
+            translate([-1, x_carriage_belt_block_length / 2, 16])
202
+                rotate([0, 90, 0])
203
+                cylinder(d = 2.6, h = x_carriage_belt_block_width + 2);
204
+            
205
+            translate([x_carriage_belt_block_width / 2, -1, 16 + x_carriage_block_hole_off])
206
+                rotate([-90, 0, 0])
207
+                cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
208
+            translate([x_carriage_belt_block_width / 2, -1, 16 - x_carriage_block_hole_off])
209
+                rotate([-90, 0, 0])
210
+                cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
211
+        } else {
212
+            translate([-1, x_carriage_belt_block_length / 2, 9])
213
+                rotate([0, 90, 0])
214
+                cylinder(d = 2.7, h = x_carriage_belt_block_width + 2);
215
+            translate([x_carriage_belt_block_width / 2, -1, 9 + x_carriage_block_hole_off])
216
+                rotate([-90, 0, 0])
217
+                cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
218
+            translate([x_carriage_belt_block_width / 2, -1, 9 - x_carriage_block_hole_off])
219
+                rotate([-90, 0, 0])
220
+                cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
221
+        }
222
+    }
223
+    
224
+    if (up) {
225
+        if (top) {
226
+            translate([0, x_carriage_belt_block_length + x_carriage_block_off, x_carriage_belt_block_height - x_carriage_block_height])
227
+                belt_fix();
228
+        } else {
229
+            translate([0, x_carriage_belt_block_length + x_carriage_block_off, x_carriage_belt_block_height_b - x_carriage_block_height])
230
+                belt_fix();
231
+        }
232
+    } else {
233
+        if (top) {
234
+            translate([0, -x_carriage_block_length - x_carriage_block_off, x_carriage_belt_block_height - x_carriage_block_height])
235
+                belt_fix();
236
+        } else {
237
+            translate([0, -x_carriage_block_length - x_carriage_block_off, x_carriage_belt_block_height_b - x_carriage_block_height])
238
+                belt_fix();
239
+        }
240
+    }
241
+}
242
+
243
+module belt_mounts() {
244
+    translate([0, x_carriage_belt_off, 0])
245
+        belt_mount(false, true);
246
+    
247
+    translate([0, x_carriage_length - x_carriage_belt_off - x_carriage_belt_block_length, 0])
248
+        belt_mount(true, false);
249
+    
250
+    translate([x_carriage_width - x_carriage_belt_block_width, x_carriage_belt_off, 0])
251
+        belt_mount(true, true);
252
+    
253
+    translate([x_carriage_width - x_carriage_belt_block_width, x_carriage_length - x_carriage_belt_off - x_carriage_belt_block_length, 0])
254
+        belt_mount(false, false);
255
+}
155 256
 
156 257
 module x_carriage() {
157 258
     //color("green")
158 259
     difference() {
159
-        color("green")
160
-        cube([x_carriage_width, x_rail_dist + (2 * x_carriage_len_add), x_carriage_wall]);
260
+        union() {
261
+            color("green")
262
+            cube([x_carriage_width, x_rail_dist + (2 * x_carriage_len_add), x_carriage_wall]);
263
+            
264
+            translate([0, 0, x_carriage_wall])
265
+                belt_mounts();
266
+        }
267
+        
268
+        // big center cutout
269
+        translate([x_carriage_width / 2, x_carriage_length / 2, x_carriage_wall / 2])
270
+            cube([x_carriage_width - (2 * x_carriage_belt_block_width) - 5, x_rail_dist - 25, x_carriage_wall + 2], center=true);
161 271
         
162 272
         for (i = [0 : 1 : 1]) {
163 273
             translate([lm8uu_height + x_carriage_bearing_off + (i * (x_carriage_width - (2 * x_carriage_bearing_off) - lm8uu_height)), 0, ])

+ 8
- 8
xyRepRap.scad ファイルの表示

@@ -313,7 +313,7 @@ module motion_xy() {
313 313
         color("blue")
314 314
         translate([nema17_size / 2, nema17_size / 2 + 6.5, nema17_mount_wall + 1])
315 315
         rotate([0, 0, 180])
316
-            gt2_belt(outer_length - (5 * slot) - y_carriage_pos);
316
+            gt2_belt(outer_length - (2 * slot) - nema17_size / 2 - x_rail_dist - y_carriage_pos - 15);
317 317
         color("blue")
318 318
         translate([-outer_length + (3 * slot) + 10 + nema17_size / 2, nema17_size / 2 - 6.5, nema17_mount_wall + 1])
319 319
             gt2_belt(outer_length - (3 * slot) - 10);
@@ -340,13 +340,13 @@ module motion_xy() {
340 340
         rotate([0, 0, 180])
341 341
             gt2_belt(outer_length - (3 * slot) - 10);
342 342
         color("red")
343
-        translate([nema17_size / 2 - (outer_length - (5 * slot) - y_carriage_pos), nema17_size / 2 - 6.5, nema17_mount_wall + 8])
344
-            gt2_belt(outer_length - (5 * slot) - y_carriage_pos);
343
+        translate([nema17_size / 2 - (outer_length - (2 * slot) - nema17_size / 2 - x_rail_dist - y_carriage_pos - 15), nema17_size / 2 - 6.5, nema17_mount_wall + 8])
344
+            gt2_belt(outer_length - (2 * slot) - nema17_size / 2 - x_rail_dist - y_carriage_pos - 15);
345 345
     }
346 346
     
347 347
     // x carriage belts on blue side
348 348
     color("blue")
349
-    translate([slot + 29, slot + 32 + 25 + y_carriage_pos, outer_height - 1])
349
+    translate([slot + 29, slot + x_rail_dist + 7 + y_carriage_pos, outer_height - 1])
350 350
         rotate([180, 0, 0])
351 351
         gt2_belt(x_carriage_pos - 20);
352 352
     color("red")
@@ -356,13 +356,13 @@ module motion_xy() {
356 356
     
357 357
     // x carriage belts on red side
358 358
     color("red")
359
-    translate([slot + 50 + x_carriage_pos, slot + 32 + 25 + y_carriage_pos, outer_height - 8])
359
+    translate([slot + x_carriage_width + x_carriage_pos - 7, slot + x_rail_dist + 7 + y_carriage_pos, outer_height - 8])
360 360
         rotate([180, 0, 0])
361
-        gt2_belt(outer_width - x_carriage_pos - (2 * slot) - 80);
361
+        gt2_belt(outer_width - x_carriage_pos - (2 * slot) - x_carriage_width - 20);
362 362
     color("blue")
363
-    translate([slot + 50 + x_carriage_pos, slot + 23 + y_carriage_pos, outer_height - 1])
363
+    translate([slot + x_carriage_width + x_carriage_pos - 7, slot + 23 + y_carriage_pos, outer_height - 1])
364 364
         rotate([180, 0, 0])
365
-        gt2_belt(outer_width - x_carriage_pos - (2 * slot) - 70);
365
+        gt2_belt(outer_width - x_carriage_pos - (2 * slot) - x_carriage_width - 10);
366 366
     
367 367
     // long back belts
368 368
     color("blue")

読み込み中…
キャンセル
保存