Modified X carriage
parent
0f0777d065
commit
7f019d10b9
|
@ -42,7 +42,7 @@ axes_Zthreaded_rodLen = axes_Zsmooth_rodLen-20;
|
||||||
|
|
||||||
axes_Xsmooth_rodD = 8.5+animatePart(4,dist=5);
|
axes_Xsmooth_rodD = 8.5+animatePart(4,dist=5);
|
||||||
axes_Ysmooth_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_Xthreaded_rodD = 8.5+animatePart(4,dist=5);
|
||||||
axes_Ythreaded_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
|
// 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
|
// 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
|
// 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_Yreference_height = 40+animatePart(5);
|
||||||
axes_Xreference_height = 70+animatePart(6); // relative to Y reference
|
axes_Xreference_height = 72+animatePart(6); // relative to Y reference
|
||||||
axes_Zreference_height = -3+animatePart(7)+animatePart(9); // relative to X 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_Zreference_posY = 14; // relative to X reference. Positions Z rods between the Y rods
|
||||||
|
|
||||||
axes_Y_threaded_height = 30+animatePart(5);
|
axes_Y_threaded_height = 30+animatePart(5);
|
||||||
|
@ -95,7 +95,7 @@ draw_references = true;
|
||||||
render_DXF_base = false;
|
render_DXF_base = false;
|
||||||
render_DXF_workbed = false;
|
render_DXF_workbed = false;
|
||||||
render_bases_outline = false; // Toggle for rendering outline DXFs
|
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 parts
|
||||||
include <Cyclone_X_carriage.scad>
|
include <Cyclone_X_carriage.scad>
|
||||||
|
@ -178,7 +178,7 @@ render_2D_or_3D() {
|
||||||
translate([axes_Xcarriage_pos,0,0]) {
|
translate([axes_Xcarriage_pos,0,0]) {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
Cyclone_X_carriage();
|
!Cyclone_X_carriage();
|
||||||
|
|
||||||
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
|
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
|
||||||
translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) {
|
translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) {
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
// License: CC BY-SA 4.0 (Attribution-ShareAlike 4.0 International, http://creativecommons.org/licenses/by-sa/4.0/)
|
// 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/
|
// Designed with http://www.openscad.org/
|
||||||
|
|
||||||
|
|
||||||
use <libs/linear_bearing.scad>
|
use <libs/linear_bearing.scad>
|
||||||
module Cyclone_X_carriage() {
|
module Cyclone_X_carriage() {
|
||||||
linearBearingModel = "LM8UU";
|
linearBearingModel = "LM8UU";
|
||||||
|
@ -15,42 +16,108 @@ module Cyclone_X_carriage() {
|
||||||
|
|
||||||
linearBearingSeparation = 0;
|
linearBearingSeparation = 0;
|
||||||
|
|
||||||
sideExtensions = linearBearingDiameter/3;
|
sideExtensions = linearBearingDiameter/3+2;
|
||||||
|
|
||||||
ZrodHolderLength = 30;
|
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);
|
linearBearingLengthExtension = 6+max(axes_Zsmooth_rodD+axes_Zsmooth_separation-2*linearBearingLength-linearBearingSeparation, linearBearingSeparation);
|
||||||
|
|
||||||
dimX = 2*linearBearingLength+linearBearingLengthExtension;
|
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() {
|
difference() {
|
||||||
// color("lightblue") translate([-(axes_Zsmooth_separation+10)/2,-5,-5])
|
// Main shape
|
||||||
// cube([axes_Zsmooth_separation+10,axes_Xsmooth_separation+10,axes_Zreference_height+5]);
|
union() {
|
||||||
*color("lightblue") translate([-dimX/2,-5,-sideExtensions])
|
hull() {
|
||||||
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])
|
|
||||||
rotate([0,90,0])
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([-dimX/2-0.5,0,-sideExtensions+ZrodHolderLength])
|
// ----- Hole for the Z carriage space ------
|
||||||
cube([dimX+1,axes_effective_Xsmooth_separation-axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation]);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
// ----- Holes for the linear bearings ------
|
// ----- Holes for the linear bearings ------
|
||||||
// Bottom right linear bearing
|
// Bottom right linear bearing
|
||||||
translate([-linearBearingLength/2-linearBearingSeparation/2,0,0])
|
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
|
// Bottom left linear bearing
|
||||||
translate([linearBearingLength/2+linearBearingSeparation/2,0,0])
|
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
|
// Top linear bearing
|
||||||
translate([0,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation])
|
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 ------
|
// ----- Holes for the rods ------
|
||||||
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
|
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
|
||||||
|
@ -58,16 +125,12 @@ module Cyclone_X_carriage() {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
// Z smooth rod (right)
|
// 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)
|
// Z smooth rod (left)
|
||||||
translate([axes_Zsmooth_separation,0,0])
|
translate([axes_Zsmooth_separation,0,0])
|
||||||
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 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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw linear bearings
|
// Draw linear bearings
|
||||||
rotate([0,90,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
|
rotate([0,90,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
|
||||||
rotate([0,-90,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
|
rotate([0,-90,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
|
||||||
|
|
|
@ -145,7 +145,7 @@ module motorHolesZ() {
|
||||||
|
|
||||||
// Screws for holding the motor
|
// Screws for holding the motor
|
||||||
for(i=[-1,1]) for(j=[-1,1])
|
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() {
|
hull() {
|
||||||
translate([0,motor_adjust_margin/2,0])
|
translate([0,motor_adjust_margin/2,0])
|
||||||
cylinder(r=motor_screw_diameter/2,h=10*wall_thickness,center=true,$fn=40);
|
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
|
// Hole for the threaded rod
|
||||||
if(!top_part) {
|
if(!top_part) {
|
||||||
translate([-axes_Xsmooth_separation,0,0]) hull() {
|
translate([-axes_Xsmooth_separation,0,0])
|
||||||
cylinder(r=2+M8_rod_diameter/2,h=wall_thickness*10,center=true,$fn=30);
|
cylinder(r=6+M8_rod_diameter,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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Truncation in the base for avoiding collision with the X axis
|
// 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
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue