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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. module nema17_holes_face(height, length, hole) {
  15. translate([nema17_size / 2, nema17_size / 2, height - 4.5]) {
  16. translate([nema17_hole_off, nema17_hole_off, 0])
  17. cylinder(d = hole, h = length);
  18. translate([-nema17_hole_off, nema17_hole_off, 0])
  19. cylinder(d = hole, h = length);
  20. translate([nema17_hole_off, -nema17_hole_off, 0])
  21. cylinder(d = hole, h = length);
  22. translate([-nema17_hole_off, -nema17_hole_off, 0])
  23. cylinder(d = hole, h = length);
  24. }
  25. }
  26. module nema17(length) {
  27. difference() {
  28. cube([nema17_size, nema17_size, length]);
  29. nema17_holes_face(length, 5.0, nema17_hole_size);
  30. }
  31. translate([nema17_size / 2, nema17_size / 2, length]) {
  32. cylinder(d = nema17_center_size, h = nema17_center_height);
  33. cylinder(d = nema17_shaft_size, h = nema17_shaft_length);
  34. }
  35. }
  36. // TODO use not M4 with 2020 extrusion?
  37. module nema17_mount(slot) {
  38. // motor faceplate
  39. difference() {
  40. cube([nema17_size, nema17_size, nema17_mount_wall]);
  41. nema17_holes_face(4, nema17_mount_wall + 1, nema17_mount_hole_size);
  42. translate([nema17_size / 2, nema17_size / 2, -1])
  43. cylinder(d = 24.0, h = nema17_mount_wall + 2);
  44. }
  45. // mount on side
  46. translate([nema17_size, 0, 0])
  47. difference() {
  48. cube([nema17_mount_wall, nema17_size, nema17_mount_wall + (2 * slot)]);
  49. hole_off_add = 3.5;
  50. for (i = [0, 1]) {
  51. translate([nema17_mount_wall + 1, nema17_size / 3 - hole_off_add, nema17_mount_wall + (slot / 2) + (i * slot)]) {
  52. rotate([0, -90, 0])
  53. cylinder(d = 4.4, h = nema17_mount_wall + 2);
  54. translate([0, nema17_size / 3 + (2 * hole_off_add), 0])
  55. rotate([0, -90, 0])
  56. cylinder(d = 4.4, h = nema17_mount_wall + 2);
  57. }
  58. }
  59. }
  60. }