Modified X carriage

pull/20/head
Carlos Garcia 2014-08-04 18:49:12 +02:00
parent 0f0777d065
commit 7f019d10b9
12 changed files with 127731 additions and 88051 deletions

View File

@ -42,7 +42,7 @@ axes_Zthreaded_rodLen = axes_Zsmooth_rodLen-20;
axes_Xsmooth_rodD = 8.5+animatePart(4,dist=5);
axes_Ysmooth_rodD = 8.5+animatePart(4,dist=5);
axes_Zsmooth_rodD = 8.3+animatePart(4,dist=5);
axes_Zsmooth_rodD = 8.2+animatePart(4,dist=5);
axes_Xthreaded_rodD = 8.5+animatePart(4,dist=5);
axes_Ythreaded_rodD = 8.5+animatePart(4,dist=5);
@ -53,11 +53,11 @@ axes_Zthreaded_rodD = 8.5+animatePart(4,dist=5);
// Y axis reference is the Y smooth rod end, BACK of RIGHT FRAME
// X axis reference is the frontal X smooth rod end, RIGHT FRAME
// Z axis reference is the Z threaded rod, at the height of the Z nut, and relative to the X reference
axes_Yreference_height = 42+animatePart(5);
axes_Xreference_height = 70+animatePart(6); // relative to Y reference
axes_Yreference_height = 40+animatePart(5);
axes_Xreference_height = 72+animatePart(6); // relative to Y reference
axes_Zreference_height = -3+animatePart(7)+animatePart(9); // relative to X reference
axes_Xreference_posY = -80-animatePart(8)-animatePart(9); // relative to Y reference. Moves the X axis towards the front of the machine
axes_Xreference_posY = -81-animatePart(8)-animatePart(9); // relative to Y reference. Moves the X axis towards the front of the machine
axes_Zreference_posY = 14; // relative to X reference. Positions Z rods between the Y rods
axes_Y_threaded_height = 30+animatePart(5);
@ -95,7 +95,7 @@ draw_references = true;
render_DXF_base = false;
render_DXF_workbed = false;
render_bases_outline = false; // Toggle for rendering outline DXFs
DXF_offset = 0.5; // Needed to adjust the tolerance of the laser cutter
DXF_offset = 0.4; // Needed to adjust the tolerance of the laser cutter
// Include Cyclone parts
include <Cyclone_X_carriage.scad>
@ -178,7 +178,7 @@ render_2D_or_3D() {
translate([axes_Xcarriage_pos,0,0]) {
if(draw_references) %frame();
Cyclone_X_carriage();
!Cyclone_X_carriage();
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) {

View File

@ -4,6 +4,7 @@
// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/)
// Designed with http://www.openscad.org/
use <libs/linear_bearing.scad>
module Cyclone_X_carriage() {
linearBearingModel = "LM8UU";
@ -15,59 +16,121 @@ module Cyclone_X_carriage() {
linearBearingSeparation = 0;
sideExtensions = linearBearingDiameter/3;
sideExtensions = linearBearingDiameter/3+2;
ZrodHolderLength = 30;
screwSize = 3; // M3, M4, etc (integers only)
screwLength = linearBearingDiameter+sideExtensions;
screwAditionalLength = 2;
screwExtension = screwSize*1.2;
linearBearingLengthExtension = 6+max(axes_Zsmooth_rodD+axes_Zsmooth_separation-2*linearBearingLength-linearBearingSeparation, linearBearingSeparation);
dimX = 2*linearBearingLength+linearBearingLengthExtension;
echo(str(axes_Xsmooth_separation-2*axes_ZthreadedReference_posY, "######################################################"));
module Cyclone_XsubPart_ZnutHolder(holes=false) {
rod_nut_len = 0.8*axes_Ythreaded_rodD;
rodTolerance = 0.5;
rodSize = 8; // M3, M4, etc (integers only)
washer_D = 15.8;
washer_thickness = 1.6;
dimZ = 10;
if(!holes) {
rotate([0,180,0])
hull() {
cylinder(r=axes_Zthreaded_rodD+1, h=dimZ);
translate([0,-axes_Zreference_posY-axes_ZthreadedReference_posY+axes_effective_Xsmooth_separation,dimZ/2])
cube([dimX,0.1,dimZ], center=true);
}
} else {
// Hole for the main Z nut
translate([0,0,0.1]) rotate([90,0,0]) hole_for_nut(size=rodSize,nutAddedLen=0,captiveLen=0,tolerance=0.1);
// Hole for the Z threaded rod
translate([0,0,-axes_effective_Xsmooth_separation+dimZ])
rotate([90,0,0]) standard_rod(diam=axes_Zthreaded_rodD+rodTolerance, length=axes_effective_Xsmooth_separation*2, threaded=true, renderPart=true, center=true);
translate([0,0,-dimZ-0.01]) rotate([180,0,0]) cylinder(r=axes_Zthreaded_rodD, h=axes_effective_Xsmooth_separation+dimZ, $fn=6);
}
}
difference() {
// color("lightblue") translate([-(axes_Zsmooth_separation+10)/2,-5,-5])
// cube([axes_Zsmooth_separation+10,axes_Xsmooth_separation+10,axes_Zreference_height+5]);
*color("lightblue") translate([-dimX/2,-5,-sideExtensions])
cube([dimX,axes_Xsmooth_separation+10,ZrodHolderLength]);
hull() {
rotate([0,90,0])
bcube([linearBearingDiameter,linearBearingDiameter+sideExtensions, dimX], cr=3, cres=5);// cylinder(r=linearBearingDiameter/2, h=dimX, center=true);
translate([0,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation])
// Main shape
union() {
hull() {
rotate([0,90,0])
bcube([linearBearingDiameter+sideExtensions,linearBearingDiameter, dimX], cr=3, cres=5);// cylinder(r=linearBearingDiameter/2, h=dimX, center=true);
bcube([linearBearingDiameter,linearBearingDiameter+sideExtensions, dimX], cr=3, cres=5);
translate([0,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation])
rotate([0,90,0])
bcube([linearBearingDiameter+sideExtensions,linearBearingDiameter, dimX], cr=3, cres=5);
}
translate([0,0,-screwExtension/2])
rotate([0,90,0])
bcube([linearBearingDiameter+screwExtension,linearBearingDiameter+sideExtensions, dimX], cr=3, cres=5);
translate([0,axes_effective_Xsmooth_separation+screwExtension/2,axes_effective_Xsmooth_separation])
rotate([0,90,0])
bcube([linearBearingDiameter+sideExtensions,linearBearingDiameter+screwExtension, dimX], cr=3, cres=5);
// Bottom right screw
translate([-linearBearingLength/2-linearBearingSeparation/2,0,-linearBearingDiameter/2-screwExtension/2])
rotate([90,0,0]) cylinder(r=screwSize*2,h=screwLength, center=true, $fn=6);
// Bottom left screw
translate([linearBearingLength/2+linearBearingSeparation/2,0,-linearBearingDiameter/2-screwExtension/2])
rotate([90,0,0]) cylinder(r=screwSize*2,h=screwLength, center=true, $fn=6);
// Top screw
translate([0,axes_effective_Xsmooth_separation+screwExtension/2+linearBearingDiameter/2,axes_effective_Xsmooth_separation])
cylinder(r=screwSize*2,h=screwLength, center=true, $fn=6);
// Z nut
translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation+(linearBearingDiameter+sideExtensions)/2])
Cyclone_XsubPart_ZnutHolder(holes=false);
}
// ----- Hole for the Z carriage space ------
difference() {
translate([-dimX/2-0.5,0,-sideExtensions+ZrodHolderLength])
cube([dimX+1,axes_effective_Xsmooth_separation-axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation]);
translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation+(linearBearingDiameter+sideExtensions)/2])
Cyclone_XsubPart_ZnutHolder(mainPart=true);
}
translate([-dimX/2-0.5,0,-sideExtensions+ZrodHolderLength])
cube([dimX+1,axes_effective_Xsmooth_separation-axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation]);
// ----- Holes for the linear bearings ------
// Bottom right linear bearing
translate([-linearBearingLength/2-linearBearingSeparation/2,0,0])
rotate([0,0,90]) linearBearingHole(model=linearBearingModel, lateralExtension=sideExtensions*2, lengthExtension=linearBearingLengthExtension);
rotate([0,0,90]) linearBearingHole(model=linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, lengthExtension=linearBearingLengthExtension);
// Bottom left linear bearing
translate([linearBearingLength/2+linearBearingSeparation/2,0,0])
rotate([0,0,90]) linearBearingHole(model=linearBearingModel, lateralExtension=sideExtensions*2, lengthExtension=linearBearingLengthExtension);
rotate([0,0,90]) linearBearingHole(model=linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, lengthExtension=linearBearingLengthExtension);
// Top linear bearing
translate([0,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation])
rotate([90,0,0]) rotate([0,0,90]) linearBearingHole(model=linearBearingModel, lateralExtension=sideExtensions*2, lengthExtension=linearBearingLength+linearBearingLengthExtension+linearBearingSeparation);
rotate([90,0,0]) rotate([0,0,90]) linearBearingHole(model=linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, lengthExtension=linearBearingLength+linearBearingLengthExtension+linearBearingSeparation);
// ----- Holes for the screws ------
// Bottom right screw
translate([-linearBearingLength/2-linearBearingSeparation/2,-screwLength/2-screwAditionalLength/2,-linearBearingDiameter/2-screwExtension/2])
rotate([0,0,180]) hole_for_screw(size=screwSize,length=screwLength+screwAditionalLength,nutDepth=0,nutAddedLen=0,captiveLen=0);
// Bottom left screw
translate([linearBearingLength/2+linearBearingSeparation/2,-screwLength/2-screwAditionalLength/2,-linearBearingDiameter/2-screwExtension/2])
rotate([0,0,180]) hole_for_screw(size=screwSize,length=screwLength+screwAditionalLength,nutDepth=0,nutAddedLen=0,captiveLen=0);
// Top screw
translate([0,axes_effective_Xsmooth_separation+screwExtension/2+linearBearingDiameter/2,axes_effective_Xsmooth_separation+screwLength/2+screwAditionalLength/2])
rotate([90,0,0]) hole_for_screw(size=screwSize,length=screwLength+screwAditionalLength,nutDepth=0,nutAddedLen=0,captiveLen=0);
// ----- Hole for the Z nut
translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation+(linearBearingDiameter+sideExtensions)/2])
Cyclone_XsubPart_ZnutHolder(holes=true);
// ----- Holes for the rods ------
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) {
if(draw_references) %frame();
// Z smooth rod (right)
rotate([90,0,0]) standard_rod(diam=axes_Zsmooth_rodD, length=axes_Zsmooth_rodLen, threaded=false, renderPart=true);
cylinder(r=axes_Zsmooth_rodD/2, h=axes_Zsmooth_rodLen);
// Z smooth rod (left)
translate([axes_Zsmooth_separation,0,0])
rotate([90,0,0]) standard_rod(diam=axes_Zsmooth_rodD, length=axes_Zsmooth_rodLen, threaded=false, renderPart=true);
// Z threaded rod
translate([axes_Zsmooth_separation/2,axes_ZthreadedReference_posY,0])
rotate([90,0,0]) standard_rod(diam=1.5*axes_Zthreaded_rodD, length=axes_Zthreaded_rodLen, threaded=true, renderPart=true);
cylinder(r=axes_Zsmooth_rodD/2, h=axes_Zsmooth_rodLen);
}
}
// Draw linear bearings
rotate([0,90,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
rotate([0,-90,0]) linearBearing_single(model=linearBearingModel, echoPart=true);

View File

@ -145,7 +145,7 @@ module motorHolesZ() {
// Screws for holding the motor
for(i=[-1,1]) for(j=[-1,1])
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,2.5-wall_thickness/2]) {
translate([i*motor_screw_distance/2,j*motor_screw_distance/2,2.5-wall_thickness/2+3]) {
hull() {
translate([0,motor_adjust_margin/2,0])
cylinder(r=motor_screw_diameter/2,h=10*wall_thickness,center=true,$fn=40);
@ -267,11 +267,8 @@ module Z_carriage(showSpindle=false,top_part=true, with_extra_parts=false, explo
// Hole for the threaded rod
if(!top_part) {
translate([-axes_Xsmooth_separation,0,0]) hull() {
cylinder(r=2+M8_rod_diameter/2,h=wall_thickness*10,center=true,$fn=30);
translate([-15,0,0])
cylinder(r=2+M8_rod_diameter/2,h=wall_thickness*10,center=true,$fn=30);
}
translate([-axes_Xsmooth_separation,0,0])
cylinder(r=6+M8_rod_diameter,h=wall_thickness*10,center=true,$fn=30);
}
// Truncation in the base for avoiding collision with the X axis

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