diff --git a/Hardware/CYCLONE_2/Cyclone.scad b/Hardware/CYCLONE_2/Cyclone.scad index 48981e9..687836d 100644 --- a/Hardware/CYCLONE_2/Cyclone.scad +++ b/Hardware/CYCLONE_2/Cyclone.scad @@ -56,8 +56,8 @@ function animatePart(n,dist=30,overlap=animated_timePerPart*0.25) = dist*animati // Parameters for the bottom base -base_size_X = 304.8+animatePart(1,overlap=0); -base_size_Y = 261.62+animatePart(2); +base_size_X = 304.8 + animatePart(1,overlap=0); +base_size_Y = 261.62 + animatePart(2); base_thickness = 8; base_corner_radius = 20; base_corner_res = 0; @@ -65,45 +65,45 @@ foot_offset = 25; // Parameters for the axes sizes -axes_Xsmooth_rodLen = animatePart(1,overlap=0)+250;//265; -axes_Ysmooth_rodLen = animatePart(2)+210; -axes_Zsmooth_rodLen = 90+animatePart(3); +axes_Xsmooth_rodLen = 250 + animatePart(1,overlap=0); +axes_Ysmooth_rodLen = 210 + animatePart(2); +axes_Zsmooth_rodLen = 110 + animatePart(3); axes_Xthreaded_rodLen = axes_Xsmooth_rodLen+50; axes_Ythreaded_rodLen = axes_Ysmooth_rodLen-10; -axes_Zthreaded_rodLen = axes_Zsmooth_rodLen-20; +axes_Zthreaded_rodLen = 90; -axes_Xsmooth_rodD = 8.5+animatePart(4,dist=5); -axes_Ysmooth_rodD = 8.5+animatePart(4,dist=5); -axes_Zsmooth_rodD = 8.2+animatePart(4,dist=5); +axes_Xsmooth_rodD = 8.5 + animatePart(4,dist=5); +axes_Ysmooth_rodD = 8.5 + animatePart(4,dist=5); +axes_Zsmooth_rodD = 8.2 + animatePart(4,dist=5); -axes_Xthreaded_rodD = 8.5+animatePart(4,dist=5); -axes_Ythreaded_rodD = 8.5+animatePart(4,dist=5); -axes_Zthreaded_rodD = 8.5+animatePart(4,dist=5); +axes_Xthreaded_rodD = 8.5 + animatePart(4,dist=5); +axes_Ythreaded_rodD = 8.5 + animatePart(4,dist=5); +axes_Zthreaded_rodD = 8.5 + animatePart(4,dist=5); // Parameters for the axes reference position // Note: The reference coordinates are centered like this: // Y axis reference is the Y smooth rod end, BACK of RIGHT FRAME // X axis reference is the frontal X smooth rod end, RIGHT FRAME // Z axis reference is the Z threaded rod, at the height of the Z nut, and relative to the X reference -axes_Yreference_height = 40+animatePart(5); -axes_Xreference_height = 74+animatePart(6); // relative to Y reference -axes_Zreference_height = -3+animatePart(7)+animatePart(9); // relative to X reference +axes_Yreference_height = 40 + animatePart(5); +axes_Xreference_height = 74 + animatePart(6); // relative to Y reference +axes_Zreference_height = -3 + animatePart(7) + animatePart(9); // relative to X reference axes_Xreference_posY = -81-animatePart(8)-animatePart(9); // relative to Y reference. Moves the X axis towards the front of the machine axes_Zreference_posY = 14; // relative to X reference. Positions Z rods between the Y rods -axes_Y_threaded_height = 30+animatePart(5); +axes_Y_threaded_height = 30 + animatePart(5); -axes_Ysmooth_separation = 165+animatePart(1,overlap=0); -axes_Xsmooth_separation = 40+animatePart(9); -axes_Zsmooth_separation = 40+animatePart(10,overlap=0); +axes_Ysmooth_separation = 165 + animatePart(1,overlap=0); +axes_Xsmooth_separation = 40 + animatePart(9); +axes_Zsmooth_separation = 40 + animatePart(10,overlap=0); // Carriage positions (for rendering) axes_Xcarriage_pos = axes_Xsmooth_rodLen/2+sin($t*360)*axes_Xsmooth_rodLen/3; axes_Ycarriage_pos = axes_Ysmooth_rodLen/2+sin($t*360)*axes_Ysmooth_rodLen/4.1; -axes_Zcarriage_pos = axes_Zsmooth_rodLen/3+sin($t*360)*axes_Zsmooth_rodLen/4; +axes_Zcarriage_pos = axes_Zsmooth_rodLen/2+sin($t*360)*axes_Zsmooth_rodLen/8; @@ -117,8 +117,12 @@ workbed_separation_from_Y_smooth_rod = 10; // Part colors -color_movingPart = [0.4,0.5,0.9]; -color_stillPart = [0.9,0.9,0.1]; +blueColor = [0.3,0.6,0.9]; +redColor = [0.8,0.3,0.3]; +yellowColor = [0.9,0.9,0.1]; +blackColor = [0.2,0.2,0.2]; +color_movingPart = yellowColor+[0.1,0.1,0.1]; +color_stillPart = yellowColor; // Calculations @@ -128,7 +132,7 @@ 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 // Activate/Deactivate rendering auxiliary references (LCS axis, etc) -draw_references = true; +draw_references = false; render_DXF_base = false; render_DXF_workbed = false; render_bases_outline = false; // Toggle for rendering outline DXFs @@ -233,11 +237,7 @@ render_2D_or_3D() { translate([0,0,axes_Zcarriage_pos]) { if(draw_references) %frame(); - //Cyclone_Z_carriage(); - - linearBearing_single(model="LM8UU", echoPart=true); - translate([axes_Zsmooth_separation,0,0]) - linearBearing_single(model="LM8UU", echoPart=true); + Cyclone_Z_carriage(); } } } diff --git a/Hardware/CYCLONE_2/Cyclone_X_frames.scad b/Hardware/CYCLONE_2/Cyclone_X_frames.scad index 59bea46..26f06ae 100644 --- a/Hardware/CYCLONE_2/Cyclone_X_frames.scad +++ b/Hardware/CYCLONE_2/Cyclone_X_frames.scad @@ -228,7 +228,7 @@ module Cyclone_X_leftFrame(isLeft=true) { } // TRANSLATE REFERENCE POSITION to the left frame, X lower smooth rod end - translate([-axes_Xreference_posX,axes_Xreference_posY,axes_Xreference_height]) { + color(color_stillPart) translate([-axes_Xreference_posX,axes_Xreference_posY,axes_Xreference_height]) { rotate([0,0,90]) standard_rod(diam=axes_Xsmooth_rodD, length=partThickness*4, threaded=false, renderPart=true, center=true); rotate([0,0,-90]) rotate([0,90,0]) diff --git a/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad b/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad index ccd7069..0ba58c9 100644 --- a/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad +++ b/Hardware/CYCLONE_2/Cyclone_Y_carriage.scad @@ -161,9 +161,9 @@ module Cyclone_YsubPart_PCBholder() { // Draw the PCB (transparent) %translate([0,0,PCBholder_height]) - color([0.2,0.6,0,0.5]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ], center=true); + color([0.2,0.6,0, 1]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ], center=true); %translate([0,0,PCBholder_height+PCB_dimZ/2]) - color([0.8,0.5,0,0.5]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ/10], center=true); + color([0.8,0.5,0, 1]) cube([PCB_dimX+PCB_holder_tolerance*2,PCB_dimY+PCB_holder_tolerance*2,PCB_dimZ/10], center=true); difference() { color(color_stillPart) translate([0,0,PCBholder_height/2]) @@ -199,7 +199,9 @@ module Cyclone_YsubPart_PCBholder() { bcube([PCB_dimX+PCB_holder_tolerance*2+holderL_width, PCB_dimY+PCB_holder_tolerance*2+holderL_width, holderL_thickness+holderL_thickness_btm], cr=8, cres=0); translate([0,0,PCBholder_height+holderL_thickness_btm/2]) bcube([PCB_dimX+PCB_holder_tolerance*2+holderL_innerWidth, PCB_dimY+PCB_holder_tolerance*2+holderL_innerWidth, holderL_thickness_btm], cr=8, cres=0); - #frame(100); + + if(draw_references) %frame(); + translate([0,0,PCBholder_height/2]) cube([PCB_dimX-PCB_holder_edge_length*2,PCB_dimY-PCB_holder_edge_length*2, 2*PCBholder_height+1], center=true); translate([-PCB_dimX/2+PCB_holder_edge_length,0,-0.5]) diff --git a/Hardware/CYCLONE_2/Cyclone_Y_frames.scad b/Hardware/CYCLONE_2/Cyclone_Y_frames.scad index 18c3c75..54faa30 100644 --- a/Hardware/CYCLONE_2/Cyclone_Y_frames.scad +++ b/Hardware/CYCLONE_2/Cyclone_Y_frames.scad @@ -394,8 +394,8 @@ module Cyclone_Y_rightSmoothRodIdler(mirrorLogo = false) { footSeparation = screwSize*2; footThickness = 10; - difference() { - color(color_stillPart) union() { + color(color_stillPart) difference() { + union() { translate([0,0,-axes_Yreference_height]) cube([dimX,dimY,dimZ+holderThickness+axes_Ysmooth_rodD/2]); translate([-holderOuterRadius,0,-axes_Yreference_height]) diff --git a/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad b/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad index aadb0b9..c04ed7c 100644 --- a/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad +++ b/Hardware/CYCLONE_2/Cyclone_Z_carriage.scad @@ -4,13 +4,37 @@ // 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/ - +// TO-DO: Re-program the carriage in a parametric manner module Cyclone_Z_carriage() { - color("cyan") translate([-5,-100+5,0]) { - cube([axes_Zsmooth_separation+10,100,10]); - translate([0,0,30]) - cube([axes_Zsmooth_separation+10,100,10]); + color(color_stillPart) + translate([axes_Zsmooth_separation/2,0,0]) rotate([0,0,-90]) + import("INHERITED/stl/Cyclone_Zcarriage.stl"); + + // Bearings + linearBearing_single(model="LM8UU", echoPart=true); + translate([axes_Zsmooth_separation,0,0]) + linearBearing_single(model="LM8UU", echoPart=true); + translate([0,0,24.5]) + linearBearing_single(model="LM8UU", echoPart=true); + translate([axes_Zsmooth_separation,0,24.5]) + linearBearing_single(model="LM8UU", echoPart=true); + + // Motor + translate([axes_Zsmooth_separation/2,30,51]) rotate([180,0,0]) + stepperMotor(screwHeight=motorWallSeparation, echoPart=true); + + // Dremel tool + translate([axes_Zsmooth_separation/2,-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/Hardware/CYCLONE_2/README.md b/Hardware/CYCLONE_2/README.md index c4f19b5..a5f6f8c 100644 --- a/Hardware/CYCLONE_2/README.md +++ b/Hardware/CYCLONE_2/README.md @@ -17,11 +17,8 @@ Adressing all the issues from the original design, and implementing improvements Work in progress. Pending tasks: -- * Improve vacuum cleaner attachment (make it detachable) -* Finish protective covers for the gears -* Endstop integration for Z -* Better plastic-saving holes for the X frames -* Improve the nut holder in the X carriage (with the same spring mechanism as in Y) -* Re-design the [Z carriage](INHERITED) after testing performance +* Endstop integration for Z (integrated probe) +* Re-implement the [Z carriage](INHERITED), currently inherited from Cyclone V1 ![ScreenShot](output/cyclone.png) diff --git a/Hardware/CYCLONE_2/output/STL_plates/Cyclone_fullPlate.stl b/Hardware/CYCLONE_2/output/STL_plates/Cyclone_fullPlate.stl new file mode 100644 index 0000000..7b86f14 Binary files /dev/null and b/Hardware/CYCLONE_2/output/STL_plates/Cyclone_fullPlate.stl differ diff --git a/Hardware/CYCLONE_2/output/STL_plates/Cyclone_fullPlate_8aug2014.stl b/Hardware/CYCLONE_2/output/STL_plates/Cyclone_fullPlate_8aug2014.stl deleted file mode 100644 index 7f37f9d..0000000 Binary files a/Hardware/CYCLONE_2/output/STL_plates/Cyclone_fullPlate_8aug2014.stl and /dev/null differ diff --git a/Hardware/CYCLONE_2/output/STL_plates/README.md b/Hardware/CYCLONE_2/output/STL_plates/README.md index 3422770..7230884 100644 --- a/Hardware/CYCLONE_2/output/STL_plates/README.md +++ b/Hardware/CYCLONE_2/output/STL_plates/README.md @@ -1,4 +1,17 @@ -Obsolete!! Use only for reference on how to print the parts +Last updated: September 15th 2014 --- +This plate can serve as a reference on how to print the parts. +You can also open the STL with [Cura](http://wiki.ultimaker.com/Cura) and use the option "split into parts" to easily arrange your own plates. +Tested Cura slicing settings: + + Material: PLA, 1.75 mm + Nozzle diameter: 0.4 mm + Layer height: 0.25 mm + Shell thickness: 1.2 mm + Bottom/Top thickness: 1 mm + Fill density: 15 % + Print speed: 60 mm/s + Printing temperature: 210 deg + diff --git a/Hardware/CYCLONE_2/output/cyclone.png b/Hardware/CYCLONE_2/output/cyclone.png index f8287b3..d71f8fe 100644 Binary files a/Hardware/CYCLONE_2/output/cyclone.png and b/Hardware/CYCLONE_2/output/cyclone.png differ