Added more config settings
parent
a4695d548e
commit
b518654a31
|
@ -204,24 +204,24 @@ module Cyclone_X_carriage() {
|
||||||
// ----- Holes for the linear bearings ------
|
// ----- Holes for the linear bearings ------
|
||||||
// Bottom right linear bearing
|
// Bottom right linear bearing
|
||||||
translate([-linearBearingLength/2-X_linearBearingSeparation/2,0,0])
|
translate([-linearBearingLength/2-X_linearBearingSeparation/2,0,0])
|
||||||
rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, lengthExtension=linearBearingLengthExtension);
|
rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, pressureFitTolerance=LinearBearingPressureFitTolerance, lengthExtension=linearBearingLengthExtension);
|
||||||
// Bottom left linear bearing
|
// Bottom left linear bearing
|
||||||
translate([linearBearingLength/2+X_linearBearingSeparation/2,0,0])
|
translate([linearBearingLength/2+X_linearBearingSeparation/2,0,0])
|
||||||
rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, lengthExtension=linearBearingLengthExtension);
|
rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, pressureFitTolerance=LinearBearingPressureFitTolerance, 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=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, lengthExtension=linearBearingLength+linearBearingLengthExtension+X_linearBearingSeparation);
|
rotate([90,0,0]) rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, pressureFitTolerance=LinearBearingPressureFitTolerance, lengthExtension=linearBearingLength+linearBearingLengthExtension+X_linearBearingSeparation);
|
||||||
|
|
||||||
// ----- Holes for the screws ------
|
// ----- Holes for the screws ------
|
||||||
// Bottom right screw
|
// Bottom right screw
|
||||||
translate([-linearBearingLength/2-X_linearBearingSeparation/2,-screwLength/2-screwAditionalLength/2,-linearBearingDiameter/2-screwExtension/2])
|
translate([-linearBearingLength/2-X_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);
|
rotate([0,0,180]) hole_for_screw(size=screwSize,length=screwLength+screwAditionalLength,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
// Bottom left screw
|
// Bottom left screw
|
||||||
translate([linearBearingLength/2+X_linearBearingSeparation/2,-screwLength/2-screwAditionalLength/2,-linearBearingDiameter/2-screwExtension/2])
|
translate([linearBearingLength/2+X_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);
|
rotate([0,0,180]) hole_for_screw(size=screwSize,length=screwLength+screwAditionalLength,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
// Top screw
|
// Top screw
|
||||||
translate([0,axes_effective_Xsmooth_separation+screwExtension/2+linearBearingDiameter/2,axes_effective_Xsmooth_separation+screwLength/2+screwAditionalLength/2])
|
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);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=screwLength+screwAditionalLength,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
|
|
||||||
// ----- Hole for the Z nut ------
|
// ----- Hole for the Z nut ------
|
||||||
translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation+(linearBearingDiameter+sideExtensions)/2])
|
translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation+(linearBearingDiameter+sideExtensions)/2])
|
||||||
|
@ -247,4 +247,3 @@ module Cyclone_X_carriage() {
|
||||||
translate([linearBearingLength/2,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation])
|
translate([linearBearingLength/2,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation])
|
||||||
rotate([0,-90,0]) linearBearing_single(model=X_linearBearingModel, echoPart=true);
|
rotate([0,-90,0]) linearBearing_single(model=X_linearBearingModel, echoPart=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,8 @@
|
||||||
// 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/
|
||||||
|
|
||||||
|
X_motorModel = Nema17;
|
||||||
Xmotor_sideLen = 42.20;
|
Xmotor_sideLen = lookup(NemaSideSize, X_motorModel); //42.20;
|
||||||
|
|
||||||
axes_XgearRatio = X_motorGearRatio/X_rodGearRatio; // Number of tooth (motor/rod)
|
axes_XgearRatio = X_motorGearRatio/X_rodGearRatio; // Number of tooth (motor/rod)
|
||||||
|
|
||||||
module Cyclone_X_leftFrame() {
|
module Cyclone_X_leftFrame() {
|
||||||
|
@ -16,12 +15,16 @@ module Cyclone_X_leftFrame() {
|
||||||
include <libs/MCAD/stepper.scad>
|
include <libs/MCAD/stepper.scad>
|
||||||
module Cyclone_X_rightFrame(isLeft=false) {
|
module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
|
|
||||||
|
footThickness = X_frame_footThickness;
|
||||||
|
corner_radius = X_frame_corner_radius;
|
||||||
|
frameFrontalThickness = X_frame_FrontalThickness;
|
||||||
|
|
||||||
footScrewSize = X_Frame_footScrewSize;
|
footScrewSize = X_Frame_footScrewSize;
|
||||||
rodScrewSize = X_Frame_rodScrewSize;
|
rodScrewSize = X_Frame_rodScrewSize;
|
||||||
|
|
||||||
motorWallSeparation = 5;
|
motorWallSeparation = X_motorWallSeparation;
|
||||||
motorRotatedOffset = 5;
|
motorRotatedOffset = X_motorRotatedOffset;
|
||||||
gearWallSeparation = 5;
|
gearWallSeparation = X_gearWallSeparation;
|
||||||
|
|
||||||
partThickness = X_frames_additional_thickness+rodScrewSize*2;
|
partThickness = X_frames_additional_thickness+rodScrewSize*2;
|
||||||
|
|
||||||
|
@ -34,11 +37,19 @@ module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
footWidth = dimX+2*footSeparation;
|
footWidth = dimX+2*footSeparation;
|
||||||
|
|
||||||
rod_nut_len = 0.8*axes_Xthreaded_rodD;
|
rod_nut_len = 0.8*axes_Xthreaded_rodD;
|
||||||
X_motorModel = Nema17;
|
|
||||||
|
|
||||||
module Cyclone_XsubPart_gearCover() {
|
module Cyclone_XsubPart_gearCover() {
|
||||||
|
margin = gearCover_margin;
|
||||||
|
rodGearAddedMargin = rodGearAddedgearCover_margin;
|
||||||
effectiveXgearSeparation = axes_XgearSeparation+0.5;
|
effectiveXgearSeparation = axes_XgearSeparation+0.5;
|
||||||
|
wallThickness = gearCover_wallThickness;
|
||||||
|
screwHeadSpaceHeight = gearCover_screwHeadSpaceHeight;
|
||||||
|
screwHeadSpaceDiam = gearCover_screwHeadSpaceDiam;
|
||||||
|
coverHeight = gearCoverHeight;
|
||||||
|
coverExtraHeight = gearCoverExtraHeight;
|
||||||
|
coverExtraRadius = gearCoverExtraRadius;
|
||||||
nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, X_motorModel);
|
nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, X_motorModel);
|
||||||
|
truncationAngle = gearCover_truncationAngle;
|
||||||
|
|
||||||
motorGearRadius = axes_XgearSeparation/(1+axes_XgearRatio)+gearCover_margin;
|
motorGearRadius = axes_XgearSeparation/(1+axes_XgearRatio)+gearCover_margin;
|
||||||
rodGearRadius = axes_XgearSeparation/(1+1/axes_XgearRatio)+gearCover_margin+rodGearAddedgearCover_margin;
|
rodGearRadius = axes_XgearSeparation/(1+1/axes_XgearRatio)+gearCover_margin+rodGearAddedgearCover_margin;
|
||||||
|
@ -121,7 +132,6 @@ module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_X_endstopHolder(holes=false) {
|
module Cyclone_X_endstopHolder(holes=false) {
|
||||||
// Endstop holder
|
// Endstop holder
|
||||||
translate([-partThickness-0.04,19,-5+axes_Xsmooth_separation])
|
translate([-partThickness-0.04,19,-5+axes_Xsmooth_separation])
|
||||||
|
@ -189,7 +199,6 @@ module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
// Main block
|
// Main block
|
||||||
union() {
|
union() {
|
||||||
|
@ -247,15 +256,15 @@ module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
translate([-axes_Xreference_posX-dimX-footSeparation,axes_Xreference_posY+footSeparation,-axes_Yreference_height+footThickness]) {
|
translate([-axes_Xreference_posX-dimX-footSeparation,axes_Xreference_posY+footSeparation,-axes_Yreference_height+footThickness]) {
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, invert=true);
|
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true);
|
||||||
translate([0,dimY/2,0])
|
translate([0,dimY/2,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, invert=true);
|
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true);
|
||||||
translate([0,dimY-2*footSeparation,0])
|
translate([0,dimY-2*footSeparation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, invert=true);
|
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,24 +287,31 @@ module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
translate([axes_Xthreaded_rodD,0,0]){
|
translate([axes_Xthreaded_rodD,0,0]){
|
||||||
rotate([0,-90,0])
|
rotate([0,-90,0])
|
||||||
nut(size=axes_Xthreaded_rodD, echoPart=true);
|
nut(size=axes_Xthreaded_rodD, echoPart=true);
|
||||||
|
if(Render_X_rodGear) {
|
||||||
translate([axes_Xthreaded_rodD-7,0,0])
|
translate([axes_Xthreaded_rodD-7,0,0])
|
||||||
rotate([0,-90,0]) color(color_movingPart)
|
rotate([0,-90,0]) color(color_movingPart)
|
||||||
cyclone_rod_gear(Gear_N_Teeth=X_rodGearRatio,gearHeight=X_gear_thickness,nutSize=8,tolerance=0);
|
cyclone_rod_gear(Gear_N_Teeth=X_rodGearRatio,gearHeight=X_gear_thickness,nutSize=8,tolerance=0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// Translate to motor position
|
// Translate to motor position
|
||||||
rotate([motorRotatedOffset,0,0]) {
|
rotate([motorRotatedOffset,0,0]) {
|
||||||
translate([0,axes_XgearSeparation,0])
|
translate([0,axes_XgearSeparation,0])
|
||||||
rotate([-motorRotatedOffset,0,0]) {
|
rotate([-motorRotatedOffset,0,0]) {
|
||||||
translate([-motorWallSeparation,0,0]) rotate([0,90,0])
|
translate([-motorWallSeparation,0,0]) rotate([0,90,0])
|
||||||
stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
|
stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
|
||||||
|
if(Render_X_motorGear) {
|
||||||
translate([axes_Xthreaded_rodD+1.5,0,0])
|
translate([axes_Xthreaded_rodD+1.5,0,0])
|
||||||
rotate([0,-90,0]) color(color_movingPart)
|
rotate([0,-90,0]) color(color_movingPart)
|
||||||
cyclone_motor_gear(Gear_N_Teeth=X_motorGearRatio,gearHeight=X_gear_thickness,tolerance=0);
|
cyclone_motor_gear(Gear_N_Teeth=X_motorGearRatio,gearHeight=X_gear_thickness,tolerance=0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(Render_Y_gearCover) {
|
||||||
|
// Draw the X gear cover
|
||||||
translate([0.1,0,0])
|
translate([0.1,0,0])
|
||||||
color(color_stillPart) Cyclone_XsubPart_gearCover();
|
color(color_stillPart) Cyclone_XsubPart_gearCover();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
translate([0,0,axes_Xsmooth_separation])
|
translate([0,0,axes_Xsmooth_separation])
|
||||||
rotate([0,0,-90])
|
rotate([0,0,-90])
|
||||||
rodHolder(rodD=axes_Ysmooth_rodD, screwSize=rodScrewSize);
|
rodHolder(rodD=axes_Ysmooth_rodD, screwSize=rodScrewSize);
|
||||||
|
@ -304,23 +320,18 @@ module Cyclone_X_rightFrame(isLeft=false) {
|
||||||
translate([-axes_Xreference_posX-dimX-footSeparation,axes_Xreference_posY+footSeparation,-axes_Yreference_height+footThickness]) {
|
translate([-axes_Xreference_posX-dimX-footSeparation,axes_Xreference_posY+footSeparation,-axes_Yreference_height+footThickness]) {
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
translate([0,dimY/2,0])
|
translate([0,dimY/2,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
translate([0,dimY-2*footSeparation,0])
|
translate([0,dimY-2*footSeparation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module rodHolder(rodD=8.5, screwSize=3, height=0, sideLen=0, thickness=5, space=2, negative=false) {
|
module rodHolder(rodD=8.5, screwSize=3, height=0, sideLen=0, thickness=5, space=2, negative=false) {
|
||||||
screwAditionalDistance = rodD/2;
|
screwAditionalDistance = rodD/2;
|
||||||
dimX = rodD+4*screwSize+screwAditionalDistance;
|
dimX = rodD+4*screwSize+screwAditionalDistance;
|
||||||
|
@ -332,14 +343,16 @@ module rodHolder(rodD=8.5, screwSize=3, height=0, sideLen=0, thickness=5, space=
|
||||||
if(negative) {
|
if(negative) {
|
||||||
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ])
|
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10, rot=90);
|
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
translate([-screwSize-screwAditionalDistance,-dimY/2,dimZ])
|
translate([-screwSize-screwAditionalDistance,-dimY/2,dimZ])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10, rot=90);
|
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
} else {
|
} else {
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
|
//if(Render_rodHolder) {
|
||||||
color(color_movingPart) translate([0,-dimY/2,dimZ/2+space/4]) bcube([dimX,dimY,dimZ-space/2],cr=corner_radius,cres=10);
|
color(color_movingPart) translate([0,-dimY/2,dimZ/2+space/4]) bcube([dimX,dimY,dimZ-space/2],cr=corner_radius,cres=10);
|
||||||
|
//}
|
||||||
color(color_stillPart)
|
color(color_stillPart)
|
||||||
if(sideLen>dimX/2)
|
if(sideLen>dimX/2)
|
||||||
translate([sideLen/2-dimX/4,-dimY/2,-height/2-space/4]) bcube([dimX/2+sideLen,dimY,height-space/2],cr=corner_radius,cres=10);
|
translate([sideLen/2-dimX/4,-dimY/2,-height/2-space/4]) bcube([dimX/2+sideLen,dimY,height-space/2],cr=corner_radius,cres=10);
|
||||||
|
@ -348,21 +361,19 @@ module rodHolder(rodD=8.5, screwSize=3, height=0, sideLen=0, thickness=5, space=
|
||||||
}
|
}
|
||||||
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ])
|
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10, rot=90);
|
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
translate([-screwSize-screwAditionalDistance,-dimY/2,dimZ])
|
translate([-screwSize-screwAditionalDistance,-dimY/2,dimZ])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10, rot=90);
|
hole_for_screw(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
standard_rod(diam=rodD, length=dimY*4, threaded=false, renderPart=true, center=true);
|
standard_rod(diam=rodD, length=dimY*4, threaded=false, renderPart=true, center=true);
|
||||||
rodHolder(rodD=rodD, screwSize=screwSize, negative=true);
|
//rodHolder(rodD=rodD, screwSize=screwSize, negative=true);
|
||||||
}
|
}
|
||||||
// Draw screws
|
// Draw screws
|
||||||
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ+0.01])
|
translate([screwSize+screwAditionalDistance,-dimY/2,dimZ+0.01])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
screw_and_nut(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=0, rot=90, echoPart=true);
|
screw_and_nut(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, echoPart=true);
|
||||||
translate([-screwSize-screwAditionalDistance,-dimY/2,dimZ+0.01])
|
translate([-screwSize-screwAditionalDistance,-dimY/2,dimZ+0.01])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
screw_and_nut(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=0, rot=90, echoPart=true);
|
screw_and_nut(size=screwSize,length=dimZ+15,nutDepth=5,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -56,10 +56,10 @@ module Cyclone_YsubPart_nutHolder() {
|
||||||
// Holes for the supporting screws
|
// Holes for the supporting screws
|
||||||
translate([0,-screwSeparation/2,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
translate([0,-screwSeparation/2,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
hole_for_screw(size=screwSize,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0);
|
hole_for_screw(size=screwSize,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
translate([0,+screwSeparation/2,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
translate([0,+screwSeparation/2,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
hole_for_screw(size=screwSize,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0);
|
hole_for_screw(size=screwSize,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
}
|
}
|
||||||
translate([0,dimY/2+rod_nut_len/2,0])
|
translate([0,dimY/2+rod_nut_len/2,0])
|
||||||
rotate([0,90,0]) rotate([90,0,0]) nut(size=8, echoPart=true);
|
rotate([0,90,0]) rotate([90,0,0]) nut(size=8, echoPart=true);
|
||||||
|
@ -69,7 +69,6 @@ module Cyclone_YsubPart_nutHolder() {
|
||||||
washer_single(diam=washer_D, thickness=washer_thickness, echoPart=true);
|
washer_single(diam=washer_D, thickness=washer_thickness, echoPart=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
use <libs/linear_bearing.scad>
|
use <libs/linear_bearing.scad>
|
||||||
module Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=false) {
|
module Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=false) {
|
||||||
linearBearingLength = linearBearing_L(Y_linearBearingModel);
|
linearBearingLength = linearBearing_L(Y_linearBearingModel);
|
||||||
|
@ -90,12 +89,10 @@ module Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=false) {
|
||||||
|
|
||||||
workbed_screws_aditional_length = PCBholder_height;
|
workbed_screws_aditional_length = PCBholder_height;
|
||||||
|
|
||||||
//Y_linearBearing_pressureFitTolerance = 0.5;
|
|
||||||
|
|
||||||
if(onlyScrews) {
|
if(onlyScrews) {
|
||||||
// Hole for the screw and nut
|
// Hole for the screw and nut
|
||||||
translate([dimX/2+footSeparation,0,dimZ+workbed_thickness+workbed_screws_aditional_length])
|
translate([dimX/2+footSeparation,0,dimZ+workbed_thickness+workbed_screws_aditional_length])
|
||||||
rotate([90,0,0]) hole_for_screw(size=screwSize,length=workbed_screws_aditional_length+footThickness+workbed_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=workbed_screws_aditional_length+footThickness+workbed_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
} else {
|
} else {
|
||||||
difference() {
|
difference() {
|
||||||
// Main part
|
// Main part
|
||||||
|
@ -113,11 +110,11 @@ module Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=false) {
|
||||||
bcube([dimX,dimY,holderExtension], cr=3, cres=0);
|
bcube([dimX,dimY,holderExtension], cr=3, cres=0);
|
||||||
}
|
}
|
||||||
// Hole for linear bearing
|
// Hole for linear bearing
|
||||||
linearBearingHole(model=Y_linearBearingModel, lateralExtension=holderExtension, lengthExtension=2*plasticHolderLength, holderLength=plasticHolderLength/2);
|
linearBearingHole(model=Y_linearBearingModel, lateralExtension=holderExtension, pressureFitTolerance=LinearBearingPressureFitTolerance, lengthExtension=2*plasticHolderLength, holderLength=plasticHolderLength/2);
|
||||||
//linearBearingHole(model=Y_linearBearingModel);
|
|
||||||
// Hole for the screw and nut
|
// Hole for the screw and nut
|
||||||
translate([dimX/2+footSeparation,0,dimZ+workbed_thickness+workbed_screws_aditional_length])
|
translate([dimX/2+footSeparation,0,dimZ+workbed_thickness+workbed_screws_aditional_length])
|
||||||
rotate([90,0,0]) hole_for_screw(size=screwSize,length=workbed_screws_aditional_length+footThickness+workbed_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=workbed_screws_aditional_length+footThickness+workbed_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([0,linearBearingLength/2,0])
|
translate([0,linearBearingLength/2,0])
|
||||||
|
@ -136,9 +133,6 @@ module Cyclone_YsubPart_linearBearingHolders(onlyScrews=false) {
|
||||||
Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=onlyScrews);
|
Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=onlyScrews);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_YsubPart_PCBholder() {
|
module Cyclone_YsubPart_PCBholder() {
|
||||||
holderArmLength = 30;
|
holderArmLength = 30;
|
||||||
|
|
||||||
|
@ -156,6 +150,7 @@ module Cyclone_YsubPart_PCBholder() {
|
||||||
%translate([0,0,PCBholder_height+PCB_dimZ/2])
|
%translate([0,0,PCBholder_height+PCB_dimZ/2])
|
||||||
color([0.8,0.5,0, 1]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ/10], center=true);
|
color([0.8,0.5,0, 1]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ/10], center=true);
|
||||||
|
|
||||||
|
if(Render_PCBholderBottom) {
|
||||||
difference() {
|
difference() {
|
||||||
color(color_stillPart) translate([0,0,PCBholder_height/2])
|
color(color_stillPart) translate([0,0,PCBholder_height/2])
|
||||||
bcube([workbed_size_X,workbed_size_Y,PCBholder_height], cr=25, cres=0);
|
bcube([workbed_size_X,workbed_size_Y,PCBholder_height], cr=25, cres=0);
|
||||||
|
@ -175,15 +170,18 @@ module Cyclone_YsubPart_PCBholder() {
|
||||||
// Holes for the screws
|
// Holes for the screws
|
||||||
for (x = [-1,1], y=[-1,0,1]) {
|
for (x = [-1,1], y=[-1,0,1]) {
|
||||||
translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+screwSize])
|
translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+screwSize])
|
||||||
rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
}
|
}
|
||||||
translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
||||||
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
||||||
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Holder top L supports
|
// Holder top L supports
|
||||||
|
if(Render_PCBholderTop) {
|
||||||
translate([0,0,0.5])
|
translate([0,0,0.5])
|
||||||
difference() {
|
difference() {
|
||||||
color(color_movingPart) translate([0,0,PCBholder_height+(holderL_thickness+holderL_thickness_btm)/2])
|
color(color_movingPart) translate([0,0,PCBholder_height+(holderL_thickness+holderL_thickness_btm)/2])
|
||||||
|
@ -204,18 +202,17 @@ module Cyclone_YsubPart_PCBholder() {
|
||||||
translate([0,0,holderL_thickness+(holderL_thickness+holderL_thickness_btm)/2]) {
|
translate([0,0,holderL_thickness+(holderL_thickness+holderL_thickness_btm)/2]) {
|
||||||
for (x = [-1,1], y=[-1,0,1]) {
|
for (x = [-1,1], y=[-1,0,1]) {
|
||||||
translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+screwSize])
|
translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+screwSize])
|
||||||
rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
||||||
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize])
|
||||||
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90);
|
rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_Y_carriage() {
|
module Cyclone_Y_carriage() {
|
||||||
if(render_DXF_workbed) {
|
if(render_DXF_workbed) {
|
||||||
|
@ -229,17 +226,22 @@ module Cyclone_Y_carriage() {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(draw_references) color("red") %frame(20);
|
if(draw_references) color("red") %frame(20);
|
||||||
rotate([0,0,180]) Cyclone_YsubPart_nutHolder();
|
if(Render_YsubPart_nutHolder){
|
||||||
|
rotate([0,0,180])
|
||||||
|
Cyclone_YsubPart_nutHolder();
|
||||||
|
}
|
||||||
translate([0,0,axes_Y_smoothThreaded_verticalSeparation]) {
|
translate([0,0,axes_Y_smoothThreaded_verticalSeparation]) {
|
||||||
|
if(Render_YsubPart_linearBearingHolders)
|
||||||
Cyclone_YsubPart_linearBearingHolders();
|
Cyclone_YsubPart_linearBearingHolders();
|
||||||
|
if(Render_PCBholderTop || Render_PCBholderBottom) {
|
||||||
difference() {
|
difference() {
|
||||||
translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness-axes_Y_smoothThreaded_verticalSeparation])
|
translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness-axes_Y_smoothThreaded_verticalSeparation])
|
||||||
Cyclone_YsubPart_PCBholder();
|
Cyclone_YsubPart_PCBholder();
|
||||||
Cyclone_YsubPart_linearBearingHolders(onlyScrews=true);
|
Cyclone_YsubPart_linearBearingHolders(onlyScrews=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
color([0.9,0.9,0.9, 1]) translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
color([0.9,0.9,0.9, 1]) translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
||||||
beveledBase(size=[workbed_size_X,workbed_size_Y,workbed_thickness], radius=3, res=15, echoPart=true);
|
beveledBase(size=[workbed_size_X,workbed_size_Y,workbed_thickness], radius=3, res=15, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,9 @@ axes_YgearRatio = Y_motorGearRatio/Y_rodGearRatio; // Number of tooth (motor/rod
|
||||||
module Cyclone_Y_frontFrame() {
|
module Cyclone_Y_frontFrame() {
|
||||||
screwSize = Y_frontFrame_footScrewSize;
|
screwSize = Y_frontFrame_footScrewSize;
|
||||||
|
|
||||||
motorWallSeparation = 5;
|
motorWallSeparation = Y_motorWallSeparation;
|
||||||
motorRotatedOffset = 5;
|
motorRotatedOffset = Y_motorRotatedOffset;
|
||||||
gearWallSeparation = 5;
|
gearWallSeparation = Y_gearWallSeparation;
|
||||||
|
|
||||||
motor_YgearSeparation_projected = axes_YgearSeparation*cos(-motorRotatedOffset);
|
motor_YgearSeparation_projected = axes_YgearSeparation*cos(-motorRotatedOffset);
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ module Cyclone_Y_frontFrame() {
|
||||||
gear_thickness = Y_gear_thickness;
|
gear_thickness = Y_gear_thickness;
|
||||||
bearing_width = bearingWidth(Y_threaded_rodBearingModel);
|
bearing_width = bearingWidth(Y_threaded_rodBearingModel);
|
||||||
bearing_diam = bearingOuterDiameter(Y_threaded_rodBearingModel);
|
bearing_diam = bearingOuterDiameter(Y_threaded_rodBearingModel);
|
||||||
bearingDepth = 3;
|
bearingDepth = Y_threaded_rodBearingDepth;
|
||||||
partThickness = 5+screwSize*2;
|
partThickness = 5+screwSize*2;
|
||||||
|
|
||||||
dimX = bearing_diam+partThickness;
|
dimX = bearing_diam+partThickness;
|
||||||
|
@ -40,23 +40,22 @@ module Cyclone_Y_frontFrame() {
|
||||||
dimZ = axes_Y_threaded_height;
|
dimZ = axes_Y_threaded_height;
|
||||||
|
|
||||||
footSeparation = screwSize*2;
|
footSeparation = screwSize*2;
|
||||||
foot_additional_separation = 5;
|
foot_additional_separation = Y_foot_additional_separation;
|
||||||
footThickness = 10;
|
footThickness = Y_frame_footThickness;
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_YsubPart_gearCover() {
|
module Cyclone_YsubPart_gearCover() {
|
||||||
margin = 4;
|
margin = gearCover_margin;
|
||||||
rodGearAddedMargin = 0;
|
rodGearAddedMargin = rodGearAddedgearCover_margin;
|
||||||
effectiveYgearSeparation = axes_YgearSeparation+0.5;
|
effectiveYgearSeparation = axes_YgearSeparation+0.5;
|
||||||
wallThickness = 0.4*4;
|
wallThickness = gearCover_wallThickness;
|
||||||
screwHeadSpaceHeight = 4;
|
screwHeadSpaceHeight = gearCover_screwHeadSpaceHeight;
|
||||||
screwHeadSpaceDiam = 6;
|
screwHeadSpaceDiam = gearCover_screwHeadSpaceDiam;
|
||||||
coverHeight = 16;
|
coverHeight = gearCoverHeight;
|
||||||
coverExtraHeight = 5;
|
coverExtraHeight = gearCoverExtraHeight;
|
||||||
coverExtraRadius = -7;
|
coverExtraRadius = gearCoverExtraRadius;
|
||||||
nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, Y_motorModel);
|
nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, Y_motorModel);
|
||||||
|
truncationAngle = gearCover_truncationAngle;
|
||||||
truncationAngle = 10;
|
|
||||||
|
|
||||||
motorGearRadius = axes_YgearSeparation/(1+axes_YgearRatio)+margin;
|
motorGearRadius = axes_YgearSeparation/(1+axes_YgearRatio)+margin;
|
||||||
rodGearRadius = axes_YgearSeparation/(1+1/axes_YgearRatio)+margin+rodGearAddedMargin;
|
rodGearRadius = axes_YgearSeparation/(1+1/axes_YgearRatio)+margin+rodGearAddedMargin;
|
||||||
|
@ -141,7 +140,6 @@ module Cyclone_Y_frontFrame() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
translate([0,2*rod_nut_len+gear_thickness,0]) {
|
translate([0,2*rod_nut_len+gear_thickness,0]) {
|
||||||
translate([0,bearing_width-bearingDepth,0]) {
|
translate([0,bearing_width-bearingDepth,0]) {
|
||||||
if(draw_references) color("blue") %frame(20);
|
if(draw_references) color("blue") %frame(20);
|
||||||
|
@ -186,15 +184,15 @@ module Cyclone_Y_frontFrame() {
|
||||||
translate([footSeparation+dimX/2,0,0])
|
translate([footSeparation+dimX/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance,rot=90, invert=true);
|
||||||
translate([dimX/3,dimY/2+footSeparation+foot_additional_separation,0])
|
translate([dimX/3,dimY/2+footSeparation+foot_additional_separation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
translate([-footSeparation-foot_additional_separation-motor_YgearSeparation_projected-Ymotor_sideLen/2,0,0])
|
translate([-footSeparation-foot_additional_separation-motor_YgearSeparation_projected-Ymotor_sideLen/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
}
|
}
|
||||||
// Translate to motor axis position
|
// Translate to motor axis position
|
||||||
rotate([0,-motorRotatedOffset,0]) {
|
rotate([0,-motorRotatedOffset,0]) {
|
||||||
|
@ -212,15 +210,15 @@ module Cyclone_Y_frontFrame() {
|
||||||
translate([footSeparation+dimX/2,0,0])
|
translate([footSeparation+dimX/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
translate([dimX/3,dimY/2+footSeparation+foot_additional_separation,0])
|
translate([dimX/3,dimY/2+footSeparation+foot_additional_separation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
translate([-footSeparation-foot_additional_separation-motor_YgearSeparation_projected-Ymotor_sideLen/2,0,0])
|
translate([-footSeparation-foot_additional_separation-motor_YgearSeparation_projected-Ymotor_sideLen/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
}
|
}
|
||||||
// Translate to motor position
|
// Translate to motor position
|
||||||
rotate([0,-motorRotatedOffset,0]) {
|
rotate([0,-motorRotatedOffset,0]) {
|
||||||
|
@ -229,15 +227,19 @@ module Cyclone_Y_frontFrame() {
|
||||||
translate([0,motorWallSeparation,0])
|
translate([0,motorWallSeparation,0])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
|
stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
|
||||||
|
if(Render_Y_motorGear) {
|
||||||
translate([0,-rod_nut_len-gear_thickness,0])
|
translate([0,-rod_nut_len-gear_thickness,0])
|
||||||
rotate([-90,180,0]) color(color_movingPart)
|
rotate([-90,180,0]) color(color_movingPart)
|
||||||
cyclone_motor_gear(Gear_N_Teeth=Y_motorGearRatio,gearHeight=gear_thickness,tolerance=0);
|
cyclone_motor_gear(Gear_N_Teeth=Y_motorGearRatio,gearHeight=gear_thickness,tolerance=0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(Render_Y_gearCover) {
|
||||||
// Draw the Y gear cover
|
// Draw the Y gear cover
|
||||||
translate([0,-0.1,0])
|
translate([0,-0.1,0])
|
||||||
color(color_stillPart) Cyclone_YsubPart_gearCover();
|
color(color_stillPart) Cyclone_YsubPart_gearCover();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
rotate([-90,0,0])
|
rotate([-90,0,0])
|
||||||
radialBearing(echoPart=true);
|
radialBearing(echoPart=true);
|
||||||
}
|
}
|
||||||
|
@ -247,16 +249,12 @@ module Cyclone_Y_frontFrame() {
|
||||||
translate([0,rod_nut_len+gear_thickness,0])
|
translate([0,rod_nut_len+gear_thickness,0])
|
||||||
rotate([-90,0,0])
|
rotate([-90,0,0])
|
||||||
nut(size=axes_Ythreaded_rodD, echoPart=true);
|
nut(size=axes_Ythreaded_rodD, echoPart=true);
|
||||||
|
if(Render_Y_rodGear) {
|
||||||
translate([0,METRIC_NUT_THICKNESS[axes_Ythreaded_rodD]/4+rod_nut_len,0])
|
translate([0,METRIC_NUT_THICKNESS[axes_Ythreaded_rodD]/4+rod_nut_len,0])
|
||||||
rotate([-90,0,0]) color(color_movingPart)
|
rotate([-90,0,0]) color(color_movingPart)
|
||||||
cyclone_rod_gear(Gear_N_Teeth=Y_rodGearRatio,gearHeight=gear_thickness,nutSize=8,tolerance=0);
|
cyclone_rod_gear(Gear_N_Teeth=Y_rodGearRatio,gearHeight=gear_thickness,nutSize=8,tolerance=0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_Y_backFrame() {
|
module Cyclone_Y_backFrame() {
|
||||||
|
|
||||||
|
@ -265,7 +263,7 @@ module Cyclone_Y_backFrame() {
|
||||||
rod_nut_len = 0.8*axes_Ythreaded_rodD;
|
rod_nut_len = 0.8*axes_Ythreaded_rodD;
|
||||||
bearing_width = bearingWidth(Y_threaded_rodBearingModel);
|
bearing_width = bearingWidth(Y_threaded_rodBearingModel);
|
||||||
bearing_diam = bearingOuterDiameter(Y_threaded_rodBearingModel);
|
bearing_diam = bearingOuterDiameter(Y_threaded_rodBearingModel);
|
||||||
bearingDepth = 3;
|
bearingDepth = Y_threaded_rodBearingDepth;
|
||||||
partThickness = 5+screwSize*2;
|
partThickness = 5+screwSize*2;
|
||||||
|
|
||||||
dimX = bearing_diam+partThickness;
|
dimX = bearing_diam+partThickness;
|
||||||
|
@ -273,10 +271,10 @@ module Cyclone_Y_backFrame() {
|
||||||
dimZ = 0;
|
dimZ = 0;
|
||||||
|
|
||||||
footSeparation = screwSize*2;
|
footSeparation = screwSize*2;
|
||||||
foot_additional_separation = 5;
|
foot_additional_separation = Y_foot_additional_separation;
|
||||||
footThickness = 10;
|
footThickness = Y_frame_footThickness;
|
||||||
|
|
||||||
endstopHolderRotation = 5;
|
endstopHolderRotation = Y_endstopHolderRotation;
|
||||||
|
|
||||||
translate([0,-2*rod_nut_len,0]) {
|
translate([0,-2*rod_nut_len,0]) {
|
||||||
translate([0,bearingDepth-bearing_width,0]) {
|
translate([0,bearingDepth-bearing_width,0]) {
|
||||||
|
@ -313,15 +311,15 @@ module Cyclone_Y_backFrame() {
|
||||||
translate([-footSeparation-dimX/2,0,0])
|
translate([-footSeparation-dimX/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
translate([footSeparation+dimX/2,0,0])
|
translate([footSeparation+dimX/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
translate([0,dimY/2+footSeparation+foot_additional_separation,0])
|
translate([0,dimY/2+footSeparation+foot_additional_separation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -330,15 +328,15 @@ module Cyclone_Y_backFrame() {
|
||||||
translate([-footSeparation-dimX/2,0,0])
|
translate([-footSeparation-dimX/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
translate([footSeparation+dimX/2,0,0])
|
translate([footSeparation+dimX/2,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
translate([0,dimY/2+footSeparation+foot_additional_separation,0])
|
translate([0,dimY/2+footSeparation+foot_additional_separation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
screw_and_nut(size=screwSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
|
@ -352,19 +350,6 @@ module Cyclone_Y_backFrame() {
|
||||||
nut(size=axes_Ythreaded_rodD, echoPart=true);
|
nut(size=axes_Ythreaded_rodD, echoPart=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_logo(sizemm = 30, thickness = 10, mirrorLogo = false) {
|
module Cyclone_logo(sizemm = 30, thickness = 10, mirrorLogo = false) {
|
||||||
dxf_logo_size = 50; // Real size of the logo in the DXF file
|
dxf_logo_size = 50; // Real size of the logo in the DXF file
|
||||||
scale_factor = sizemm/dxf_logo_size;
|
scale_factor = sizemm/dxf_logo_size;
|
||||||
|
@ -392,7 +377,7 @@ module Cyclone_Y_rightSmoothRodIdler(mirrorLogo = false) {
|
||||||
|
|
||||||
|
|
||||||
footSeparation = footScrewSize*2;
|
footSeparation = footScrewSize*2;
|
||||||
footThickness = 10;
|
footThickness = Y_frame_footThickness;
|
||||||
|
|
||||||
color(color_stillPart) difference() {
|
color(color_stillPart) difference() {
|
||||||
union() {
|
union() {
|
||||||
|
@ -415,51 +400,51 @@ module Cyclone_Y_rightSmoothRodIdler(mirrorLogo = false) {
|
||||||
translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
|
translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=rodScrewSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=10, rot=90);
|
hole_for_screw(size=rodScrewSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=10,tolerance=screwHoleTolerance, rot=90);
|
||||||
translate([dimX/2,dimY/2,0])
|
translate([dimX/2,dimY/2,0])
|
||||||
cube([dimX+1,dimY+1,slotHeight],center=true);
|
cube([dimX+1,dimY+1,slotHeight],center=true);
|
||||||
|
if(Logo){
|
||||||
translate([(dimX-holderOuterRadius)/2,-0.1,-(dimZ+axes_Ysmooth_rodD/2)/2])
|
translate([(dimX-holderOuterRadius)/2,-0.1,-(dimZ+axes_Ysmooth_rodD/2)/2])
|
||||||
scale([1,-1,1])
|
scale([1,-1,1])
|
||||||
rotate([90,0,0])
|
rotate([90,0,0])
|
||||||
Cyclone_logo(sizemm = min(dimX+holderOuterRadius-5,dimZ-axes_Ysmooth_rodD/2-5), thickness = logoDepth, mirrorLogo = mirrorLogo);
|
Cyclone_logo(sizemm = min(dimX+holderOuterRadius-5,dimZ-axes_Ysmooth_rodD/2-5), thickness = logoDepth, mirrorLogo = mirrorLogo);
|
||||||
|
}
|
||||||
translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
|
translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
|
||||||
translate([-holderOuterRadius-footSeparation,0,0])
|
translate([-holderOuterRadius-footSeparation,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
translate([holderOuterRadius*2+footSeparation,0,0])
|
translate([holderOuterRadius*2+footSeparation,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, rot=90, invert=true);
|
hole_for_screw(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, invert=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Draw nuts and bolts
|
// Draw nuts and bolts
|
||||||
translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
|
translate([2.5+holderOuterRadius,dimY/2,holderOuterRadius])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=rodScrewSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=0, rot=90, echoPart=true);
|
screw_and_nut(size=rodScrewSize,length=screwLength+10,nutDepth=10,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, rot=90, echoPart=true);
|
||||||
translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
|
translate([0,dimY/2,-axes_Yreference_height+footThickness]) {
|
||||||
translate([-holderOuterRadius-footSeparation,0,0])
|
translate([-holderOuterRadius-footSeparation,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, autoNutOffset=true, rot=90, invert=true, echoPart=true);
|
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, autoNutOffset=true, rot=90, invert=true, echoPart=true);
|
||||||
translate([holderOuterRadius*2+footSeparation,0,0])
|
translate([holderOuterRadius*2+footSeparation,0,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, autoNutOffset=true, rot=90, invert=true, echoPart=true);
|
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, autoNutOffset=true, rot=90, invert=true, echoPart=true);
|
||||||
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
translate([holderOuterRadius/2,dimY/2+footSeparation,0])
|
||||||
rotate([0,90,0])
|
rotate([0,90,0])
|
||||||
rotate([0,0,90])
|
rotate([0,0,90])
|
||||||
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0, autoNutOffset=true, rot=90, invert=true, echoPart=true);
|
screw_and_nut(size=footScrewSize,length=footThickness+base_thickness,nutDepth=0,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, autoNutOffset=true, rot=90, invert=true, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_Y_leftSmoothRodIdler() {
|
module Cyclone_Y_leftSmoothRodIdler() {
|
||||||
scale([-1,1,1]) Cyclone_Y_rightSmoothRodIdler(mirrorLogo = true);
|
scale([-1,1,1]) Cyclone_Y_rightSmoothRodIdler(mirrorLogo = true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,17 +20,16 @@ use <libs/standard_parts.scad>
|
||||||
use <libs/MCAD/materials.scad>
|
use <libs/MCAD/materials.scad>
|
||||||
|
|
||||||
Z_motorModel = Nema17;
|
Z_motorModel = Nema17;
|
||||||
motor_width = lookup(NemaSideSize, Z_motorModel); //43;
|
motor_width = lookup(NemaSideSize, Z_motorModel);
|
||||||
|
motor_screw_head_diameter = METRIC_BOLT_CAP_DIAMETERS[3]+1+screwHoleTolerance;;
|
||||||
motor_screw_head_diameter = 8;
|
|
||||||
|
|
||||||
Z_bearing_width = bearingWidth(Z_threaded_rodBearingModel);
|
Z_bearing_width = bearingWidth(Z_threaded_rodBearingModel);
|
||||||
|
|
||||||
axis_distance = 21;
|
axis_distance = 21;
|
||||||
|
|
||||||
wall_thickness = 9;
|
wall_thickness = Z_carriage_wall_thickness;
|
||||||
wall_height = motor_width;
|
wall_height = motor_width;
|
||||||
wall_width = 54;
|
wall_width = Z_carriage_wall_width;
|
||||||
|
|
||||||
axes_ZgearRatio = Z_motorGearRatio/Z_rodGearRatio; // Number of tooth (motor/rod)
|
axes_ZgearRatio = Z_motorGearRatio/Z_rodGearRatio; // Number of tooth (motor/rod)
|
||||||
|
|
||||||
|
@ -74,7 +73,7 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
translate([0,-4,-0.01]) cube([90,4,length+2]);
|
translate([0,-4,-0.01]) cube([90,4,length+2]);
|
||||||
translate ([spindiam/2+15,15,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
translate ([spindiam/2+15,15,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||||
translate ([spindiam/2+15,-10.5,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
translate ([spindiam/2+15,-10.5,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||||
translate ([spindiam/2+15,10.5,length/2]) rotate([0,0,0]) screw_and_nut(size=spindle_holder_screwSize,length=25,nutDepth=4,nutAddedLen=0,captiveLen=0, autoNutOffset=true, echoPart=true);
|
translate ([spindiam/2+15,10.5,length/2]) rotate([0,0,0]) screw_and_nut(size=spindle_holder_screwSize,length=25,nutDepth=4,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, autoNutOffset=true, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -84,7 +83,7 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
translate([0,0,-0.01]) cube([90,4,length+2]);
|
translate([0,0,-0.01]) cube([90,4,length+2]);
|
||||||
translate ([spindiam/2+15,20,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
translate ([spindiam/2+15,20,length/2]) rotate([90,0,0]) cylinder(r=2,h=30);
|
||||||
translate ([spindiam/2+15,15,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
translate ([spindiam/2+15,15,length/2]) rotate([90,0,0]) cylinder(r=3.5,h=4,$fn=6);
|
||||||
translate ([spindiam/2+15,17,length/2]) rotate([0,0,0]) screw_and_nut(size=spindle_holder_screwSize,length=25,nutDepth=4,nutAddedLen=0,captiveLen=0, invert=true, autoNutOffset=true, echoPart=true);
|
translate ([spindiam/2+15,17,length/2]) rotate([0,0,0]) screw_and_nut(size=spindle_holder_screwSize,length=25,nutDepth=4,nutAddedLen=0,captiveLen=0,tolerance=screwHoleTolerance, invert=true, autoNutOffset=true, echoPart=true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +111,6 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module motor_stand_holes_Z() {
|
module motor_stand_holes_Z() {
|
||||||
partThickness = wall_thickness;
|
partThickness = wall_thickness;
|
||||||
// Position relative to motor shaft
|
// Position relative to motor shaft
|
||||||
|
@ -132,16 +130,13 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module linearBearingHolderZ(h=10) {
|
module linearBearingHolderZ(h=10) {
|
||||||
linearBearingDiameter = linearBearing_D(Z_linearBearingModel);
|
linearBearingDiameter = linearBearing_D(Z_linearBearingModel);
|
||||||
translate([0,0,1.5]) cylinder(r=linearBearingDiameter/2+Z_linearBearingHole_tolerance,h=h);
|
translate([0,0,1.5]) cylinder(r=linearBearingDiameter/2+Z_linearBearingHole_tolerance,h=h);
|
||||||
cylinder(r=linearBearingDiameter/2.5,h=10*h,center=true);
|
cylinder(r=linearBearingDiameter/2.5,h=10*h,center=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module Z_solid_body(top_part=true) {
|
module Z_solid_body(top_part=true) {
|
||||||
|
|
||||||
color(color_stillPart) union() {
|
color(color_stillPart) union() {
|
||||||
hull() {
|
hull() {
|
||||||
if(top_part)
|
if(top_part)
|
||||||
|
@ -159,7 +154,6 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
cylinder(r=spindle_motor_diam/2+spindle_holder_thickness,h=wall_thickness);
|
cylinder(r=spindle_motor_diam/2+spindle_holder_thickness,h=wall_thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// For the linear bearing holders
|
// For the linear bearing holders
|
||||||
hull() {
|
hull() {
|
||||||
translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,0])
|
translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,0])
|
||||||
|
@ -198,7 +192,6 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
}
|
}
|
||||||
|
|
||||||
module Z_carriage(showSpindle=false,top_part=true, with_extra_parts=false, exploded=false) {
|
module Z_carriage(showSpindle=false,top_part=true, with_extra_parts=false, exploded=false) {
|
||||||
|
|
||||||
difference() {
|
difference() {
|
||||||
rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) {
|
rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) {
|
||||||
difference () {
|
difference () {
|
||||||
|
@ -225,10 +218,14 @@ module Cyclone_Z_carriage(z_thread_rod_length=120, with_extra_parts=false, explo
|
||||||
}
|
}
|
||||||
|
|
||||||
// Carriages
|
// Carriages
|
||||||
|
if(Render_Z_carriageBottom) {
|
||||||
rotate([0,0,-90])
|
rotate([0,0,-90])
|
||||||
Z_carriage(showSpindle=true,top_part=false,with_extra_parts=with_extra_parts, exploded=exploded);
|
Z_carriage(showSpindle=true,top_part=false,with_extra_parts=with_extra_parts, exploded=exploded);
|
||||||
|
}
|
||||||
|
if(Render_Z_carriageTop) {
|
||||||
translate([0,0,spindle_holder_distance+1.5]) rotate([180,0,-90])
|
translate([0,0,spindle_holder_distance+1.5]) rotate([180,0,-90])
|
||||||
Z_carriage(showSpindle=false,top_part=true,with_extra_parts=with_extra_parts, exploded=exploded);
|
Z_carriage(showSpindle=false,top_part=true,with_extra_parts=with_extra_parts, exploded=exploded);
|
||||||
|
}
|
||||||
|
|
||||||
// Bearings
|
// Bearings
|
||||||
translate([-axes_Zsmooth_separation/2,0,1.5])
|
translate([-axes_Zsmooth_separation/2,0,1.5])
|
||||||
|
|
|
@ -105,6 +105,7 @@ render_2D_or_3D() {
|
||||||
// Draw left Y smooth rod
|
// Draw left Y smooth rod
|
||||||
rotate([0,0,180]) standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false, echoPart=true);
|
rotate([0,0,180]) standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false, echoPart=true);
|
||||||
|
|
||||||
|
if(Render_X_leftFrame)
|
||||||
Cyclone_X_leftFrame();
|
Cyclone_X_leftFrame();
|
||||||
|
|
||||||
// TRANSLATE REFERENCE POSITION to the RIGHT frame, Y smooth rod end
|
// TRANSLATE REFERENCE POSITION to the RIGHT frame, Y smooth rod end
|
||||||
|
@ -114,6 +115,7 @@ render_2D_or_3D() {
|
||||||
// Draw right Y smooth rod
|
// Draw right Y smooth rod
|
||||||
rotate([0,0,180]) standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false, echoPart=true);
|
rotate([0,0,180]) standard_rod(diam=axes_Ysmooth_rodD, length=axes_Ysmooth_rodLen, threaded=false, echoPart=true);
|
||||||
|
|
||||||
|
if(Render_X_rightFrame)
|
||||||
Cyclone_X_rightFrame();
|
Cyclone_X_rightFrame();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +138,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();
|
||||||
|
|
||||||
|
if(Render_X_carriage)
|
||||||
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)
|
||||||
|
@ -155,6 +158,7 @@ render_2D_or_3D() {
|
||||||
translate([axes_Zsmooth_separation/2,0,axes_Zcarriage_pos]) {
|
translate([axes_Zsmooth_separation/2,0,axes_Zcarriage_pos]) {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
|
if(Render_Z_carriage)
|
||||||
Cyclone_Z_carriage();
|
Cyclone_Z_carriage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,14 +168,16 @@ render_2D_or_3D() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(Render_control_board) {
|
||||||
translate([axes_Xsmooth_rodLen/2,0,0])
|
translate([axes_Xsmooth_rodLen/2,0,0])
|
||||||
control_board(plasticColor=color_stillPart);
|
control_board(plasticColor=color_stillPart);
|
||||||
|
}
|
||||||
|
|
||||||
// TRANSLATE REFERENCE POSITION to the FRONT LEFT Y rod idler, Y smooth rod end
|
// TRANSLATE REFERENCE POSITION to the FRONT LEFT Y rod idler, Y smooth rod end
|
||||||
translate([-axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) {
|
translate([-axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
|
if(Render_Y_leftSmoothRodIdler)
|
||||||
Cyclone_Y_leftSmoothRodIdler();
|
Cyclone_Y_leftSmoothRodIdler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,6 +185,7 @@ render_2D_or_3D() {
|
||||||
translate([axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) {
|
translate([axes_Ysmooth_separation/2,-axes_Ysmooth_rodLen/2,axes_Yreference_height]) {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
|
if(Render_Y_rightSmoothRodIdler)
|
||||||
Cyclone_Y_rightSmoothRodIdler();
|
Cyclone_Y_rightSmoothRodIdler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -190,6 +197,7 @@ render_2D_or_3D() {
|
||||||
// Draw Y threaded rod
|
// Draw Y threaded rod
|
||||||
standard_rod(diam=axes_Ythreaded_rodD, length=axes_Ythreaded_rodLen, threaded=true, echoPart=true);
|
standard_rod(diam=axes_Ythreaded_rodD, length=axes_Ythreaded_rodLen, threaded=true, echoPart=true);
|
||||||
|
|
||||||
|
if(Render_Y_frontFrame)
|
||||||
Cyclone_Y_frontFrame();
|
Cyclone_Y_frontFrame();
|
||||||
|
|
||||||
|
|
||||||
|
@ -197,6 +205,7 @@ render_2D_or_3D() {
|
||||||
translate([0,axes_Ythreaded_rodLen,0]) {
|
translate([0,axes_Ythreaded_rodLen,0]) {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
|
if(Render_Y_backFrame)
|
||||||
Cyclone_Y_backFrame();
|
Cyclone_Y_backFrame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -208,8 +217,6 @@ render_2D_or_3D() {
|
||||||
|
|
||||||
if(render_DXF_workbed)
|
if(render_DXF_workbed)
|
||||||
!Cyclone_Y_carriage(); // Render carriage exclusively
|
!Cyclone_Y_carriage(); // Render carriage exclusively
|
||||||
else Cyclone_Y_carriage();
|
else if(Render_Y_carriage) Cyclone_Y_carriage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,13 +49,27 @@
|
||||||
PCB_holder_edge_length = 3;
|
PCB_holder_edge_length = 3;
|
||||||
|
|
||||||
// --- Z carriage ---
|
// --- Z carriage ---
|
||||||
X_backlash_armThickness = 30;
|
Z_carriage_wall_thickness = 9;
|
||||||
|
Z_carriage_wall_width = 54;
|
||||||
|
|
||||||
// --- X frames ---
|
// --- X frames ---
|
||||||
X_frames_additional_thickness = 5;
|
X_frames_additional_thickness = 5;
|
||||||
footThickness = 10;
|
X_frame_footThickness = 10;
|
||||||
corner_radius = 10;
|
X_frame_corner_radius = 10;
|
||||||
frameFrontalThickness = 15;
|
X_frame_FrontalThickness = 15;
|
||||||
|
X_backlash_armThickness = 30;
|
||||||
|
X_motorWallSeparation = 5;
|
||||||
|
X_motorRotatedOffset = 5;
|
||||||
|
X_gearWallSeparation = 5;
|
||||||
|
|
||||||
|
// --- Y frames ---
|
||||||
|
Y_frame_footThickness = 10;
|
||||||
|
Y_motorWallSeparation = 5;
|
||||||
|
Y_motorRotatedOffset = 5;
|
||||||
|
Y_gearWallSeparation = 5;
|
||||||
|
Y_foot_additional_separation = 5;
|
||||||
|
Y_endstopHolderRotation = 5;
|
||||||
|
Logo = true; // Add logo to the Y Smooth Rod Idlers
|
||||||
|
|
||||||
// --- Axes sizes ---
|
// --- Axes sizes ---
|
||||||
// *_rodLen = length
|
// *_rodLen = length
|
||||||
|
@ -87,6 +101,7 @@
|
||||||
Z_linearBearingModel = "LM8UU";
|
Z_linearBearingModel = "LM8UU";
|
||||||
Z_threaded_rodBearingModel = 608;
|
Z_threaded_rodBearingModel = 608;
|
||||||
Y_threaded_rodBearingModel = 608;
|
Y_threaded_rodBearingModel = 608;
|
||||||
|
Y_threaded_rodBearingDepth = 3;
|
||||||
|
|
||||||
// --- Steppers ---
|
// --- Steppers ---
|
||||||
//Y_motorModel = Nema17;
|
//Y_motorModel = Nema17;
|
||||||
|
@ -140,9 +155,9 @@
|
||||||
gearCover_wallThickness = 0.4*4;
|
gearCover_wallThickness = 0.4*4;
|
||||||
gearCover_screwHeadSpaceHeight = 4;
|
gearCover_screwHeadSpaceHeight = 4;
|
||||||
gearCover_screwHeadSpaceDiam = 6;
|
gearCover_screwHeadSpaceDiam = 6;
|
||||||
coverHeight = 16;
|
gearCoverHeight = 16;
|
||||||
coverExtraHeight = 5;
|
gearCoverExtraHeight = 5;
|
||||||
coverExtraRadius = -7;
|
gearCoverExtraRadius = -7;
|
||||||
gearCover_truncationAngle = 10;
|
gearCover_truncationAngle = 10;
|
||||||
|
|
||||||
// --- Spindle Motor ---
|
// --- Spindle Motor ---
|
||||||
|
@ -166,6 +181,9 @@
|
||||||
axes_Xsmooth_separation_tolerance = 0.5;
|
axes_Xsmooth_separation_tolerance = 0.5;
|
||||||
X_threaded_rod_Tolerance = 0.5;
|
X_threaded_rod_Tolerance = 0.5;
|
||||||
Z_linearBearingHole_tolerance = 0.5;
|
Z_linearBearingHole_tolerance = 0.5;
|
||||||
|
LinearBearingPressureFitTolerance = 0.4;
|
||||||
|
screwHoleTolerance = 0.4;
|
||||||
|
|
||||||
|
|
||||||
// --- Render options ---
|
// --- Render options ---
|
||||||
|
|
||||||
|
@ -190,10 +208,30 @@
|
||||||
axes_Ycarriage_pos = axes_Ysmooth_rodLen/2+sin($t*360)*axes_Ysmooth_rodLen/4.1;
|
axes_Ycarriage_pos = axes_Ysmooth_rodLen/2+sin($t*360)*axes_Ysmooth_rodLen/4.1;
|
||||||
axes_Zcarriage_pos = axes_Zsmooth_rodLen/2+sin($t*360)*axes_Zsmooth_rodLen/8;
|
axes_Zcarriage_pos = axes_Zsmooth_rodLen/2+sin($t*360)*axes_Zsmooth_rodLen/8;
|
||||||
|
|
||||||
|
// --- Parts ---
|
||||||
|
Render_X_leftFrame = true;
|
||||||
|
Render_X_rightFrame = true;
|
||||||
|
Render_X_carriage = true;
|
||||||
|
Render_Z_carriage = true;
|
||||||
|
Render_Z_carriageTop = true;
|
||||||
|
Render_Z_carriageBottom = true;
|
||||||
|
Render_Y_leftSmoothRodIdler = true;
|
||||||
|
Render_Y_rightSmoothRodIdler = true;
|
||||||
|
Render_Y_frontFrame = true;
|
||||||
|
Render_Y_backFrame = true;
|
||||||
|
Render_Y_carriage = true;
|
||||||
|
Render_control_board = true;
|
||||||
|
Render_Y_gearCover = true;
|
||||||
|
Render_Y_motorGear = true;
|
||||||
|
Render_Y_rodGear = true;
|
||||||
|
Render_X_gearCover = true;
|
||||||
|
Render_X_motorGear = true;
|
||||||
|
Render_X_rodGear = true;
|
||||||
|
Render_PCBholderTop = true;
|
||||||
|
Render_PCBholderBottom = true;
|
||||||
|
Render_YsubPart_linearBearingHolders = true;
|
||||||
|
Render_YsubPart_nutHolder = true;
|
||||||
|
//Render_rodHolder = true;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,6 @@ module hole_for_nut(size=3,nutAddedLen=0,captiveLen=0,rot=0,tolerance=0.35) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module screw_single(size=3,length=10,tolerance=0, renderPart=false, echoPart=false) {
|
module screw_single(size=3,length=10,tolerance=0, renderPart=false, echoPart=false) {
|
||||||
height = METRIC_NUT_THICKNESS[size]+tolerance;
|
height = METRIC_NUT_THICKNESS[size]+tolerance;
|
||||||
color(BlackPaint)
|
color(BlackPaint)
|
||||||
|
@ -225,7 +224,6 @@ module cyclone_rod_gear(Gear_N_Teeth = 21, gearHeight=10, nutSize = 8, saveMater
|
||||||
rod_diam = COURSE_METRIC_BOLT_MAJOR_THREAD_DIAMETERS[nutSize]+tolerance;
|
rod_diam = COURSE_METRIC_BOLT_MAJOR_THREAD_DIAMETERS[nutSize]+tolerance;
|
||||||
nut_separation = METRIC_NUT_THICKNESS[nutSize]/2+tolerance;
|
nut_separation = METRIC_NUT_THICKNESS[nutSize]/2+tolerance;
|
||||||
nut_radius = METRIC_NUT_AC_WIDTHS[nutSize]/2+tolerance;
|
nut_radius = METRIC_NUT_AC_WIDTHS[nutSize]/2+tolerance;
|
||||||
// TODO add support for gearHeight in the gears.scad
|
|
||||||
// Rod Gear
|
// Rod Gear
|
||||||
difference() {
|
difference() {
|
||||||
union() {
|
union() {
|
||||||
|
|
Loading…
Reference in New Issue