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 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. }