Split NEMA modules out of GDMUtils.scad. Split T-slot modules out of joiners.scad.

This commit is contained in:
Revar Desmera
2014-08-30 15:08:54 -07:00
parent dbdbd54ab6
commit f13d5b4f4c
13 changed files with 336 additions and 272 deletions

View File

@@ -634,216 +634,5 @@ module torus(or=1, ir=0.5)
module nema11_stepper(h=24, shaft=5, shaft_len=20)
{
motor_width = 28.2;
plinth_height = 1.5;
plinth_diam = 22;
screw_spacing = 23.11;
screw_size = 2.6;
screw_depth = 3.0;
difference() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2],
za = [-screw_depth/2+0.05]
) {
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
}
}
//!nema11_stepper();
module nema14_stepper(h=24, shaft=5, shaft_len=24)
{
motor_width = 35.2;
plinth_height = 2;
plinth_diam = 22;
screw_spacing = 26;
screw_size = 3;
screw_depth = 4.5;
difference() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2],
za = [-screw_depth/2+0.05]
) {
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
}
}
//!nema14_stepper();
module nema17_stepper(h=34, shaft=5, shaft_len=20)
{
motor_width = 42.3;
plinth_height = 2;
plinth_diam = 22;
screw_spacing = 30.99;
screw_size = 3;
screw_depth = 4.5;
difference() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2],
za = [-screw_depth/2+0.05]
) {
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
}
}
//!nema17_stepper();
module nema23_stepper(h=50, shaft=6.35, shaft_len=25)
{
motor_width = 57.0;
plinth_height = 1.6;
plinth_diam = 38.1;
screw_spacing = 47.14;
screw_size = 5.1;
screw_depth = 4.8;
screw_inset = motor_width - screw_spacing + 1;
difference() {
union() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2]
) {
translate([0, 0, -screw_depth/2+1])
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
translate([0, 0, -screw_depth-h/2])
cube(size=[screw_inset, screw_inset, h], center=true);
}
}
}
//!nema23_stepper();
module nema34_stepper(h=75, shaft=12.7, shaft_len=32)
{
motor_width = 86;
plinth_height = 2.03;
plinth_diam = 73.0;
screw_spacing = 69.6;
screw_size = 5.5;
screw_depth = 9;
screw_inset = motor_width - screw_spacing + 1;
difference() {
union() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2]
) {
translate([0, 0, -screw_depth/2+1])
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
translate([0, 0, -screw_depth-h/2])
cube(size=[screw_inset, screw_inset, h], center=true);
}
}
}
//!nema34_stepper();
module nema17_mount_holes(depth=5, len=5)
{
plinth_diam = 22;
screw_spacing = 30.99;
screw_size = 3;
union() {
grid_of(
xa=[-screw_spacing/2, screw_spacing/2],
ya=[-screw_spacing/2, screw_spacing/2]
) {
hull() {
translate([0, -len/2, 0])
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
translate([0, len/2, 0])
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
}
}
}
hull() {
translate([0, -len/2, 0])
cylinder(h=depth, r=plinth_diam/2, center=true);
translate([0, len/2, 0])
cylinder(h=depth, r=plinth_diam/2, center=true);
}
}
//!nema17_mount_holes(depth=5, len=5);
// vim: tabstop=4 noexpandtab shiftwidth=4 softtabstop=4 nowrap

216
NEMA.scad Normal file
View File

@@ -0,0 +1,216 @@
use <GDMUtils.scad>
module nema11_stepper(h=24, shaft=5, shaft_len=20)
{
motor_width = 28.2;
plinth_height = 1.5;
plinth_diam = 22;
screw_spacing = 23.11;
screw_size = 2.6;
screw_depth = 3.0;
difference() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2],
za = [-screw_depth/2+0.05]
) {
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
}
}
//!nema11_stepper();
module nema14_stepper(h=24, shaft=5, shaft_len=24)
{
motor_width = 35.2;
plinth_height = 2;
plinth_diam = 22;
screw_spacing = 26;
screw_size = 3;
screw_depth = 4.5;
difference() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2],
za = [-screw_depth/2+0.05]
) {
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
}
}
//!nema14_stepper();
module nema17_stepper(h=34, shaft=5, shaft_len=20)
{
motor_width = 42.3;
plinth_height = 2;
plinth_diam = 22;
screw_spacing = 30.99;
screw_size = 3;
screw_depth = 4.5;
difference() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2],
za = [-screw_depth/2+0.05]
) {
cylinder(r=screw_size/2, h=screw_depth, center=true, $fn=8);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=12);
}
}
//!nema17_stepper();
module nema23_stepper(h=50, shaft=6.35, shaft_len=25)
{
motor_width = 57.0;
plinth_height = 1.6;
plinth_diam = 38.1;
screw_spacing = 47.14;
screw_size = 5.1;
screw_depth = 4.8;
screw_inset = motor_width - screw_spacing + 1;
difference() {
union() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2]
) {
translate([0, 0, -screw_depth/2+1])
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
translate([0, 0, -screw_depth-h/2])
cube(size=[screw_inset, screw_inset, h], center=true);
}
}
}
//!nema23_stepper();
module nema34_stepper(h=75, shaft=12.7, shaft_len=32)
{
motor_width = 86;
plinth_height = 2.03;
plinth_diam = 73.0;
screw_spacing = 69.6;
screw_size = 5.5;
screw_depth = 9;
screw_inset = motor_width - screw_spacing + 1;
difference() {
union() {
color([0.4, 0.4, 0.4]) {
translate([0, 0, -h/2]) {
rrect(size=[motor_width, motor_width, h], r=2, center=true);
}
}
color("silver") {
translate([0, 0, plinth_height/2])
cylinder(h=plinth_height, r=plinth_diam/2, center=true, $fn=32);
translate([0, 0, shaft_len/2])
cylinder(h=shaft_len, r=shaft/2, center=true, $fn=24);
}
}
grid_of(
xa = [-screw_spacing/2, screw_spacing/2],
ya = [-screw_spacing/2, screw_spacing/2]
) {
translate([0, 0, -screw_depth/2+1])
cylinder(r=screw_size/2, h=screw_depth+2, center=true, $fn=12);
translate([0, 0, -screw_depth-h/2])
cube(size=[screw_inset, screw_inset, h], center=true);
}
}
}
//!nema34_stepper();
module nema17_mount_holes(depth=5, len=5)
{
plinth_diam = 22;
screw_spacing = 30.99;
screw_size = 3;
union() {
grid_of(
xa=[-screw_spacing/2, screw_spacing/2],
ya=[-screw_spacing/2, screw_spacing/2]
) {
hull() {
translate([0, -len/2, 0])
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
translate([0, len/2, 0])
cylinder(h=depth, r=screw_size/2, center=true, $fn=8);
}
}
}
hull() {
translate([0, -len/2, 0])
cylinder(h=depth, r=plinth_diam/2, center=true);
translate([0, len/2, 0])
cylinder(h=depth, r=plinth_diam/2, center=true);
}
}
//!nema17_mount_holes(depth=5, len=5);
// vim: tabstop=4 noexpandtab shiftwidth=4 softtabstop=4 nowrap

View File

@@ -1,6 +1,27 @@
include <config.scad>
use <GDMUtils.scad>
use <joiners.scad>
module cap(r=roller_axle/2-3, h=10, wall=3, cap=2, lip=2)
{
difference() {
union() {
translate([0,0,-cap/2])
cylinder(r=r+lip+wall, h=cap, center=true, $fn=32);
translate([0,0,h*3/8])
cylinder(r1=r-0.5, r2=r, h=h*3/4, center=true, $fn=32);
translate([0,0,h*7/8])
cylinder(r1=r, r2=r-wall/2, h=h*1/4, center=true, $fn=32);
}
translate([0,0,h/2+1])
cylinder(r=r-wall, h=h+1, center=true, $fn=12);
zrot_copies([0,90]) translate([0,0,h*5/8])
cube(size=[1,r*2,h],center=true);
}
}
//cap();
module cap_parts() { // make me

View File

@@ -1,3 +1,6 @@
snappy_version = 0.90;
platform_length = 100;
platform_width = 150;
platform_height = 40;

View File

@@ -1,6 +1,7 @@
include <config.scad>
use <GDMUtils.scad>
module joiner(h=40, w=9, l=10, a=30, screwsize=undef, guides=true)
{
dmnd_height = h/2;
@@ -81,64 +82,5 @@ module joiner(h=40, w=9, l=10, a=30, screwsize=undef, guides=true)
module lock_tab(h=30, wall=3, slop=0.0)
{
s1 = 2*wall-slop/2;
s2 = wall-slop/2;
ang = atan(((s1-s2)/2)/(h-2));
translate([0, -(1.5*wall), 0]) union () {
intersection() {
yrot( ang) translate([0,0,(h+5)/2]) cube(size=[s1*2, wall-slop, h+10], center=true);
yrot(-ang) translate([0,0,(h+5)/2]) cube(size=[s1*2, wall-slop, h+10], center=true);
translate([0,0,(h-wall-slop)/2]) cube(size=[s1*2, wall-slop, h-wall-slop+0.05], center=true);
}
}
translate([0, -(wall+slop/2)/2-0.05, (h-wall-slop)/2]) cube(size=[wall-slop, wall+slop/2+0.1, h-wall-slop+0.05], center=true);
}
//lock_tab(h=30, wall=2, slop=-0.9);
module lock_slot(h=30, wall=3, backing=0, slop=0.2)
{
s1 = 2*wall+slop/2;
s2 = wall+slop/2;
w = 2*s1+2*wall;
d = wall*3+slop;
ang = atan(((s1-s2)/2)/(h-2));
translate([0, (d+backing)/2, 0]) difference() {
intersection() {
yrot( ang) translate([0, 0, (h+5)/2]) cube(size=[w, d+backing, h+10], center=true);
yrot(-ang) translate([0, 0, (h+5)/2]) cube(size=[w, d+backing, h+10], center=true);
translate([0, 0, h/2]) cube(size=[w, d+backing, h], center=true);
}
translate([0, (d+backing)/2+0.05, -0.05]) lock_tab(h=h, wall=wall, slop=-slop);
}
}
//!lock_slot(h=30, wall=2, slop=0.1);
module cap(r=roller_axle/2-3, h=10, wall=3, cap=2, lip=2)
{
difference() {
union() {
translate([0,0,-cap/2])
cylinder(r=r+lip+wall, h=cap, center=true, $fn=32);
translate([0,0,h*3/8])
cylinder(r1=r-0.5, r2=r, h=h*3/4, center=true, $fn=32);
translate([0,0,h*7/8])
cylinder(r1=r, r2=r-wall/2, h=h*1/4, center=true, $fn=32);
}
translate([0,0,h/2+1])
cylinder(r=r-wall, h=h+1, center=true, $fn=12);
zrot_copies([0,90]) translate([0,0,h*5/8])
cube(size=[1,r*2,h],center=true);
}
}
//cap();
// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap

View File

@@ -1,5 +1,6 @@
include <config.scad>
use <GDMUtils.scad>
use <NEMA.scad>
use <joiners.scad>

View File

@@ -1,6 +1,8 @@
include <config.scad>
use <GDMUtils.scad>
use <NEMA.scad>
use <joiners.scad>
use <tslot.scad>
use <motor_mount_plate_parts.scad>
use <drive_gear_parts.scad>

View File

@@ -1,6 +1,7 @@
include <config.scad>
use <GDMUtils.scad>
use <joiners.scad>
use <tslot.scad>
module rails_90deg_joint()

View File

@@ -6,6 +6,7 @@ use <roller_parts.scad>
use <cap_parts.scad>
module herringbone_rack(l=100, h=10, w=10, tooth_size=5, CA=30)
{
render(convexity=10) translate([-(rack_tooth_size/2), 0, 0]) {

View File

@@ -1,6 +1,6 @@
include <config.scad>
use <GDMUtils.scad>
use <joiners.scad>
use <tslot.scad>
module support_leg(h=30, l=100, wall=3)

32
testslot_part.scad Normal file
View File

@@ -0,0 +1,32 @@
include <config.scad>
use <GDMUtils.scad>
use <tslot.scad>
module testslot(h=30, l=100, wall=3)
{
ang = atan((h-10)/l);
union() {
translate([0, -1, h/2])
cube(size=[platform_length/2+6*wall, 5, h], center=true);
grid_of(xa=[-platform_length/4, platform_length/4]) {
lock_slot(h=h, wall=wall);
}
}
}
//!testslot();
module testslot_part() { // make me
testslot();
}
testslot_part();
// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap

55
tslot.scad Normal file
View File

@@ -0,0 +1,55 @@
include <config.scad>
use <GDMUtils.scad>
module lock_tab(h=30, wall=3, slop=0.0)
{
s1 = 2*wall-slop/2;
s2 = wall-slop/2;
ang = atan(((s1-s2)/2)/(h-2));
translate([0, -(1.5*wall), 0]) union () {
intersection() {
yrot( ang) translate([0,0,(h+5)/2])
cube(size=[s1*2, wall-2*slop, h+10], center=true);
yrot(-ang) translate([0,0,(h+5)/2])
cube(size=[s1*2, wall-2*slop, h+10], center=true);
translate([0,0,(h-wall-slop)/2])
cube(size=[s1*2, wall-2*slop, h-wall-slop+0.05], center=true);
}
}
translate([0, -(wall+slop/2)/2-0.05, (h-wall-slop)/2])
cube(size=[wall-2*slop, wall+slop/2+0.1, h-wall-slop+0.05], center=true);
}
//lock_tab(h=30, wall=2, slop=-0.9);
module lock_slot(h=30, wall=3, backing=0, slop=0.3)
{
s1 = 2*wall+slop/2;
s2 = wall+slop/2;
w = 2*s1+2*wall;
d = wall*3+slop;
ang = atan(((s1-s2)/2)/(h-2));
translate([0, (d+backing)/2, 0]) {
difference() {
intersection() {
yrot( ang) translate([0, 0, (h+5)/2])
cube(size=[w, d+backing, h+10], center=true);
yrot(-ang) translate([0, 0, (h+5)/2])
cube(size=[w, d+backing, h+10], center=true);
translate([0, 0, h/2])
cube(size=[w, d+backing, h], center=true);
}
translate([0, (d+backing)/2+0.05, -0.05])
lock_tab(h=h, wall=wall, slop=-slop);
}
}
}
//!lock_slot(h=30, wall=2, slop=0.5);
// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 nowrap

View File

@@ -1,6 +1,7 @@
include <config.scad>
use <GDMUtils.scad>
use <joiners.scad>
use <tslot.scad>
module xy_joiner()