|
@@ -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();
|