My self designed awesome 3D printer
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.

nema.scad 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // #######################################################
  2. // #################### NEMA Steppers ####################
  3. // #######################################################
  4. $fn = 15;
  5. nema17_size = 42.3;
  6. nema17_hole_off = 30.1 / 2;
  7. nema17_hole_size = 3.2;
  8. nema17_shaft_size = 5.0;
  9. nema17_shaft_length = 24.0;
  10. nema17_center_size = 22.0;
  11. nema17_center_height = 2.0;
  12. nema17_mount_wall = 8.0;
  13. nema17_mount_hole_size = 3.4;
  14. nema17_mount_hole_off_add = 3.5;
  15. nema17_mount_double_high = false;
  16. nema17_mount_back_support = true;
  17. draw_nema17_mount = false;
  18. // #######################################################
  19. if (draw_nema17_mount) nema17_mount(30);
  20. module nema17_holes_face(height, length, hole) {
  21. translate([nema17_size / 2, nema17_size / 2, height - 4.5]) {
  22. translate([nema17_hole_off, nema17_hole_off, 0])
  23. cylinder(d = hole, h = length);
  24. translate([-nema17_hole_off, nema17_hole_off, 0])
  25. cylinder(d = hole, h = length);
  26. translate([nema17_hole_off, -nema17_hole_off, 0])
  27. cylinder(d = hole, h = length);
  28. translate([-nema17_hole_off, -nema17_hole_off, 0])
  29. cylinder(d = hole, h = length);
  30. }
  31. }
  32. module nema17(length) {
  33. difference() {
  34. cube([nema17_size, nema17_size, length]);
  35. nema17_holes_face(length, 5.0, nema17_hole_size);
  36. }
  37. translate([nema17_size / 2, nema17_size / 2, length]) {
  38. cylinder(d = nema17_center_size, h = nema17_center_height);
  39. cylinder(d = nema17_shaft_size, h = nema17_shaft_length);
  40. }
  41. }
  42. // TODO use not M4 with 2020 extrusion?
  43. module nema17_mount(slot) {
  44. // motor faceplate
  45. difference() {
  46. cube([nema17_size, nema17_size, nema17_mount_wall]);
  47. nema17_holes_face(4, nema17_mount_wall + 1, nema17_mount_hole_size);
  48. translate([nema17_size / 2, nema17_size / 2, -1])
  49. cylinder(d = 24.0, h = nema17_mount_wall + 2);
  50. }
  51. // mount on side
  52. translate([nema17_size, 0, 0])
  53. difference() {
  54. if (nema17_mount_double_high) {
  55. cube([nema17_mount_wall, nema17_size, nema17_mount_wall + (2 * slot)]);
  56. } else {
  57. cube([nema17_mount_wall, nema17_size, nema17_mount_wall + slot]);
  58. }
  59. for (i = [0, 1]) {
  60. translate([nema17_mount_wall + 1, nema17_size / 3 - nema17_mount_hole_off_add, nema17_mount_wall + (slot / 2) + (i * slot)]) {
  61. rotate([0, -90, 0])
  62. cylinder(d = 4.4, h = nema17_mount_wall + 2);
  63. translate([0, nema17_size / 3 + (2 * nema17_mount_hole_off_add), 0])
  64. rotate([0, -90, 0])
  65. cylinder(d = 4.4, h = nema17_mount_wall + 2);
  66. }
  67. }
  68. }
  69. if (nema17_mount_back_support) {
  70. translate([nema17_size + nema17_mount_wall, 0, 0])
  71. difference() {
  72. cube([slot, nema17_size, nema17_mount_wall]);
  73. translate([slot / 2, nema17_size / 3 - nema17_mount_hole_off_add, -1])
  74. cylinder(d = 4.4, h = nema17_mount_wall + 2);
  75. translate([slot / 2, nema17_size * 2 / 3 + nema17_mount_hole_off_add, -1])
  76. cylinder(d = 4.4, h = nema17_mount_wall + 2);
  77. }
  78. }
  79. }