Added Y gear cover, added usage comments to Cyclone.scad
parent
04d1cee218
commit
4f840da610
|
@ -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"
|
||||
// -------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue