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.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  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 = 27; // [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 = 4; // [0:5]
  27. // -----------------------------------------------------------
  28. /* [Hidden] */
  29. right_wall_size_modifier = 1.25; // [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.5;
  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 = 4;
  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. top_fan_extra_layer = 0.8;
  50. heat_sink_cutout = 24.4;
  51. // -----------------------------------------------------------
  52. module ellipse(w, l, d) {
  53. cube([d, l - w, w]);
  54. translate([0, 0, w / 2])
  55. rotate([0, 90, 0])
  56. cylinder(d = w, h = d);
  57. translate([0, l - w, w / 2])
  58. rotate([0, 90, 0])
  59. cylinder(d = w, h = d);
  60. }
  61. module left_arm() {
  62. // bottom left arm
  63. translate([0, 0, bottom_arm_gap])
  64. cube([motor_depth + nub_depth, wall_size, bottom_arm_height]);
  65. // bottom left nub
  66. translate([0, 0, bottom_arm_gap])
  67. cube([nub_depth, wall_size + nub_size, bottom_arm_height]);
  68. if (height > fabrikator_mini_v15_height) {
  69. // top left arm
  70. translate([0, 0, fabrikator_mini_v15_height + 1])
  71. cube([motor_depth + nub_depth, wall_size, height - fabrikator_mini_v15_height - 1]);
  72. // top left nub
  73. translate([0, 0, fabrikator_mini_v15_height + 1])
  74. cube([nub_depth, wall_size + nub_size, height - fabrikator_mini_v15_height - 1]);
  75. }
  76. // left back support
  77. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  78. cube([back_support_depth, wall_size, height]);
  79. // mid left support
  80. translate([nub_depth + mid_left_cutout, 0, 10])
  81. cube([motor_depth - back_support_depth - mid_left_cutout, wall_size, height - fabrikator_mini_v15_height + mid_left_cutout_height]);
  82. if (arm_inward_angle_left != 0) {
  83. // connecting piece for angled arm
  84. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  85. cube([1.5 * back_support_depth, wall_size, height]);
  86. }
  87. }
  88. module right_arm() {
  89. difference() {
  90. union() {
  91. // right wall
  92. translate([0, motor_width + wall_size, 0])
  93. cube([motor_depth + nub_depth, wall_size - right_wall_size_modifier, height]);
  94. // right nub
  95. translate([0, motor_width + wall_size - nub_size, 0])
  96. cube([nub_depth, wall_size + nub_size - right_wall_size_modifier, height]);
  97. }
  98. translate([24 - wall_size, 28, 3])
  99. rotate([0, 0, 90])
  100. ellipse(7, 20, 8);
  101. if (height > 23) {
  102. translate([24 - wall_size, 28, 13.5])
  103. rotate([0, 0, 90])
  104. ellipse(7, 20, 8);
  105. }
  106. // cut off a small nub at the top to fit the Z-axis rod holder
  107. translate([0, motor_width + wall_size - nub_size, height - cut_out_height])
  108. cube([cut_out_depth, wall_size + nub_size, cut_out_height]);
  109. }
  110. if (arm_inward_angle_right != 0) {
  111. // connecting piece for angled arm
  112. translate([motor_depth + nub_depth - back_support_depth, motor_width + wall_size, 0])
  113. cube([1.5 * back_support_depth, wall_size, height]);
  114. }
  115. }
  116. // -----------------------------------------------------------
  117. // stepper motor
  118. %translate([nub_depth, wall_size, 0])
  119. cube([motor_depth, motor_width, height + 1]);
  120. // heat sink
  121. %translate([nub_depth + motor_depth, ((2 * wall_size) + motor_width - heat_sink_cutout) / 2, 1.5 * top_fan_extra_layer])
  122. cube([10, heat_sink_cutout, heat_sink_cutout]);
  123. difference() {
  124. // left arm
  125. translate([0, 27 * sin(arm_inward_angle_left / 1.5), 0])
  126. rotate([0, 0, -(arm_inward_angle_left / 1.5)])
  127. left_arm();
  128. // cut off small ledge
  129. translate([0, -1, -base_height])
  130. cube([motor_depth + nub_depth + wall_size, 1, motor_width + base_height + wall_size]);
  131. }
  132. difference() {
  133. // right arm
  134. translate([35 * sin(arm_inward_angle_right / 1.5), -27 * sin(arm_inward_angle_right / 1.5), 0])
  135. rotate([0, 0, arm_inward_angle_right / 1.5])
  136. right_arm();
  137. if (arm_inward_angle_right != 0) {
  138. // cut off small ledge
  139. translate([0, motor_width + (2 * wall_size), -base_height])
  140. cube([motor_depth + nub_depth + wall_size, 1, motor_width + base_height + wall_size]);
  141. }
  142. }
  143. // back wall
  144. difference() {
  145. translate([motor_depth + nub_depth, 0, 0])
  146. cube([wall_size, motor_width + (2 * wall_size) - right_wall_size_modifier, height]);
  147. translate([25, 8 + wall_size, 4])
  148. ellipse(7, 20, 8);
  149. if (height > 23) {
  150. translate([25, 8 + wall_size, 15])
  151. ellipse(7, 20, 8);
  152. }
  153. translate([nub_depth + motor_depth, ((2 * wall_size) + motor_width - heat_sink_cutout) / 2, 1.5 * top_fan_extra_layer])
  154. cube([wall_size, heat_sink_cutout, heat_sink_cutout]);
  155. }
  156. // bottom part
  157. difference() {
  158. // base
  159. translate([0, 0, -base_height])
  160. cube([motor_depth + nub_depth + wall_size, motor_width + (2 * wall_size) - right_wall_size_modifier, base_height + top_fan_extra_layer]);
  161. // cut off angled bottom part
  162. rotate([0, -fan_angle, 0])
  163. translate([-base_height, -(base_height / 2), -(3 * base_height)])
  164. cube([motor_depth * 1.5, motor_width + (2 * wall_size) + base_height, (2 * base_height)]);
  165. // main fan hole
  166. if (fan_hole_angled == "true") {
  167. rotate([0, -fan_angle, 0])
  168. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  169. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  170. } else {
  171. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  172. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  173. }
  174. // fan screw holes
  175. for (i = [1 : 2]) {
  176. for (j = [1 : 2]) {
  177. rotate([0, -fan_angle, 0])
  178. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  179. translate([(((i % 2) == 0) ? fan_screw_pos : fan_screw_neg),
  180. (((j % 2) == 0) ? fan_screw_pos : fan_screw_neg), 0])
  181. cylinder(d = fan_screw_diameter, h = (2 * base_height));
  182. }
  183. }
  184. // big air hole
  185. translate([8.5, 36, -1.3])
  186. rotate([90, 0, 0])
  187. cylinder(d = 2, h = 40);
  188. // small air hole
  189. translate([12.5, 36, -1])
  190. rotate([90, 0, 0])
  191. cylinder(d = 1.5, h = 40);
  192. // elliptical air hole
  193. translate([-1, 9 + wall_size, -3.5])
  194. ellipse(2, 12, 8);
  195. }