| 1 | // |
| 2 | // Parametric single-piece y ends for Reprap Wilson |
| 3 | // GNU GPL v3 |
| 4 | // by Martin Rice <mrice411@gmail.com> |
| 5 | // |
| 6 | include <configuration.scad> |
| 7 | |
| 8 | washer_recess = 2; // recesses the washer into the end. |
| 9 | idler_offset_y = 6; |
| 10 | base_thickness = 3; |
| 11 | tie_wrap_extra = 1; |
| 12 | belt_h = 29; |
| 13 | idler_w = 10; // the gap provided for the bearing holder |
| 14 | idler_wall_t = 5; |
| 15 | end_w = 193.5; |
| 16 | idler_wall_h = 32.6; |
| 17 | |
| 18 | yend_idler(); |
| 19 | |
| 20 | module yend_idler() |
| 21 | { |
| 22 | difference() { |
| 23 | union() { |
| 24 | // thin base under the end (optional) |
| 25 | bigbase(); |
| 26 | brace(); |
| 27 | |
| 28 | // first corner |
| 29 | endpost(); |
| 30 | |
| 31 | // second corner |
| 32 | translate([end_w,0,0]) scale([-1,1,1]) endpost(); |
| 33 | |
| 34 | // idler mount |
| 35 | translate([end_w/2,0,0]) idler_post(); |
| 36 | } |
| 37 | |
| 38 | // bevels on outer corners |
| 39 | translate([-1,-23/2,-1]) rotate([0,0,45]) cube([10,10,50]); |
| 40 | translate([end_w+1,-23/2,-1]) rotate([0,0,45]) cube([10,10,50]); |
| 41 | |
| 42 | // cutout for idler |
| 43 | #translate([end_w/2,0,0]) translate([-idler_wall_t,10,belt_h]) rotate([0,90,0]) cylinder(r=10+4,h=idler_w); |
| 44 | |
| 45 | // slots for attaching end to table surface if desired |
| 46 | #translate([end_w/2-end_w/4,20,0]) cube(size=[4,10,10],center=true); |
| 47 | #translate([end_w/2+end_w/4,20,0]) cube(size=[4,10,10],center=true); |
| 48 | } |
| 49 | } |
| 50 | |
| 51 | |
| 52 | module idler_post() |
| 53 | { |
| 54 | difference() { |
| 55 | union() { |
| 56 | translate([idler_w/2,0,0]) { |
| 57 | cube(size=[idler_wall_t,20,belt_h]); |
| 58 | translate([0,10,belt_h]) rotate([0,90,0]) cylinder(r=10,h=idler_wall_t); |
| 59 | } |
| 60 | translate([-idler_w/2-idler_wall_t,0,0]) { |
| 61 | cube(size=[idler_wall_t,20,belt_h]); |
| 62 | translate([0,10,belt_h]) rotate([0,90,0]) cylinder(r=10,h=idler_wall_t); |
| 63 | } |
| 64 | translate([-idler_w,0,0]) cube(size=[idler_wall_t * 2 + idler_w,20,belt_h/2]); |
| 65 | |
| 66 | //translate([-idler_w,-1,idler_wall_h]) rotate([0,90,0]) cylinder(r=idler_bearing_inner_d/2,h=20,$fn=20); |
| 67 | |
| 68 | } |
| 69 | // holes for idler bolt |
| 70 | #translate([-12,10,belt_h]) rotate([0,90,0]) { |
| 71 | cylinder(r=idler_bearing_inner_d/2+.5,h=25); |
| 72 | translate([0,0,1]) cylinder(r=idler_bearing_inner_d,h=3); |
| 73 | translate([0,0,idler_w+idler_wall_t*2]) cylinder(r=idler_bearing_inner_d,h=3,$fn=6); |
| 74 | } |
| 75 | |
| 76 | |
| 77 | } |
| 78 | } |
| 79 | |
| 80 | module endpost() |
| 81 | { |
| 82 | difference() { |
| 83 | union() { |
| 84 | difference() { |
| 85 | cube([23,16,height_of_post]); |
| 86 | #translate([23/2,7,height_of_post]) rotate([-90,0,0]) cylinder(r=smooth_rod_d/2+2+tie_wrap_t+tie_wrap_extra,h=tie_wrap_w); |
| 87 | } |
| 88 | |
| 89 | difference() { |
| 90 | translate([23/2,7,height_of_post]) rotate([-90,0,0]) cylinder(r=smooth_rod_d/2+2+tie_wrap_extra,h=tie_wrap_w); |
| 91 | translate([0,0,height_of_post]) cube([23,16,10]); |
| 92 | } |
| 93 | } |
| 94 | |
| 95 | translate([23/2,-10,height_of_threaded ]) rotate([-90,0,0]) cylinder(r=threaded_rod_d/2+.4,h=380); |
| 96 | translate([23/2,-.1,height_of_threaded ]) rotate([-90,0,0]) cylinder(r=washer_d/2+.4,h=washer_recess); |
| 97 | translate([23/2,2.5,height_of_smooth]) rotate([-90,0,0]) cylinder(r=smooth_rod_d/2+.1,h=380); |
| 98 | } |
| 99 | |
| 100 | } |
| 101 | |
| 102 | module bigbase() |
| 103 | { |
| 104 | difference() { |
| 105 | intersection() { |
| 106 | cube([193.5,55,base_thickness]); |
| 107 | translate([193.5/2,-182,-1]) cylinder(r=220,h=base_thickness+2,$fn=150); |
| 108 | } |
| 109 | //#translate([193.5/2,0,0]) cylinder(r=10,h=10); |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | module brace() { |
| 114 | translate([193.5,17,0]) rotate([0,0,180]) difference() { |
| 115 | translate([193.5/2,-290,0]) cylinder(r=310,h=32.6,$fn=200); |
| 116 | translate([193.5/2,-211.9+5,-2]) cylinder(r=223,h=50,$fn=200); |
| 117 | translate([-320,3,-2]) rotate([0,0,270]) cube([900,900,50]); |
| 118 | #translate([-22,-1,-1]) cube([43,16,47]); |
| 119 | #translate([(end_w-22),-1,-1]) scale([1,1,1]) cube([43,16,47]); |
| 120 | //translate([192.5/2-23/2+5.9,0,14.5]) cube([11.96,40,20]); |
| 121 | |
| 122 | } |
| 123 | } |
| 124 | |
| 125 | |
| 126 | |
| 127 | |
| 128 | |