123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
-
- include <bearing_idler.scad>
-
- // #######################################################
- // ################### Linear Bearings ###################
- // #######################################################
-
- lm8uu_outer = 15;
- lm8uu_inner = 8;
- lm8uu_height = 24;
-
- x_rail_dist = 60;
-
- 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;
-
- x_carriage_width = 80;
- x_carriage_len_add = 10;
- x_carriage_wall = 10;
- x_carriage_bearing_off = 3;
-
- x_carriage_belt_off = 19;
- x_carriage_belt_block_width = 8;
- x_carriage_belt_block_length = 8;
- x_carriage_belt_block_height = 25;
- x_carriage_belt_block_height_b = x_carriage_belt_block_height - 7;
- x_carriage_block_hole_off = 4.5;
- x_carriage_block_length = 4;
- x_carriage_block_off = 2.5;
- x_carriage_block_add = 4.4;
-
- x_carriage_length = x_rail_dist + (2 * x_carriage_len_add);
-
- x_carriage_block_height = 2 * (x_carriage_block_hole_off + x_carriage_block_add);
-
- draw_x_carriage = false;
- draw_y_carriage = false;
- draw_y_carriage_idlers = true;
- draw_rail_len = 200;
-
- // y-carriage belt idlers
- idler_a_blue = [ 19, 15, 5.5];
- idler_a_red = [ 19, x_rail_dist + 15, 12.5];
- idler_b_blue = [30.3, x_rail_dist + 15, 12.5];
- idler_b_red = [30.3, 15, 5.5];
-
- 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 canal for 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, 1, true, 3);
- }
-
- 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]) {
- if (draw_y_carriage_idlers) {
- translate(idler_a)
- bearing_idler();
-
- translate(idler_b)
- bearing_idler();
- }
-
- generate_spacer(idler_a);
- generate_spacer(idler_b);
- }
- }
-
- module belt_fix() {
- difference() {
- color("green")
- cube([x_carriage_belt_block_width, x_carriage_block_length, x_carriage_block_height]);
-
- translate([x_carriage_belt_block_width / 2, -1, x_carriage_block_hole_off - 0.2])
- rotate([-90, 0, 0]) {
- cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
- cylinder(d = 6.1, h = 3.8, $fn = 6);
- }
-
- translate([x_carriage_belt_block_width / 2, -1, x_carriage_block_hole_off + 8.8])
- rotate([-90, 0, 0]) {
- cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
- cylinder(d = 6.1, h = 3.8, $fn = 6);
- }
- }
- }
-
- module belt_mount(top, up) {
- $fn = 15;
-
- difference() {
- color("green")
- if (top) {
- cube([x_carriage_belt_block_width, x_carriage_belt_block_length, x_carriage_belt_block_height]);
- } else {
- cube([x_carriage_belt_block_width, x_carriage_belt_block_length, x_carriage_belt_block_height_b]);
- }
-
- if (top) {
- translate([-1, x_carriage_belt_block_length / 2, 16])
- rotate([0, 90, 0])
- cylinder(d = 2.6, h = x_carriage_belt_block_width + 2);
-
- translate([x_carriage_belt_block_width / 2, -1, 16 + x_carriage_block_hole_off])
- rotate([-90, 0, 0])
- cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
- translate([x_carriage_belt_block_width / 2, -1, 16 - x_carriage_block_hole_off])
- rotate([-90, 0, 0])
- cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
- } else {
- translate([-1, x_carriage_belt_block_length / 2, 9])
- rotate([0, 90, 0])
- cylinder(d = 2.7, h = x_carriage_belt_block_width + 2);
- translate([x_carriage_belt_block_width / 2, -1, 9 + x_carriage_block_hole_off])
- rotate([-90, 0, 0])
- cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
- translate([x_carriage_belt_block_width / 2, -1, 9 - x_carriage_block_hole_off])
- rotate([-90, 0, 0])
- cylinder(d = 3.2, h = x_carriage_belt_block_length + 2);
- }
- }
-
- if (up) {
- if (top) {
- translate([0, x_carriage_belt_block_length + x_carriage_block_off, x_carriage_belt_block_height - x_carriage_block_height])
- belt_fix();
- } else {
- translate([0, x_carriage_belt_block_length + x_carriage_block_off, x_carriage_belt_block_height_b - x_carriage_block_height])
- belt_fix();
- }
- } else {
- if (top) {
- translate([0, -x_carriage_block_length - x_carriage_block_off, x_carriage_belt_block_height - x_carriage_block_height])
- belt_fix();
- } else {
- translate([0, -x_carriage_block_length - x_carriage_block_off, x_carriage_belt_block_height_b - x_carriage_block_height])
- belt_fix();
- }
- }
- }
-
- module belt_mounts() {
- translate([0, x_carriage_belt_off, 0])
- belt_mount(false, true);
-
- translate([0, x_carriage_length - x_carriage_belt_off - x_carriage_belt_block_length, 0])
- belt_mount(true, false);
-
- translate([x_carriage_width - x_carriage_belt_block_width, x_carriage_belt_off, 0])
- belt_mount(true, true);
-
- translate([x_carriage_width - x_carriage_belt_block_width, x_carriage_length - x_carriage_belt_off - x_carriage_belt_block_length, 0])
- belt_mount(false, false);
- }
-
- module x_carriage() {
- //color("green")
- difference() {
- union() {
- color("green")
- cube([x_carriage_width, x_rail_dist + (2 * x_carriage_len_add), x_carriage_wall]);
-
- translate([0, 0, x_carriage_wall])
- belt_mounts();
- }
-
- // big center cutout
- translate([x_carriage_width / 2, x_carriage_length / 2, x_carriage_wall / 2])
- cube([x_carriage_width - (2 * x_carriage_belt_block_width) - 5, x_rail_dist - 25, x_carriage_wall + 2], center=true);
-
- for (i = [0 : 1 : 1]) {
- translate([lm8uu_height + x_carriage_bearing_off + (i * (x_carriage_width - (2 * x_carriage_bearing_off) - lm8uu_height)), 0, ])
- rotate([0, -90, 0]) {
- // x-bearings
- color("magenta")
- %translate([0, x_carriage_len_add, 0])
- lm8uu();
-
- color("magenta")
- %translate([0, x_rail_dist + x_carriage_len_add, 0])
- lm8uu();
-
- color("green")
- translate([0, x_carriage_len_add, 0])
- cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
-
- color("green")
- translate([0, x_rail_dist + x_carriage_len_add, 0])
- cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
-
- color("green")
- translate([0, x_carriage_len_add, -x_carriage_width])
- cylinder(d = lm8uu_inner + rail_dia_add, h = x_carriage_width * 2);
-
- color("green")
- translate([0, x_rail_dist + x_carriage_len_add, -x_carriage_width])
- cylinder(d = lm8uu_inner + rail_dia_add, h = x_carriage_width * 2);
- }
- }
- }
- }
-
- 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(idler_a_blue, idler_b_blue);
-
- translate([(2 * y_carriage_width + y_carriage_block_width) + draw_rail_len -5, y_carriage_length, 0])
- rotate([0, 0, 180])
- y_carriage(idler_a_red, idler_b_red);
-
- if (draw_x_carriage) {
- translate([y_carriage_width + y_carriage_block_width + ((draw_rail_len - x_carriage_width) / 2), y_carriage_len_add - x_carriage_len_add, 0])
- x_carriage();
- }
- } else if (draw_x_carriage) {
- x_carriage();
- }
|