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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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. // cut-out for new part in Fabrikator Mini V1.5
  27. fab_mini_v15 = "true"; // [true, false]
  28. // default for 25mm fan: 23
  29. fan_hole_diameter = 23; // [26]
  30. // default for 25mm fan: 20
  31. fan_screw_distance = 20; // [22]
  32. // default for 25mm fan: 3
  33. fan_screw_diameter = 3; // [1:5]
  34. fan_hole_angled = "true"; // [true, false]
  35. // -----------------------------------------------------------
  36. /* [Hidden] */
  37. fan_angle = 10;
  38. $fn = 25;
  39. fan_screw_pos = fan_screw_distance / 2;
  40. fan_screw_neg = -fan_screw_pos;
  41. // -----------------------------------------------------------
  42. module ellipse(w, l, d) {
  43. cube([d, l - w, w]);
  44. translate([0, 0, w / 2])
  45. rotate([0, 90, 0])
  46. cylinder(d = w, h = d);
  47. translate([0, l - w, w / 2])
  48. rotate([0, 90, 0])
  49. cylinder(d = w, h = d);
  50. }
  51. // -----------------------------------------------------------
  52. // bottom left arm
  53. if (fab_mini_v15 == "true") {
  54. translate([0, 0, 8])
  55. cube([30, 2, 2]);
  56. } else {
  57. translate([0, 0, 8])
  58. cube([30, 2, height - 8]);
  59. }
  60. // bottom left nub
  61. if (fab_mini_v15 == "true") {
  62. translate([0, 0, 8])
  63. cube([1, 3, 2]);
  64. } else {
  65. translate([0, 0, 8])
  66. cube([1, 3, height - 8]);
  67. }
  68. if (height > 20) {
  69. // top left arm
  70. translate([0, 0, 20])
  71. cube([30, 2, height - 20]);
  72. // top left nub
  73. translate([0, 0, 20])
  74. cube([1, 3, height - 20]);
  75. }
  76. // left back support
  77. translate([26, 0, 0])
  78. cube([4, 2, height]);
  79. // mid left support
  80. translate([15, 0, 10])
  81. cube([11, 2, height - 10]);
  82. // right arm
  83. difference() {
  84. translate([0, 30.5, 0])
  85. cube([30, 2, height]);
  86. translate([22, 28, 4])
  87. rotate([0, 0, 90])
  88. ellipse(7, 20, 8);
  89. if (height > 23) {
  90. translate([22, 28, 15])
  91. rotate([0, 0, 90])
  92. ellipse(7, 20, 8);
  93. }
  94. }
  95. // right nub
  96. translate([0, 29.5, 0])
  97. cube([1, 3, height]);
  98. // back wall
  99. difference() {
  100. translate([28, 0, 0])
  101. cube([2, 32, height]);
  102. translate([25, 10, 4])
  103. ellipse(7, 20, 8);
  104. if (height > 23) {
  105. translate([25, 10, 15])
  106. ellipse(7, 20, 8);
  107. }
  108. }
  109. difference() {
  110. // base
  111. translate([0, 0, -5])
  112. cube([30, 32.5, 5]);
  113. // cut off angled bottom part
  114. rotate([0, -fan_angle, 0])
  115. translate([-2, -1, -11])
  116. cube([34, 34, 6]);
  117. // main fan hole
  118. if (fan_hole_angled == "true") {
  119. rotate([0, -fan_angle, 0])
  120. translate([14.5, 16, -7])
  121. cylinder(d = fan_hole_diameter, h = 10);
  122. } else {
  123. translate([14.5, 16, -7])
  124. cylinder(d = fan_hole_diameter, h = 10);
  125. }
  126. // fan screw holes
  127. for (i = [1 : 2]) {
  128. for (j = [1 : 2]) {
  129. rotate([0, -fan_angle, 0])
  130. translate([14.5, 16, -7])
  131. translate([(((i % 2) == 0) ? fan_screw_pos : fan_screw_neg),
  132. (((j % 2) == 0) ? fan_screw_pos : fan_screw_neg), 0])
  133. cylinder(d = fan_screw_diameter, h = 10);
  134. }
  135. }
  136. // big air hole
  137. translate([8, 33, -1.8])
  138. rotate([90, 0, 0])
  139. cylinder(d = 2, h = 34);
  140. // small air hole
  141. translate([12, 33, -1.5])
  142. rotate([90, 0, 0])
  143. cylinder(d = 1.5, h = 34);
  144. // elliptical air hole
  145. translate([-1, 11, -3.5])
  146. ellipse(2, 12, 8);
  147. }