My self designed awesome 3D printer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

linear_bearing.scad 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. include <bearing_idler.scad>
  2. // #######################################################
  3. // ################### Linear Bearings ###################
  4. // #######################################################
  5. lm8uu_outer = 15;
  6. lm8uu_inner = 8;
  7. lm8uu_height = 24;
  8. x_rail_dist = 50;
  9. lm8uu_dia_add = 0.5;
  10. lm8uu_len_add = 1.0;
  11. rail_dia_add = 3.0;
  12. y_carriage_wall = 10; // z-axis
  13. y_carriage_len_add = 15; // y-axis
  14. y_carriage_width = 25; // x-axis
  15. y_carriage_block_width = 10; // x-axis
  16. y_carriage_block_height = 10; // z-axis
  17. y_carriage_rail_support = 2; // dist between rail and edge
  18. y_carriage_length = x_rail_dist + (2 * y_carriage_len_add);
  19. rail_mount_dia_add = 0.4;
  20. x_rail_mount_width = 10;
  21. x_rail_cutout_z = 0.5; // in x-axis
  22. x_rail_cutout_x = 0.5; // in z-axis
  23. x_rail_cutout_y = x_rail_dist - (2 * y_carriage_len_add);
  24. x_rail_hole_off = 5;
  25. x_rail_block_len = (y_carriage_length - x_rail_cutout_y) / 2;
  26. module lm8uu() {
  27. $fn = 15;
  28. difference() {
  29. cylinder(d = lm8uu_outer, h = lm8uu_height);
  30. translate([0, 0, -1])
  31. cylinder(d = lm8uu_inner, h = lm8uu_height + 2);
  32. }
  33. }
  34. // TODO add cable tie lm8uu mounting
  35. module generate_spacer(pos) {
  36. color("green")
  37. translate([pos[0], pos[1], -0.5])
  38. bearing_spacer(pos[2] + 0.5 + ((idler_outer_height - bearing_height) / 2), 2);
  39. }
  40. module y_carriage(idler_a = [0, 0, 0], idler_b = [0, 0, 0]) {
  41. $fn = 20;
  42. // attaching to x-rails
  43. color("green")
  44. translate([y_carriage_width, 0, -y_carriage_block_height])
  45. difference() {
  46. cube([x_rail_mount_width, y_carriage_length, y_carriage_block_height + y_carriage_wall]);
  47. translate([0, -1, y_carriage_block_height])
  48. cube([x_rail_cutout_z, y_carriage_length + 2, y_carriage_wall + 1]);
  49. translate([0, -1, y_carriage_block_height - (x_rail_cutout_x / 2)])
  50. cube([y_carriage_block_width + 1, y_carriage_length + 2, x_rail_cutout_x]);
  51. translate([0, (y_carriage_length - x_rail_cutout_y) / 2, y_carriage_block_height])
  52. cube([y_carriage_block_width + 1, x_rail_cutout_y, y_carriage_wall + 1]);
  53. for (i = [y_carriage_len_add : x_rail_dist : x_rail_dist + y_carriage_len_add]) {
  54. translate([0, i, y_carriage_block_height])
  55. rotate([0, 90, 0])
  56. cylinder(d = lm8uu_inner + rail_mount_dia_add, h = y_carriage_block_width + 1);
  57. }
  58. for (i = [0 : x_rail_block_len + x_rail_cutout_y : x_rail_block_len + x_rail_cutout_y]) {
  59. translate([y_carriage_block_width / 2, x_rail_hole_off + i, -1]) {
  60. cylinder(d = 3.2, h = y_carriage_wall + 2 + y_carriage_block_height);
  61. cylinder(d = 6.1, h = 3.8, $fn = 6);
  62. translate([0, 0, y_carriage_wall + y_carriage_block_height - 2.5])
  63. cylinder(d = 6.1, h = 3.8);
  64. }
  65. translate([y_carriage_block_width / 2, x_rail_block_len - x_rail_hole_off + i, -1]) {
  66. cylinder(d = 3.2, h = y_carriage_wall + 2 + y_carriage_block_height);
  67. cylinder(d = 6.1, h = 3.8, $fn = 6);
  68. translate([0, 0, y_carriage_wall + y_carriage_block_height - 2.5])
  69. cylinder(d = 6.1, h = 3.8);
  70. }
  71. }
  72. }
  73. // attaching to y-rail
  74. color("green")
  75. difference() {
  76. union() {
  77. cube([y_carriage_width, y_carriage_length, y_carriage_wall]);
  78. translate([y_carriage_width - y_carriage_block_width, 0, -y_carriage_block_height])
  79. cube([y_carriage_block_width, y_carriage_length, y_carriage_block_height]);
  80. }
  81. translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0])
  82. rotate([-90, 0, 0]) {
  83. translate([0, 0, -1])
  84. cylinder(d = lm8uu_inner + rail_dia_add, h = y_carriage_length + 2);
  85. translate([0, 0, y_carriage_rail_support - lm8uu_len_add / 2])
  86. cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
  87. translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support - lm8uu_len_add / 2])
  88. cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
  89. }
  90. }
  91. color("magenta")
  92. translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0])
  93. rotate([-90, 0, 0]) {
  94. // y-bearings
  95. %translate([0, 0, y_carriage_rail_support])
  96. lm8uu();
  97. %translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support])
  98. lm8uu();
  99. }
  100. // idlers for the corexy belts
  101. translate([0, 0, y_carriage_wall]) {
  102. translate(idler_a)
  103. bearing_idler();
  104. translate(idler_b)
  105. bearing_idler();
  106. generate_spacer(idler_a);
  107. generate_spacer(idler_b);
  108. }
  109. }
  110. draw_y_carriage = false;
  111. draw_rail_len = 100;
  112. if (draw_y_carriage) {
  113. translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0])
  114. rotate([-90, 0, 0]) {
  115. // y-bearings
  116. %translate([0, 0, y_carriage_rail_support])
  117. lm8uu();
  118. %translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support])
  119. lm8uu();
  120. }
  121. // x-rails
  122. for (i = [y_carriage_len_add : x_rail_dist : x_rail_dist + y_carriage_len_add]) {
  123. %translate([y_carriage_width + 1, i, 0])
  124. rotate([0, 90, 0])
  125. cylinder(d = lm8uu_inner, h = draw_rail_len);
  126. }
  127. y_carriage([15, 15, 10], [10, 65, 2]);
  128. translate([(2 * y_carriage_width + y_carriage_block_width) + draw_rail_len -5, y_carriage_length, 0])
  129. rotate([0, 0, 180])
  130. y_carriage([15, 15, 10], [10, 65, 2]);
  131. }