include // ####################################################### // ################### Linear Bearings ################### // ####################################################### lm8uu_outer = 15; lm8uu_inner = 8; lm8uu_height = 24; x_rail_dist = 50; lm8uu_dia_add = 0.5; lm8uu_len_add = 1.0; rail_dia_add = 3.0; y_carriage_wall = 10; // z-axis y_carriage_len_add = 15; // y-axis y_carriage_width = 25; // x-axis y_carriage_block_width = 10; // x-axis y_carriage_block_height = 10; // z-axis y_carriage_rail_support = 2; // dist between rail and edge y_carriage_length = x_rail_dist + (2 * y_carriage_len_add); rail_mount_dia_add = 0.4; x_rail_mount_width = 10; x_rail_cutout_z = 0.5; // in x-axis x_rail_cutout_x = 0.5; // in z-axis x_rail_cutout_y = x_rail_dist - (2 * y_carriage_len_add); x_rail_hole_off = 5; x_rail_block_len = (y_carriage_length - x_rail_cutout_y) / 2; module lm8uu() { $fn = 15; difference() { cylinder(d = lm8uu_outer, h = lm8uu_height); translate([0, 0, -1]) cylinder(d = lm8uu_inner, h = lm8uu_height + 2); } } // TODO add cable tie lm8uu mounting module generate_spacer(pos) { color("green") translate([pos[0], pos[1], -0.5]) bearing_spacer(pos[2] + 0.5 + ((idler_outer_height - bearing_height) / 2), 2); } module y_carriage(idler_a = [0, 0, 0], idler_b = [0, 0, 0]) { $fn = 20; // attaching to x-rails color("green") translate([y_carriage_width, 0, -y_carriage_block_height]) difference() { cube([x_rail_mount_width, y_carriage_length, y_carriage_block_height + y_carriage_wall]); translate([0, -1, y_carriage_block_height]) cube([x_rail_cutout_z, y_carriage_length + 2, y_carriage_wall + 1]); translate([0, -1, y_carriage_block_height - (x_rail_cutout_x / 2)]) cube([y_carriage_block_width + 1, y_carriage_length + 2, x_rail_cutout_x]); translate([0, (y_carriage_length - x_rail_cutout_y) / 2, y_carriage_block_height]) cube([y_carriage_block_width + 1, x_rail_cutout_y, y_carriage_wall + 1]); for (i = [y_carriage_len_add : x_rail_dist : x_rail_dist + y_carriage_len_add]) { translate([0, i, y_carriage_block_height]) rotate([0, 90, 0]) cylinder(d = lm8uu_inner + rail_mount_dia_add, h = y_carriage_block_width + 1); } for (i = [0 : x_rail_block_len + x_rail_cutout_y : x_rail_block_len + x_rail_cutout_y]) { translate([y_carriage_block_width / 2, x_rail_hole_off + i, -1]) { cylinder(d = 3.2, h = y_carriage_wall + 2 + y_carriage_block_height); cylinder(d = 6.1, h = 3.8, $fn = 6); translate([0, 0, y_carriage_wall + y_carriage_block_height - 2.5]) cylinder(d = 6.1, h = 3.8); } translate([y_carriage_block_width / 2, x_rail_block_len - x_rail_hole_off + i, -1]) { cylinder(d = 3.2, h = y_carriage_wall + 2 + y_carriage_block_height); cylinder(d = 6.1, h = 3.8, $fn = 6); translate([0, 0, y_carriage_wall + y_carriage_block_height - 2.5]) cylinder(d = 6.1, h = 3.8); } } } // attaching to y-rail color("green") difference() { union() { cube([y_carriage_width, y_carriage_length, y_carriage_wall]); translate([y_carriage_width - y_carriage_block_width, 0, -y_carriage_block_height]) cube([y_carriage_block_width, y_carriage_length, y_carriage_block_height]); } translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0]) rotate([-90, 0, 0]) { translate([0, 0, -1]) cylinder(d = lm8uu_inner + rail_dia_add, h = y_carriage_length + 2); translate([0, 0, y_carriage_rail_support - lm8uu_len_add / 2]) cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add); translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support - lm8uu_len_add / 2]) cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add); } } color("magenta") translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0]) rotate([-90, 0, 0]) { // y-bearings %translate([0, 0, y_carriage_rail_support]) lm8uu(); %translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support]) lm8uu(); } // idlers for the corexy belts translate([0, 0, y_carriage_wall]) { translate(idler_a) bearing_idler(); translate(idler_b) bearing_idler(); generate_spacer(idler_a); generate_spacer(idler_b); } } draw_y_carriage = false; draw_rail_len = 100; if (draw_y_carriage) { translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0]) rotate([-90, 0, 0]) { // y-bearings %translate([0, 0, y_carriage_rail_support]) lm8uu(); %translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support]) lm8uu(); } // x-rails for (i = [y_carriage_len_add : x_rail_dist : x_rail_dist + y_carriage_len_add]) { %translate([y_carriage_width + 1, i, 0]) rotate([0, 90, 0]) cylinder(d = lm8uu_inner, h = draw_rail_len); } y_carriage([15, 15, 10], [10, 65, 2]); translate([(2 * y_carriage_width + y_carriage_block_width) + draw_rail_len -5, y_carriage_length, 0]) rotate([0, 0, 180]) y_carriage([15, 15, 10], [10, 65, 2]); }