1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
-
- // #######################################################
- // #################### NEMA Steppers ####################
- // #######################################################
-
- $fn = 15;
-
- nema17_size = 42.3;
- nema17_hole_off = 30.1 / 2;
- nema17_hole_size = 3.2;
- nema17_shaft_size = 5.0;
- nema17_shaft_length = 24.0;
- nema17_center_size = 22.0;
- nema17_center_height = 2.0;
-
- nema17_mount_wall = 8.0;
- nema17_mount_hole_size = 3.4;
- nema17_mount_hole_off_add = 3.5;
-
- nema17_mount_double_high = false;
- nema17_mount_back_support = true;
-
- draw_nema17_mount = false;
-
- // #######################################################
-
- if (draw_nema17_mount) nema17_mount(30);
-
- module nema17_holes_face(height, length, hole) {
- translate([nema17_size / 2, nema17_size / 2, height - 4.5]) {
- translate([nema17_hole_off, nema17_hole_off, 0])
- cylinder(d = hole, h = length);
- translate([-nema17_hole_off, nema17_hole_off, 0])
- cylinder(d = hole, h = length);
- translate([nema17_hole_off, -nema17_hole_off, 0])
- cylinder(d = hole, h = length);
- translate([-nema17_hole_off, -nema17_hole_off, 0])
- cylinder(d = hole, h = length);
- }
- }
-
- module nema17(length) {
- difference() {
- cube([nema17_size, nema17_size, length]);
- nema17_holes_face(length, 5.0, nema17_hole_size);
- }
-
- translate([nema17_size / 2, nema17_size / 2, length]) {
- cylinder(d = nema17_center_size, h = nema17_center_height);
- cylinder(d = nema17_shaft_size, h = nema17_shaft_length);
- }
- }
-
- // TODO use not M4 with 2020 extrusion?
- module nema17_mount(slot) {
- // motor faceplate
- difference() {
- cube([nema17_size, nema17_size, nema17_mount_wall]);
- nema17_holes_face(4, nema17_mount_wall + 1, nema17_mount_hole_size);
-
- translate([nema17_size / 2, nema17_size / 2, -1])
- cylinder(d = 24.0, h = nema17_mount_wall + 2);
- }
-
- // mount on side
- translate([nema17_size, 0, 0])
- difference() {
- if (nema17_mount_double_high) {
- cube([nema17_mount_wall, nema17_size, nema17_mount_wall + (2 * slot)]);
- } else {
- cube([nema17_mount_wall, nema17_size, nema17_mount_wall + slot]);
- }
-
- for (i = [0, 1]) {
- translate([nema17_mount_wall + 1, nema17_size / 3 - nema17_mount_hole_off_add, nema17_mount_wall + (slot / 2) + (i * slot)]) {
- rotate([0, -90, 0])
- cylinder(d = 4.4, h = nema17_mount_wall + 2);
-
- translate([0, nema17_size / 3 + (2 * nema17_mount_hole_off_add), 0])
- rotate([0, -90, 0])
- cylinder(d = 4.4, h = nema17_mount_wall + 2);
- }
- }
- }
-
- if (nema17_mount_back_support) {
- translate([nema17_size + nema17_mount_wall, 0, 0])
- difference() {
- cube([slot, nema17_size, nema17_mount_wall]);
-
- translate([slot / 2, nema17_size / 3 - nema17_mount_hole_off_add, -1])
- cylinder(d = 4.4, h = nema17_mount_wall + 2);
-
- translate([slot / 2, nema17_size * 2 / 3 + nema17_mount_hole_off_add, -1])
- cylinder(d = 4.4, h = nema17_mount_wall + 2);
- }
- }
- }
|