My self-made 3D-printable designs, mainly in OpenSCAD
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.

Fan Holder.scad 7.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. /*
  2. * Based on "Y-Axis Bracket" by "daveth26":
  3. * http://www.thingiverse.com/thing:1104535
  4. *
  5. * Recreated and modified by:
  6. * Thomas Buck <xythobuz@xythobuz.de> in March 2016
  7. *
  8. * Licensed under the Creative Commons - Attribution license.
  9. *
  10. * This part has been modified to use a 25mm fan instead of
  11. * a 30mm fan. This can be set in the parameters, but beware
  12. * of any problems, I have not tested any other sizes.
  13. *
  14. * The Fabrikator Mini V1.5 include a new bracket that prevents
  15. * the old design from sliding fully onto the stepper motor.
  16. */
  17. // -----------------------------------------------------------
  18. height = 25; // [14:26]
  19. // default for 25mm fan: 23
  20. fan_hole_diameter = 23; // [26]
  21. // default for 25mm fan: 20
  22. fan_screw_distance = 20; // [22]
  23. // default for 25mm fan: 3
  24. fan_screw_diameter = 3; // [1:5]
  25. fan_hole_angled = "true"; // [true, false]
  26. arm_inward_angle_left = 2; // [0:5]
  27. // -----------------------------------------------------------
  28. /* [Hidden] */
  29. right_wall_size_modifier = 0.75; // [0:2]
  30. bottom_arm_height = 2;
  31. bottom_arm_gap = 8;
  32. back_support_depth = 2;
  33. mid_left_cutout = 9;
  34. wall_size = 3;
  35. fan_angle = 10;
  36. nub_size = 1;
  37. nub_depth = 2;
  38. motor_width = 28.3;
  39. motor_depth = 27;
  40. cut_out_depth = 10;
  41. cut_out_height = 2;
  42. $fn = 25;
  43. fan_screw_pos = fan_screw_distance / 2;
  44. fan_screw_neg = -fan_screw_pos;
  45. fabrikator_mini_v15_height = 20;
  46. mid_left_cutout_height = 6;
  47. base_height = 5;
  48. arm_inward_angle_right = 0;
  49. // -----------------------------------------------------------
  50. module ellipse(w, l, d) {
  51. cube([d, l - w, w]);
  52. translate([0, 0, w / 2])
  53. rotate([0, 90, 0])
  54. cylinder(d = w, h = d);
  55. translate([0, l - w, w / 2])
  56. rotate([0, 90, 0])
  57. cylinder(d = w, h = d);
  58. }
  59. module left_arm() {
  60. // bottom left arm
  61. translate([0, 0, bottom_arm_gap])
  62. cube([motor_depth + nub_depth, wall_size, bottom_arm_height]);
  63. // bottom left nub
  64. translate([0, 0, bottom_arm_gap])
  65. cube([nub_depth, wall_size + nub_size, bottom_arm_height]);
  66. if (height > fabrikator_mini_v15_height) {
  67. // top left arm
  68. translate([0, 0, fabrikator_mini_v15_height + 1])
  69. cube([motor_depth + nub_depth, wall_size, height - fabrikator_mini_v15_height - 1]);
  70. // top left nub
  71. translate([0, 0, fabrikator_mini_v15_height + 1])
  72. cube([nub_depth, wall_size + nub_size, height - fabrikator_mini_v15_height - 1]);
  73. }
  74. // left back support
  75. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  76. cube([back_support_depth, wall_size, height]);
  77. // mid left support
  78. translate([nub_depth + mid_left_cutout, 0, 10])
  79. cube([motor_depth - back_support_depth - mid_left_cutout, wall_size, height - fabrikator_mini_v15_height + mid_left_cutout_height]);
  80. if (arm_inward_angle_left != 0) {
  81. // connecting piece for angled arm
  82. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  83. cube([1.5 * back_support_depth, wall_size, height]);
  84. }
  85. }
  86. module right_arm() {
  87. difference() {
  88. union() {
  89. // right wall
  90. translate([0, motor_width + wall_size, 0])
  91. cube([motor_depth + nub_depth, wall_size - right_wall_size_modifier, height]);
  92. // right nub
  93. translate([0, motor_width + wall_size - nub_size, 0])
  94. cube([nub_depth, wall_size + nub_size - right_wall_size_modifier, height]);
  95. }
  96. translate([24 - wall_size, 28, 3])
  97. rotate([0, 0, 90])
  98. ellipse(7, 20, 8);
  99. if (height > 23) {
  100. translate([24 - wall_size, 28, 13.5])
  101. rotate([0, 0, 90])
  102. ellipse(7, 20, 8);
  103. }
  104. // cut off a small nub at the top to fit the Z-axis rod holder
  105. translate([0, motor_width + wall_size - nub_size, height - cut_out_height])
  106. cube([cut_out_depth, wall_size + nub_size, cut_out_height]);
  107. }
  108. if (arm_inward_angle_right != 0) {
  109. // connecting piece for angled arm
  110. translate([motor_depth + nub_depth - back_support_depth, motor_width + wall_size, 0])
  111. cube([1.5 * back_support_depth, wall_size, height]);
  112. }
  113. }
  114. // -----------------------------------------------------------
  115. // stepper motor
  116. %translate([nub_depth, wall_size, 0])
  117. cube([motor_depth, motor_width, height + 1]);
  118. difference() {
  119. // left arm
  120. translate([0, 27 * sin(arm_inward_angle_left / 1.5), 0])
  121. rotate([0, 0, -(arm_inward_angle_left / 1.5)])
  122. left_arm();
  123. // cut off small ledge
  124. translate([0, -1, -base_height])
  125. cube([motor_depth + nub_depth + wall_size, 1, motor_width + base_height + wall_size]);
  126. }
  127. difference() {
  128. // right arm
  129. translate([35 * sin(arm_inward_angle_right / 1.5), -27 * sin(arm_inward_angle_right / 1.5), 0])
  130. rotate([0, 0, arm_inward_angle_right / 1.5])
  131. right_arm();
  132. if (arm_inward_angle_right != 0) {
  133. // cut off small ledge
  134. translate([0, motor_width + (2 * wall_size), -base_height])
  135. cube([motor_depth + nub_depth + wall_size, 1, motor_width + base_height + wall_size]);
  136. }
  137. }
  138. // back wall
  139. difference() {
  140. translate([motor_depth + nub_depth, 0, 0])
  141. cube([wall_size, motor_width + (2 * wall_size) - right_wall_size_modifier, height]);
  142. translate([25, 8 + wall_size, 4])
  143. ellipse(7, 20, 8);
  144. if (height > 23) {
  145. translate([25, 8 + wall_size, 15])
  146. ellipse(7, 20, 8);
  147. }
  148. }
  149. // bottom part
  150. difference() {
  151. // base
  152. translate([0, 0, -base_height])
  153. cube([motor_depth + nub_depth + wall_size, motor_width + (2 * wall_size) - right_wall_size_modifier, base_height]);
  154. // cut off angled bottom part
  155. rotate([0, -fan_angle, 0])
  156. translate([-base_height, -(base_height / 2), -(3 * base_height)])
  157. cube([motor_depth * 1.5, motor_width + (2 * wall_size) + base_height, (2 * base_height)]);
  158. // main fan hole
  159. if (fan_hole_angled == "true") {
  160. rotate([0, -fan_angle, 0])
  161. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  162. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  163. } else {
  164. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  165. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  166. }
  167. // fan screw holes
  168. for (i = [1 : 2]) {
  169. for (j = [1 : 2]) {
  170. rotate([0, -fan_angle, 0])
  171. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  172. translate([(((i % 2) == 0) ? fan_screw_pos : fan_screw_neg),
  173. (((j % 2) == 0) ? fan_screw_pos : fan_screw_neg), 0])
  174. cylinder(d = fan_screw_diameter, h = (2 * base_height));
  175. }
  176. }
  177. // big air hole
  178. translate([8, 36, -1.8])
  179. rotate([90, 0, 0])
  180. cylinder(d = 2, h = 40);
  181. // small air hole
  182. translate([12, 36, -1.5])
  183. rotate([90, 0, 0])
  184. cylinder(d = 1.5, h = 40);
  185. // elliptical air hole
  186. translate([-1, 9 + wall_size, -3.5])
  187. ellipse(2, 12, 8);
  188. }