Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
added some new test parts for 2x outside rods to reduce gantry twisting
  • Loading branch information
iquizzle committed Dec 8, 2013
1 parent a90e545 commit 7eaa347
Show file tree
Hide file tree
Showing 2 changed files with 318 additions and 0 deletions.
167 changes: 167 additions & 0 deletions Variants/2xrod_mounts.scad
@@ -0,0 +1,167 @@
/*
* CAD file for the UConduit linear rod mounts. Y and Z included as options.
*
* Creative Commons Share Alike 3.0
* Copyright (c) 2013 David Lee Miller
*
*/

include <../ucon_config.scad>
use <../ucon_functions.scad>
use <MCAD/motors.scad>
use <MCAD/nuts_and_bolts.scad>
$fn=100;

///// Parameters to calculate rod locations

bearing1OD = 13+4; // xend 624 bearingOD w/ fender
bearing2OD = 22+4; // idler 608 bearingOD w/ fender
pulleyOD = 25.5; // motor pulleyOD (40 tooth)
nema17 = 42.3; // motor size
xoff = 10+1.5; // offset of the xend toward the conduit (add 1mm?)
zoff = 6.5; // offset parameter of the z rods away from conduit
bearing1H = 5; // xend 624 bearingH w/ fender
bearing2H = 7; // idler 608 bearingH w/ fender

//// Choose rod mounts (0=Y, 1=Z, 2=idler) ////
type = 0;

//////////////////////////////////////////////////

if (type == 0){
translate([0,0,0]) yRodMount(bearing=1);
translate([-35-2,0,0]) scale([-1,1,1]) yRodMount();
translate([-35-2,35+2,0]) scale([-1,-1,1]) yRodMount();
translate([0,35+2,0]) yRodMount(bearing=1);
}
else if (type == 1){
rotate([0,0,-45+180]) zRodMount();
translate([-5,35+16,0]) rotate([0,0,-40]) zRodMount(top=2);
translate([-50,0,0]) rotate([0,0,-45]) zRodMount();
translate([-45,55,0]) rotate([0,0,230]) zRodMount(top=2);
}
else{
translate([0,0,0]) rotate([0,0,0]) bearingFender();
translate([35,0,0]) rotate([0,0,0]) bearingFender();
}

module bearingFender(){
difference(){
union(){
cylinder(r=bearing2OD/2,h=bearing2H+9);
cylinder(r1=bearing2OD/2+2,r2=bearing2OD/2,h=4);
translate([0,0,bearing2H+9-4]) cylinder(r2=bearing2OD/2+2,r1=bearing2OD/2,h=4);}
cylinder(r=(bearing2OD-8)/2,h=100,center=true);
translate([0,0,2.01]) cylinder(r=(bearing2OD-4)/2,h=bearing2H+10);
}

difference(){
union(){
cylinder(r=6,h=2);
cylinder(r=8/2,h=16);
}
cylinder(r=2+0.2,h=36,center=true);
}
}

module yRodMount(bearing=0){ // bearing option creates a mount point for the idler
difference(){
union(){
translate([0,0,3]) quadflatFlange1(0,0,0,35.01,35,16,10); // basis flange
translate([0,0,-10/2]) linear_extrude(height=10)
difference(){
hull(){
square(35,center=true);
// align the motor pulley and xend bearing to rod center
translate([35/2+pulleyOD/2+bearing1OD/2+nema17/2-xoff,0,0])
square(12,center=true);
}

hull(){
square(25,center=true);
// align the motor pulley and xend to rod center
translate([35/2+pulleyOD/2+bearing1OD/2+nema17/2-xoff-12,0,0])
square(8,center=true);
}
// make hole for linear rod
translate([35/2+pulleyOD/2+bearing1OD/2+nema17/2-xoff,0,0])
circle(4,center=true);

// make slot for flex
translate([35/2+pulleyOD/2+bearing1OD/2+nema17/2-xoff+1,0,0])
square([12,1],center=true);

// remove excess
square(35.01,center=true);
}

if (bearing==1){
// align the idler mount
translate([35/2-pulleyOD/2+bearing2OD/2+nema17/2,-35/2+3,0])
cube([10,14,10],center=true);

// warning -- manually aligned, adds extra support via fillet radius
translate([35/2-pulleyOD/2+bearing2OD/2+nema17/2-10/2-4,-12.25-7.45,0]) rotate([0,0,17])
fillet(6,10);
translate([35/2-pulleyOD/2+bearing2OD/2+nema17/2+10/2+5.5,-8-5.8,0]) rotate([0,0,180-85])
fillet(6,10);
}
difference(){
translate([16.4,-12.5,-5]) cube([16,25,10]);
translate([35/2+pulleyOD/2+bearing1OD/2+nema17/2-xoff-22,0,0]) cylinder(r=4,h=20,center=true);
translate([27,0,0]) cube([12,1,20],center=true);
}
echo(35/2+pulleyOD/2+bearing1OD/2+nema17/2-xoff-26);
}


if (bearing==1){
translate([35/2-pulleyOD/2+bearing2OD/2+nema17/2,-35/2,0])
rotate([90,0,0]) cylinder(r=2+tolerance,h=30,center=true);
translate([35/2-pulleyOD/2+bearing2OD/2+nema17/2,-35/2+8,0])
rotate([90,0,0]) rotate([0,0,90]) nutSlot(12,tolerance);
}}}

module zRodMount(top=1){
difference(){
union(){
translate([0.005,-0.005,0]) rotate([0,0,45]) quadflatFlange1(0,0,0,35.01,35,10,10);
translate([0,0,-10/2]) linear_extrude(height=10)
difference(){
hull(){
rotate([0,0,45]) square(35,center=true);
// align the motor pulley and xend bearing to rod center
translate([1.41*35/2+zoff,0,0])
if(top==1){
square(12,center=true);
}
else{
square([12,12+8],center=true);
}
}

// make hole for linear rod
translate([1.41*35/2+zoff,0,0])
circle(4,center=true);

if(top==1){
// make slot for flex
translate([1.41*35/2+zoff+1,0,0])
square([12,1],center=true);
}
else{
translate([1.41*35/2+zoff,0,0])
square([1,32],center=true);
}

// remove excess
rotate([0,0,45]) square(35.01,center=true);
}
}
if(top==2){
translate([35/2+12,-7,0]) rotate([0,90,0]) cylinder(r=2+0.1,h=35,center=true);
translate([35/2+12,7,0]) rotate([0,90,0]) cylinder(r=2+0.1,h=35,center=true);
translate([35/2+6.5,7,0]) rotate([0,-90,0]) nutSlot(12,0.1);
translate([35/2+6.5,-7,0]) rotate([0,-90,0]) nutSlot(12,0.1);}
}}

151 changes: 151 additions & 0 deletions Variants/xends_2xmounts.scad
@@ -0,0 +1,151 @@
/*
* CAD file for the UConduit xends. 4 parts per xends, 4 624 bearings and 2 lm8uu's used.
*
* Creative Commons Share Alike 3.0
* Copyright (c) 2013 David Lee Miller
*
*/
include <../ucon_config.scad>
use <../ucon_functions.scad>
use <MCAD/motors.scad>
use <MCAD/nuts_and_bolts.scad>
$fn=100;


xoffset=10;
bearing624OD = 13;

translate([22,-16,-6]) xendA(option=1);
translate([-22,-16,-6]) xendA(option=2);
xendB();


module xendA(mode=1,option=1){
difference(){
cross_sectionA(option=option);
rotate([0,0,90]) rodsnbushings(mode=mode);
}
}

module cross_sectionA(option=2){
difference(){
linear_extrude(height=bushingL)
minkowski(){
union(){
translate([0,14.5-22/2,0]) square([13,45],center=true);
translate([-7,-0.5,bushingL/2+7.55]) circle(r=4);
translate([7,-0.5,bushingL/2+7.55]) circle(r=4);}
circle(r=3.05);
}
translate([-16/4-1,24/2+16/2+4,-0.1]) cylinder(r=2+0.05,h=bushingL+1,center=false);
translate([16/4+1,24/2+16/2+4,-0.1]) cylinder(r=2+0.05,h=bushingL+1,center=false);
translate([-10,20,bushingL/2+4]) cube([20,20,bushingL]);
if (option==1){
translate([-7.5,-0.5,bushingL/2+4.5]) rotate([180,0,0]) boltHole(4,length=30,tolerance=0.2);
translate([-7.5,-0.5,bushingL/2+9.25]) rotate([180,0,0]) cylinder(r=4.25,h=5);
translate([7.5,-0.5,bushingL/2+4.5]) rotate([180,0,0]) boltHole(4,length=30,tolerance=0.2);
translate([7.5,-0.5,bushingL/2+9.25]) rotate([180,0,0]) cylinder(r=4.25,h=5);
}
else{
translate([-7.5,-0.5,bushingL/2+4.15]) nutHole(4,tolerance=0.25);
translate([-7.5,-0.5,bushingL/2+9.25]) rotate([180,0,0]) cylinder(r=2.1,h=50);
translate([7.5,-0.5,bushingL/2+4.15]) nutHole(4,length=30,tolerance=0.25);
translate([7.5,-0.5,bushingL/2+9.25]) rotate([180,0,0]) cylinder(r=2.1,h=50);
}
}
}

module xendB(){
difference(){
rotate([0,90,0])
union(){
translate([0,0,11/2-0.001]) xendB_profile();
translate([0,0,-11/2]) rotate([0,180,0]) scale([-1,1,1]) xendB_profile();
}
bearing_clear();

//subtract the rod clamping pieces
translate([0,20,0]) cube([0.5,100,30],center=true);
translate([-8,25,6]) rotate([0,90,0]) boltHole(4,length=30,tolerance=0.1);
translate([-7,25,6]) rotate([0,90,0]) boltHole(4,length=30,tolerance=0.1);
translate([-8,25,6]) rotate([0,90,0]) cylinder(r=2+0.05,h=30);
translate([-7,42,4.5]) rotate([0,90,0]) boltHole(4,length=30,tolerance=0.1);
translate([-8,42,4.5]) rotate([0,90,0]) boltHole(4,length=30,tolerance=0.1);
translate([-8,42,4.5]) rotate([0,90,0]) cylinder(r=2+0.05,h=30);
translate([7,25,6]) rotate([0,-90,0]) nutSlot(10,0.1);
}
}


module bearing_clear(){
union(){
union(){
translate([-5.5,-2,3.55+8.9]) cube([11.1,bushingOD+5.1,bushingOD+4.1],center=true);
translate([-17.5+3.2,-2,8.55]) cube([17.5+0.01-11,bushingOD+5.1,bushingOD+13.1],center=true);
}
translate([0,-2,0]) rotate([0,0,180])
union(){
translate([-5.5,0,3.55+8.9]) cube([11.1,bushingOD+5.1,bushingOD+4.1],center=true);
translate([-17.5+3.2,0,8.55]) cube([17.5-11,bushingOD+5.1,bushingOD+13.1],center=true);
}
translate([0,4,-1]) rotate([0,90,0]) cylinder(r=2.05,h=100,center=true);
translate([0,-6,-1]) rotate([0,90,0]) cylinder(r=2.05,h=100,center=true);
}
}

module xendB_profile(){
difference(){
union(){
difference(){
cross_sectionB(11);
rotate([0,0,180]) translate([-6.5,-25,5.6]) rotate([90,0,0]) rotate([0,0,90]) fillet(4,12);
translate([-xoffset-8-12/2-2,0,0]) rotate([90,0,0]) cylinder(r=2,h=20,center=true);
translate([0,15,-11/2]) rotate([0,90,0]) cylinder(r=4+0.05,h=50,center=true);
translate([0,35,-11/2]) rotate([0,90,0]) cylinder(r=4+0.05,h=50,center=true);
}

translate([0,25+2+12/2,11/2+bearing624OD/2-0.01])
difference(){
rotate([0,0,180])
union(){
cube([12,4,bearing624OD],center=true);
translate([0,-2,-6.5-0.1]) rotate([0,90,0]) fillet(5,12);
}
translate([0,0,bearing624OD/2-4]) rotate([90,0,0]) cylinder(r=2,h=10,center=true);
}

translate([0,25-2-12/2,11/2+bearing624OD/2-0.01])
difference(){
union(){
cube([12,4,bearing624OD],center=true);
translate([0,-2,-6.5-0.1]) rotate([0,90,0]) fillet(5,12);
}
translate([0,0,bearing624OD/2-4]) rotate([90,0,0]) cylinder(r=2,h=10,center=true);
}
}
}
}

module cross_sectionB(thickness,minkwid=4.5){
translate([0,0,-thickness/4])
minkowski(){
linear_extrude(height=thickness/2)
translate([-3.5,18,0]) square([10,50],center=true);
cylinder(r=minkwid,h=thickness/2,center=true);
}
}

module rodsnbushings(mode=1){
translate([0,0,bushingL/2])
translate([12-1.5,0,0]) cylinder(r=bushingOD/2,h=bushingL+0.05,center=true);

translate([0,0,bushingL/2])
translate([12-1.5-22,0,0]) cylinder(r=bushingOD/2,h=bushingL+0.05,center=true);
}

module fillet(rad,height){
translate([-rad,-rad,0])
difference(){
translate([0,0,-height/2]) cube([rad+0.01,rad+0.01,height]);
cylinder(h=height+1,r=rad,center=true);
}}

0 comments on commit 7eaa347

Please sign in to comment.