mirror of
https://github.com/revarbat/snappy-reprap.git
synced 2025-10-29 22:59:31 -07:00
Shortened extruder platform. Tweaked spool holder. Reduced facet counts. Moved side joiners to rail segments from motor segments.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
10516
STLs/xy_joiner_parts.stl
10516
STLs/xy_joiner_parts.stl
File diff suppressed because it is too large
Load Diff
33476
STLs/xy_sled_parts.stl
33476
STLs/xy_sled_parts.stl
File diff suppressed because it is too large
Load Diff
22690
STLs/yz_joiner_parts.stl
22690
STLs/yz_joiner_parts.stl
File diff suppressed because it is too large
Load Diff
22194
STLs/z_sled_parts.stl
22194
STLs/z_sled_parts.stl
File diff suppressed because it is too large
Load Diff
1
TODO.md
1
TODO.md
@@ -1,6 +1,5 @@
|
||||
TODO:
|
||||
====
|
||||
|
||||
- Screwless RAMPS motherboard mount.
|
||||
- Screwless mounts for limit switches.
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ use <joiners.scad>
|
||||
use <cable_chain.scad>
|
||||
|
||||
|
||||
$fa = 1;
|
||||
$fs = 1;
|
||||
$fa = 2;
|
||||
$fs = 2;
|
||||
|
||||
|
||||
module cable_chain_joiner_mount()
|
||||
|
||||
15
config.scad
15
config.scad
@@ -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;
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -3,8 +3,8 @@ use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
|
||||
|
||||
$fa = 1;
|
||||
$fs = 1.5;
|
||||
$fa = 2;
|
||||
$fs = 2;
|
||||
|
||||
h = 6;
|
||||
thick = 8;
|
||||
|
||||
@@ -3,7 +3,7 @@ use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
|
||||
|
||||
$fa = 1;
|
||||
$fa = 2;
|
||||
$fs = 2;
|
||||
|
||||
module extruder_fan_shroud()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
18
joiners.scad
18
joiners.scad
@@ -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]) {
|
||||
|
||||
@@ -3,8 +3,8 @@ use <GDMUtils.scad>
|
||||
use <acme_screw.scad>
|
||||
|
||||
|
||||
$fa = 1;
|
||||
$fs = 1;
|
||||
$fa = 2;
|
||||
$fs = 2;
|
||||
|
||||
module lifter_lock_nut()
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@ include <config.scad>
|
||||
use <GDMUtils.scad>
|
||||
use <acme_screw.scad>
|
||||
|
||||
$fa = 1;
|
||||
$fa = 2;
|
||||
$fs = 2;
|
||||
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -3,7 +3,7 @@ use <GDMUtils.scad>
|
||||
use <joiners.scad>
|
||||
|
||||
|
||||
$fa = 1;
|
||||
$fa = 2;
|
||||
$fs = 2;
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
2
wiki
Submodule wiki updated: d1755fcbc4...96538f6748
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user