parent
0e71ad30f3
commit
ed4ca401ac
|
@ -1,257 +0,0 @@
|
|||
// 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 <libs/linear_bearing.scad>
|
||||
use <libs/standard_parts.scad>
|
||||
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);
|
||||
}
|
|
@ -1,207 +0,0 @@
|
|||
// 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 <libs/MCAD/stepper.scad>
|
||||
include <libs/MCAD/bearing.scad>
|
||||
include <libs/MCAD/metric_fastners.scad>
|
||||
include <libs/MCAD/nuts_and_bolts.scad>
|
||||
use <libs/Write/Write.scad>
|
||||
use <libs/linear_bearing.scad>
|
||||
use <libs/obiscad/obiscad/vector.scad>
|
||||
use <libs/obiscad/obiscad/attach.scad>
|
||||
use <libs/obiscad/obiscad/bcube.scad>
|
||||
use <libs/standard_parts.scad>
|
||||
use <libs/MCAD/materials.scad>
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -59,12 +59,8 @@ 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 <Cycl_X_carriage_alt.scad>
|
||||
//include <Cycl_Z_carriage_alt.scad>
|
||||
include <Cycl_X_carriage.scad>
|
||||
include <Cycl_X_carriage_alt.scad>
|
||||
include <Cycl_Z_carriage.scad>
|
||||
include <Cycl_Z_carriage_alt.scad>
|
||||
include <Cycl_X_frames.scad>
|
||||
include <Cycl_Y_carriage.scad>
|
||||
include <Cycl_Y_frames.scad>
|
||||
|
@ -143,10 +139,7 @@ render_2D_or_3D() {
|
|||
if(draw_references) %frame();
|
||||
|
||||
if(Render_X_carriage)
|
||||
if(!alt_XZ_carriage) {
|
||||
Cyclone_X_carriage();}
|
||||
else {
|
||||
Cyclone_X_carriage_alt();}
|
||||
Cyclone_X_carriage();
|
||||
|
||||
// TRANSLATE REFERENCE POSITION to the Z axis origin (right smooth rod)
|
||||
translate([-axes_Zsmooth_separation/2,axes_Zreference_posY,axes_Zreference_height]) {
|
||||
|
@ -161,7 +154,6 @@ 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();
|
||||
|
@ -169,18 +161,13 @@ 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);
|
||||
|
|
|
@ -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 + 40 + animatePart(3);
|
||||
axes_Zsmooth_rodLen = 110 + animatePart(3);
|
||||
axes_Zsmooth_rodD = 8.2 + animatePart(4,dist=5);
|
||||
// Z threaded rod
|
||||
axes_Zthreaded_rodLen = 90 + 30;
|
||||
axes_Zthreaded_rodLen = 90;
|
||||
axes_Zthreaded_rodD = 8.5 + animatePart(4,dist=5);
|
||||
|
||||
// --- Bearings ---
|
||||
|
|
Loading…
Reference in New Issue