Added Y gear cover, added usage comments to Cyclone.scad

pull/20/head
Carlos Garcia Saura 2014-09-11 01:17:23 +02:00
parent 04d1cee218
commit 4f840da610
4 changed files with 21884 additions and 66 deletions

View File

@ -4,11 +4,36 @@
// 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/
// ---------- NOTES FOR A PROPER RENDERING IN OPENSCAD -----------
// First of all, make sure you are using the latest version of OpenScad (>= 2014.05.31)
// Then, it is important to change a default setting. Go to: Edit --> Preferences --> Advanced
// And increase "Turn off rendering at 2000 elements" to a larger number like 20000
//
// If problems persist, you may need to install the MCAD (<http://reprap.org/wiki/MCAD>)
// and Obiscad (<https://github.com/Obijuan/obiscad>) libraries into the /libs directory.
// With Git, this can be achieved automatically by running the following command:
// git submodule update --init
// -------------------------------------------------------------
// NOTE: For a proper rendering in OpenScad it is important to change a default setting:
// Go to: Edit --> Preferences --> Advanced
// And increase "Turn off rendering at 2000 elements" to a larger number like 20000
// ---------- GENERATING THE STL FILES ------------------------
// In OpenScad, it is possible to preview designs (F5 key) or to render them (F6 key)
// to be able to export them as STL files ready for 3D printing.
// Please note that some parts will only be present in the preview, but not in the
// final render. This is normal, as they are used only as a reference and do not need
// to be 3D printed.
//
// The main file that needs to be opened with OpenScad is Cyclone.scad (this document).
// From here, it is possible to select most of the parts, using the root modifier (!).
// Place it before a function to exclusively render that subtree. When used, for instance, as
// !Cyclone_Y_frontFrame();
// it will show only the frontal Y axis frame. Rendering it with F6 will output only
// that part, which will be ready to be exported as STL.
//
// It is also possible to generate larger STL files that contain multiple elements,
// and afterwards split them. This can be achieved with a software like Cura, that
// also allows easy rotation and positioning of the models for printing.
// To split STLs in Cura: right click over the part --> "split into parts"
// -------------------------------------------------------------

View File

@ -121,61 +121,6 @@ module Cyclone_X_leftFrame(isLeft=true) {
}
}
module Cyclone_XsubPart_gearCover_OLD() {
margin = 4;
rodGearAddedMargin = 1;
wallThickness = 0.4*4;
screwHeadSpaceHeight = 4;
screwHeadSpaceDiam = 7;
coverHeight = gearWallSeparation+axes_XgearThickness+wallThickness+margin;
coverExtraHeight = 5;
nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, Nema17);
difference() {
union() {
rotate([0,90,0])
cylinder(r=axes_XgearSeparation/(1+1/axes_XgearRatio)+wallThickness+margin+rodGearAddedMargin, h=coverHeight);
// Translate to motor position
rotate([motorRotatedOffset,0,0]) {
translate([0,axes_XgearSeparation,0])
rotate([-motorRotatedOffset,0,0]) {
rotate([0,90,0]) cylinder(r=axes_XgearSeparation/(1+axes_XgearRatio)+wallThickness+margin, h=coverHeight);
// Support screw
translate([0,-nema_screw_separation/2,nema_screw_separation/2])
//rotate([0,90,0]) cylinder(r1=screwHeadSpaceDiam/1.5, r2=0, h=coverHeight);
rotate([0,90,0]) cylinder(r=screwHeadSpaceDiam/1.5, h=coverHeight);
}
}
}
translate([-0.01,0,0])
union() {
rotate([0,90,0])
cylinder(r=axes_XgearSeparation/(1+1/axes_XgearRatio)+margin+rodGearAddedMargin, h=gearWallSeparation+axes_XgearThickness+margin);
rotate([0,90,0]) cylinder(r=20/2-1.5, h=30);
// Translate to motor position
rotate([motorRotatedOffset,0,0]) {
translate([0,axes_XgearSeparation,0])
rotate([-motorRotatedOffset,0,0]) {
difference() {
rotate([0,90,0]) cylinder(r=axes_XgearSeparation/(1+axes_XgearRatio)+margin, h=gearWallSeparation+axes_XgearThickness+margin);
translate([0,-nema_screw_separation/2,nema_screw_separation/2])
rotate([0,90,0]) cylinder(r=screwHeadSpaceDiam/1.5, h=wallThickness);
}
rotate([0,90,0]) cylinder(r=7/2, h=30);
translate([0,nema_screw_separation/2,-nema_screw_separation/2])
rotate([0,90,0]) cylinder(r=screwHeadSpaceDiam/2, h=screwHeadSpaceHeight);
translate([0,-nema_screw_separation/2,-nema_screw_separation/2])
rotate([0,90,0]) cylinder(r=screwHeadSpaceDiam/2, h=screwHeadSpaceHeight);
// Support screw
translate([0,-nema_screw_separation/2,nema_screw_separation/2])
rotate([0,90,0]) cylinder(r=3.5/2, h=coverHeight+0.1);
translate([wallThickness,-nema_screw_separation/2,nema_screw_separation/2])
rotate([0,90,0]) cylinder(r=screwHeadSpaceDiam/2, h=coverHeight+0.1);
}
}
}
}
}
module Cyclone_X_endstopHolder(holes=false) {
// Endstop holder

View File

@ -22,10 +22,6 @@ axes_YgearRatio = 21/21; // Number of tooth (motor/rod)
module Cyclone_Y_frontFrame() {
*color("red")
translate([-10,0,-axes_Y_threaded_height])
cube([20,10,axes_Y_threaded_height+5]);
screwSize = 3; // M3, M4, etc (integers only)
motorWallSeparation = 5;
@ -49,6 +45,97 @@ module Cyclone_Y_frontFrame() {
foot_additional_separation = 5;
footThickness = 10;
module Cyclone_YsubPart_gearCover() {
margin = 4;
rodGearAddedMargin = 1;
wallThickness = 0.4*4;
screwHeadSpaceHeight = 4;
screwHeadSpaceDiam = 7;
coverHeight = 16;
coverExtraHeight = 5;
coverExtraRadius = -7;
nema_screw_separation = lookup(NemaDistanceBetweenMountingHoles, Nema17);
motorGearRadius = axes_YgearSeparation/(1+axes_YgearRatio)+margin;
rodGearRadius = axes_YgearSeparation/(1+1/axes_YgearRatio)+margin+rodGearAddedMargin;
difference() {
union() {
// Cover for the rod gear
rotate([90,0,0])
cylinder(r=rodGearRadius+wallThickness, h=coverHeight);
translate([0,-coverHeight,0])
rotate([90,0,0])
cylinder(r1=rodGearRadius+wallThickness, r2=rodGearRadius+wallThickness+coverExtraRadius, h=coverExtraHeight+wallThickness);
// Translate to motor position
rotate([0,-motorRotatedOffset,0]) {
translate([-axes_YgearSeparation,0,0])
rotate([0,motorRotatedOffset,0]) {
// Cover for the motor gear
rotate([90,0,0]) cylinder(r=motorGearRadius+wallThickness, h=coverHeight);
translate([0,-coverHeight,0])
rotate([90,0,0]) cylinder(r1=motorGearRadius+wallThickness, r2=motorGearRadius+wallThickness+coverExtraRadius, h=coverExtraHeight+wallThickness);
// Cylinder for the support screw
translate([nema_screw_separation/2,0,nema_screw_separation/2])
rotate([90,0,0]) cylinder(r=screwHeadSpaceDiam/2+wallThickness, h=coverHeight);
}
}
}
translate([0,0.01,0])
union() {
// Translate to motor position
rotate([0,-motorRotatedOffset,0]) {
translate([-axes_YgearSeparation,0,0])
rotate([0,motorRotatedOffset,0]) {
difference() {
union() {
// Translate to the rod position
rotate([0,-motorRotatedOffset,0])
translate([+axes_YgearSeparation,0,0])
rotate([0,motorRotatedOffset,0]) {
rotate([90,0,0])
cylinder(r=rodGearRadius, h=coverHeight);
// Hole for the rod gear
rotate([90,0,0])
cylinder(r=rodGearRadius, h=coverHeight);
translate([0,-coverHeight+0.02,0])
rotate([90,0,0])
cylinder(r1=rodGearRadius, r2=rodGearRadius+coverExtraRadius, h=coverExtraHeight);
rotate([90,0,0])
cylinder(r=rodGearRadius+coverExtraRadius, h=coverHeight+coverExtraHeight+wallThickness+0.1);
}
// Hole for the motor gear
rotate([90,0,0]) cylinder(r=motorGearRadius, h=coverHeight);
translate([0,-coverHeight+0.02,0])
rotate([90,0,0]) cylinder(r1=motorGearRadius, r2=motorGearRadius+coverExtraRadius, h=coverExtraHeight);
rotate([90,0,0]) cylinder(r=motorGearRadius+coverExtraRadius, h=coverHeight+coverExtraHeight+wallThickness+0.1);
// Outer hole for the support screw
translate([nema_screw_separation/2,0,nema_screw_separation/2])
rotate([90,0,0]) cylinder(r=screwHeadSpaceDiam/2, h=coverHeight+coverExtraHeight);
}
// Support screw holder
translate([nema_screw_separation/2,0,nema_screw_separation/2])
rotate([90,0,0]) cylinder(r=screwHeadSpaceDiam/2+wallThickness, h=wallThickness);
}
// Inner hole for the support screw
translate([nema_screw_separation/2,0,nema_screw_separation/2])
rotate([90,0,0]) cylinder(r=(screwSize+1)/2, h=coverHeight+0.1);
// Holes for the other two screws
translate([nema_screw_separation/2,0,-nema_screw_separation/2])
rotate([90,0,0]) cylinder(r=screwHeadSpaceDiam/2, h=screwHeadSpaceHeight);
translate([-nema_screw_separation/2,0,-nema_screw_separation/2])
rotate([90,0,0]) cylinder(r=screwHeadSpaceDiam/2, h=screwHeadSpaceHeight);
// Hole for the Y idler stand part
*translate([-10,-coverHeight-2,-5])
scale(-1) cube([50,50,50]);
}
}
}
}
}
translate([0,2*rod_nut_len+gear_thickness,0]) {
translate([0,bearing_width-bearingDepth,0]) {
if(draw_references) color("blue") %frame(20);
@ -105,7 +192,7 @@ module Cyclone_Y_frontFrame() {
}
// Translate to motor axis position
rotate([0,-motorRotatedOffset,0]) {
translate([-axes_XgearSeparation,0,0])
translate([-axes_YgearSeparation,0,0])
rotate([0,motorRotatedOffset,0]) {
translate([0,motorWallSeparation-0.01,0])
rotate([0,0,90]) rotate([0,-90,0]) stepperMotor_mount(motorWallSeparation, sideLen=Ymotor_sideLen, slideOut=false);
@ -130,15 +217,18 @@ module Cyclone_Y_frontFrame() {
}
// Translate to motor position
rotate([0,-motorRotatedOffset,0]) {
translate([-axes_XgearSeparation,0,0])
translate([-axes_YgearSeparation,0,0])
rotate([0,motorRotatedOffset,0]) {
translate([0,motorWallSeparation,0])
rotate([90,0,0])
stepperMotor(screwHeight=motorWallSeparation, echoPart=true);
translate([0,-rod_nut_len-gear_thickness-bearing_width+bearingDepth,0])
rotate([-90,0,0]) motorGear(r=axes_XgearSeparation/(1+axes_XgearRatio), echoPart=true);
rotate([-90,0,0]) motorGear(r=axes_YgearSeparation/(1+axes_YgearRatio), echoPart=true);
}
}
// Draw the Y gear cover
translate([0,-0.1,0])
Cyclone_YsubPart_gearCover();
}
rotate([-90,0,0])
radialBearing(echoPart=true);

File diff suppressed because it is too large Load Diff