diff --git a/Source_files/Cycl_X_carriage_alt.scad b/Source_files/Cycl_X_carriage_alt.scad new file mode 100644 index 00000000..f5cf28fa --- /dev/null +++ b/Source_files/Cycl_X_carriage_alt.scad @@ -0,0 +1,257 @@ +// This file is part of Cyclone PCB Factory: an open-source 3D printable CNC machine for PCB manufacture +// http://reprap.org/wiki/Cyclone_PCB_Factory +// Original author: Carlosgs (http://carlosgs.es) +// 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 +use +module Cyclone_X_carriage_alt() { + linearBearingLength = linearBearing_L(X_linearBearingModel); + linearBearingDiameter = linearBearing_D(X_linearBearingModel); + + // Correction is needed to account for 3D printer tolerances + axes_effective_Xsmooth_separation = axes_Xsmooth_separation-axes_Xsmooth_separation_tolerance; + + sideExtensions = linearBearingDiameter/3+2; + + ZrodHolderLength = 30; + + screwSize = X_carriage_screwSize; + screwLength = linearBearingDiameter+sideExtensions; + screwAditionalLength = 2; + + screwExtension = screwSize*1.2; + + linearBearingLengthExtension = 6+max(axes_Zsmooth_rodD+axes_Zsmooth_separation-2*linearBearingLength-X_linearBearingSeparation, X_linearBearingSeparation); + + dimX = 2*linearBearingLength+linearBearingLengthExtension; + + module Cyclone_XsubPart_ZnutHolder(holes=false) { + rod_nut_len = 0.8*axes_Zthreaded_rodD; + rodTolerance = X_threaded_rod_Tolerance; + rodSize = Z_threaded_rodNutSize; // M3, M4, etc (integers only) + dimZ = 20; // Nut holder thickness + Z_bearing_width = bearingWidth(608); + + 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.2); + // 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*0.9, h=axes_effective_Xsmooth_separation+dimZ*2, $fn=6); + } + } + + module Cyclone_XsubPart_XnutHolder(holes=false) { + rod_nut_len = 0.8*axes_Xthreaded_rodD; + rodSize = X_threaded_rodNutSize; // M3, M4, etc (integers only) + washer_D = X_backlash_washer_D; + washer_thickness = X_backlash_washer_thickness; + + holderExtension = 10; + + armWidth = axes_Xthreaded_rodD*2+6; + + if(!holes) { + // Main shape + translate([X_backlash_armThickness/2,0,-axes_effective_Xsmooth_separation/2+holderExtension]) + rotate([0,90,0]) bcube([axes_effective_Xsmooth_separation,armWidth,X_backlash_armThickness], cr=3,cres=10); + *translate([32/2,0,0]) + rotate([180,0,0]) rotate([0,0,90]) Cyclone_YsubPart_nutHolder(); + } else { + if(draw_references) %frame(); + translate([-rod_nut_len/2+1,0,0]) rotate([0,0,-90]) rotate([180,0,0]) { + // Hole for the main nut + hull() { + rotate([0,180,0]) hole_for_nut(size=rodSize,nutAddedLen=0,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + translate([0,-3.25,0]) + rotate([0,180,0]) hole_for_nut(size=rodSize-2,nutAddedLen=0,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + translate([0,3,0]) + hull() { + rotate([0,180,0]) hole_for_nut(size=rodSize,nutAddedLen=0,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + translate([0,4,0]) + rotate([0,180,0]) hole_for_nut(size=rodSize+2,nutAddedLen=0,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + // Hole for the sliding nut + translate([0,-rod_nut_len-3-washer_thickness/2,0]) hull() { + rotate([0,180,0]) hole_for_nut(size=rodSize,nutAddedLen=X_backlash_armThickness,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.3); + translate([0,-2.25,0]) + rotate([0,180,0]) hole_for_nut(size=rodSize,nutAddedLen=X_backlash_armThickness,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.3); + } + // Hole for the rod + rotate([0,180,0])hole_for_nut(size=rodSize-2,nutAddedLen=X_backlash_armThickness,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + // Hole for the washer + translate([rod_nut_len/2+3+1,0,0]) rotate([0,0,-90]) rotate([180,0,0]) + hull() { + hull() { + washer_single(diam=washer_D, thickness=washer_thickness, renderPart=true, tolerance=0.3); + translate([0,0,-holderExtension*2]) + washer_single(diam=washer_D, thickness=washer_thickness, renderPart=true, tolerance=0.3); + } + hull() { + washer_single(diam=rodSize, thickness=4.5+washer_thickness, renderPart=true, tolerance=0.3); + translate([0,0,-holderExtension*2]) + washer_single(diam=rodSize, thickness=4.5+washer_thickness, renderPart=true, tolerance=0.3); + } + } + *translate([-0.01+rod_nut_len/2+6,0,0]) + hull() { + rotate([0,0,-90]) hole_for_nut(size=rodSize,nutAddedLen=-1.25,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + translate([2,0,0]) + rotate([0,0,-90]) hole_for_nut(size=rodSize-2,nutAddedLen=0,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + *translate([X_backlash_armThickness+0.01,0,0]) + rotate([0,0,-90]) hole_for_nut(size=rodSize-2,nutAddedLen=X_backlash_armThickness,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + } + + module Cyclone_XsubPart_XnutHolder_SINGLE_NUT(holes=false) { + rod_nut_len = 0.8*axes_Xthreaded_rodD; + rodSize = X_threaded_rodNutSize; // M3, M4, etc (integers only) + washer_D = X_backlash_washer_D; + + armWidth = axes_Xthreaded_rodD*2+5; + + X_backlash_armThickness = rod_nut_len*2; + + if(!holes) { + translate([X_backlash_armThickness/2,0,-axes_effective_Xsmooth_separation/2+washer_D/2]) + rotate([0,90,0]) bcube([axes_effective_Xsmooth_separation,armWidth,X_backlash_armThickness], cr=3,cres=10); + } else { + if(draw_references) %frame(); + translate([-0.01+rod_nut_len/2+6,0,0]) + hull() { + rotate([0,0,-90]) hole_for_nut(size=8,nutAddedLen=-1.25,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + translate([2,0,0]) + rotate([0,0,-90]) hole_for_nut(size=6,nutAddedLen=0,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + translate([X_backlash_armThickness+0.01,0,0]) + rotate([0,0,-90]) hole_for_nut(size=6,nutAddedLen=X_backlash_armThickness,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1); + } + } + + module Cyclone_XsubPart_XendstopBumper() { + XendBumper_x = 5; + XendBumper_y = 53; + XendBumper_z = 12; + XendBumper_D = 15; + translate([XendBumper_x/2, XendBumper_y/2-axes_Xsmooth_separation/2, -XendBumper_z/2-linearBearingDiameter/2]) { + rotate([0,90,0]) bcube([XendBumper_z,XendBumper_y,XendBumper_x], cr=XendBumper_z/2-0.01, cres=10); + translate([0,XendBumper_y/2-XendBumper_z/2,0]) + rotate([0,90,0]) cylinder(r=XendBumper_D/2, h=XendBumper_x, center=true); + //rotate([0,90,0]) bcube([XendBumper_z,XendBumper_y,XendBumper_x], cr=XendBumper_z/2-0.01, cres=10); + } + } + + color(color_movingPart) difference() { + // Main shape + union() { + hull() { + rotate([0,90,0]) + 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-X_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+X_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 holder + translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation+(linearBearingDiameter+sideExtensions)/2]) + Cyclone_XsubPart_ZnutHolder(holes=false); + // X nut holder + translate([-dimX/2,axes_effective_Xsmooth_separation,0]) + rotate([-135,0,0]) Cyclone_XsubPart_XnutHolder(holes=false); + // X endstop bumper + translate([-dimX/2,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation]) + Cyclone_XsubPart_XendstopBumper(); + } + + // ----- Hole for the Z carriage space ------ + difference() { + translate([-dimX/2-0.5,0,-sideExtensions+ZrodHolderLength]) + cube([dimX+1,axes_Zreference_posY+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); + } + + // ----- Hole for the radial bearing ------ + translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation-(linearBearingDiameter+sideExtensions)/2]) rotate([180,0,0]) bearingHole(depth=Z_bearing_width); + translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_effective_Xsmooth_separation-(linearBearingDiameter+sideExtensions)/2]) rotate([180,0,0]) nut(size=axes_Xthreaded_rodD, echoPart=true); + + // ----- Hole for the spindle tool ------ + translate([0,-35+8.5,0]) + cylinder(r=34/2, h=100, center=true); + + // ----- Holes for the linear bearings ------ + // Bottom right linear bearing + translate([-linearBearingLength/2-X_linearBearingSeparation/2,0,0]) + rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, pressureFitTolerance=LinearBearingPressureFitTolerance, lengthExtension=linearBearingLengthExtension); + // Bottom left linear bearing + translate([linearBearingLength/2+X_linearBearingSeparation/2,0,0]) + rotate([0,0,90]) linearBearingHole(model=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, pressureFitTolerance=LinearBearingPressureFitTolerance, 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=X_linearBearingModel, lateralExtension=sideExtensions*2+screwExtension*2, pressureFitTolerance=LinearBearingPressureFitTolerance, lengthExtension=linearBearingLength+linearBearingLengthExtension+X_linearBearingSeparation); + + // ----- Holes for the screws ------ + // Bottom right screw + 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,tolerance=screwHoleTolerance); + // Bottom left screw + 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,tolerance=screwHoleTolerance); + // 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,tolerance=screwHoleTolerance); + + // ----- Hole for the Z nut ------ + translate([0,axes_Zreference_posY+axes_ZthreadedReference_posY,axes_Zreference_height]) + cylinder(r=8.5+Z_threaded_rod_Tolerance, h=axes_Zsmooth_rodLen); + //cylinder(r=axes_Zthreaded_rodD*0.9, h=axes_effective_Xsmooth_separation+dimZ*2); + // Cyclone_XsubPart_ZnutHolder(holes=true); + + // ----- Hole for the X nut ------ + translate([-dimX/2,axes_effective_Xsmooth_separation,0]) + rotate([-135,0,0]) Cyclone_XsubPart_XnutHolder(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]) { + // Z smooth rod (right) + cylinder(r=axes_Zsmooth_rodD/2, h=axes_Zsmooth_rodLen); + // Z smooth rod (left) + translate([axes_Zsmooth_separation,0,0]) + cylinder(r=axes_Zsmooth_rodD/2, h=axes_Zsmooth_rodLen); + } + } + // Draw linear bearings + rotate([0,90,0]) linearBearing_single(model=X_linearBearingModel, echoPart=true); + rotate([0,-90,0]) linearBearing_single(model=X_linearBearingModel, echoPart=true); + translate([linearBearingLength/2,axes_effective_Xsmooth_separation,axes_effective_Xsmooth_separation]) + rotate([0,-90,0]) linearBearing_single(model=X_linearBearingModel, echoPart=true); +} diff --git a/Source_files/Cycl_Z_carriage_alt.scad b/Source_files/Cycl_Z_carriage_alt.scad new file mode 100644 index 00000000..a2ec1920 --- /dev/null +++ b/Source_files/Cycl_Z_carriage_alt.scad @@ -0,0 +1,207 @@ +// Cyclone PCB Factory: a 3D printable CNC machine for PCB manufacture +// Created by Carlosgs (http://carlosgs.es) +// License: Attribution - Share Alike - Creative Commons (http://creativecommons.org/licenses/by-sa/3.0/) + /* + * August 2013 changes to design top-part mounting screw at same side as bottom-part. + * also started introduced 2nd spindle diameter for a-symmetrical spindles. this is not working yet. + * by Harry Binnema. + */ + +include +include +include +include +use +use +use +use +use +use +use + +Z_motorModel = Nema17; +motor_width = lookup(NemaSideSize, Z_motorModel); +motor_screw_head_diameter = METRIC_BOLT_CAP_DIAMETERS[3]+1+screwHoleTolerance;; + +Z_bearing_width = bearingWidth(Z_threaded_rodBearingModel); + +axis_distance = 21; + +wall_thickness = Z_carriage_wall_thickness; +wall_height = motor_width; +wall_width = Z_carriage_wall_width; + +axes_ZgearRatio = Z_motorGearRatio/Z_rodGearRatio; // Number of tooth (motor/rod) + +Z_smooth_rods_sep = axes_Xsmooth_separation; + +module Cyclone_Z_carriage_alt(z_thread_rod_length=120, with_extra_parts=false, exploded=false) { + // Settings + linearBearingDiameter = linearBearing_D(Z_linearBearingModel); + linearBearingLength = linearBearing_L(Z_linearBearingModel); + spindle_holder_distance = linearBearingLength*2+3; + gear_thickness = Z_gear_thickness; + + ZthreadedOffset = -3.5; + axes_Xsmooth_separation = 16+ZthreadedOffset; + Z_threaded_pos = motor_width/2+axis_distance+axes_Xsmooth_separation; + spindle_front_offset = 10+ZthreadedOffset; + + rodNutSize = Z_threaded_rodNutSize; + + module motorHolesZ() { + nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, Z_motorModel); + + // Screws for holding the motor + translate([0,0,-wall_thickness/1.9]) + stepperMotor_mount(wall_thickness+1, sideLen=0, slideOut=false); + + // Hole for the screwdriver + translate([0,-wall_width/2,wall_thickness/2]) + rotate([0,90,90]) bcube([2*(wall_thickness-5),5,wall_height],cr=1); + + + for(i=[-1,1]) for(j=[-1,1]) + translate([i*nema_screw_separation/2,j*nema_screw_separation/2,2.5-wall_thickness/2+3]) { + hull() { + translate([0,Z_motor_adjust_margin/2,0]) + cylinder(r=motor_screw_head_diameter/2,h=10*wall_thickness,center=false); + translate([0,-Z_motor_adjust_margin/2,0]) + cylinder(r=motor_screw_head_diameter/2,h=10*wall_thickness,center=false); + } + } + } + + module motor_stand_holes_Z() { + partThickness = wall_thickness; + // Position relative to motor shaft + translate([motor_width/2,motor_width/2,wall_thickness/2]) { + motorHolesZ(); + + // Bearing holes + translate([0,axis_distance,0]) { + bearingHole(depth=Z_bearing_width, thickness=partThickness, model=Z_threaded_rodBearingModel); + + hull() { + cylinder(r=(axes_Zsmooth_rodD*2)/2,h=10*wall_thickness,center=true); + translate([0,-axis_distance,0]) + cylinder(r=(axes_Zsmooth_rodD*2)/2,h=10*wall_thickness,center=true); + } + } + } + } + + module linearBearingHolderZ(h=10) { + linearBearingDiameter = linearBearing_D(Z_linearBearingModel); + translate([0,0,1.5]) cylinder(r=linearBearingDiameter/2+Z_linearBearingHole_tolerance,h=h); + cylinder(r=linearBearingDiameter/2.5,h=10*h,center=true); + } + + module Z_solid_body(top_part=true) { + color(color_stillPart) union() { + hull() { + translate([wall_height/2,wall_width/2,wall_thickness/2]) + bcube([wall_height,wall_width,wall_thickness],cr=4,cres=10); + } + + // For the linear bearing holders + hull() { + translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,-40+wall_thickness]) + cylinder(r=3+linearBearingDiameter/2,h=40); + translate([wall_height/2+Z_smooth_rods_sep/2,Z_threaded_pos,-40+wall_thickness]) + cylinder(r=3+linearBearingDiameter/2,h=40); + } + } + } + + module Z_carriage(showSpindle=false,top_part=true, with_extra_parts=false, exploded=false) { + difference() { + rotate([0,0,-90]) translate([-wall_height/2,-Z_threaded_pos,0]) { + difference () { + Z_solid_body(top_part); + motor_stand_holes_Z(); + //translate([wall_height/2,wall_width-4,0]) + // spindle_holder_holes(wall_thickness,spindle_motor_diam,top_part); + // ----- Holes for the rods ------ + // TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod) + translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,-40-0.1]) { + // Z smooth rod (right) + cylinder(r=axes_Zsmooth_rodD/2, h=axes_Zsmooth_rodLen); + // Z smooth rod (left) + translate([axes_Zsmooth_separation,0,0]) + cylinder(r=axes_Zsmooth_rodD/2, h=axes_Zsmooth_rodLen); + } + //translate([wall_height/2-Z_smooth_rods_sep/2,Z_threaded_pos,0]) + // linearBearingHolderZ(wall_thickness); + //translate([wall_height/2+Z_smooth_rods_sep/2,Z_threaded_pos,0]) + // linearBearingHolderZ(wall_thickness); + } + } + + // Hole for the threaded rod + if(!top_part) { + translate([-axes_Xsmooth_separation,0,0]) + cylinder(r=6+axes_Zsmooth_rodD,h=wall_thickness*10,center=true); + } + + // Truncation in the base for avoiding collision with the X axis + if(!top_part) translate([-15-axes_Xsmooth_separation+11+ZthreadedOffset,0,0]) cube([20,100,50],center=true); + } + } + + // Carriages + if(!Render_Z_carriageBottom) { + rotate([0,0,-90]) + 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]) + Z_carriage(showSpindle=false,top_part=true,with_extra_parts=with_extra_parts, exploded=exploded); + } + + // Bearings + //translate([-axes_Zsmooth_separation/2,0,1.5]) + // linearBearing_single(model="LM8UU", echoPart=true); + //translate([axes_Zsmooth_separation/2,0,1.5]) + // linearBearing_single(model="LM8UU", echoPart=true); + //translate([-axes_Zsmooth_separation/2,0,linearBearingLength+0.5+1.5]) + // linearBearing_single(model="LM8UU", echoPart=true); + //translate([axes_Zsmooth_separation/2,0,linearBearingLength+0.5+1.5]) + // linearBearing_single(model="LM8UU", echoPart=true); + translate([0,axes_Xsmooth_separation,spindle_holder_distance+1.5-wall_thickness/2]) + rotate([180,0,0]) + radialBearing(echoPart=true); + + // Motor + translate([0,axes_Xsmooth_separation+axis_distance,spindle_holder_distance+1.5]) rotate([180,0,0]) + stepperMotor(screwHeight=wall_thickness/2+1.5, echoPart=true); + + // Gears + color(color_stillPart) { + translate([0,axes_Xsmooth_separation+axis_distance,spindle_holder_distance+2-wall_thickness-gear_thickness]) + cyclone_motor_gear(Gear_N_Teeth=Z_motorGearRatio,gearHeight=gear_thickness,tolerance=0); + translate([0,axes_Xsmooth_separation,spindle_holder_distance+1.5-wall_thickness/2-Z_bearing_width*2-gear_thickness/4]) + cyclone_rod_gear(Gear_N_Teeth=Z_rodGearRatio,gearHeight=gear_thickness,nutSize=8,tolerance=0); + } + + // Nuts + translate([0,axes_Xsmooth_separation,spindle_holder_distance+1.5-wall_thickness/2-Z_bearing_width*2]) + nut(size=rodNutSize, echoPart=true); + translate([0,axes_Xsmooth_separation,spindle_holder_distance+1.5-wall_thickness/2-Z_bearing_width*2-gear_thickness*1.4]) + nut(size=rodNutSize, chamfer=true, echoPart=true); + + // Dremel tool + if(showTool) { + translate([0,-40,-40]) { + color([0.2,0.2,0.2]) %cylinder(r1=30/2, r2=50/2, h=40); + translate([0,0,50]) + color([0.2,0.2,0.2]) %cylinder(r=50/2, h=80); + translate([0,0,50+80]) + color([0.2,0.2,0.2]) %cylinder(r1=50/2, r2=30/2, h=10); + translate([0,0,-20]) + color([0.4,0.4,0.4]) %cylinder(r1=12/2, r2=10/2, h=20); + translate([0,0,-20-20]) + color([0.9,0.9,0.9]) %cylinder(r1=0.5/2, r2=3/2, h=20); + } + } +} diff --git a/Source_files/Cyclone.scad b/Source_files/Cyclone.scad index c12eba5a..ae528e1f 100644 --- a/Source_files/Cyclone.scad +++ b/Source_files/Cyclone.scad @@ -59,8 +59,12 @@ axes_Y_smoothThreaded_verticalSeparation = axes_Yreference_height-axes_Y_threade axes_ZthreadedReference_posY = axes_Xsmooth_separation-axes_Zreference_posY-axes_Zreference_posY; // Relative to X carriage reference // Include Cyclone parts +//include +//include include +include include +include include include include @@ -139,7 +143,10 @@ render_2D_or_3D() { if(draw_references) %frame(); if(Render_X_carriage) - Cyclone_X_carriage(); + if(!alt_XZ_carriage) { + Cyclone_X_carriage();} + else { + Cyclone_X_carriage_alt();} // TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod) translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) { @@ -154,6 +161,7 @@ render_2D_or_3D() { translate([axes_Zsmooth_separation/2,axes_ZthreadedReference_posY,0]) rotate([90,0,0]) standard_rod(diam=axes_Zthreaded_rodD, length=axes_Zthreaded_rodLen, threaded=true, echoPart=true); + if(!alt_XZ_carriage) { // TRANSLATE REFERENCE POSITION to the Z axis reference translate([axes_Zsmooth_separation/2,0,axes_Zcarriage_pos]) { if(draw_references) %frame(); @@ -161,13 +169,18 @@ render_2D_or_3D() { if(Render_Z_carriage) Cyclone_Z_carriage(); } + } else { + translate([axes_Zsmooth_separation/2,0,axes_Zsmooth_rodLen-80]) { + if(draw_references) %frame(); + Cyclone_Z_carriage_alt(); + } + } } } } } - if(Render_control_board) { translate([axes_Xsmooth_rodLen/2,0,0]) control_board(plasticColor=color_stillPart); diff --git a/Source_files/configs/Default_config.h b/Source_files/configs/Default_config.h index a762005b..d4f8ac7e 100644 --- a/Source_files/configs/Default_config.h +++ b/Source_files/configs/Default_config.h @@ -87,10 +87,10 @@ axes_Xthreaded_rodLen = axes_Xsmooth_rodLen+50; axes_Xthreaded_rodD = 8.5 + animatePart(4,dist=5); // Z smooth rod - axes_Zsmooth_rodLen = 110 + animatePart(3); + axes_Zsmooth_rodLen = 110 + 40 + animatePart(3); axes_Zsmooth_rodD = 8.2 + animatePart(4,dist=5); // Z threaded rod - axes_Zthreaded_rodLen = 90; + axes_Zthreaded_rodLen = 90 + 30; axes_Zthreaded_rodD = 8.5 + animatePart(4,dist=5); // --- Bearings ---