cad/lower_case.scad
Ricardo (XenGi) Band d4af0bdf31
lower case done
2023-03-27 03:32:03 +02:00

76 lines
No EOL
3 KiB
OpenSCAD

$fn = 64;
pcb_width = 81;
pcb_length = 119;
case_thickness = 3;
case_height = 15;
pcb_thickness = 1.6;
breakout_width = 21;
breakout_length = 13;
inner_depth = 5;
module pcb(h) {
pcb_thickness = h ? h : 1.6;
pcb_corner_radius = 5;
translate([pcb_corner_radius,pcb_corner_radius,0]) hull() {
cylinder(h=pcb_thickness, r=pcb_corner_radius);
translate([pcb_width-2*pcb_corner_radius,0,0]) cylinder(h=pcb_thickness, r=pcb_corner_radius);
translate([0,pcb_length-2*pcb_corner_radius,0]) cylinder(h=pcb_thickness, r=pcb_corner_radius);
translate([pcb_width-2*pcb_corner_radius,pcb_length-2*pcb_corner_radius,0]) cylinder(h=pcb_thickness, r=pcb_corner_radius);
}
}
module lower_case() {
translate([0,0,-1*case_height]) {
difference() {
cube([pcb_width + 2*case_thickness, pcb_length + 2*case_thickness, case_height]);
translate([0,-1,-1*case_height/2+3.5]) rotate([-2.5,0,0]) cube([pcb_width+2*case_thickness, pcb_length+2*case_thickness+2, 10]);
translate([0,(pcb_length+2*case_thickness)/2,case_height-14]) {
rotate([0,-10,0]) cube([10,pcb_length+2*case_thickness,case_height], center=true);
translate([pcb_width+2*case_thickness,0,0]) rotate([0,10,0]) cube([10,pcb_length+2*case_thickness,case_height], center=true);
translate([-1.3,0,0.8]) cube([10,pcb_length+2*case_thickness,case_height], center=true);
translate([1.3,0,0.8]) translate([pcb_width+2*case_thickness,0,0]) cube([10,pcb_length+2*case_thickness,case_height], center=true);
}
rotate([6.2,0,0]) cube([pcb_width+2*case_thickness,1,10]);
}
}
}
module standoff(x, y) {
translate([case_thickness+x,case_thickness+y,-1*inner_depth]) difference() {
translate([0,0,(inner_depth-pcb_thickness)/2]) cylinder(h=inner_depth-pcb_thickness, d=3.5, center=true);
translate([0,0,(inner_depth-pcb_thickness)/2]) cylinder(h=inner_depth-pcb_thickness, d=1, center=true);
}
}
module usb_breakout() {
breakout_thickness = 1;
//PCB
cube([breakout_width, breakout_length, breakout_thickness]);
// space for solder blobs
translate([0,0,-1]) cube([breakout_width, 4, breakout_thickness]);
// USB-C
translate([breakout_width/2, breakout_length-8/2+1, -4/2]) cube([10, 8, 4], center=true);
translate([breakout_width/2, breakout_length-8/2+1+7, -4/2]) cube([16, 8, 8], center=true);
// screw holes
translate([2.5,breakout_length-2.5,-2]) cylinder(h=2,d=1);
translate([breakout_width-2.5,breakout_length-2.5,-2]) cylinder(h=2,d=1);
}
difference() {
lower_case();
translate([case_thickness, case_thickness, -1*inner_depth]) pcb(inner_depth);
translate([(pcb_width + 2*case_thickness)/2-breakout_width/2,pcb_length + 2*case_thickness-breakout_length-case_thickness,-1*(inner_depth+1)]) usb_breakout();
}
standoff(21.5, pcb_length-97);
standoff(56, pcb_length-97.5);
standoff(21.5, pcb_length-32);
standoff(59.5, pcb_length-32);
// TODO: screw holes for top half