make weight optional; change design

This commit is contained in:
Ricardo (XenGi) Band 2023-09-03 19:39:38 +02:00
commit d9b4faabfa
No known key found for this signature in database
3 changed files with 64 additions and 40 deletions

View file

@ -3,14 +3,31 @@
include <util.scad> include <util.scad>
$fn = 64; $fn = 64;
with_weight = false;
color("SaddleBrown") difference() { color("SaddleBrown") difference() {
// case // case
hull() { union() {
translate([-case_thickness, -case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5); hull() {
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5); translate([-case_thickness, -case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5);
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5); translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5); translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+0.5);
}
translate([0,0,case_thickness+standoff_height+pcb_thickness+5-upper_case_height]) hull() {
translate([-case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+0.5, r2=pcb_radius+2);
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+0.5, r2=pcb_radius+2);
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+0.5, r2=pcb_radius+2);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+0.5, r2=pcb_radius+2);
}
hull() {
translate([-case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+2, r2=pcb_radius+0.5);
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+2, r2=pcb_radius+0.5);
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+2, r2=pcb_radius+0.5);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height, r1=pcb_radius+2, r2=pcb_radius+0.5);
}
} }
// pcb // pcb
@ -21,10 +38,6 @@ color("SaddleBrown") difference() {
translate([pcb_width-2*pcb_radius, pcb_depth-2*pcb_radius, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+1); translate([pcb_width-2*pcb_radius, pcb_depth-2*pcb_radius, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+1);
} }
// hole for reset button
translate([reset_x - pcb_radius, reset_y - pcb_radius, 0]) cylinder(h=case_thickness, r=1);
translate([reset_x - pcb_radius-1.4, reset_y - pcb_radius-1.5, 1.5]) mirror([1,0,0]) rotate([0,0,90]) linear_extrude(0.2) text(text="RESET ►", size=3, font="Liberation Sans:style=Bold", halign="right");
// plate_mounting // plate_mounting
translate([20, pcb_depth - pcb_radius+1, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(hole=false); translate([20, pcb_depth - pcb_radius+1, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(hole=false);
translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius+1, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(hole=false); translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius+1, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(hole=false);
@ -48,7 +61,7 @@ color("SaddleBrown") difference() {
translate([pololu_width/2-pololu_hole_spacing, pololu_depth/2-pololu_hole_spacing, -pcb_thickness/2-threaded_insert_height]) cylinder(h=threaded_insert_height, d=3); translate([pololu_width/2-pololu_hole_spacing, pololu_depth/2-pololu_hole_spacing, -pcb_thickness/2-threaded_insert_height]) cylinder(h=threaded_insert_height, d=3);
} }
// TODO: make dependent on case size // cable channel
translate([65, 26, case_bottom_thickness/2]) { translate([65, 26, case_bottom_thickness/2]) {
translate([-7.5,30,0]) linear_extrude(case_bottom_thickness/2+1) polygon([[7.5,0], [7.5,10.75], [0,10.75]]); translate([-7.5,30,0]) linear_extrude(case_bottom_thickness/2+1) polygon([[7.5,0], [7.5,10.75], [0,10.75]]);
cube([10, 40.75, case_bottom_thickness/2+1]); cube([10, 40.75, case_bottom_thickness/2+1]);
@ -74,18 +87,29 @@ color("SaddleBrown") difference() {
} }
} }
// hole for weight // hole for reset button
hull() { translate([reset_x - pcb_radius, reset_y - pcb_radius, 0]) cylinder(h=case_thickness, r=1);
translate([5,5,0]) cylinder(h=1.5, d=10);
translate([pcb_width-2*pcb_radius-5,5,0]) cylinder(h=1.5, d=10); // OPTIONAL: hole for weight
translate([5,pcb_depth-2*pcb_radius-5,0]) cylinder(h=1.5, d=10); if (with_weight) {
translate([pcb_width-2*pcb_radius-5,pcb_depth-2*pcb_radius-5,0]) cylinder(h=1.5, d=10); hull() {
translate([5,5,0]) cylinder(h=1.5, d=10);
translate([pcb_width-2*pcb_radius-5,5,0]) cylinder(h=1.5, d=10);
translate([5,pcb_depth-2*pcb_radius-5,0]) cylinder(h=1.5, d=10);
translate([pcb_width-2*pcb_radius-5,pcb_depth-2*pcb_radius-5,0]) cylinder(h=1.5, d=10);
}
translate([pcb_width/2,pcb_depth/2+6,1.5]) mirror([1,0,0]) linear_extrude(0.2) text(text="noisy cricket", size=10, font="Liberation Sans:style=Bold", halign="center");
translate([pcb_width/2,pcb_depth/2-8,1.5]) mirror([1,0,0]) linear_extrude(0.2) text(text="© XenGi 2023", size=6, font="Liberation Sans:style=Bold", halign="center");
// threaded inserts
translate([10,10,1.5]) cylinder(h=threaded_insert_height, d=3);
translate([pcb_width-2*pcb_radius-10,10,1.5]) cylinder(h=threaded_insert_height, d=3);
translate([10,pcb_depth-2*pcb_radius-10,1.5]) cylinder(h=threaded_insert_height, d=3);
translate([pcb_width-2*pcb_radius-10,pcb_depth-2*pcb_radius-10,1.5]) cylinder(h=threaded_insert_height, d=3);
//reset button text
translate([reset_x - pcb_radius-1.4, reset_y - pcb_radius-1.5, 1.5]) mirror([1,0,0]) rotate([0,0,90]) linear_extrude(0.2) text(text="RESET ►", size=3, font="Liberation Sans:style=Bold", halign="right");
} else {
translate([pcb_width/2,pcb_depth/2+6,0]) mirror([1,0,0]) linear_extrude(0.2) text(text="noisy cricket", size=10, font="Liberation Sans:style=Bold", halign="center");
translate([pcb_width/2,pcb_depth/2-8,0]) mirror([1,0,0]) linear_extrude(0.2) text(text="© XenGi 2023", size=6, font="Liberation Sans:style=Bold", halign="center");
translate([reset_x - pcb_radius-1.4, reset_y - pcb_radius-1.5, 0]) mirror([1,0,0]) rotate([0,0,90]) linear_extrude(0.2) text(text="RESET ►", size=3, font="Liberation Sans:style=Bold", halign="right");
} }
translate([pcb_width/2,pcb_depth/2+1,1.5]) mirror([1,0,0]) linear_extrude(0.2) text(text="noisy cricket", size=10, font="Liberation Sans:style=Bold", halign="center");
translate([pcb_width/2,pcb_depth/2-11,1.5]) mirror([1,0,0]) linear_extrude(0.2) text(text="© XenGi 2023", size=6, font="Liberation Sans:style=Bold", halign="center");
// threaded inserts
translate([10,10,1.5]) cylinder(h=threaded_insert_height, d=3);
translate([pcb_width-2*pcb_radius-10,10,1.5]) cylinder(h=threaded_insert_height, d=3);
translate([10,pcb_depth-2*pcb_radius-10,1.5]) cylinder(h=threaded_insert_height, d=3);
translate([pcb_width-2*pcb_radius-10,pcb_depth-2*pcb_radius-10,1.5]) cylinder(h=threaded_insert_height, d=3);
} }

View file

@ -8,16 +8,16 @@ color("SaddleBrown") difference() {
// case // case
union() { union() {
hull() { hull() {
translate([-case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+1); translate([-case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+2);
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+1); translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+2);
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+1); translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+2);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+1); translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=upper_case_height/2, r=pcb_radius+2);
} }
translate([0,0,upper_case_height/2]) hull() { translate([0,0,upper_case_height/2]) hull() {
translate([-case_thickness, -case_thickness, 0]) resize(newsize=[2*(pcb_radius+1),2*(pcb_radius+1),upper_case_height]) sphere(r=pcb_radius+1); translate([-case_thickness, -case_thickness, 0]) resize(newsize=[2*(pcb_radius+2),2*(pcb_radius+2),upper_case_height]) sphere(r=pcb_radius+2);
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) resize(newsize=[2*(pcb_radius+1),2*(pcb_radius+1),upper_case_height]) sphere(r=pcb_radius+1); translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) resize(newsize=[2*(pcb_radius+2),2*(pcb_radius+2),upper_case_height]) sphere(r=pcb_radius+2);
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) resize(newsize=[2*(pcb_radius+1),2*(pcb_radius+1),upper_case_height]) sphere(r=pcb_radius+1); translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) resize(newsize=[2*(pcb_radius+2),2*(pcb_radius+2),upper_case_height]) sphere(r=pcb_radius+2);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) resize(newsize=[2*(pcb_radius+1),2*(pcb_radius+1),upper_case_height]) sphere(r=pcb_radius+1); translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) resize(newsize=[2*(pcb_radius+2),2*(pcb_radius+2),upper_case_height]) sphere(r=pcb_radius+2);
} }
} }
@ -35,9 +35,9 @@ color("SaddleBrown") difference() {
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=threaded_insert_height, d=3); translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=threaded_insert_height, d=3);
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=threaded_insert_height, d=3); translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=threaded_insert_height, d=3);
// space for screws from lower case
translate([20, pcb_depth - pcb_radius+1+case_thickness/2, 0]) cylinder(h=2, d=4); translate([20, pcb_depth - pcb_radius+1+case_thickness/2, 0]) cylinder(h=2.3, d=4.2);
translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius+1+case_thickness/2, 0]) cylinder(h=2, d=4); translate([pcb_width-2*pcb_radius - 20, pcb_depth - pcb_radius+1+case_thickness/2, 0]) cylinder(h=2.3, d=4.2);
translate([20, -pcb_radius-1-case_thickness/2, 0]) cylinder(h=2, d=4); translate([20, -pcb_radius-1-case_thickness/2, 0]) cylinder(h=2.3, d=4.2);
translate([pcb_width-2*pcb_radius - 20, -pcb_radius-1-case_thickness/2, 0]) cylinder(h=2, d=4); translate([pcb_width-2*pcb_radius - 20, -pcb_radius-1-case_thickness/2, 0]) cylinder(h=2.3, d=4.2);
} }

View file

@ -17,8 +17,8 @@ upper_case_height = 5;
standoff_height = 3; standoff_height = 3;
reset_x = 111; reset_x = 111.1;
reset_y = 42; reset_y = 47.6;
mx = 19.05; mx = 19.05;
@ -29,7 +29,7 @@ mounting_holes = [
[98.425, 69.0563] [98.425, 69.0563]
]; ];
pololu_width = 0.8*2.54*10; pololu_width = 0.8*2.54*10+0.2;
pololu_depth = 0.5*2.54*10+1; pololu_depth = 0.5*2.54*10+1;
pololu_holes_radius = 1; pololu_holes_radius = 1;
pololu_hole_spacing = 0.1*2.54*10; pololu_hole_spacing = 0.1*2.54*10;