Added stepper motors and motor mounts
This commit is contained in:
@@ -1,16 +1,24 @@
|
|||||||
use_colors = true;
|
use_colors = true;
|
||||||
|
|
||||||
xsize = 500;
|
xsize = 450;
|
||||||
ysize = 400;
|
ysize = 400;
|
||||||
sled_ysize = 5 * 25.4;
|
sled_ysize = 7 * 25.4;
|
||||||
sled_xsize = 6 * 25.4;
|
sled_xsize = 8 * 25.4;
|
||||||
|
|
||||||
cur_xpos = 250;
|
xmin = 155;
|
||||||
cur_ypos = 200;
|
ymin = 140;
|
||||||
|
// 130..320
|
||||||
|
cur_xpos = 155;
|
||||||
|
// 140..260
|
||||||
|
cur_ypos = 140;
|
||||||
|
|
||||||
|
echo(str("Range = ", [ xsize - xmin * 2, ysize - ymin*2 ]));
|
||||||
|
|
||||||
|
$fs = 1.5;
|
||||||
|
$include_substock = true;
|
||||||
|
|
||||||
include <parts.scad>;
|
include <parts.scad>;
|
||||||
|
|
||||||
|
|
||||||
csize = 15;
|
csize = 15;
|
||||||
|
|
||||||
module frame() {
|
module frame() {
|
||||||
@@ -31,12 +39,10 @@ module frame() {
|
|||||||
tslot(ysize - 2*corner_offset);
|
tslot(ysize - 2*corner_offset);
|
||||||
}
|
}
|
||||||
module corners() {
|
module corners() {
|
||||||
render() {
|
|
||||||
translate([0,0]) flcorner();
|
translate([0,0]) flcorner();
|
||||||
translate([xsize, 0, 0]) frcorner();
|
translate([xsize, 0, 0]) frcorner();
|
||||||
translate([xsize, ysize, 0]) brcorner();
|
translate([xsize, ysize, 0]) brcorner();
|
||||||
translate([0, ysize, 0]) blcorner();
|
translate([0, ysize, 0]) blcorner();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module rails() {
|
module rails() {
|
||||||
@@ -65,37 +71,29 @@ module ysled_rails() {
|
|||||||
|
|
||||||
module xsled() {
|
module xsled() {
|
||||||
xdiff = sled_xsize / 2 + frame_size / 2;
|
xdiff = sled_xsize / 2 + frame_size / 2;
|
||||||
*for(ypos = [-ysled_rail_spacing/2, ysled_rail_spacing/2]) {
|
|
||||||
translate([-xdiff, ypos, 0])
|
|
||||||
xsled_slider();
|
|
||||||
translate([xdiff, ypos, 0])
|
|
||||||
rotate([0,0,180])
|
|
||||||
xsled_slider();
|
|
||||||
}
|
|
||||||
|
|
||||||
translate([0, 0, frame_size])
|
translate([0, 0, frame_size])
|
||||||
xsled_frame();
|
xsled_frame();
|
||||||
|
}
|
||||||
|
|
||||||
|
module moving_parts(xpos = cur_xpos, ypos = cur_ypos) {
|
||||||
|
translate([frame_size / 2 + corner_size / 2,
|
||||||
|
cur_ypos, 0]) {
|
||||||
|
ysled_slider(spread = sled_ysize, associated_parts = true);
|
||||||
|
translate([xsize - frame_size - corner_size, 0, 0])
|
||||||
|
rotate([0, 180, 0])
|
||||||
|
ysled_slider(spread = sled_ysize, associated_parts = true);
|
||||||
|
ysled_rails();
|
||||||
|
|
||||||
|
}
|
||||||
|
translate([cur_xpos, cur_ypos, 0])
|
||||||
|
xsled();
|
||||||
}
|
}
|
||||||
|
|
||||||
union() {
|
union() {
|
||||||
frame();
|
frame();
|
||||||
rails();
|
rails();
|
||||||
corners();
|
corners();
|
||||||
|
moving_parts();
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([frame_size / 2 + corner_size / 2, cur_ypos, 0]) {
|
|
||||||
ysled_slider(spread = sled_ysize, associated_parts = true);
|
|
||||||
translate([xsize - frame_size - corner_size, 0, 0])
|
|
||||||
rotate([0, 180, 0])
|
|
||||||
ysled_slider(spread = sled_ysize, associated_parts = true);
|
|
||||||
ysled_rails();
|
|
||||||
|
|
||||||
translate([cur_xpos, 0, 0])
|
|
||||||
xsled();
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//translate([0, 0, -1000]) cube(2000, center=true);
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
60
parts.scad
60
parts.scad
@@ -114,12 +114,48 @@ module ysled_slider(spread, associated_parts = false) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module nema17_housing() {
|
||||||
|
hwidth = corner_size + frame_size + wall_thickness;
|
||||||
|
hheight = nema17_face + wall_thickness * 2;
|
||||||
|
hdepth = frame_size + wall_thickness * 2;
|
||||||
|
|
||||||
|
screw_dxy = 31 / 2;
|
||||||
|
translate([0,
|
||||||
|
-nema17_face/2 - frame_size/2 - wall_thickness,
|
||||||
|
0])
|
||||||
|
render()
|
||||||
|
difference() {
|
||||||
|
cube([hwidth, hheight, hdepth],
|
||||||
|
center=true);
|
||||||
|
|
||||||
|
translate([0,0,-2])
|
||||||
|
cube([nema17_face+1, nema17_face+1, hdepth],
|
||||||
|
center=true);
|
||||||
|
cylinder(d=23, frame_size);
|
||||||
|
|
||||||
|
for (x = [-screw_dxy, screw_dxy],
|
||||||
|
y = [-screw_dxy, screw_dxy])
|
||||||
|
translate([x, y, frame_size/2 + wall_thickness])
|
||||||
|
rotate([180, 0, 0]){
|
||||||
|
cylinder(d=5,h=3);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
module flcorner() {
|
module flcorner() {
|
||||||
translate([0, 0, 0])
|
|
||||||
rotate([0, 0, 0]) {
|
rotate([0, 0, 0]) {
|
||||||
corner_base();
|
corner_base();
|
||||||
rail_holder(false);
|
rail_holder(false);
|
||||||
}
|
}
|
||||||
|
translate([(corner_size-wall_thickness)/2, 0, 0])
|
||||||
|
nema17_housing();
|
||||||
|
translate([(corner_size - wall_thickness) / 2,
|
||||||
|
-nema17_face/2 - frame_size/2 - wall_thickness,
|
||||||
|
frame_size/2]) {
|
||||||
|
nema17();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module frcorner() {
|
module frcorner() {
|
||||||
@@ -127,6 +163,13 @@ module frcorner() {
|
|||||||
corner_base();
|
corner_base();
|
||||||
rail_holder(true);
|
rail_holder(true);
|
||||||
}
|
}
|
||||||
|
translate([-(corner_size-wall_thickness)/2, 0, 0])
|
||||||
|
nema17_housing();
|
||||||
|
translate([-(corner_size - wall_thickness) / 2,
|
||||||
|
-nema17_face/2 - frame_size/2 - wall_thickness,
|
||||||
|
frame_size/2]) {
|
||||||
|
nema17();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module blcorner() {
|
module blcorner() {
|
||||||
@@ -169,7 +212,7 @@ module xsled_slider() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
rotate([0, 90, 0])
|
rotate([0, 90, 0])
|
||||||
*bushing();
|
bushing();
|
||||||
}
|
}
|
||||||
|
|
||||||
module sled_cornera() {
|
module sled_cornera() {
|
||||||
@@ -211,5 +254,16 @@ module xsled_frame() {
|
|||||||
translate([-sled_xsize / 2, sled_ysize / 2, 0])
|
translate([-sled_xsize / 2, sled_ysize / 2, 0])
|
||||||
rotate([0,0,270])
|
rotate([0,0,270])
|
||||||
sled_cornerb();
|
sled_cornerb();
|
||||||
|
|
||||||
|
|
||||||
|
// simulate a piece of film
|
||||||
|
if (false) {
|
||||||
|
color("#0008")
|
||||||
|
cube([
|
||||||
|
5*inch,
|
||||||
|
4*inch,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
center=true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,10 @@
|
|||||||
stock_color = "lightgray";
|
stock_color = "#aaa4";
|
||||||
|
|
||||||
bushing_od = 12;
|
bushing_od = 12;
|
||||||
bushing_id = 8;
|
bushing_id = 8;
|
||||||
bushing_len = 8;
|
bushing_len = 8;
|
||||||
|
|
||||||
module bushing() {
|
nema17_face = 42.3;
|
||||||
colorize(stock_color) {
|
|
||||||
difference() {
|
|
||||||
cylinder(d = bushing_od, h = bushing_len);
|
|
||||||
translate([0,0,-1])
|
|
||||||
cylinder(d = bushing_id, h = bushing_len + 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module colorize(colorname) {
|
module colorize(colorname) {
|
||||||
if (use_colors) {
|
if (use_colors) {
|
||||||
@@ -21,3 +13,41 @@ module colorize(colorname) {
|
|||||||
children();
|
children();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module bushing() {
|
||||||
|
colorize(stock_color) render() {
|
||||||
|
difference() {
|
||||||
|
cylinder(d = bushing_od, h = bushing_len);
|
||||||
|
translate([0,0,-1])
|
||||||
|
cylinder(d = bushing_id, h = bushing_len + 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// located with the shaft in +z, face on the XY plane
|
||||||
|
module nema17(depth = 23.5) {
|
||||||
|
face = 42.3;
|
||||||
|
screw_pitch = 31 / 2;
|
||||||
|
color(stock_color)
|
||||||
|
render()
|
||||||
|
difference() {
|
||||||
|
union() {
|
||||||
|
translate([-face/2, -face/2, -depth])
|
||||||
|
cube([face, face, depth]);
|
||||||
|
translate([0,0,-1]) {
|
||||||
|
cylinder(d=22, h=2+1);
|
||||||
|
cylinder(d=5, h=22+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
translate([1.25, -5, 4])
|
||||||
|
cube([10, 10, 20]);
|
||||||
|
|
||||||
|
// screw holes
|
||||||
|
for (x = [-screw_pitch, screw_pitch],
|
||||||
|
y = [-screw_pitch, screw_pitch]) {
|
||||||
|
translate([x,y,-10])
|
||||||
|
cylinder(d=5,h=20);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user