Browse Source

some hardware design modifications, added endstop mounts.

Thomas Buck 2 years ago
parent
commit
a7224e83cb
3 changed files with 255 additions and 24 deletions
  1. 37
    1
      hardware/config.scad
  2. 11
    3
      hardware/fuellfix.scad
  3. 207
    20
      hardware/table.scad

+ 37
- 1
hardware/config.scad View File

157
 y_carriage_post_center = 1;
157
 y_carriage_post_center = 1;
158
 y_carriage_post_screw_hole = y_carriage_post_screw + nut_gap;
158
 y_carriage_post_screw_hole = y_carriage_post_screw + nut_gap;
159
 y_carriage_post_len = y_carriage_rail_dist - rail_wheel_height / 2 + 10;
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
 y_carriage_wheel_off_x = 20.4;
176
 y_carriage_wheel_off_x = 20.4;
162
 y_carriage_wheel_off_y = 28;
177
 y_carriage_wheel_off_y = 28;
211
 point_that_reaches_everywhere_x = -7.5;
226
 point_that_reaches_everywhere_x = -7.5;
212
 point_that_reaches_everywhere_y = -17.5;
227
 point_that_reaches_everywhere_y = -17.5;
213
 
228
 
214
-use_anim = true;
229
+use_anim = false;
215
 x_axis_position = 1.0;
230
 x_axis_position = 1.0;
216
 y_axis_position = 0.5;
231
 y_axis_position = 0.5;
217
 
232
 
236
 right_support_off = 50;
251
 right_support_off = 50;
237
 
252
 
238
 echo("distance between bottom support rails", x_axis_rail_len - left_support_off - right_support_off - 40, -left_support_off, -right_support_off);
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 View File

3
 use <gearbox.scad>;
3
 use <gearbox.scad>;
4
 use <common.scad>;
4
 use <common.scad>;
5
 
5
 
6
-draw_assembly = false;
6
+draw_assembly = true;
7
 
7
 
8
 module print() {
8
 module print() {
9
     for (i = [1 : 4])
9
     for (i = [1 : 4])
43
     translate([-real_belt_pulley_dia - i, belt_tensioner_moving_len + 20, 0])
43
     translate([-real_belt_pulley_dia - i, belt_tensioner_moving_len + 20, 0])
44
     rotate([0, -90, 0])
44
     rotate([0, -90, 0])
45
     motor_mount(2);
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
 top_rail_len = x_axis_rail_len + plate_x - 70;
53
 top_rail_len = x_axis_rail_len + plate_x - 70;
70
     fuellfix_assembly();
75
     fuellfix_assembly();
71
 } else {
76
 } else {
72
     //belt_pulley(teethcount, real_belt_pulley_dia, 0);
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
 echo(); echo(); echo();
85
 echo(); echo(); echo();

+ 207
- 20
hardware/table.scad View File

254
  ************** Y-Axis **************
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
 module belt_mount(h) {
372
 module belt_mount(h) {
258
     difference() {
373
     difference() {
259
         hull() {
374
         hull() {
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
 module y_carriage_post() {
400
 module y_carriage_post() {
277
     rotate([0, 0, 90])
401
     rotate([0, 0, 90])
278
     difference() {
402
     difference() {
290
     for (i = [-1, 1])
414
     for (i = [-1, 1])
291
     for (j = [-1, 1])
415
     for (j = [-1, 1])
292
     translate([i * y_carriage_wheel_x_dist / 2, j * y_carriage_wheel_y_dist / 2, 0]) {
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
     if (axis == 1) {
440
     if (axis == 1) {
308
         echo("t-nut", "x-carriage", "2");
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
     color("green")
450
     color("green")
312
     difference() {
451
     difference() {
318
             translate([0, i * (y_carriage_y + belt_mount_depth) / 2, 0])
457
             translate([0, i * (y_carriage_y + belt_mount_depth) / 2, 0])
319
             scale([1, -i, 1])
458
             scale([1, -i, 1])
320
             belt_mount(y_carriage_h);
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
         translate([y_carriage_x / 2, y_carriage_y / 2, 0])
470
         translate([y_carriage_x / 2, y_carriage_y / 2, 0])
335
             cylinder(d = y_carriage_post_screw_hole, h = y_carriage_h + 2);
482
             cylinder(d = y_carriage_post_screw_hole, h = y_carriage_h + 2);
336
         }
483
         }
337
         
484
         
485
+        // holes for wheel posts
338
         translate([y_carriage_x / 2, y_carriage_y / 2, 0])
486
         translate([y_carriage_x / 2, y_carriage_y / 2, 0])
339
         for (i = [-1, 1])
487
         for (i = [-1, 1])
340
         for (j = [-1, 1])
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
             cylinder(d = y_carriage_post_screw_hole, h = y_carriage_h + 2);
498
             cylinder(d = y_carriage_post_screw_hole, h = y_carriage_h + 2);
343
         }
499
         }
344
     }
500
     }
360
     rotate([180, 0, 0])
516
     rotate([180, 0, 0])
361
     motor_mount(2);
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
     belt_tensioner(2, y_axis_rail_len, 0);
523
     belt_tensioner(2, y_axis_rail_len, 0);
364
 }
524
 }
365
 
525
 
396
     rotate([0, 180, -90])
556
     rotate([0, 180, -90])
397
     y_carriage(1);
557
     y_carriage(1);
398
     
558
     
559
+    /*
399
     color("purple")
560
     color("purple")
400
     for (i = [-1, 1])
561
     for (i = [-1, 1])
401
     translate([y_carriage_y / 2, 0, 0])
562
     translate([y_carriage_y / 2, 0, 0])
403
     translate([y_carriage_y / 2 - x_carriage_holder_l, 0, 0])
564
     translate([y_carriage_y / 2 - x_carriage_holder_l, 0, 0])
404
     translate([0, -x_carriage_holder_w / 2, 20 + y_carriage_h + y_carriage_rail_dist])
565
     translate([0, -x_carriage_holder_w / 2, 20 + y_carriage_h + y_carriage_rail_dist])
405
     x_carriage_holder();
566
     x_carriage_holder();
567
+    */
406
 }
568
 }
407
 
569
 
408
 module x_axis() {
570
 module x_axis() {
417
     rotate([0, 180, 90])
579
     rotate([0, 180, 90])
418
     motor_mount(2);
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
     rotate([0, 0, -90])
585
     rotate([0, 0, -90])
421
     belt_tensioner(2, x_axis_rail_len, 0);
586
     belt_tensioner(2, x_axis_rail_len, 0);
422
 }
587
 }
441
     assembly_y_axis_plate();
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
 module assembly() {
618
 module assembly() {
445
     translate([-x_axis_rail_len / 2, 0, 20]) {
619
     translate([-x_axis_rail_len / 2, 0, 20]) {
446
         assembly_x_axis();
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
 //y_carriage_post();
672
 //y_carriage_post();
486
 //x_carriage_holder();
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
 //y_carriage(1);
677
 //y_carriage(1);
491
 //y_carriage(2);
678
 //y_carriage(2);
492
 //x_carriage();
679
 //x_carriage();
495
 //x_axis();
682
 //x_axis();
496
 
683
 
497
 //assembly();
684
 //assembly();
498
-//xy_table();
685
+xy_table();

Loading…
Cancel
Save