diff --git a/Hardware/Development/Cyclone_Template/template.scad b/Hardware/Development/Cyclone_Template/template.scad index 7471f7d..91885de 100644 --- a/Hardware/Development/Cyclone_Template/template.scad +++ b/Hardware/Development/Cyclone_Template/template.scad @@ -12,6 +12,7 @@ use <../Y_axis/Y_nut_holder.scad> use <../XZ_axis/X_carriage.scad> use <../XZ_axis/Z_carriage.scad> use <../libs/rod.scad> +use <../libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad> X_axis_sep = 210; Y_axis_sep = 210; @@ -55,7 +56,7 @@ X_Travel = 0; //0~164 Y_Travel = 0; //0~101 Z_Travel = 30; //0~30 -//To display steppers, bearings, washers, nuts, screws, micro switchs, etc. +//To display steppers, bearings, washers, nuts, bolts, micro-switches, etc. Display_Extra_Parts = true; //To enable exploded drawing view @@ -134,10 +135,17 @@ module cnc_workbed() { cube([workbed_X,workbed_Y,workbed_thickness],center=true); cube([workbed_X-1,workbed_Y-1,workbed_thickness+1],center=true); } + } + if(Display_Extra_Parts) { + translate([-28-X_PCB_BOARD/2,8+Y_PCB_BOARD/2,-(workbed_thickness)/2]) + rotate([180,0,0]) PCB_vise_1(with_extra_parts=true, exploded=Exploded_Drawing); + translate([28+X_PCB_BOARD/2,-8-Y_PCB_BOARD/2,-(workbed_thickness)/2]) + rotate([180,0,180]) PCB_vise_1(with_extra_parts=true, exploded=Exploded_Drawing); // --- PCB Board --- - translate([0,0,-(workbed_thickness+Z_PCB_BOARD)/2]) - cube([X_PCB_BOARD,Y_PCB_BOARD,Z_PCB_BOARD],center=true); + echo("Non-Plastic Parts: Double sided PCB ", X_PCB_BOARD, " x ", Y_PCB_BOARD, " x ", Z_PCB_BOARD); + translate([0,0,-(workbed_thickness)/2-15]) + color([0.72,0.45,0.20]) cube([X_PCB_BOARD,Y_PCB_BOARD,Z_PCB_BOARD],center=true); } } diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.STL b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.STL new file mode 100644 index 0000000..caffb55 Binary files /dev/null and b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.STL differ diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad new file mode 100644 index 0000000..2f073e0 --- /dev/null +++ b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part1.scad @@ -0,0 +1,52 @@ +//Designed by Forgetful_Guy +//From http://www.thingiverse.com/thing:63578 +//License: http://creativecommons.org/publicdomain/zero/1.0/ + +include +include +use <../large_washer.scad> +use <./PCB_vise_1_Part2.scad> + + +module PCB_vise_1_Part1(with_extra_parts=false, exploded=false) { + import("./PCB_vise_1_Part1.STL"); + + + if(with_extra_parts) + PCB_vise_1_Part1_extras(exploded_distance=(exploded?5:0)); + + module PCB_vise_1_Part1_extras(exploded_distance=0) { + echo("Non-Plastic Parts: 2 x Large washer M5 for PCB_vise_1_Part1"); + echo("Non-Plastic Parts: 2 x Self tapping screw 4.8 x 19 mm for PCB_vise_1_Part1"); + echo("Non-Plastic Parts: 5 x M3 nut for PCB_vise_1_Part1"); + color(Steel) { + translate([10,20,8.0+exploded_distance]) { + large_washer(5); + translate([0,0,largeWasher_H(5)+2+5*exploded_distance]) rotate([180,0,0]) csk_bolt(4.8, 19); + } + translate([10,20+40,8.0+exploded_distance]) { + large_washer(5); + translate([0,0,largeWasher_H(5)+2+5*exploded_distance]) rotate([180,0,0]) csk_bolt(4.8, 19); + } + translate([24-2*exploded_distance,14,8+0.6]) + flat_nut(3); + translate([24-2*exploded_distance,14+28,8+0.6]) + flat_nut(3); + translate([24-2*exploded_distance,14+28*2,8+0.6]) + flat_nut(3); + translate([33,4-2*exploded_distance,8+0.6]) + flat_nut(3); + translate([33+22,4-2*exploded_distance,8+0.6]) + flat_nut(3); + } + } +} + + +module PCB_vise_1(with_extra_parts=false, exploded=false) { + PCB_vise_1_Part1(with_extra_parts=with_extra_parts, exploded=exploded); + translate([20,0,15+0.8]) + PCB_vise_1_Part2(with_extra_parts=with_extra_parts, exploded=exploded); +} + +PCB_vise_1(with_extra_parts=false, exploded=false); \ No newline at end of file diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.STL b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.STL new file mode 100644 index 0000000..e0040fc Binary files /dev/null and b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.STL differ diff --git a/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.scad b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.scad new file mode 100644 index 0000000..a82ad18 --- /dev/null +++ b/Hardware/Development/libs/PCB_Machining_Vise/PCB_vise_1_Part2.scad @@ -0,0 +1,34 @@ +//Designed by Forgetful_Guy +//From http://www.thingiverse.com/thing:63578 +//License: http://creativecommons.org/publicdomain/zero/1.0/ + +include +include + +module PCB_vise_1_Part2(with_extra_parts=false, exploded=false) { + import("./PCB_vise_1_Part2.STL"); + + + if(with_extra_parts) + PCB_vise_1_Part2_extras(exploded_distance=(exploded?5:0)); + + module PCB_vise_1_Part2_extras(exploded_distance=0) { + echo("Non-Plastic Parts: 5 x Bolt M3 x 16 mm for PCB_vise_1_Part2"); + color(Steel) { + translate([4,14,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([4,14+28,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([4,14+28*2,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([13,4,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + translate([13+22,4,2.5+4*exploded_distance]) + rotate([180,0,0]) boltHole(size=3, length=16); + } + } +} + + +PCB_vise_1_Part2(with_extra_parts=false, exploded=false); + diff --git a/Hardware/Development/libs/large_washer.scad b/Hardware/Development/libs/large_washer.scad new file mode 100644 index 0000000..6ed52e1 --- /dev/null +++ b/Hardware/Development/libs/large_washer.scad @@ -0,0 +1,45 @@ +////By Glen Chung, 2013. +//Dual licenced under Creative Commons Attribution-Share Alike 3.0 and LGPL2 or later + +include +include + +LARGE_WASHER_D1 = 0; //Inner diameter +LARGE_WASHER_D2 = 1; //Outer diameter +LARGE_WASHER_H = 2; //Height + +// Large Washer dimensions +// model == X ? [ D1, D2, H]: +function largeWasherDimensions(model=3) = + model == 3 ? [ 3.2*mm, 9.0*mm, 0.8*mm]: + model == 4 ? [ 4.3*mm, 12.0*mm, 1.0*mm]: + model == 5 ? [ 5.3*mm, 15.0*mm, 1.0*mm]: + model == 6 ? [ 6.4*mm, 18.0*mm, 1.6*mm]: + model == 8 ? [ 8.4*mm, 24.0*mm, 2.0*mm]: + model == 10 ? [ 10.5*mm, 30.0*mm, 2.5*mm]: + model == 12 ? [ 13.0*mm, 37.0*mm, 3.0*mm]: + model == 16 ? [ 17.0*mm, 50.0*mm, 3.0*mm]: + model == 20 ? [ 21.0*mm, 60.0*mm, 4.0*mm]: + model == 24 ? [ 25.0*mm, 72.0*mm, 5.0*mm]: + model == 30 ? [ 33.0*mm, 92.0*mm, 6.0*mm]: + /*model == 36 ?*/ [ 39.0*mm, 110.0*mm, 8.0*mm]; + +function largeWasher_D1(model) = largeWasherDimensions(model)[LARGE_WASHER_D1]; +function largeWasher_D2(model) = largeWasherDimensions(model)[LARGE_WASHER_D2]; +function largeWasher_H(model) = largeWasherDimensions(model)[LARGE_WASHER_H]; + +module large_washer(dia=3) +{ + d1 = largeWasher_D1(dia); + d2 = largeWasher_D2(dia); + h = largeWasher_H(dia); + difference() + { + cylinder(r=d2/2,h=h); + translate([0,0,-h/2]) cylinder(r=d1/2,h=h*2); + } +} + +//examples +//large_washer(); //m3 +//large_washer(5); //m5 \ No newline at end of file