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 6.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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. bottom_arm_height = 2;
  30. bottom_arm_gap = 8;
  31. back_support_depth = 2;
  32. mid_left_cutout = 9;
  33. wall_size = 3;
  34. fan_angle = 10;
  35. nub_size = 1;
  36. nub_depth = 1;
  37. motor_width = 28.5;
  38. motor_depth = 27;
  39. $fn = 25;
  40. fan_screw_pos = fan_screw_distance / 2;
  41. fan_screw_neg = -fan_screw_pos;
  42. fabrikator_mini_v15_height = 20;
  43. mid_left_cutout_height = 6;
  44. base_height = 5;
  45. arm_inward_angle_right = 0;
  46. // -----------------------------------------------------------
  47. module ellipse(w, l, d) {
  48. cube([d, l - w, w]);
  49. translate([0, 0, w / 2])
  50. rotate([0, 90, 0])
  51. cylinder(d = w, h = d);
  52. translate([0, l - w, w / 2])
  53. rotate([0, 90, 0])
  54. cylinder(d = w, h = d);
  55. }
  56. module left_arm() {
  57. // bottom left arm
  58. translate([0, 0, bottom_arm_gap])
  59. cube([motor_depth + nub_depth, wall_size, bottom_arm_height]);
  60. // bottom left nub
  61. translate([0, 0, bottom_arm_gap])
  62. cube([nub_depth, wall_size + nub_size, bottom_arm_height]);
  63. if (height > fabrikator_mini_v15_height) {
  64. // top left arm
  65. translate([0, 0, fabrikator_mini_v15_height + 1])
  66. cube([motor_depth + nub_depth, wall_size, height - fabrikator_mini_v15_height - 1]);
  67. // top left nub
  68. translate([0, 0, fabrikator_mini_v15_height + 1])
  69. cube([nub_depth, wall_size + nub_size, height - fabrikator_mini_v15_height - 1]);
  70. }
  71. // left back support
  72. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  73. cube([back_support_depth, wall_size, height]);
  74. // mid left support
  75. translate([nub_depth + mid_left_cutout, 0, 10])
  76. cube([motor_depth - back_support_depth - mid_left_cutout, wall_size, height - fabrikator_mini_v15_height + mid_left_cutout_height]);
  77. if (arm_inward_angle_left != 0) {
  78. // connecting piece for angled arm
  79. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  80. cube([1.5 * back_support_depth, wall_size, height]);
  81. }
  82. }
  83. module right_arm() {
  84. // right arm
  85. difference() {
  86. translate([0, motor_width + wall_size, 0])
  87. cube([motor_depth + nub_depth, wall_size, height]);
  88. translate([24 - wall_size, 28, 4])
  89. rotate([0, 0, 90])
  90. ellipse(7, 20, 8);
  91. if (height > 23) {
  92. translate([24 - wall_size, 28, 15])
  93. rotate([0, 0, 90])
  94. ellipse(7, 20, 8);
  95. }
  96. }
  97. // right nub
  98. translate([0, motor_width + wall_size - nub_size, 0])
  99. cube([nub_depth, wall_size + nub_size, height]);
  100. if (arm_inward_angle_right != 0) {
  101. // connecting piece for angled arm
  102. translate([motor_depth + nub_depth - back_support_depth, motor_width + wall_size, 0])
  103. cube([1.5 * back_support_depth, wall_size, height]);
  104. }
  105. }
  106. // -----------------------------------------------------------
  107. // stepper motor
  108. %translate([nub_depth, wall_size, 0])
  109. cube([motor_depth, motor_width, height + 1]);
  110. difference() {
  111. // left arm
  112. translate([0, 27 * sin(arm_inward_angle_left / 1.5), 0])
  113. rotate([0, 0, -(arm_inward_angle_left / 1.5)])
  114. left_arm();
  115. // cut off small ledge
  116. translate([0, -1, -base_height])
  117. cube([motor_depth + nub_depth + wall_size, 1, motor_width + base_height + wall_size]);
  118. }
  119. difference() {
  120. // right arm
  121. translate([35 * sin(arm_inward_angle_right / 1.5), -27 * sin(arm_inward_angle_right / 1.5), 0])
  122. rotate([0, 0, arm_inward_angle_right / 1.5])
  123. right_arm();
  124. if (arm_inward_angle_right != 0) {
  125. // cut off small ledge
  126. translate([0, motor_width + (2 * wall_size), -base_height])
  127. cube([motor_depth + nub_depth + wall_size, 1, motor_width + base_height + wall_size]);
  128. }
  129. }
  130. // back wall
  131. difference() {
  132. translate([motor_depth + nub_depth, 0, 0])
  133. cube([wall_size, motor_width + (2 * wall_size), height]);
  134. translate([25, 8 + wall_size, 4])
  135. ellipse(7, 20, 8);
  136. if (height > 23) {
  137. translate([25, 8 + wall_size, 15])
  138. ellipse(7, 20, 8);
  139. }
  140. }
  141. // bottom part
  142. difference() {
  143. // base
  144. translate([0, 0, -base_height])
  145. cube([motor_depth + nub_depth + wall_size, motor_width + (2 * wall_size), base_height]);
  146. // cut off angled bottom part
  147. rotate([0, -fan_angle, 0])
  148. translate([-base_height, -(base_height / 2), -(3 * base_height)])
  149. cube([motor_depth * 1.5, motor_width + (2 * wall_size) + base_height, (2 * base_height)]);
  150. // main fan hole
  151. if (fan_hole_angled == "true") {
  152. rotate([0, -fan_angle, 0])
  153. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  154. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  155. } else {
  156. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  157. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  158. }
  159. // fan screw holes
  160. for (i = [1 : 2]) {
  161. for (j = [1 : 2]) {
  162. rotate([0, -fan_angle, 0])
  163. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  164. translate([(((i % 2) == 0) ? fan_screw_pos : fan_screw_neg),
  165. (((j % 2) == 0) ? fan_screw_pos : fan_screw_neg), 0])
  166. cylinder(d = fan_screw_diameter, h = (2 * base_height));
  167. }
  168. }
  169. // big air hole
  170. translate([8, 36, -1.8])
  171. rotate([90, 0, 0])
  172. cylinder(d = 2, h = 40);
  173. // small air hole
  174. translate([12, 36, -1.5])
  175. rotate([90, 0, 0])
  176. cylinder(d = 1.5, h = 40);
  177. // elliptical air hole
  178. translate([-1, 9 + wall_size, -3.5])
  179. ellipse(2, 12, 8);
  180. }