My self designed awesome 3D printer
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

bearing_idler.scad 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. // #######################################################
  2. // ######################## Idler ########################
  3. // #######################################################
  4. // 624 bearing: 13x4x5
  5. bearing_outer = 13;
  6. bearing_inner = 4;
  7. bearing_height = 5;
  8. idler_outer_height = 7;
  9. idler_dia = 15;
  10. idler_ramp_dia = 16;
  11. belt_height = 6;
  12. dia_off = 0.1;
  13. ramp_step_size = 0.05;
  14. idler_dist = 0.1;
  15. spacer_size_add = 2;
  16. bearing_height_diff = belt_height - bearing_height;
  17. idler_ramp_add = (idler_outer_height - belt_height) / 2;
  18. spacer_height = idler_outer_height - bearing_height + idler_dist;
  19. bearing_spacer_height = (spacer_height - (idler_outer_height - bearing_height) / 2) * 2 + (idler_outer_height) * 2 + idler_dist;
  20. module bearing_624() {
  21. $fn = 15;
  22. difference() {
  23. cylinder(d = bearing_outer, h = bearing_height);
  24. translate([0, 0, -1])
  25. cylinder(d = 4, h = bearing_height + 2);
  26. translate([0, 0, bearing_height - 0.5])
  27. difference() {
  28. cylinder(d = bearing_outer - 2, h = 2);
  29. cylinder(d = bearing_inner + 2, h = 2);
  30. }
  31. translate([0, 0, -1.5])
  32. difference() {
  33. cylinder(d = bearing_outer - 2, h = 2);
  34. cylinder(d = bearing_inner + 2, h = 2);
  35. }
  36. }
  37. }
  38. module bearing_idler() {
  39. $fn = 30;
  40. translate([0, 0, idler_ramp_add]) {
  41. %translate([0, 0, bearing_height_diff / 2])
  42. bearing_624();
  43. color("yellow")
  44. difference() {
  45. cylinder(d = idler_dia, h = belt_height);
  46. translate([0, 0, -1])
  47. cylinder(d = bearing_outer + dia_off, h = belt_height + 2);
  48. }
  49. color("yellow")
  50. for (i = [ramp_step_size : ramp_step_size : idler_ramp_add]) {
  51. difference() {
  52. union() {
  53. translate([0, 0, belt_height + i - ramp_step_size])
  54. cylinder(d = idler_dia + (i * 4 * (idler_ramp_dia - idler_dia)), h = ramp_step_size);
  55. translate([0, 0, ramp_step_size - i])
  56. cylinder(d = idler_dia + (i * 2), h = ramp_step_size);
  57. }
  58. translate([0, 0, -1])
  59. cylinder(d = bearing_outer + dia_off, h = belt_height + 2);
  60. }
  61. }
  62. }
  63. }
  64. module bearing_spacer() {
  65. $fn = 30;
  66. difference() {
  67. cylinder(d = bearing_inner + spacer_size_add, h = spacer_height);
  68. translate([0, 0, -1])
  69. cylinder(d = bearing_inner + dia_off, h = spacer_height + 2);
  70. }
  71. }
  72. module bearing_spacer_assembly(only_outer, top) {
  73. translate([0, 0, spacer_height - (idler_outer_height - bearing_height) / 2]) {
  74. if ((!only_outer) || top) {
  75. color("magenta")
  76. translate([0, 0, -spacer_height + (idler_outer_height - bearing_height) / 2])
  77. bearing_spacer();
  78. }
  79. if (!only_outer) {
  80. bearing_idler();
  81. color("magenta")
  82. translate([0, 0, idler_outer_height - (idler_outer_height - bearing_height) / 2])
  83. bearing_spacer();
  84. translate([0, 0, (2 * idler_outer_height) + idler_dist])
  85. rotate([0, 180, 0])
  86. bearing_idler();
  87. }
  88. if ((!only_outer) || (!top)) {
  89. color("magenta")
  90. translate([0, 0, (2 * idler_outer_height) + idler_dist - (idler_outer_height - bearing_height) / 2])
  91. bearing_spacer();
  92. }
  93. }
  94. echo(bearings_spacers_height=bearing_spacer_height);
  95. }
  96. bearing_mount_wall = 8;
  97. bearing_mount_width = 15;
  98. idler_distance = 3;
  99. idler_off_z = 0.5;
  100. module slot_mount_bracket(slot, preview) {
  101. $fn = 15;
  102. color("green")
  103. translate([0, 0, slot])
  104. difference() {
  105. cube([slot, bearing_mount_width, bearing_mount_wall]);
  106. translate([slot / 2, bearing_mount_width / 2, -1])
  107. cylinder(d = 4.2, h = bearing_mount_wall + 2);
  108. }
  109. color("green")
  110. translate([slot, 0, 0])
  111. difference() {
  112. cube([bearing_mount_wall, bearing_mount_width, slot + bearing_mount_wall]);
  113. translate([-1, bearing_mount_width / 2, slot / 2])
  114. rotate([0, 90, 0])
  115. cylinder(d = 4.2, h = bearing_mount_wall + 2);
  116. }
  117. difference() {
  118. bearing_appendage(slot, preview);
  119. translate([slot + bearing_mount_wall + idler_ramp_dia / 2 + idler_distance, bearing_mount_width / 2, -5])
  120. cylinder(d = 4.2, h = slot + (2 * bearing_mount_wall) + 2);
  121. }
  122. }
  123. module bearing_appendage(slot, preview) {
  124. color("green")
  125. translate([slot + bearing_mount_wall, 0, slot])
  126. hull() {
  127. cube([1, bearing_mount_width, bearing_mount_wall]);
  128. translate([idler_ramp_dia / 2 + idler_distance, bearing_mount_width / 2, 0])
  129. cylinder(d = bearing_inner + spacer_size_add, h = bearing_mount_wall);
  130. }
  131. translate([slot + bearing_mount_wall + idler_ramp_dia / 2 + idler_distance, bearing_mount_width / 2, slot - bearing_spacer_height + idler_off_z]) {
  132. bearing_spacer_assembly(true, false);
  133. bearing_spacer_assembly(true, true);
  134. if (preview) {
  135. bearing_spacer_assembly(false);
  136. }
  137. }
  138. color("green")
  139. translate([slot + bearing_mount_wall, 0, 0]) {
  140. hull() {
  141. cube([1, bearing_mount_width, bearing_mount_wall]);
  142. translate([idler_ramp_dia / 2 + idler_distance, bearing_mount_width / 2, 0])
  143. cylinder(d = bearing_inner + spacer_size_add, h = bearing_mount_wall);
  144. }
  145. translate([idler_ramp_dia / 2 + idler_distance, bearing_mount_width / 2, bearing_mount_wall])
  146. cylinder(d = bearing_inner + spacer_size_add, h = 7);
  147. }
  148. }
  149. //slot_mount_bracket(30, true);