Added note regarding OpenScad default parameters, added PCB holder (work in progress)
parent
3b87f452f4
commit
70130c0dfe
|
@ -4,6 +4,14 @@
|
||||||
// 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/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Increase the resolution of default shapes
|
// Increase the resolution of default shapes
|
||||||
$fa = 5; // Minimum angle for fragments [degrees]
|
$fa = 5; // Minimum angle for fragments [degrees]
|
||||||
$fs = 0.5; // Minimum fragment size [mm]
|
$fs = 0.5; // Minimum fragment size [mm]
|
||||||
|
@ -161,7 +169,7 @@ render_2D_or_3D() {
|
||||||
|
|
||||||
|
|
||||||
// TRANSLATE REFERENCE POSITION to the right frame, X lower smooth rod end
|
// TRANSLATE REFERENCE POSITION to the right frame, X lower smooth rod end
|
||||||
!translate([axes_Xreference_posX,axes_Xreference_posY,axes_Xreference_height]) {
|
translate([axes_Xreference_posX,axes_Xreference_posY,axes_Xreference_height]) {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
|
|
||||||
// Draw bottom X smooth rod
|
// Draw bottom X smooth rod
|
||||||
|
|
|
@ -69,7 +69,7 @@ module Cyclone_X_carriage() {
|
||||||
rotate([0,90,0]) bcube([axes_effective_Xsmooth_separation,armWidth,armThickness], cr=3,cres=10);
|
rotate([0,90,0]) bcube([axes_effective_Xsmooth_separation,armWidth,armThickness], cr=3,cres=10);
|
||||||
} else {
|
} else {
|
||||||
if(draw_references) %frame();
|
if(draw_references) %frame();
|
||||||
#translate([-0.01+rod_nut_len/2+6,0,0])
|
translate([-0.01+rod_nut_len/2+6,0,0])
|
||||||
hull() {
|
hull() {
|
||||||
rotate([0,0,-90]) hole_for_nut(size=8,nutAddedLen=-1.25,captiveLen=axes_Xthreaded_rodD*3,rot=90,tolerance=0.1);
|
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])
|
translate([2,0,0])
|
||||||
|
|
|
@ -9,6 +9,8 @@ include <MCAD/nuts_and_bolts.scad>
|
||||||
|
|
||||||
workbed_separation_from_Y_threaded_rod = axes_Y_smoothThreaded_verticalSeparation+workbed_separation_from_Y_smooth_rod+axes_Ysmooth_rodD/2;
|
workbed_separation_from_Y_threaded_rod = axes_Y_smoothThreaded_verticalSeparation+workbed_separation_from_Y_smooth_rod+axes_Ysmooth_rodD/2;
|
||||||
|
|
||||||
|
PCBholder_height = 10;
|
||||||
|
|
||||||
module Cyclone_YsubPart_nutHolder() {
|
module Cyclone_YsubPart_nutHolder() {
|
||||||
footThickness = 10;
|
footThickness = 10;
|
||||||
screwSeparation = 10;
|
screwSeparation = 10;
|
||||||
|
@ -71,7 +73,7 @@ module Cyclone_YsubPart_nutHolder() {
|
||||||
|
|
||||||
|
|
||||||
use <libs/linear_bearing.scad>
|
use <libs/linear_bearing.scad>
|
||||||
module Cyclone_YsubPart_singleLinearBearingHolder() {
|
module Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=false) {
|
||||||
linearBearingModel = "LM8UU";
|
linearBearingModel = "LM8UU";
|
||||||
linearBearingLength = linearBearing_L(linearBearingModel);
|
linearBearingLength = linearBearing_L(linearBearingModel);
|
||||||
linearBearingDiameter = linearBearing_D(linearBearingModel);
|
linearBearingDiameter = linearBearing_D(linearBearingModel);
|
||||||
|
@ -89,50 +91,68 @@ module Cyclone_YsubPart_singleLinearBearingHolder() {
|
||||||
footSeparation = screwSize*2;
|
footSeparation = screwSize*2;
|
||||||
footThickness = 7;
|
footThickness = 7;
|
||||||
|
|
||||||
workbed_screws_aditional_length = 10;
|
workbed_screws_aditional_length = PCBholder_height;
|
||||||
|
|
||||||
linearBearing_pressureFitTolerance = 0.5;
|
linearBearing_pressureFitTolerance = 0.5;
|
||||||
|
|
||||||
difference() {
|
if(onlyScrews) {
|
||||||
// Main part
|
|
||||||
union() {
|
|
||||||
translate([0,0,dimZ/2])
|
|
||||||
bcube([dimX,dimY,dimZ], cr=3, cres=0);
|
|
||||||
translate([0,0,dimZ])
|
|
||||||
hull() {
|
|
||||||
translate([screwSize/2,0,-footThickness/2])
|
|
||||||
bcube([dimX+screwSize,dimY,footThickness], cr=3, cres=0);
|
|
||||||
translate([dimX/2+footSeparation,0,-footThickness/2])
|
|
||||||
cylinder(r=screwSize+3,h=footThickness,center=true);
|
|
||||||
}
|
|
||||||
translate([0,0,-holderExtension/2])
|
|
||||||
bcube([dimX,dimY,holderExtension], cr=3, cres=0);
|
|
||||||
}
|
|
||||||
// Hole for linear bearing
|
|
||||||
linearBearingHole(model=linearBearingModel, lateralExtension=holderExtension, lengthExtension=2*plasticHolderLength, holderLength=plasticHolderLength/2);
|
|
||||||
//linearBearingHole(model=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);
|
||||||
|
} else {
|
||||||
|
difference() {
|
||||||
|
// Main part
|
||||||
|
union() {
|
||||||
|
translate([0,0,dimZ/2])
|
||||||
|
bcube([dimX,dimY,dimZ], cr=3, cres=0);
|
||||||
|
translate([0,0,dimZ])
|
||||||
|
hull() {
|
||||||
|
translate([screwSize/2,0,-footThickness/2])
|
||||||
|
bcube([dimX+screwSize,dimY,footThickness], cr=3, cres=0);
|
||||||
|
translate([dimX/2+footSeparation,0,-footThickness/2])
|
||||||
|
cylinder(r=screwSize+3,h=footThickness,center=true);
|
||||||
|
}
|
||||||
|
translate([0,0,-holderExtension/2])
|
||||||
|
bcube([dimX,dimY,holderExtension], cr=3, cres=0);
|
||||||
|
}
|
||||||
|
// Hole for linear bearing
|
||||||
|
linearBearingHole(model=linearBearingModel, lateralExtension=holderExtension, lengthExtension=2*plasticHolderLength, holderLength=plasticHolderLength/2);
|
||||||
|
//linearBearingHole(model=linearBearingModel);
|
||||||
|
// Hole for the screw and nut
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
translate([0,linearBearingLength/2,0])
|
||||||
|
rotate([90,0,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
|
||||||
}
|
}
|
||||||
|
|
||||||
translate([0,linearBearingLength/2,0])
|
|
||||||
rotate([90,0,0]) linearBearing_single(model=linearBearingModel, echoPart=true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module Cyclone_YsubPart_linearBearingHolders() {
|
module Cyclone_YsubPart_linearBearingHolders(onlyScrews=false) {
|
||||||
translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
|
translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
|
||||||
Cyclone_YsubPart_singleLinearBearingHolder();
|
Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=onlyScrews);
|
||||||
translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
|
translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
|
||||||
Cyclone_YsubPart_singleLinearBearingHolder();
|
Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=onlyScrews);
|
||||||
scale([-1,1,1]) translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
|
scale([-1,1,1]) translate([axes_Ysmooth_separation/2,Ycarriage_linearBearingSeparation/2])
|
||||||
Cyclone_YsubPart_singleLinearBearingHolder();
|
Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=onlyScrews);
|
||||||
scale([-1,1,1]) translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
|
scale([-1,1,1]) translate([axes_Ysmooth_separation/2,-Ycarriage_linearBearingSeparation/2])
|
||||||
Cyclone_YsubPart_singleLinearBearingHolder();
|
Cyclone_YsubPart_singleLinearBearingHolder(onlyScrews=onlyScrews);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module Cyclone_YsubPart_PCBholder() {
|
||||||
|
translate([0,0,PCBholder_height/2])
|
||||||
|
bcube([workbed_size_X,workbed_size_Y,PCBholder_height], cr=25, cres=10);
|
||||||
|
translate([0,0,1.6/2+PCBholder_height])
|
||||||
|
color("green") cube([160,100,1.6], center=true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module Cyclone_Y_carriage() {
|
module Cyclone_Y_carriage() {
|
||||||
if(render_DXF_workbed) {
|
!if(render_DXF_workbed) {
|
||||||
offset(delta = DXF_offset) projection(cut = true)
|
offset(delta = DXF_offset) projection(cut = true)
|
||||||
translate([0,0,-workbed_separation_from_Y_threaded_rod]) {
|
translate([0,0,-workbed_separation_from_Y_threaded_rod]) {
|
||||||
Cyclone_YsubPart_nutHolder();
|
Cyclone_YsubPart_nutHolder();
|
||||||
|
@ -144,8 +164,14 @@ module Cyclone_Y_carriage() {
|
||||||
} else {
|
} else {
|
||||||
if(draw_references) color("red") %frame(20);
|
if(draw_references) color("red") %frame(20);
|
||||||
Cyclone_YsubPart_nutHolder();
|
Cyclone_YsubPart_nutHolder();
|
||||||
translate([0,0,axes_Y_smoothThreaded_verticalSeparation])
|
translate([0,0,axes_Y_smoothThreaded_verticalSeparation]) {
|
||||||
Cyclone_YsubPart_linearBearingHolders();
|
Cyclone_YsubPart_linearBearingHolders();
|
||||||
|
difference() {
|
||||||
|
translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness-axes_Y_smoothThreaded_verticalSeparation])
|
||||||
|
Cyclone_YsubPart_PCBholder();
|
||||||
|
#Cyclone_YsubPart_linearBearingHolders(onlyScrews=true);
|
||||||
|
}
|
||||||
|
}
|
||||||
color([0.9,0.8,0.8,0.5]) translate([0,0,workbed_separation_from_Y_threaded_rod+workbed_thickness])
|
color([0.9,0.8,0.8,0.5]) 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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,7 @@ Work in progress. Pending tasks:
|
||||||
* PCB holder
|
* PCB holder
|
||||||
* Fork Marlin firmware and add Cyclone parameters
|
* Fork Marlin firmware and add Cyclone parameters
|
||||||
* Better plastic-saving holes for the X frames
|
* Better plastic-saving holes for the X frames
|
||||||
* Add the X nut holder to the X carriage
|
* Improve the nut holder in the X carriage
|
||||||
* Add the Z nut holder to the X carriage
|
|
||||||
* Re-design the [Z carriage](INHERITED) after testing performance. Integrate vacuum cleaner attachment
|
* Re-design the [Z carriage](INHERITED) after testing performance. Integrate vacuum cleaner attachment
|
||||||
* Re-design the [gears](INHERITED) with smoother edges
|
* Re-design the [gears](INHERITED) with smoother edges
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue