瀏覽代碼

some hardware design modifications, added endstop mounts.

Thomas Buck 3 年之前
父節點
當前提交
a7224e83cb
共有 3 個檔案被更改,包括 255 行新增24 行删除
  1. 37
    1
      hardware/config.scad
  2. 11
    3
      hardware/fuellfix.scad
  3. 207
    20
      hardware/table.scad

+ 37
- 1
hardware/config.scad 查看文件

@@ -157,6 +157,21 @@ y_carriage_post_hole_off = 2;
157 157
 y_carriage_post_center = 1;
158 158
 y_carriage_post_screw_hole = y_carriage_post_screw + nut_gap;
159 159
 y_carriage_post_len = y_carriage_rail_dist - rail_wheel_height / 2 + 10;
160
+echo("y_carriage_post_len", y_carriage_post_len);
161
+
162
+eccentric_height_main = 8.5;
163
+eccentric_height_inset = 2.4;
164
+eccentric_dia_inset = 7.3;
165
+eccentric_dia_main = 11.5;
166
+eccentric_hole_off = 0.75;
167
+eccentric_screw_hole = y_carriage_post_screw_hole + 2 * eccentric_hole_off;
168
+eccentric_height_add = y_carriage_post_len - eccentric_height_main;
169
+eccentric_inset_wall = 15.0;
170
+eccentric_inset_hole = eccentric_height_inset + 0.6;
171
+eccentric_screw_hole_h = 6.5;
172
+eccentric_screw_hole_dia = 15.0 + 2 * eccentric_hole_off;
173
+
174
+use_custom_eccentric = true;
160 175
 
161 176
 y_carriage_wheel_off_x = 20.4;
162 177
 y_carriage_wheel_off_y = 28;
@@ -211,7 +226,7 @@ x_axis_rail_len = x_axis_travel_len + y_carriage_y + motor_mount_length + belt_t
211 226
 point_that_reaches_everywhere_x = -7.5;
212 227
 point_that_reaches_everywhere_y = -17.5;
213 228
 
214
-use_anim = true;
229
+use_anim = false;
215 230
 x_axis_position = 1.0;
216 231
 y_axis_position = 0.5;
217 232
 
@@ -236,3 +251,24 @@ right_support_len = 200;
236 251
 right_support_off = 50;
237 252
 
238 253
 echo("distance between bottom support rails", x_axis_rail_len - left_support_off - right_support_off - 40, -left_support_off, -right_support_off);
254
+
255
+endstop_pcb_width = 16.0;
256
+endstop_pcb_height = 40.0;
257
+endstop_pcb_depth = 1.6;
258
+endstop_pcb_hole = 3.2;
259
+endstop_pcb_hole_dist_x = 3.2;
260
+endstop_pcb_hole_dist_y = 3.2;
261
+endstop_pcb_hole_dist = 19.0;
262
+endstop_pcb_switchpoint = 4.5;
263
+endstop_mount_width = 12;
264
+endstop_mount_depth = 5;
265
+endstop_mount_slot_width = 6;
266
+endstop_mount_slot_depth = 4;
267
+endstop_mount_slot_length = 8;
268
+endstop_mount_add_height = 15;
269
+endstop_mount_nut_hole = 6.5;
270
+endstop_pcb_mount_off_h = y_carriage_rail_dist + endstop_pcb_switchpoint + 2; // TODO is now -3
271
+endstop_pcb_mount_off_d = 18; // TODO was 8
272
+endstop_pcb_mount_off_w = endstop_mount_slot_length;
273
+
274
+use_endstop_mount_v2 = false;

+ 11
- 3
hardware/fuellfix.scad 查看文件

@@ -3,7 +3,7 @@ use <table.scad>;
3 3
 use <gearbox.scad>;
4 4
 use <common.scad>;
5 5
 
6
-draw_assembly = false;
6
+draw_assembly = true;
7 7
 
8 8
 module print() {
9 9
     for (i = [1 : 4])
@@ -43,6 +43,11 @@ module print() {
43 43
     translate([-real_belt_pulley_dia - i, belt_tensioner_moving_len + 20, 0])
44 44
     rotate([0, -90, 0])
45 45
     motor_mount(2);
46
+    
47
+    for (i = [0, -100])
48
+    translate([-real_belt_pulley_dia - 140, belt_tensioner_moving_len + i, endstop_mount_depth])
49
+    rotate([-90, 0, 0])
50
+    endstop_mount();
46 51
 }
47 52
 
48 53
 top_rail_len = x_axis_rail_len + plate_x - 70;
@@ -70,8 +75,11 @@ if (draw_assembly) {
70 75
     fuellfix_assembly();
71 76
 } else {
72 77
     //belt_pulley(teethcount, real_belt_pulley_dia, 0);
73
-    x_carriage_holder();
74
-    //print();
78
+    //x_carriage_holder();
79
+    //y_carriage(0);
80
+    //endstop_mount();
81
+    
82
+    print();
75 83
 }
76 84
     
77 85
 echo(); echo(); echo();

+ 207
- 20
hardware/table.scad 查看文件

@@ -254,6 +254,121 @@ module plate() {
254 254
  ************** Y-Axis **************
255 255
  ************************************/
256 256
 
257
+module endstop_pcb() {
258
+    difference() {
259
+        cube([endstop_pcb_width, endstop_pcb_depth, endstop_pcb_height]);
260
+        
261
+        for (i = [0, 1])
262
+        translate([endstop_pcb_hole_dist_x, -1, endstop_pcb_height - endstop_pcb_hole_dist_y - i * endstop_pcb_hole_dist])
263
+        rotate([-90, 0, 0])
264
+        cylinder(d = endstop_pcb_hole, h = endstop_pcb_depth + 2);
265
+    }
266
+    
267
+    translate([0, 0, endstop_pcb_height - endstop_pcb_switchpoint])
268
+    rotate([0, -90, 0])
269
+    cylinder(d = endstop_pcb_hole, h = endstop_pcb_switchpoint);
270
+}
271
+
272
+module endstop_mount_v1() {
273
+    %color("yellow")
274
+    translate([-endstop_pcb_mount_off_w, -endstop_pcb_depth - endstop_pcb_mount_off_d, endstop_pcb_mount_off_h])
275
+    endstop_pcb();
276
+    
277
+    color("blue")
278
+    difference() {
279
+        cube([endstop_mount_width, endstop_mount_depth, 40]);
280
+        
281
+        for (i = [0, 1])
282
+        translate([endstop_mount_width / 2, -1, 10 + 20 * i])
283
+        rotate([-90, 0, 0])
284
+        cylinder(d = motor_mount_hole_size, h = endstop_mount_depth + 2);
285
+    }
286
+    
287
+    color("blue")
288
+    difference() {
289
+        union() {
290
+            hull() {
291
+                translate([-endstop_mount_slot_length, 0, 40 - endstop_mount_add_height])
292
+                cube([endstop_mount_slot_length, endstop_mount_depth, endstop_mount_add_height]);
293
+                
294
+                translate([0, 0, endstop_pcb_height - endstop_pcb_hole_dist_y - endstop_pcb_hole_dist])
295
+                translate([-endstop_pcb_mount_off_w, -endstop_pcb_mount_off_d, endstop_pcb_mount_off_h - endstop_mount_slot_width / 2])
296
+                cube([endstop_mount_slot_length, endstop_mount_slot_depth, endstop_mount_slot_width]);
297
+                
298
+                for (i = [0, 1])
299
+                translate([0, 0, endstop_pcb_height - endstop_pcb_hole_dist_y - i * endstop_pcb_hole_dist])
300
+                translate([-endstop_pcb_mount_off_w, -endstop_pcb_mount_off_d, endstop_pcb_mount_off_h - endstop_mount_slot_width / 2])
301
+                cube([endstop_mount_slot_length, endstop_mount_slot_depth, endstop_mount_slot_width]);
302
+            }
303
+        }
304
+        
305
+        translate([-endstop_pcb_mount_off_w, -endstop_pcb_depth - endstop_pcb_mount_off_d, endstop_pcb_mount_off_h])
306
+        for (i = [0, 1])
307
+        translate([endstop_pcb_hole_dist_x, -1, endstop_pcb_height - endstop_pcb_hole_dist_y - i * endstop_pcb_hole_dist])
308
+        rotate([-90, 0, 0]) {
309
+            cylinder(d = endstop_pcb_hole, h = endstop_pcb_depth + 20);
310
+            
311
+            translate([0, 0, 1 + endstop_pcb_depth + endstop_mount_slot_depth])
312
+            cylinder(d = endstop_mount_nut_hole, h = 20, $fn = 6);
313
+        }
314
+    }
315
+}
316
+
317
+module endstop_mount_v2() {
318
+    %color("yellow")
319
+    translate([-endstop_pcb_mount_off_w, -endstop_pcb_depth - endstop_pcb_mount_off_d, endstop_pcb_mount_off_h])
320
+    endstop_pcb();
321
+    
322
+    color("blue")
323
+    difference() {
324
+        cube([endstop_mount_width, endstop_mount_depth, 40]);
325
+        
326
+        for (i = [0, 1])
327
+        translate([endstop_mount_width / 2, -1, 10 + 20 * i])
328
+        rotate([-90, 0, 0])
329
+        cylinder(d = motor_mount_hole_size, h = endstop_mount_depth + 2);
330
+    }
331
+    
332
+    color("blue")
333
+    difference() {
334
+        union() {
335
+            hull() {
336
+                translate([-endstop_mount_slot_length, 0, 40 - endstop_mount_add_height])
337
+                cube([endstop_mount_slot_length, endstop_mount_depth, endstop_mount_add_height]);
338
+                
339
+                translate([0, 0, endstop_pcb_height - endstop_pcb_hole_dist_y - endstop_pcb_hole_dist])
340
+                translate([-endstop_pcb_mount_off_w, -endstop_pcb_mount_off_d, endstop_pcb_mount_off_h - endstop_mount_slot_width / 2])
341
+                cube([endstop_mount_slot_length, endstop_mount_slot_depth, endstop_mount_slot_width]);
342
+            }
343
+            
344
+            hull() {
345
+                for (i = [0, 1])
346
+                translate([0, 0, endstop_pcb_height - endstop_pcb_hole_dist_y - i * endstop_pcb_hole_dist])
347
+                translate([-endstop_pcb_mount_off_w, -endstop_pcb_mount_off_d, endstop_pcb_mount_off_h - endstop_mount_slot_width / 2])
348
+                cube([endstop_mount_slot_length, endstop_mount_slot_depth, endstop_mount_slot_width]);
349
+            }
350
+        }
351
+        
352
+        translate([-endstop_pcb_mount_off_w, -endstop_pcb_depth - endstop_pcb_mount_off_d, endstop_pcb_mount_off_h])
353
+        for (i = [0, 1])
354
+        translate([endstop_pcb_hole_dist_x, -1, endstop_pcb_height - endstop_pcb_hole_dist_y - i * endstop_pcb_hole_dist])
355
+        rotate([-90, 0, 0]) {
356
+            cylinder(d = endstop_pcb_hole, h = endstop_pcb_depth + 20);
357
+            
358
+            translate([0, 0, 1 + endstop_pcb_depth + endstop_mount_slot_depth])
359
+            cylinder(d = endstop_mount_nut_hole, h = 20, $fn = 6);
360
+        }
361
+    }
362
+}
363
+
364
+module endstop_mount() {
365
+    if (use_endstop_mount_v2) {
366
+        endstop_mount_v2();
367
+    } else {
368
+        endstop_mount_v1();
369
+    }
370
+}
371
+
257 372
 module belt_mount(h) {
258 373
     difference() {
259 374
         hull() {
@@ -273,6 +388,15 @@ module belt_mount(h) {
273 388
     }
274 389
 }
275 390
 
391
+module eccentric() {
392
+    translate([0, 0, eccentric_height_add]) {
393
+        cylinder(d = eccentric_dia_main, h = eccentric_height_main);
394
+        
395
+        translate([0, 0, -eccentric_height_inset])
396
+        cylinder(d = eccentric_dia_inset, h = eccentric_height_inset);
397
+    }
398
+}
399
+
276 400
 module y_carriage_post() {
277 401
     rotate([0, 0, 90])
278 402
     difference() {
@@ -290,12 +414,21 @@ module y_carriage_posts() {
290 414
     for (i = [-1, 1])
291 415
     for (j = [-1, 1])
292 416
     translate([i * y_carriage_wheel_x_dist / 2, j * y_carriage_wheel_y_dist / 2, 0]) {
293
-        color("blue")
294
-        y_carriage_post();
417
+        if (use_custom_eccentric) {
418
+            color("yellow")
419
+            eccentric();
295 420
         
296
-        %color("yellow")
297
-        translate([0, y_carriage_post_hole_off, y_carriage_pulley_off])
298
-        rail_wheel();
421
+            %color("yellow")
422
+            translate([0, eccentric_hole_off, y_carriage_pulley_off])
423
+            rail_wheel();
424
+        } else {
425
+            color("blue")
426
+            y_carriage_post();
427
+        
428
+            %color("yellow")
429
+            translate([0, y_carriage_post_hole_off, y_carriage_pulley_off])
430
+            rail_wheel();
431
+        }
299 432
     }
300 433
 }
301 434
 
@@ -307,6 +440,12 @@ module y_carriage(axis = 0) {
307 440
     if (axis == 1) {
308 441
         echo("t-nut", "x-carriage", "2");
309 442
     }
443
+    
444
+    if (use_custom_eccentric) {
445
+        echo("eccentric", "carriage", "4");
446
+        echo("screw", "carriage", "M5x30", "4");
447
+        echo("nut", "carriage", "M5", "4");
448
+    }
310 449
 
311 450
     color("green")
312 451
     difference() {
@@ -318,6 +457,14 @@ module y_carriage(axis = 0) {
318 457
             translate([0, i * (y_carriage_y + belt_mount_depth) / 2, 0])
319 458
             scale([1, -i, 1])
320 459
             belt_mount(y_carriage_h);
460
+            
461
+            // additional "meat" for eccentric inset
462
+            translate([y_carriage_x / 2, y_carriage_y / 2, y_carriage_h])
463
+            for (i = [-1, 1])
464
+            for (j = [-1, 1])
465
+            translate([i * y_carriage_wheel_x_dist / 2, j * y_carriage_wheel_y_dist / 2, 0])
466
+            if (use_custom_eccentric)
467
+            cylinder(d = eccentric_inset_wall, h = eccentric_height_add);
321 468
         }
322 469
         
323 470
         translate([y_carriage_x / 2, y_carriage_y / 2, 0])
@@ -335,10 +482,19 @@ module y_carriage(axis = 0) {
335 482
             cylinder(d = y_carriage_post_screw_hole, h = y_carriage_h + 2);
336 483
         }
337 484
         
485
+        // holes for wheel posts
338 486
         translate([y_carriage_x / 2, y_carriage_y / 2, 0])
339 487
         for (i = [-1, 1])
340 488
         for (j = [-1, 1])
341
-        translate([i * y_carriage_wheel_x_dist / 2, j * y_carriage_wheel_y_dist / 2, -1]) {
489
+        translate([i * y_carriage_wheel_x_dist / 2, j * y_carriage_wheel_y_dist / 2, -1])
490
+        if (use_custom_eccentric) {
491
+            cylinder(d = eccentric_screw_hole, h = y_carriage_h + 2);
492
+            
493
+            translate([0, 0, y_carriage_h + eccentric_height_add + 1 - eccentric_inset_hole])
494
+            cylinder(d = eccentric_dia_inset, h = eccentric_inset_hole + 1);
495
+            
496
+            cylinder(d = eccentric_screw_hole_dia, h = eccentric_screw_hole_h + 1);
497
+        } else {
342 498
             cylinder(d = y_carriage_post_screw_hole, h = y_carriage_h + 2);
343 499
         }
344 500
     }
@@ -360,6 +516,10 @@ module y_axis() {
360 516
     rotate([180, 0, 0])
361 517
     motor_mount(2);
362 518
     
519
+    translate([10 + endstop_mount_depth, y_axis_rail_len - endstop_mount_width, -20])
520
+    rotate([0, 0, 90])
521
+    endstop_mount();
522
+    
363 523
     belt_tensioner(2, y_axis_rail_len, 0);
364 524
 }
365 525
 
@@ -396,6 +556,7 @@ module x_carriage() {
396 556
     rotate([0, 180, -90])
397 557
     y_carriage(1);
398 558
     
559
+    /*
399 560
     color("purple")
400 561
     for (i = [-1, 1])
401 562
     translate([y_carriage_y / 2, 0, 0])
@@ -403,6 +564,7 @@ module x_carriage() {
403 564
     translate([y_carriage_y / 2 - x_carriage_holder_l, 0, 0])
404 565
     translate([0, -x_carriage_holder_w / 2, 20 + y_carriage_h + y_carriage_rail_dist])
405 566
     x_carriage_holder();
567
+    */
406 568
 }
407 569
 
408 570
 module x_axis() {
@@ -417,6 +579,9 @@ module x_axis() {
417 579
     rotate([0, 180, 90])
418 580
     motor_mount(2);
419 581
     
582
+    translate([x_axis_rail_len - endstop_mount_width, -10 - endstop_mount_depth, -20])
583
+    endstop_mount();
584
+    
420 585
     rotate([0, 0, -90])
421 586
     belt_tensioner(2, x_axis_rail_len, 0);
422 587
 }
@@ -441,21 +606,43 @@ module assembly_x_axis() {
441 606
     assembly_y_axis_plate();
442 607
 }
443 608
 
609
+bottom_support_len = 500;
610
+bottom_support_off = 80;
611
+
612
+use_double_supports = false;
613
+
614
+module rail_foot() {
615
+    
616
+}
617
+
444 618
 module assembly() {
445 619
     translate([-x_axis_rail_len / 2, 0, 20]) {
446 620
         assembly_x_axis();
447 621
         
448
-        color("grey")
449
-        for (i = [1, -1])
450
-        scale([1, i, 1])
451
-        translate([left_support_off, -left_support_len - 10, -20])
452
-        rail_2020_y(left_support_len, "left support");
453
-        
454
-        color("grey")
455
-        for (i = [1, -1])
456
-        scale([1, i, 1])
457
-        translate([x_axis_rail_len - 20 - right_support_off, -right_support_len - 10, -20])
458
-        rail_2020_y(right_support_len, "right support");
622
+        if (use_double_supports) {
623
+            color("grey")
624
+            for (i = [1, -1])
625
+            scale([1, i, 1])
626
+            translate([left_support_off, -left_support_len - 10, -20])
627
+            rail_2020_y(left_support_len, "left support");
628
+            
629
+            color("grey")
630
+            for (i = [1, -1])
631
+            scale([1, i, 1])
632
+            translate([x_axis_rail_len - 20 - right_support_off, -right_support_len - 10, -20])
633
+            rail_2020_y(right_support_len, "right support");
634
+            
635
+            // TODO feet
636
+        } else {
637
+            color("grey")
638
+            translate([x_axis_rail_len / 2, 0, -40])
639
+            for (i = [1, -1])
640
+            scale([i, 1, 1])
641
+            translate([x_axis_rail_len / 2 - bottom_support_off, -bottom_support_len / 2, 0])
642
+            rail_2020_y(bottom_support_len, "bottom supports");
643
+            
644
+            // TODO feet
645
+        }
459 646
     }
460 647
 }
461 648
 
@@ -485,8 +672,8 @@ module xy_table() {
485 672
 //y_carriage_post();
486 673
 //x_carriage_holder();
487 674
 
488
-translate([0, -50, 0])
489
-y_carriage(0);
675
+//translate([0, -50, 0])
676
+//y_carriage(0);
490 677
 //y_carriage(1);
491 678
 //y_carriage(2);
492 679
 //x_carriage();
@@ -495,4 +682,4 @@ y_carriage(0);
495 682
 //x_axis();
496 683
 
497 684
 //assembly();
498
-//xy_table();
685
+xy_table();

Loading…
取消
儲存