diff --git a/Hardware/CYCLONE_2/Source_files/Cycl_Y_carriage.scad b/Hardware/CYCLONE_2/Source_files/Cycl_Y_carriage.scad index 478473e..83d540d 100644 --- a/Hardware/CYCLONE_2/Source_files/Cycl_Y_carriage.scad +++ b/Hardware/CYCLONE_2/Source_files/Cycl_Y_carriage.scad @@ -23,6 +23,7 @@ module Cyclone_YsubPart_nutHolder() { rodSize = 8; // M3, M4, etc (integers only) washer_D = 15.8; washer_thickness = 1.6; + screwSize = 3; // M3, M4, etc (integers only) difference() { // Main shape @@ -58,10 +59,10 @@ module Cyclone_YsubPart_nutHolder() { // Holes for the supporting screws translate([0,-screwSeparation/2,workbed_separation_from_Y_threaded_rod+workbed_thickness]) rotate([90,0,0]) - hole_for_screw(size=3,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0); + hole_for_screw(size=screwSize,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0); translate([0,+screwSeparation/2,workbed_separation_from_Y_threaded_rod+workbed_thickness]) rotate([90,0,0]) - hole_for_screw(size=3,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0); + hole_for_screw(size=screwSize,length=workbed_thickness+footThickness,nutDepth=-dimZ,nutAddedLen=dimZ,captiveLen=0); } translate([0,dimY/2+rod_nut_len/2,0]) rotate([0,90,0]) rotate([90,0,0]) nut(size=8, echoPart=true); @@ -150,14 +151,15 @@ module Cyclone_YsubPart_PCBholder() { PCB_holder_edge_length = 3; PCB_holder_tolerance = 1; - screwSeparation = 2.5; - holderArmLength = 30; holderL_thickness = 2; holderL_thickness_btm = 1; holderL_width = workbed_size_Y-PCB_dimY-PCB_holder_tolerance*2; holderL_innerWidth = holderL_width/2; + + screwSize = 3; // M3, M4, etc (integers only) + screwSeparation = screwSize*0.84; // Draw the PCB (transparent) %translate([0,0,PCBholder_height]) @@ -183,13 +185,13 @@ module Cyclone_YsubPart_PCBholder() { // Holes for the screws for (x = [-1,1], y=[-1,0,1]) { - translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+2.9]) - rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); + translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+screwSize]) + rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); } - translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9]) - rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); - scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9]) - rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); + translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize]) + rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); + scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize]) + rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height+3,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); } // Holder top L supports @@ -212,14 +214,14 @@ module Cyclone_YsubPart_PCBholder() { // Holes for the screws translate([0,0,holderL_thickness+(holderL_thickness+holderL_thickness_btm)/2]) { for (x = [-1,1], y=[-1,0,1]) { - translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+2.9]) - rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); + translate([x*(PCB_dimX/2+screwSeparation),y*PCB_dimY/4,PCBholder_height+screwSize]) + rotate([0,0,x*-90]) rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); } - translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9]) - rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); - scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+2.9]) - rotate([90,0,0]) hole_for_screw(size=3,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); + translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize]) + rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); + scale([-1,-1,1]) translate([PCB_dimX/2-holderArmLength/2,PCB_dimY/2+screwSeparation,PCBholder_height+screwSize]) + rotate([90,0,0]) hole_for_screw(size=screwSize,length=PCBholder_height*10,nutDepth=4.5,nutAddedLen=0,captiveLen=10, rot=90); } } } diff --git a/Hardware/CYCLONE_2/Source_files/libs/MCAD/nuts_and_bolts.scad b/Hardware/CYCLONE_2/Source_files/libs/MCAD/nuts_and_bolts.scad index 8cb2a87..f6a159e 100644 --- a/Hardware/CYCLONE_2/Source_files/libs/MCAD/nuts_and_bolts.scad +++ b/Hardware/CYCLONE_2/Source_files/libs/MCAD/nuts_and_bolts.scad @@ -137,6 +137,48 @@ COURSE_METRIC_BOLT_MAJOR_THREAD_DIAMETERS = 35.940//m36 ]; +//Based on: http://www.roymech.co.uk/Useful_Tables/Screws/cap_screws.htm +METRIC_BOLT_CAP_DIAMETERS = +[ + -1, //0 index is not used but reduces computation + -1, + -1, + 5.50,//m3 + 7.00,//m4 + 8.50,//m5 + 10.00,//m6 + -1, + 13.00,//m8 + -1, + 16.00,//m10 + -1, + 18.00,//m12 + -1, + -1, + -1, + 24.00,//m16 + -1, + -1, + -1, + 30.00//m20 + -1, + -1, + -1, + 36.00,//m24 + -1, + -1, + -1, + -1, + -1, + 45.00,//m30 + -1, + -1, + -1, + -1, + -1, + 54.00//m36 +]; + module nutHole(size, units=MM, tolerance = +0.0001, proj = -1) { //takes a metric screw/nut size and looksup nut dimensions @@ -160,9 +202,8 @@ module nutHole(size, units=MM, tolerance = +0.0001, proj = -1) module boltHole(size, units=MM, length, tolerance = +0.0001, proj = -1) { radius = COURSE_METRIC_BOLT_MAJOR_THREAD_DIAMETERS[size]/2+tolerance; -//TODO: proper screw cap values - capHeight = METRIC_NUT_THICKNESS[size]+tolerance; //METRIC_BOLT_CAP_HEIGHTS[size]+tolerance; - capRadius = METRIC_NUT_AC_WIDTHS[size]/2+tolerance; //METRIC_BOLT_CAP_RADIUS[size]+tolerance; + capHeight = size+tolerance; + capRadius = METRIC_BOLT_CAP_DIAMETERS[size]/2+tolerance; if (proj == -1) { diff --git a/Hardware/CYCLONE_2/Source_files/libs/standard_parts.scad b/Hardware/CYCLONE_2/Source_files/libs/standard_parts.scad index 06d0e32..0e8d699 100644 --- a/Hardware/CYCLONE_2/Source_files/libs/standard_parts.scad +++ b/Hardware/CYCLONE_2/Source_files/libs/standard_parts.scad @@ -68,8 +68,7 @@ module beveledBase(size=[100,200,10], radius=10, res=15, renderPart=false, echoP include -module hole_for_screw(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tolerance=0.4,rot=0,invert=false, echoPart=false) { - radius = METRIC_NUT_AC_WIDTHS[size]/2+tolerance; +module hole_for_screw(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tolerance=0.02,rot=0,invert=false, echoPart=false) { height = METRIC_NUT_THICKNESS[size]+tolerance; rotate([0,0,invert ? 180 : 0]) translate([0,invert ? length/2 : -length/2,0]) { @@ -81,7 +80,7 @@ module hole_for_screw(size=3,length=20,nutDepth=5,nutAddedLen=0,captiveLen=0,tol translate([0,captiveLen,0]) rotate([0,0,rot]) nutHole(size=size, tolerance=tolerance, proj=-1); } - translate([0,length/2-height+0.01,0]) //TODO (from MCAD): proper screw cap values: instead of "height" will use METRIC_BOLT_CAP_HEIGHTS[size]+tolerance; + translate([0,length/2-size+tolerance,0]) rotate([90,0,0]) render() boltHole(size=size, length=length-2.6+0.5, tolerance=tolerance, proj=-1); } @@ -118,8 +117,7 @@ module nut(size=8, chamfer=false, renderPart=false, echoPart=false) { } -module hole_for_nut(size=3,nutAddedLen=0,captiveLen=0,rot=0,tolerance=0.35) { - radius = METRIC_NUT_AC_WIDTHS[size]/2+tolerance; +module hole_for_nut(size=3,nutAddedLen=0,captiveLen=0,rot=0,tolerance=0.035) { height = METRIC_NUT_THICKNESS[size]+tolerance; scale([1,(height+nutAddedLen)/height,1]) rotate([90,0,0]) @@ -137,7 +135,7 @@ module screw_single(size=3,length=10,tolerance=0, renderPart=false, echoPart=fal renderStandardPart(renderPart) difference() { translate([0,-length/2,0]) { - translate([0,length/2-height+0.01,0]) //TODO (from MCAD): proper screw cap values: instead of "height" will use METRIC_BOLT_CAP_HEIGHTS[size]+tolerance; + translate([0,length/2-size+tolerance,0]) rotate([90,0,0]) boltHole(size=size, length=length-2.6+0.5, tolerance=tolerance, proj=-1); } @@ -162,6 +160,9 @@ module stepperMotor_mount(height, tolerance=0.15, slide_distance=6, sideLen=42.2 else translate([0,0,-25]) bcube([sideLen+2*tolerance,sideLen+slide_distance+2*tolerance,50],cr=3,cres=10); } + scale([1,1,height]) { + stepper_motor_mount(nema_standard=17, slide_distance=slide_distance, mochup=false); + } } module stepperMotor(screwHeight=10, renderPart=false, echoPart=false) {