diff --git a/lower_case.scad b/lower_case.scad index 0e27adb..cbe3cfc 100644 --- a/lower_case.scad +++ b/lower_case.scad @@ -22,15 +22,15 @@ difference() { } // plate_mounting - translate([20, pcb_depth - pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_height]) lug(hole=false); - translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_height]) lug(hole=false); - translate([20, -pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_height]) lug(north_facing=false, hole=false); - translate([pcb_width-2*pcb_radius - 20, -pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_height]) lug(north_facing=false, hole=false); + translate([20, pcb_depth - pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(hole=false); + translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(hole=false); + translate([20, -pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(north_facing=false, hole=false); + translate([pcb_width-2*pcb_radius - 20, -pcb_radius, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(north_facing=false, hole=false); // screw holes - translate([20, pcb_depth - pcb_radius + 2, case_thickness+standoff_height+pcb_thickness+5-plate_height-3]) cylinder(h=3, d=2); - translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius + 2, case_thickness+standoff_height+pcb_thickness+5-plate_height-3]) cylinder(h=3, d=2); - translate([20, -pcb_radius - 2, case_thickness+standoff_height+pcb_thickness+5-plate_height-3]) cylinder(h=3, d=2); - translate([pcb_width-2*pcb_radius - 20, -pcb_radius - 2, case_thickness+standoff_height+pcb_thickness+5-plate_height-3]) cylinder(h=3, d=2); + translate([20, pcb_depth - pcb_radius + 2, case_thickness+standoff_height+pcb_thickness+5-plate_thickness-3]) cylinder(h=3, d=2); + translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius + 2, case_thickness+standoff_height+pcb_thickness+5-plate_thickness-3]) cylinder(h=3, d=2); + translate([20, -pcb_radius - 2, case_thickness+standoff_height+pcb_thickness+5-plate_thickness-3]) cylinder(h=3, d=2); + translate([pcb_width-2*pcb_radius - 20, -pcb_radius - 2, case_thickness+standoff_height+pcb_thickness+5-plate_thickness-3]) cylinder(h=3, d=2); // USB-C daughter board translate([pcb_width/2-pcb_radius, pcb_depth-pcb_radius+1-pololu_depth/2, case_bottom_thickness - pcb_thickness/2]) { diff --git a/plate.scad b/plate.scad index e35be9d..766c1ce 100644 --- a/plate.scad +++ b/plate.scad @@ -6,10 +6,10 @@ $fn = 64; module plate() { hull() { - cylinder(h=plate_height, r=pcb_radius); - translate([pcb_width-2*pcb_radius, 0, 0]) cylinder(h=plate_height, r=pcb_radius); - translate([0, pcb_depth-2*pcb_radius, 0]) cylinder(h=plate_height, r=pcb_radius); - translate([pcb_width-2*pcb_radius, pcb_depth-2*pcb_radius, 0]) cylinder(h=plate_height, r=pcb_radius); + cylinder(h=plate_thickness, r=pcb_radius); + translate([pcb_width-2*pcb_radius, 0, 0]) cylinder(h=plate_thickness, r=pcb_radius); + translate([0, pcb_depth-2*pcb_radius, 0]) cylinder(h=plate_thickness, r=pcb_radius); + translate([pcb_width-2*pcb_radius, pcb_depth-2*pcb_radius, 0]) cylinder(h=plate_thickness, r=pcb_radius); } @@ -19,43 +19,44 @@ module plate() { translate([pcb_width-2*pcb_radius - 20, -pcb_radius, 0]) lug(north_facing=false); } +// projection(cut=true) difference() { - plate(); + color("gold") plate(); translate([12.7-pcb_radius, 12.7-pcb_radius, 0]) { mx_1x1_cutout(); - translate([19.05, 0, 0]) mx_1x1_cutout(); - translate([2*19.05, 0, 0]) mx_1x1_cutout(); - translate([3*19.05, 0, 0]) mx_1x1_cutout(); - translate([4.5*19.05, 0, 0]) mx_2x1_cutout(); - translate([4.5*19.05, 0, 0]) mx_1x1_cutout(); + translate([mx, 0, 0]) mx_1x1_cutout(); + translate([2*mx, 0, 0]) mx_1x1_cutout(); + translate([3*mx, 0, 0]) mx_1x1_cutout(); + translate([4.5*mx, 0, 0]) mx_2x1_cutout(); + translate([4.5*mx, 0, 0]) mx_1x1_cutout(); - translate([(19.05*1.75)/2-19.05/2, 19.05, 0]) mx_1x1_cutout(); - translate([19.05*1.75-19.05, 19.05, 0]) { - translate([19.05, 0, 0]) mx_1x1_cutout(); - translate([2*19.05, 0, 0]) mx_1x1_cutout(); - translate([3*19.05, 0, 0]) mx_1x1_cutout(); - translate([4*19.05, 0, 0]) mx_1x1_cutout(); - translate([4*19.05+21.4312, 9.525, 0]) mx_1x2_cutout(); + translate([(mx*1.75)/2-mx/2, mx, 0]) mx_1x1_cutout(); + translate([mx*1.75-mx, mx, 0]) { + translate([mx, 0, 0]) mx_1x1_cutout(); + translate([2*mx, 0, 0]) mx_1x1_cutout(); + translate([3*mx, 0, 0]) mx_1x1_cutout(); + translate([4*mx, 0, 0]) mx_1x1_cutout(); + translate([4*mx+21.4312, 9.525, 0]) mx_1x2_cutout(); }; - translate([(19.05*1.5)/2-19.05/2, 2*19.05, 0]) mx_1x1_cutout(); - translate([(19.05*1.5)-19.05, 2*19.05, 0]) { - translate([19.05, 0, 0]) mx_1x1_cutout(); - translate([2*19.05, 0, 0]) mx_1x1_cutout(); - translate([3*19.05, 0, 0]) mx_1x1_cutout(); - translate([4*19.05, 0, 0]) mx_1x1_cutout(); + translate([(mx*1.5)/2-mx/2, 2*mx, 0]) mx_1x1_cutout(); + translate([(mx*1.5)-mx, 2*mx, 0]) { + translate([mx, 0, 0]) mx_1x1_cutout(); + translate([2*mx, 0, 0]) mx_1x1_cutout(); + translate([3*mx, 0, 0]) mx_1x1_cutout(); + translate([4*mx, 0, 0]) mx_1x1_cutout(); }; - translate([0, 3*19.05, 0]) { + translate([0, 3*mx, 0]) { mx_1x1_cutout(); - translate([19.05, 0, 0]) mx_1x1_cutout(); - translate([2*19.05, 0, 0]) mx_1x1_cutout(); - translate([3*19.05, 0, 0]) mx_1x1_cutout(); - translate([4*19.05, 0, 0]) mx_1x1_cutout(); - translate([5*19.05, 0, 0]) mx_1x1_cutout(); - translate([6*19.05, 0, 0]) mx_1x1_cutout(); + translate([mx, 0, 0]) mx_1x1_cutout(); + translate([2*mx, 0, 0]) mx_1x1_cutout(); + translate([3*mx, 0, 0]) mx_1x1_cutout(); + translate([4*mx, 0, 0]) mx_1x1_cutout(); + translate([5*mx, 0, 0]) mx_1x1_cutout(); + translate([6*mx, 0, 0]) mx_1x1_cutout(); }; }; - translate([127-pcb_radius, 12.45-pcb_radius, 0]) cylinder(h=plate_height, r=3); + // poti + translate([127-pcb_radius, 12.45-pcb_radius, 0]) cylinder(h=plate_thickness+0.1, r=3); }; - diff --git a/util.scad b/util.scad index 9bf9038..7a5cee4 100644 --- a/util.scad +++ b/util.scad @@ -7,7 +7,7 @@ pcb_depth = 82.55; pcb_radius = 3.175; pcb_thickness = 1.6; -plate_height = 1.5; +plate_thickness = 1.5; case_thickness = 5; case_bottom_thickness = 5; @@ -15,6 +15,8 @@ case_height = 10; standoff_height = 3; +mx = 19.05; + mounting_holes = [ [36.5125, 21.0188], [30.9563, 57.9438], @@ -31,12 +33,12 @@ pololu_hole_spacing = 0.1*2.54*10; module lug(north_facing=true, hole=true) { difference() { hull() { - translate([0, north_facing ? 2 : -2, 0]) cylinder(h=plate_height, d=4); - translate([-5, 0, 0]) cylinder(h=plate_height, d=2); - translate([5, 0, 0]) cylinder(h=plate_height, d=2); + translate([0, north_facing ? 2 : -2, 0]) cylinder(h=plate_thickness, d=4); + translate([-5, 0, 0]) cylinder(h=plate_thickness, d=2); + translate([5, 0, 0]) cylinder(h=plate_thickness, d=2); } if (hole) { - translate([0, north_facing ? 2 : -2, 0]) cylinder(h=plate_height, d=2.2); + translate([0, north_facing ? 2 : -2, 0]) cylinder(h=plate_thickness, d=2.2); } } } @@ -45,19 +47,19 @@ module mx_1x1_cutout() { side_length = 14; // central hole - translate([0, 0, pcb_thickness/2]) cube([side_length, side_length, pcb_thickness], center=true); + translate([0, 0, pcb_thickness/2]) cube([side_length, side_length, pcb_thickness+0.1], center=true); // wings - translate([side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([-side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([-side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); + translate([side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([-side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([-side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); // rounded corners - translate([side_length/2-0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([side_length/2-0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([-side_length/2+0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([-side_length/2+0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness, r=0.5); + translate([side_length/2-0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([side_length/2-0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([-side_length/2+0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([-side_length/2+0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); } @@ -65,46 +67,46 @@ module mx_1x2_cutout() { side_length = 14; // central hole - translate([0, 0, pcb_thickness/2]) cube([side_length, side_length, pcb_thickness], center=true); + translate([0, 0, pcb_thickness/2]) cube([side_length, side_length, pcb_thickness+0.1], center=true); // wings - translate([side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([-side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([-side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); + translate([side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([-side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([-side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); // rounded corners - translate([side_length/2-0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([side_length/2-0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([-side_length/2+0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([-side_length/2+0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness, r=0.5); + translate([side_length/2-0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([side_length/2-0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([-side_length/2+0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([-side_length/2+0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); // stabilizers - translate([0, 0, pcb_thickness/2]) translate([-0.5, 11.9, 0]) cube([15, 6.65, pcb_thickness], center=true); - translate([0, 0, pcb_thickness/2]) translate([-0.5, -11.9, 0]) cube([15, 6.65, pcb_thickness], center=true); + translate([0, 0, pcb_thickness/2]) translate([-0.5, 11.9, 0]) cube([15, 6.65, pcb_thickness+0.1], center=true); + translate([0, 0, pcb_thickness/2]) translate([-0.5, -11.9, 0]) cube([15, 6.65, pcb_thickness+0.1], center=true); } module mx_2x1_cutout() { side_length = 14; // central hole - translate([0, 0, pcb_thickness/2]) cube([side_length, side_length, pcb_thickness], center=true); + translate([0, 0, pcb_thickness/2]) cube([side_length, side_length, pcb_thickness+0.1], center=true); // wings - translate([side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([-side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); - translate([-side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness], center=true); + translate([side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([-side_length/2, 2.5+3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); + translate([-side_length/2, -2.5-3.5/2, pcb_thickness/2]) cube([2*0.8, 3.5, pcb_thickness+0.1], center=true); // rounded corners - translate([side_length/2-0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([side_length/2-0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([-side_length/2+0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness, r=0.5); - translate([-side_length/2+0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness, r=0.5); + translate([side_length/2-0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([side_length/2-0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([-side_length/2+0.25, side_length/2-0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); + translate([-side_length/2+0.25, -side_length/2+0.25, 0]) cylinder(h=pcb_thickness+0.1, r=0.5); // stabilizer holes - translate([0, 0, pcb_thickness/2]) translate([11.9, -0.5, 0]) cube([6.65, 15, pcb_thickness], center=true); - translate([0, 0, pcb_thickness/2]) translate([-11.9, -0.5, 0]) cube([6.65, 15, pcb_thickness], center=true); + translate([0, 0, pcb_thickness/2]) translate([11.9, -0.5, 0]) cube([6.65, 15, pcb_thickness+0.1], center=true); + translate([0, 0, pcb_thickness/2]) translate([-11.9, -0.5, 0]) cube([6.65, 15, pcb_thickness+0.1], center=true); } // TODO: replace with screw in cutouts /*