My self-made 3D-printable designs, mainly in OpenSCAD
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Fan Holder.scad 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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. * A parameter has been added (fab_mini_v15) that allows
  17. * reverting to the old behvior.
  18. *
  19. * For V1.5, a height of 25mm is suggested, as this provides
  20. * enough stability with the big cut-out. To revert to something
  21. * like the original model, set the height to 15mm (and
  22. * fab_mini_v15 to "false").
  23. */
  24. // -----------------------------------------------------------
  25. height = 25; // [14:26]
  26. // default for 25mm fan: 23
  27. fan_hole_diameter = 23; // [26]
  28. // default for 25mm fan: 20
  29. fan_screw_distance = 20; // [22]
  30. // default for 25mm fan: 3
  31. fan_screw_diameter = 3; // [1:5]
  32. fan_hole_angled = "true"; // [true, false]
  33. // -----------------------------------------------------------
  34. /* [Hidden] */
  35. bottom_arm_height = 2;
  36. bottom_arm_gap = 8;
  37. back_support_depth = 2;
  38. mid_left_cutout = 9;
  39. wall_size = 3;
  40. fan_angle = 10;
  41. nub_size = 1;
  42. nub_depth = 1;
  43. motor_width = 28.5;
  44. motor_depth = 27;
  45. $fn = 25;
  46. fan_screw_pos = fan_screw_distance / 2;
  47. fan_screw_neg = -fan_screw_pos;
  48. fabrikator_mini_v15_height = 20;
  49. mid_left_cutout_height = 5;
  50. base_height = 5;
  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. // -----------------------------------------------------------
  62. // stepper motor
  63. %translate([nub_depth, wall_size, 0])
  64. cube([motor_depth, motor_width, height + 1]);
  65. // bottom left arm
  66. translate([0, 0, bottom_arm_gap])
  67. cube([motor_depth + nub_depth, wall_size, bottom_arm_height]);
  68. // bottom left nub
  69. translate([0, 0, bottom_arm_gap])
  70. cube([nub_depth, wall_size + nub_size, bottom_arm_height]);
  71. if (height > fabrikator_mini_v15_height) {
  72. // top left arm
  73. translate([0, 0, fabrikator_mini_v15_height])
  74. cube([motor_depth + nub_depth, wall_size, height - fabrikator_mini_v15_height]);
  75. // top left nub
  76. translate([0, 0, fabrikator_mini_v15_height])
  77. cube([nub_depth, wall_size + nub_size, height - fabrikator_mini_v15_height]);
  78. }
  79. // left back support
  80. translate([motor_depth + nub_depth - back_support_depth, 0, 0])
  81. cube([back_support_depth, wall_size, height]);
  82. // mid left support
  83. translate([nub_depth + mid_left_cutout, 0, 10])
  84. cube([motor_depth - back_support_depth - mid_left_cutout, wall_size, height - fabrikator_mini_v15_height + mid_left_cutout_height]);
  85. // right arm
  86. difference() {
  87. translate([0, motor_width + wall_size, 0])
  88. cube([motor_depth + nub_depth, wall_size, height]);
  89. translate([24 - wall_size, 28, 4])
  90. rotate([0, 0, 90])
  91. ellipse(7, 20, 8);
  92. if (height > 23) {
  93. translate([24 - wall_size, 28, 15])
  94. rotate([0, 0, 90])
  95. ellipse(7, 20, 8);
  96. }
  97. }
  98. // right nub
  99. translate([0, motor_width + wall_size - nub_size, 0])
  100. cube([nub_depth, wall_size + nub_size, height]);
  101. // back wall
  102. difference() {
  103. translate([motor_depth + nub_depth, 0, 0])
  104. cube([wall_size, motor_width + (2 * wall_size), height]);
  105. translate([25, 8 + wall_size, 4])
  106. ellipse(7, 20, 8);
  107. if (height > 23) {
  108. translate([25, 8 + wall_size, 15])
  109. ellipse(7, 20, 8);
  110. }
  111. }
  112. // bottom part
  113. difference() {
  114. // base
  115. translate([0, 0, -base_height])
  116. cube([motor_depth + nub_depth + wall_size, motor_width + (2 * wall_size), base_height]);
  117. // cut off angled bottom part
  118. rotate([0, -fan_angle, 0])
  119. translate([-base_height, -(base_height / 2), -(3 * base_height)])
  120. cube([motor_depth * 1.5, motor_width + (2 * wall_size) + base_height, (2 * base_height)]);
  121. // main fan hole
  122. if (fan_hole_angled == "true") {
  123. rotate([0, -fan_angle, 0])
  124. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  125. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  126. } else {
  127. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  128. cylinder(d = fan_hole_diameter, h = (2 * base_height));
  129. }
  130. // fan screw holes
  131. for (i = [1 : 2]) {
  132. for (j = [1 : 2]) {
  133. rotate([0, -fan_angle, 0])
  134. translate([nub_depth + (motor_depth / 2), wall_size + (motor_width / 2), -(base_height * 1.5)])
  135. translate([(((i % 2) == 0) ? fan_screw_pos : fan_screw_neg),
  136. (((j % 2) == 0) ? fan_screw_pos : fan_screw_neg), 0])
  137. cylinder(d = fan_screw_diameter, h = (2 * base_height));
  138. }
  139. }
  140. // big air hole
  141. translate([8, 36, -1.8])
  142. rotate([90, 0, 0])
  143. cylinder(d = 2, h = 40);
  144. // small air hole
  145. translate([12, 36, -1.5])
  146. rotate([90, 0, 0])
  147. cylinder(d = 1.5, h = 40);
  148. // elliptical air hole
  149. translate([-1, 9 + wall_size, -3.5])
  150. ellipse(2, 12, 8);
  151. }