1
0
mirror of https://github.com/nophead/Mendel90.git synced 2025-01-17 12:58:16 +01:00
Mendel90/scad/vitamins/stepper-motors.scad
2014-06-17 13:52:53 -07:00

87 lines
3.5 KiB
OpenSCAD

//
// Mendel90
//
// GNU GPL v2
// nop.head@gmail.com
// hydraraptor.blogspot.com
//
// NEMA stepper motor model
//
// corner body boss boss shaft
// side, length, radius, radius, radius, depth, shaft, length, holes
NEMA17 = [42.3, 47, 53.6/2, 25, 11, 2, 5, 24, 31 ];
NEMA17S = [42.3, 34, 53.6/2, 25, 11, 2, 5, 24, 31 ];
NEMA14 = [35.2, 36, 46.4/2, 21, 11, 2, 5, 21, 26 ];
NEMA23 = [56.4, 51.2, 75.7/2, 28.2, 38.1/2, 1.6, 6.35, 24, 47.1 ];
function NEMA_width(motor) = motor[0];
function NEMA_length(motor) = motor[1];
function NEMA_radius(motor) = motor[2];
function NEMA_big_hole(motor) = motor[4] + 0.2;
function NEMA_boss_height(motor) = motor[5];
function NEMA_shaft_dia(motor) = motor[6];
function NEMA_shaft_length(motor)= motor[7];
function NEMA_hole_pitch(motor) = motor[8];
function NEMA_holes(motor) = [-motor[8]/2, motor[8]/2];
module NEMA(motor) {
side = NEMA_width(motor);
length = NEMA_length(motor);
body_rad = motor[3];
boss_rad = motor[4];
boss_height = motor[5];
shaft_rad = NEMA_shaft_dia(motor) / 2;
cap = 8;
vitamin(str("NEMA", round(motor[0] / 2.54), length * 10, ": NEMA", round(motor[0] / 2.54), " x ", length, "mm stepper motor"));
union() {
color(stepper_body_color) render() // black laminations
translate([0,0, -length / 2])
intersection() {
cube([side, side, length - cap * 2],center = true);
cylinder(r = body_rad, h = 2 * length, center = true);
}
color(stepper_cap_color) render() { // aluminium end caps
difference() {
union() {
intersection() {
union() {
translate([0,0, -cap / 2])
cube([side,side,cap], center = true);
translate([0,0, -length + cap / 2])
cube([side,side,cap], center = true);
}
cylinder(r = NEMA_radius(motor), h = 3 * length, center = true);
}
difference() {
cylinder(r = boss_rad, h = boss_height * 2, center = true); // raised boss
cylinder(r = shaft_rad + 2, h = boss_height * 2 + 1, center = true);
}
cylinder(r = shaft_rad, h = NEMA_shaft_length(motor) * 2, center = true); // shaft
}
for(x = NEMA_holes(motor))
for(y = NEMA_holes(motor))
translate([x, y, 0])
cylinder(r = 3/2, h = 9, center = true);
}
}
translate([0, side / 2, -length + cap / 2])
rotate([90, 0, 0])
for(i = [0:3])
rotate([0, 0, 225 + i * 90])
color(["red", "blue","green","black"][i]) render()
translate([1, 0, 0])
cylinder(r = 1.5 / 2, h = 12, center = true);
}
}
module NEMA_screws(motor, n = 4, screw_length = 8, screw_type = M3_pan_screw) {
for(a = [0: 90 : 90 * (n - 1)])
rotate([0, 0, a])
translate([motor[8]/2, motor[8]/2, 0])
screw_and_washer(screw_type, screw_length, true);
}