My self designed awesome 3D printer
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

linear_bearing.scad 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  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. draw_x_carriage = false;
  27. draw_y_carriage = false;
  28. draw_y_carriage_idlers = true;
  29. draw_rail_len = 200;
  30. // y-carriage belt idlers
  31. idler_a_blue = [ 19, 15, 5.5];
  32. idler_a_red = [ 19, x_rail_dist + 15, 12.5];
  33. idler_b_blue = [30.3, x_rail_dist + 15, 12.5];
  34. idler_b_red = [30.3, 15, 5.5];
  35. module lm8uu() {
  36. $fn = 15;
  37. difference() {
  38. cylinder(d = lm8uu_outer, h = lm8uu_height);
  39. translate([0, 0, -1])
  40. cylinder(d = lm8uu_inner, h = lm8uu_height + 2);
  41. }
  42. }
  43. // TODO add cable tie canal for lm8uu mounting
  44. module generate_spacer(pos) {
  45. color("green")
  46. translate([pos[0], pos[1], -0.5])
  47. bearing_spacer(pos[2] + 0.5 + ((idler_outer_height - bearing_height) / 2), 2, 1, true, 3);
  48. }
  49. module y_carriage(idler_a = [0, 0, 0], idler_b = [0, 0, 0]) {
  50. $fn = 20;
  51. // attaching to x-rails
  52. color("green")
  53. translate([y_carriage_width, 0, -y_carriage_block_height])
  54. difference() {
  55. cube([x_rail_mount_width, y_carriage_length, y_carriage_block_height + y_carriage_wall]);
  56. translate([0, -1, y_carriage_block_height])
  57. cube([x_rail_cutout_z, y_carriage_length + 2, y_carriage_wall + 1]);
  58. translate([0, -1, y_carriage_block_height - (x_rail_cutout_x / 2)])
  59. cube([y_carriage_block_width + 1, y_carriage_length + 2, x_rail_cutout_x]);
  60. translate([0, (y_carriage_length - x_rail_cutout_y) / 2, y_carriage_block_height])
  61. cube([y_carriage_block_width + 1, x_rail_cutout_y, y_carriage_wall + 1]);
  62. for (i = [y_carriage_len_add : x_rail_dist : x_rail_dist + y_carriage_len_add]) {
  63. translate([0, i, y_carriage_block_height])
  64. rotate([0, 90, 0])
  65. cylinder(d = lm8uu_inner + rail_mount_dia_add, h = y_carriage_block_width + 1);
  66. }
  67. for (i = [0 : x_rail_block_len + x_rail_cutout_y : x_rail_block_len + x_rail_cutout_y]) {
  68. translate([y_carriage_block_width / 2, x_rail_hole_off + i, -1]) {
  69. cylinder(d = 3.2, h = y_carriage_wall + 2 + y_carriage_block_height);
  70. cylinder(d = 6.1, h = 3.8, $fn = 6);
  71. translate([0, 0, y_carriage_wall + y_carriage_block_height - 2.5])
  72. cylinder(d = 6.1, h = 3.8);
  73. }
  74. translate([y_carriage_block_width / 2, x_rail_block_len - x_rail_hole_off + i, -1]) {
  75. cylinder(d = 3.2, h = y_carriage_wall + 2 + y_carriage_block_height);
  76. cylinder(d = 6.1, h = 3.8, $fn = 6);
  77. translate([0, 0, y_carriage_wall + y_carriage_block_height - 2.5])
  78. cylinder(d = 6.1, h = 3.8);
  79. }
  80. }
  81. }
  82. // attaching to y-rail
  83. color("green")
  84. difference() {
  85. union() {
  86. cube([y_carriage_width, y_carriage_length, y_carriage_wall]);
  87. translate([y_carriage_width - y_carriage_block_width, 0, -y_carriage_block_height])
  88. cube([y_carriage_block_width, y_carriage_length, y_carriage_block_height]);
  89. }
  90. translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0])
  91. rotate([-90, 0, 0]) {
  92. translate([0, 0, -1])
  93. cylinder(d = lm8uu_inner + rail_dia_add, h = y_carriage_length + 2);
  94. translate([0, 0, y_carriage_rail_support - lm8uu_len_add / 2])
  95. cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
  96. translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support - lm8uu_len_add / 2])
  97. cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
  98. }
  99. }
  100. color("magenta")
  101. translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0])
  102. rotate([-90, 0, 0]) {
  103. // y-bearings
  104. %translate([0, 0, y_carriage_rail_support])
  105. lm8uu();
  106. %translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support])
  107. lm8uu();
  108. }
  109. // idlers for the corexy belts
  110. translate([0, 0, y_carriage_wall]) {
  111. if (draw_y_carriage_idlers) {
  112. translate(idler_a)
  113. bearing_idler();
  114. translate(idler_b)
  115. bearing_idler();
  116. }
  117. generate_spacer(idler_a);
  118. generate_spacer(idler_b);
  119. }
  120. }
  121. x_carriage_width = 60;
  122. x_carriage_len_add = 10;
  123. x_carriage_wall = 10;
  124. x_carriage_bearing_off = 3;
  125. module x_carriage() {
  126. //color("green")
  127. difference() {
  128. color("green")
  129. cube([x_carriage_width, x_rail_dist + (2 * x_carriage_len_add), x_carriage_wall]);
  130. for (i = [0 : 1 : 1]) {
  131. translate([lm8uu_height + x_carriage_bearing_off + (i * (x_carriage_width - (2 * x_carriage_bearing_off) - lm8uu_height)), 0, ])
  132. rotate([0, -90, 0]) {
  133. // x-bearings
  134. color("magenta")
  135. %translate([0, x_carriage_len_add, 0])
  136. lm8uu();
  137. color("magenta")
  138. %translate([0, x_rail_dist + x_carriage_len_add, 0])
  139. lm8uu();
  140. color("green")
  141. translate([0, x_carriage_len_add, 0])
  142. cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
  143. color("green")
  144. translate([0, x_rail_dist + x_carriage_len_add, 0])
  145. cylinder(d = lm8uu_outer + lm8uu_dia_add, h = lm8uu_height + lm8uu_len_add);
  146. color("green")
  147. translate([0, x_carriage_len_add, -x_carriage_width])
  148. cylinder(d = lm8uu_inner + rail_dia_add, h = x_carriage_width * 2);
  149. color("green")
  150. translate([0, x_rail_dist + x_carriage_len_add, -x_carriage_width])
  151. cylinder(d = lm8uu_inner + rail_dia_add, h = x_carriage_width * 2);
  152. }
  153. }
  154. }
  155. }
  156. if (draw_y_carriage) {
  157. translate([(lm8uu_outer + lm8uu_dia_add) / 2 + y_carriage_rail_support, 0, 0])
  158. rotate([-90, 0, 0]) {
  159. // y-bearings
  160. %translate([0, 0, y_carriage_rail_support])
  161. lm8uu();
  162. %translate([0, 0, y_carriage_length - lm8uu_height - y_carriage_rail_support])
  163. lm8uu();
  164. }
  165. // x-rails
  166. for (i = [y_carriage_len_add : x_rail_dist : x_rail_dist + y_carriage_len_add]) {
  167. %translate([y_carriage_width + 1, i, 0])
  168. rotate([0, 90, 0])
  169. cylinder(d = lm8uu_inner, h = draw_rail_len);
  170. }
  171. y_carriage(idler_a_blue, idler_b_blue);
  172. translate([(2 * y_carriage_width + y_carriage_block_width) + draw_rail_len -5, y_carriage_length, 0])
  173. rotate([0, 0, 180])
  174. y_carriage(idler_a_red, idler_b_red);
  175. if (draw_x_carriage) {
  176. translate([y_carriage_width + y_carriage_block_width + ((draw_rail_len - x_carriage_width) / 2), y_carriage_len_add - x_carriage_len_add, 0])
  177. x_carriage();
  178. }
  179. } else if (draw_x_carriage) {
  180. x_carriage();
  181. }