Shortened extruder platform. Tweaked spool holder. Reduced facet counts. Moved side joiners to rail segments from motor segments.

This commit is contained in:
Revar Desmera
2015-08-24 17:02:55 -07:00
parent e11881cb48
commit 6b0f239780
53 changed files with 201804 additions and 340750 deletions

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,5 @@
TODO:
====
- Screwless RAMPS motherboard mount.
- Screwless mounts for limit switches.

View File

@@ -4,8 +4,8 @@ use <joiners.scad>
use <cable_chain.scad>
$fa = 1;
$fs = 1;
$fa = 2;
$fs = 2;
module cable_chain_joiner_mount()

View File

@@ -52,11 +52,14 @@ endstop_standoff = 2; // mm
// Mechanical endstop bare microswitch.
endstop_hole_spacing = 9.5; // mm
endstop_hole_inset = 8; // mm
endstop_hole_hoff = 10; // mm
endstop_click_voff = 3; // mm
endstop_hole_inset = 8.0; // mm
endstop_hole_hoff = 10.0; // mm
endstop_click_voff = 3.0; // mm
endstop_screw_size = 2.5; // mm
endstop_standoff = 2; // mm
endstop_standoff = 1.0; // mm
endstop_length = 19.9; // mm
endstop_thick = 6.7; // mm
endstop_depth = 11.0; // mm
// Standard Mk2b Heated Build Platform from RepRapDiscount.com
hbp_width = 215; // mm
@@ -88,7 +91,7 @@ jhead_groove_diam = 12.0; // mm
jhead_cap_height = 8.2; // mm
jhead_cap_diam = 12.0; // mm
extruder_length = 150.0; // mm
extruder_length = 130.0; // mm
extruder_thick = 5.0; // mm
extruder_shaft_len = 25.0; // mm
extruder_drive_diam = 12.5; // mm
@@ -132,7 +135,7 @@ printer_slop = 0.25; // mm
rail_spacing = platform_width - joiner_width*4 - 10;
rail_width = rail_spacing + joiner_width*2;
motor_mount_spacing=43+joiner_width+10;
side_mount_spacing = platform_length-25;
side_mount_spacing = platform_length+10*2;
cantilever_length = (motor_rail_length+2*rail_length+2*platform_length-2*rail_height-2*rail_length-extruder_length-groove_height)/2;
platform_z = rail_height+groove_height+rail_offset;
motor_top_z = platform_z-platform_thick-rack_base-rack_height-gear_base-2;

View File

@@ -3,10 +3,10 @@ use <GDMUtils.scad>
use <joiners.scad>
$fa = 1;
$fa = 2;
$fs = 2;
tilt = 15;
tilt = 18;
duct_h = cooling_duct_height - 8;
module cooling_fan_shroud()
@@ -19,6 +19,7 @@ module cooling_fan_shroud()
yrot(-tilt) {
difference() {
union() {
// Top joiner
difference() {
rotate([90+tilt, 0, 90]) {
prerender(convexity=8) {
@@ -29,18 +30,19 @@ module cooling_fan_shroud()
cube(rail_height, center=true);
}
}
down(6+duct_h/2) {
right((cooling_fan_size+2*wall)/2-rail_height/2/2+extruder_fan_size) {
difference() {
union() {
up((cooling_fan_thick+wall)/2) {
up((cooling_fan_thick)/2) {
difference() {
rrect([cooling_fan_size+2*wall, cooling_fan_size+2*wall, duct_h+cooling_fan_thick+wall], r=10, center=true);
rrect([cooling_fan_size+2*wall, cooling_fan_size+2*wall, duct_h+cooling_fan_thick], r=10, center=true);
up(duct_h/2+0.05) {
zrot(45) {
difference() {
cube([cooling_fan_size*3, cooling_fan_size*3, cooling_fan_thick+wall], center=true);
cube([cooling_fan_size, cooling_fan_size, cooling_fan_thick+wall], center=true);
cube([cooling_fan_size*3, cooling_fan_size*3, cooling_fan_thick], center=true);
cube([cooling_fan_size, cooling_fan_size, cooling_fan_thick], center=true);
}
}
}
@@ -48,20 +50,28 @@ module cooling_fan_shroud()
}
yrot(-90) zrot(90) teardrop(r=cooling_fan_size/2+wall, h=duct_h, ang=duct_ang);
}
// Clear fan clip
up((duct_h+cooling_fan_thick+wall)/2+0.05) {
trapezoid([cooling_fan_size, cooling_fan_size], [cooling_fan_size-0.5, cooling_fan_size-0.5], h=cooling_fan_thick+wall, center=true);
}
yrot(-90) zrot(90) teardrop(r=cooling_fan_size/2, h=duct_h-2*wall, ang=duct_ang);
// Clear horiz duct
yrot(-90) zrot(90) teardrop(r=cooling_fan_size/2, h=duct_h-wall, ang=duct_ang);
}
// support columns aroundvertical fan duct
zring(r=cooling_fan_size/2+wall/2+0.05, n=20) {
cube([wall, wall, duct_h], center=true);
}
}
// Sidways top support struts
intersection() {
right(8.5) {
up(duct_h/2-2/2) {
xspread(10,n=5) {
cube([2, cooling_fan_size, wall+0.6], center=true);
cube([2, cooling_fan_size, wall/2+0.6], center=true);
}
}
}
@@ -69,15 +79,19 @@ module cooling_fan_shroud()
yrot(-90) zrot(90) teardrop(r=cooling_fan_size/2+wall, h=duct_h, ang=duct_ang);
}
}
// duct supports
left(cooling_fan_size*2) {
zrot_copies([-3.4, 3.4]) {
right(cooling_fan_size*2) {
trapezoid([cooling_fan_size*2, wall], [cooling_fan_size*1.5, wall*2], h=duct_h-wall/2, center=true);
trapezoid([cooling_fan_size*2, wall], [cooling_fan_size*1.5, wall*2], h=duct_h, center=true);
}
}
}
}
}
// Truncate exit tip
left(rail_height/2/2) {
left(200/2) cube(200, center=true);
down(duct_h+6) {
@@ -86,15 +100,19 @@ module cooling_fan_shroud()
}
}
}
// Clear vertical fan duct
down(6+duct_h/2) {
right((cooling_fan_size+2*wall)/2-rail_height/2/2+extruder_fan_size) {
up((wall+cooling_fan_thick+wall)/2+0.05) {
cylinder(h=duct_h+cooling_fan_thick+wall-wall+0.05, d=cooling_fan_size, center=true);
cylinder(h=duct_h+cooling_fan_thick+wall+0.05, d=cooling_fan_size, center=true);
}
}
}
}
}
// Fan
yrot(-tilt) {
down(6+duct_h/2) {
right((cooling_fan_size+2*wall)/2-rail_height/2/2+extruder_fan_size) {

View File

@@ -3,8 +3,8 @@ use <GDMUtils.scad>
use <publicDomainGearV1.1.scad>
$fa = 1;
$fs = 1.5;
$fa = 2;
$fs = 2;
module drive_gear() {
shaft = motor_shaft_size + printer_slop;

View File

@@ -3,8 +3,8 @@ use <GDMUtils.scad>
use <joiners.scad>
$fa = 1;
$fs = 1.5;
$fa = 2;
$fs = 2;
h = 6;
thick = 8;

View File

@@ -3,7 +3,7 @@ use <GDMUtils.scad>
use <joiners.scad>
$fa = 1;
$fa = 2;
$fs = 2;
module extruder_fan_shroud()

View File

@@ -4,8 +4,8 @@ use <NEMA.scad>
use <joiners.scad>
$fa=1;
$fs=1;
$fa = 2;
$fs = 2;
width = extruder_shaft_len/2;
thick = 3;

View File

@@ -4,8 +4,8 @@ use <NEMA.scad>
use <joiners.scad>
$fa=1;
$fs=1;
$fa = 2;
$fs = 2;
thick = 6;
motor_width = nema_motor_width(17);

View File

@@ -211,7 +211,7 @@ module x_axis_slider_assembly(slidepos=0, explode=0, arrows=false)
platform_vert_off = rail_height+groove_height/2;
zrot(90) xy_motor_segment_assembly();
xspread(motor_rail_length+rail_length+2*explode) {
zring(r=(motor_rail_length+rail_length+2*explode)/2, n=2) {
zrot(90) rail_segment();
}
@@ -250,8 +250,10 @@ module y_axis_slider_assembly(slidepos=0, hide_endcaps=false, explode=0, arrows=
platform_vert_off = rail_height+groove_height/2;
xy_motor_segment_assembly();
yspread(motor_rail_length+rail_length+2*explode) {
rail_segment();
zrot(90) {
zring(r=(motor_rail_length+rail_length+2*explode)/2, n=2) {
zrot(90) rail_segment();
}
}
zrot(90) zring(r=(motor_rail_length+2*rail_length+4*explode)/2) {
if (hide_endcaps == false) {
@@ -418,8 +420,8 @@ module extruder_bridge_assembly(slidepos=0, explode=0, arrows=false)
back(extruder_length/2+rail_length+cantilever_length+2*explode)
down(platform_length/2-slidepos) {
extruder_assembly();
yspread(extruder_length+rail_length+2*explode) {
rail_segment();
zrot(90) zring(r=(extruder_length+rail_length+2*explode)/2, n=2) {
zrot(-90) rail_segment();
}
zrot(90) zring(r=(extruder_length+2*rail_length+2*cantilever_length+4*explode)/2) {
zrot(180) z_sled();

View File

@@ -4,7 +4,7 @@ use <NEMA.scad>
use <joiners.scad>
$fa = 1;
$fa = 2;
$fs = 2;
@@ -124,6 +124,8 @@ module jhead_platform()
h = rail_height;
thick = jhead_groove_thick;
motor_width = nema_motor_width(17);
idler_backside = (jhead_barrel_diam+8)/2+8;
idler_back_thick = 3;
color("SteelBlue")
prerender(convexity=10)
@@ -131,13 +133,14 @@ module jhead_platform()
difference() {
union() {
// Bottom.
up(thick/2)
up(thick/2) {
cube(size=[w, l, thick], center=true);
}
// Walls.
xspread(rail_spacing+joiner_width) {
up(h/6) {
cube(size=[joiner_width, l/2-5, h/3], center=true);
cube(size=[joiner_width, l/3-5, h/3], center=true);
}
}
@@ -163,25 +166,16 @@ module jhead_platform()
// Wall Triangles
zring(n=2) {
xflip_copy() {
up(h/2) {
fwd(l/2-l/6-10+0.05) {
up((h+groove_height)/2) {
fwd(l/2-l/2/2-0+0.05) {
right((rail_spacing+joiner_width)/2) {
thinning_brace(h=h, l=l/3, thick=joiner_width, strut=5);
thinning_brace(h=h+groove_height, l=l/2, thick=joiner_width, strut=groove_height/sqrt(2));
}
}
}
}
}
// Side support walls
yspread(l-2*10+4) {
up(h/5/2) {
difference() {
cube([w, 4, h/5], center=true);
}
}
}
// Jhead base
fwd(extruder_shaft_len/4/2) {
up((jhead_shelf_thick+jhead_groove_thick)/2) {
@@ -196,7 +190,7 @@ module jhead_platform()
// Lower idler mount block
up(jhead_groove_thick+jhead_shelf_thick) {
left((jhead_barrel_diam+8)/2+6) {
xspread(jhead_barrel_diam+8+9) {
up(5/2) {
fwd(2/2) {
cube([15, extruder_shaft_len/2+2, 5], center=true);
@@ -304,7 +298,7 @@ module jhead_platform()
}
// Wire access slot
back(extruder_length/7) {
back(extruder_length/4-extruder_fan_size/2+8/2) {
hull() {
xspread(w*0.5) {
cylinder(h=jhead_shelf_thick+jhead_groove_thick+1, d=8, center=true);
@@ -314,26 +308,15 @@ module jhead_platform()
}
// Bottom idler holder
backside = (jhead_barrel_diam+8)/2+8;
up(jhead_groove_thick+3+printer_slop/2) {
left(backside-3) {
yrot_copies([0,-10]) {
difference() {
union() {
yrot(-45) {
xrot(90) cylinder(h=extruder_shaft_len/2+printer_slop, r=3+printer_slop/2, center=true);
up(3+printer_slop) {
cube([2*3+printer_slop, extruder_shaft_len/2+printer_slop, 2*3+printer_slop], center=true);
}
xflip_copy() {
up(jhead_groove_thick+idler_back_thick+printer_slop/2) {
left(idler_backside-idler_back_thick) {
teardrop(r=idler_back_thick+printer_slop/2, h=extruder_shaft_len/2+printer_slop/2, ang=40, $fs=1);
yrot_copies([0,-8]) {
left((idler_back_thick+printer_slop/2)/2) {
up(50/2) {
cube([idler_back_thick+printer_slop/2, extruder_shaft_len/2+printer_slop/2, 50], center=true);
}
left(3+printer_slop/2) {
up(motor_width/2) {
cube([2*3+printer_slop, extruder_shaft_len/2+printer_slop, motor_width], center=true);
}
}
}
left(3+printer_slop/2+(extruder_shaft_len+1)/2) {
cube(extruder_shaft_len+1, center=true);
}
}
}

View File

@@ -24,7 +24,7 @@ module half_joiner_clear(h=20, w=10, a=30, clearance=0)
module half_joiner(h=20, w=10, l=10, a=30, screwsize=3, guides=true, slop=printer_slop)
module half_joiner(h=20, w=10, l=10, a=30, screwsize=undef, guides=true, slop=printer_slop)
{
dmnd_height = h*1.0;
dmnd_width = dmnd_height*tan(a);
@@ -58,10 +58,12 @@ module half_joiner(h=20, w=10, l=10, a=30, screwsize=3, guides=true, slop=printe
// Guide ridges.
if (guides == true) {
grid_of(xa=[-(w/6-slop), (w/6-slop)]) {
xspread(w/3-slop*2) {
// Guide ridge.
scale([0.75, 1, 2]) yrot(45)
cube(size=[guide_size/sqrt(2), guide_width, guide_size/sqrt(2)], center=true);
fwd(0.05/2) {
scale([0.75, 1, 2]) yrot(45)
cube(size=[guide_size/sqrt(2), guide_width+0.05, guide_size/sqrt(2)], center=true);
}
// Snap ridge.
scale([0.25, 0.5, 1]) zrot(45)
@@ -80,7 +82,7 @@ module half_joiner(h=20, w=10, l=10, a=30, screwsize=3, guides=true, slop=printe
module half_joiner2(h=20, w=10, l=10, a=30, screwsize=3, guides=true)
module half_joiner2(h=20, w=10, l=10, a=30, screwsize=undef, guides=true)
{
difference() {
union () {
@@ -102,7 +104,7 @@ module half_joiner2(h=20, w=10, l=10, a=30, screwsize=3, guides=true)
module joiner(h=40, w=10, l=10, a=30, screwsize=3, guides=true, slop=printer_slop)
module joiner(h=40, w=10, l=10, a=30, screwsize=undef, guides=true, slop=printer_slop)
{
union() {
translate([0,0,h/4])
@@ -125,7 +127,7 @@ module joiner_clear(h=40, w=10, a=30, clearance=0)
module joiner_pair(spacing=100, h=40, w=10, l=10, a=30, screwsize=3, guides=true)
module joiner_pair(spacing=100, h=40, w=10, l=10, a=30, screwsize=undef, guides=true)
{
yrot_copies([0,180]) {
translate([spacing/2, 0, 0]) {
@@ -149,7 +151,7 @@ module joiner_pair_clear(spacing=100, h=40, w=10, a=30, clearance=0)
module joiner_quad(xspacing=100, yspacing=50, h=40, w=10, l=10, a=30, screwsize=3, guides=true)
module joiner_quad(xspacing=100, yspacing=50, h=40, w=10, l=10, a=30, screwsize=undef, guides=true)
{
zrot_copies([0,180]) {
translate([0, yspacing/2, 0]) {

View File

@@ -3,8 +3,8 @@ use <GDMUtils.scad>
use <acme_screw.scad>
$fa = 1;
$fs = 1;
$fa = 2;
$fs = 2;
module lifter_lock_nut()
{

View File

@@ -2,7 +2,7 @@ include <config.scad>
use <GDMUtils.scad>
use <acme_screw.scad>
$fa = 1;
$fa = 2;
$fs = 2;

View File

@@ -4,15 +4,16 @@ use <NEMA.scad>
use <joiners.scad>
$fa=1;
$fs=1;
$fa = 2;
$fs = 2;
module motor_mount_plate()
{
l = motor_length/2;
thick = 4;
thick = 6;
motor_width = nema_motor_width(17);
clip_wall = 2;
color("Teal")
prerender(convexity=10)
@@ -20,7 +21,9 @@ module motor_mount_plate()
union() {
up(l) {
difference() {
cube(size=[motor_mount_spacing+joiner_width, rail_height, thick], center=true);
down(thick/2-2) {
cube(size=[motor_mount_spacing+joiner_width, rail_height, thick], center=true);
}
zrot(90) nema17_mount_holes(depth=thick+1, l=0, slop=printer_slop);
down(l) cube([motor_width, motor_width, motor_length], center=true);
}
@@ -29,44 +32,46 @@ module motor_mount_plate()
// Joiners
xrot(-90) joiner_pair(spacing=motor_mount_spacing, h=rail_height, w=joiner_width, l=l, a=joiner_angle);
// Standoffs
zrot_copies([0, 180]) {
right(motor_mount_spacing/2+joiner_width/2+endstop_standoff/2-0.05) {
up(l+thick/2-endstop_hole_inset) {
right((motor_mount_spacing+joiner_width)/2) {
up(l+thick/2-2/2) {
fwd(endstop_hole_hoff) {
yspread(endstop_hole_spacing) {
difference() {
yrot(90) {
cylinder(
r1=endstop_screw_size*1.1/2/cos(30)+1+endstop_standoff,
r2=endstop_screw_size*1.1/2/cos(30)+1,
h=endstop_standoff+0.05,
center=true,
$fn=24
);
}
up(endstop_hole_inset+endstop_screw_size) {
cube(size=[endstop_standoff+2, endstop_screw_size*4, endstop_screw_size*2], center=true);
}
}
}
}
}
}
}
}
zrot_copies([0, 180]) {
right(motor_mount_spacing/2+endstop_standoff/2-0.05) {
up(l+thick/2-endstop_hole_inset) {
fwd(endstop_hole_hoff) {
yspread(endstop_hole_spacing) {
yrot(90) cylinder(r=endstop_screw_size*1.1/2, h=joiner_width+endstop_standoff+0.1, center=true, $fn=18);
left(joiner_width/2+1.1) {
scale([1.1, 1.1, 1.1]) {
yrot(90) zrot(90) metric_nut(size=endstop_screw_size, hole=false);
// limit switch clips
down(endstop_depth/2) {
right(endstop_standoff/2-0.05/2) {
cube([endstop_standoff+0.05, endstop_length+2*clip_wall, endstop_depth], center=true);
down(endstop_depth/2+clip_wall/2) {
trapezoid([2, endstop_length+2*clip_wall], [endstop_standoff+3, endstop_length+2*clip_wall], h=clip_wall, center=true);
}
}
right(endstop_standoff) {
right((endstop_thick+clip_wall-0.05)/2) {
yflip_copy() {
fwd((endstop_length+clip_wall)/2) {
cube([endstop_thick+clip_wall+0.05, clip_wall, endstop_depth], center=true);
// Clip ridge
right(endstop_thick/2) {
back_half() {
yrot(90) trapezoid([endstop_depth, clip_wall+1], [endstop_depth, clip_wall], h=clip_wall, center=true);
}
}
}
}
}
}
}
// limit switch snap bumps
down(endstop_hole_inset) {
right(endstop_standoff) {
yspread(endstop_hole_spacing) {
scale([0.5,1,1]) sphere(d=endstop_screw_size, center=true, $fn=12);
}
}
}
}
}
}
@@ -80,9 +85,11 @@ module motor_mount_plate()
module motor_mount_plate_parts() { // make me
up(motor_length/2+2) {
xspread(55, n=2) {
yspread(80, n=2) {
zrot(90) yrot(180) motor_mount_plate();
yspread(55) {
zring(r=85/2, n=2) {
back(-3.5) {
yrot(180) motor_mount_plate();
}
}
}
}

View File

@@ -6,6 +6,7 @@ use <joiners.scad>
module rail_segment()
{
fillet = 1;
side_joiner_len = 10;
color([0.9, 0.7, 1.0])
prerender(convexity=20)
@@ -46,6 +47,19 @@ module rail_segment()
}
}
}
// Side half joiners
up(rail_height/2/2) {
back(rail_length/2-10) {
zring(r=rail_spacing/2+joiner_width+side_joiner_len, n=2) {
zrot(-90) {
chamfer(chamfer=3, size=[joiner_width, 2*(side_joiner_len+joiner_width/2), rail_height/2], edges=[[0,0,0,0], [1,1,0,0], [0,0,0,0]]) {
half_joiner2(h=rail_height/2, w=joiner_width, l=side_joiner_len+joiner_width/2, a=joiner_angle);
}
}
}
}
}
}
// Rail grooves.

View File

@@ -21,15 +21,18 @@ module rail_xy_motor_segment()
union() {
yrot(90)
sparse_strut(h=rail_width, l=motor_rail_length, thick=rail_thick, maxang=45, strut=10, max_bridge=500);
up((motor_top_z-motor_length+4-rail_thick)/2) {
cube(size=[motor_mount_spacing+joiner_width, 30+20, motor_top_z-motor_length+4], center=true);
up((motor_top_z-motor_length+6-rail_thick)/2) {
cube(size=[motor_mount_spacing+joiner_width, 30+20, motor_top_z-motor_length+6], center=true);
}
}
cube(size=[motor_mount_spacing-joiner_width, 30, motor_length], center=true);
cube(size=[motor_mount_spacing-joiner_width, 20, motor_length], center=true);
// Clearance for NEMA17 stepper motor
up(motor_top_z-rail_thick/2) {
down(motor_length/2) cube(size=[motor_width, motor_width, motor_length], center=true);
down(motor_length/2) {
cube(size=[motor_width, motor_width, motor_length], center=true);
cube(size=[20, motor_rail_length/2+10, motor_length], center=true);
}
}
}
}
@@ -115,26 +118,12 @@ module rail_xy_motor_segment()
joiner_quad_clear(xspacing=rail_spacing+joiner_width, yspacing=motor_rail_length, h=rail_height, w=joiner_width, clearance=5, a=joiner_angle);
}
// Clear space for side mount joiners.
zring(r=0,n=2) {
right(rail_width/2-5) {
up(rail_height/2/2) {
right(side_joiner_len+joiner_width/2) {
left(platform_length/4) {
zrot(-90) half_joiner_clear(h=rail_height/2, w=joiner_width, l=side_joiner_len, a=joiner_angle);
}
right(platform_length/4) {
zrot(-90) half_joiner_clear(h=rail_height/2, w=joiner_width, l=side_joiner_len, a=joiner_angle, slop=printer_slop);
}
}
}
}
}
// Side wiring access hole
up(10/2+rail_thick) {
xspread(rail_width-joiner_width) {
cube(size=[joiner_width+1, 16, 10], center=true);
yspread(motor_rail_length-2*30) {
cube(size=[joiner_width+1, 16, 10], center=true);
}
}
}
}
@@ -143,30 +132,6 @@ module rail_xy_motor_segment()
up(rail_height/2) {
joiner_quad(xspacing=rail_spacing+joiner_width, yspacing=motor_rail_length, h=rail_height, w=joiner_width, l=13, a=joiner_angle);
}
// Side mount joiners.
zring(n=2) {
right(rail_width/2-5) {
up(rail_height/2/2) {
right(side_joiner_len+joiner_width/2) {
fwd(side_mount_spacing/2) {
zrot(-90) {
chamfer(chamfer=joiner_width/3, size=[joiner_width, side_joiner_len*4, rail_height/2], edges=[[0,0,0,0], [1,1,0,0], [0,0,0,0]]) {
half_joiner2(h=rail_height/2, w=joiner_width, l=side_joiner_len+joiner_width/2, a=joiner_angle);
}
}
}
back(side_mount_spacing/2) {
zrot(-90) {
chamfer(chamfer=joiner_width/3, size=[joiner_width, side_joiner_len*4, rail_height/2], edges=[[0,0,0,0], [1,1,0,0], [0,0,0,0]]) {
half_joiner2(h=rail_height/2, w=joiner_width, l=side_joiner_len+joiner_width/2, a=joiner_angle, slop=printer_slop);
}
}
}
}
}
}
}
}
}
//!rail_xy_motor_segment();

View File

@@ -128,19 +128,6 @@ module rail_z_motor_segment()
up(rail_height/2) {
joiner_quad(xspacing=rail_spacing+joiner_width, yspacing=motor_rail_length+0.05, h=rail_height, w=joiner_width, l=13, a=joiner_angle);
}
// Side mount joiners.
up(rail_height/2/2) {
back(side_mount_spacing/2) {
xflip_copy() {
right(rail_width/2+side_joiner_len) {
zrot(-90) {
half_joiner2(h=rail_height/2, w=joiner_width, l=side_joiner_len+joiner_width/2, a=joiner_angle);
}
}
}
}
}
}
}
//!rail_z_motor_segment();

View File

@@ -3,7 +3,7 @@ use <GDMUtils.scad>
use <joiners.scad>
$fa = 1;
$fa = 2;
$fs = 2;

View File

@@ -3,7 +3,7 @@ use <GDMUtils.scad>
use <joiners.scad>
$fa = 1;
$fa = 2;
$fs = 2;
@@ -14,7 +14,7 @@ board_thick = 50.0; // mm
// l = board_length + rail_height + 5;
l = board_length + 5;
l = board_length + 10;
joiner_length = board_thick + rail_thick;
@@ -53,7 +53,7 @@ module ramps_mount() {
// Motherboard standoffs
fwd(joiner_length-10/2) {
up(l/2) {
up(l/2+5/2) {
xspread(board_width) {
cube([5, rail_thick+10, 10], center=true);
}
@@ -65,7 +65,7 @@ module ramps_mount() {
}
// Motherboard clip clearance
up(l/2) {
up(l/2+5/2) {
fwd(joiner_length-10/2-2) {
xrot(-90) trapezoid([board_width, board_length], [board_width-0.5, board_length-0.5], h=10);
}

View File

@@ -3,8 +3,8 @@ use <GDMUtils.scad>
use <joiners.scad>
$fa = 1;
$fs = 1.5;
$fa = 2;
$fs = 2;
module spool_holder()
{
@@ -29,6 +29,12 @@ module spool_holder()
}
}
}
top_half() {
right(rail_height/2) {
yrot(90) trapezoid([spool_holder_length/2, joiner_width], [10, joiner_width], h=groove_height);
}
}
}
// Back joiner

2
wiki

Submodule wiki updated: d1755fcbc4...96538f6748

View File

@@ -27,11 +27,11 @@ module xy_joiner()
// Snap-tab joiners.
intersection() {
union() {
translate([0,0,-platform_height/2]) {
down(platform_height/2) {
joiner_pair(spacing=platform_width-joiner_width, h=platform_height, w=joiner_width, l=joiner_length, a=joiner_angle);
}
translate([0,0,rail_height/4]) {
grid_of(count=2, spacing=platform_width-joiner_width) {
up(rail_height/4) {
xspread(platform_width-joiner_width) {
half_joiner2(h=rail_height/2, w=joiner_width, l=joiner_length, a=joiner_angle);
}
}
@@ -47,12 +47,7 @@ module xy_joiner()
back(hoff) {
difference() {
up(rail_height/2/2) {
right(side_mount_spacing/2) {
chamfer(chamfer=3, size=[joiner_width, 2*(hoff+joiner_length), rail_height/2], edges=[[0,0,0,0], [1,1,0,0], [0,0,0,0]]) {
half_joiner(h=rail_height/2, w=joiner_width, l=hoff+joiner_length, a=joiner_angle);
}
}
left(side_mount_spacing/2) {
xspread(side_mount_spacing) {
chamfer(chamfer=3, size=[joiner_width, 2*(hoff+joiner_length), rail_height/2], edges=[[0,0,0,0], [1,1,0,0], [0,0,0,0]]) {
half_joiner(h=rail_height/2, w=joiner_width, l=hoff+joiner_length, a=joiner_angle, slop=printer_slop);
}
@@ -60,7 +55,7 @@ module xy_joiner()
}
up(rail_height/2/2) {
fwd((hoff+joiner_width)/2) {
cube([side_mount_spacing+2*joiner_width, 15, 10], center=true);
cube([side_mount_spacing+2*joiner_width, hoff*3/4, 10], center=true);
}
}
}

View File

@@ -4,8 +4,8 @@ use <joiners.scad>
use <publicDomainGearV1.1.scad>
$fa = 1;
$fs = 1.5;
$fa = 2;
$fs = 2;
module herringbone_rack(l=100, h=10, w=10, tooth_size=5, CA=30)
{
@@ -93,7 +93,8 @@ module xy_sled()
yspread(platform_length-slider_len-15, n=1) {
up(rail_offset+groove_height/2) {
translate([-joiner_width/2, 0, 0]) {
circle_of(n=2, r=joiner_width/2+printer_slop, rot=true) {
circle_of(n=2, r=joiner_width/2+printer_slop/2, rot=true) {
// Slider base
translate([15/2-9, 0, -groove_height-printer_slop]) {
difference() {

View File

@@ -28,11 +28,11 @@ module yz_joiner()
back(rail_thick/2) {
zrot(90) {
if (wall_style == "crossbeams")
sparse_strut(h=rail_height+groove_height, l=rail_width-joiner_width, thick=rail_thick, strut=5);
sparse_strut(h=rail_height+groove_height, l=rail_width-joiner_width/2, thick=rail_thick, strut=5);
if (wall_style == "thinwall")
thinning_wall(h=rail_height+groove_height, l=rail_width-joiner_width, thick=rail_thick, strut=rail_thick, bracing=true);
thinning_wall(h=rail_height+groove_height, l=rail_width-joiner_width/2, thick=rail_thick, strut=rail_thick, bracing=true);
if (wall_style == "corrugated")
corrugated_wall(h=rail_height+groove_height, l=rail_width-joiner_width, thick=rail_thick, strut=rail_thick, wall=3);
corrugated_wall(h=rail_height+groove_height, l=rail_width-joiner_width/2, thick=rail_thick, strut=rail_thick, wall=3);
}
}
}
@@ -47,7 +47,7 @@ module yz_joiner()
sparse_strut(l=platform_length-joiner_length+1, h=rail_height+rail_thick, thick=joiner_width, strut=5);
if (wall_style == "thinwall")
up((rail_height+rail_thick)/2)
thinning_wall(l=platform_length-joiner_length+1, h=rail_height+rail_thick, thick=joiner_width, strut=rail_thick, bracing=true);
thinning_wall(l=platform_length-joiner_length+1, h=rail_height+rail_thick, thick=joiner_width, strut=rail_thick, bracing=false);
if (wall_style == "corrugated")
up(rail_height/2)
corrugated_wall(l=platform_length-joiner_length+1, h=rail_height, thick=joiner_width, strut=rail_thick, wall=3);
@@ -93,6 +93,11 @@ module yz_joiner()
translate([0, rail_height/2, rail_height+groove_height+0.05]) {
xrot(90) joiner_pair_clear(spacing=rail_spacing+joiner_width, h=rail_height, w=joiner_width+0.001, clearance=5, a=joiner_angle);
}
// Wiring access hole
up(rail_thick+rail_height/4/2) {
cube([16, joiner_width*3, rail_height/4], center=true);
}
}
// Front joiners.

View File

@@ -4,8 +4,8 @@ use <joiners.scad>
use <acme_screw.scad>
$fa = 1;
$fs = 1.5;
$fa = 2;
$fs = 2;
module z_sled()
{
@@ -58,7 +58,7 @@ module z_sled()
fwd(10/2) {
yspread(platform_length-slider_len-10, n=1) {
up(groove_height/2+offcenter) {
zring(n=2, r=joiner_width/2+printer_slop+2) {
zring(n=2, r=joiner_width/2+printer_slop/2+2) {
xs = 1 + 4/(groove_height*tan(groove_angle));
scale([xs*tan(groove_angle),1,xs]) {
difference() {
@@ -111,17 +111,6 @@ module z_sled()
}
}
// Side joiners
xflip_copy() {
up(rail_height/2/2) {
back(joiner_width/2) {
right((platform_width-5)/2) {
zrot(-90) half_joiner2(h=rail_height/2, w=joiner_width, clearance=5, a=joiner_angle, slop=printer_slop);
}
}
}
}
up(offcenter+groove_height+platform_thick-2) {
difference() {
union() {