65 lines
4.4 KiB
OpenSCAD
65 lines
4.4 KiB
OpenSCAD
// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
|
|
|
|
include <util.scad>
|
|
|
|
$fn = 64;
|
|
|
|
color("SaddleBrown") difference() {
|
|
// case
|
|
hull() {
|
|
translate([-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, -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);
|
|
}
|
|
|
|
// pcb
|
|
translate([0, 0, case_bottom_thickness]) hull() {
|
|
cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+1);
|
|
translate([pcb_width-2*pcb_radius, 0, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, r=pcb_radius+1);
|
|
translate([0, 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);
|
|
}
|
|
|
|
// plate_mounting
|
|
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([20, -pcb_radius-1, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(north_facing=false, hole=false);
|
|
translate([pcb_width-2*pcb_radius - 20, -pcb_radius-1, case_thickness+standoff_height+pcb_thickness+5-plate_thickness]) lug(north_facing=false, hole=false);
|
|
// screw holes
|
|
translate([20, pcb_depth - pcb_radius+1 + 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+1 + 2, case_thickness+standoff_height+pcb_thickness+5-plate_thickness-3]) cylinder(h=3, d=2);
|
|
translate([20, -pcb_radius-1 - 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-1 - 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]) {
|
|
translate([0,pololu_depth/2-case_thickness+5,0.8+3/2]) rotate([-90,0,0]) hull() {
|
|
translate([-7/2,0,0]) cylinder(h=case_thickness+2, d=8);
|
|
translate([7/2,0,0]) cylinder(h=case_thickness+2, d=8);
|
|
}
|
|
cube([pololu_width, pololu_depth, pcb_thickness+0.1], center=true);
|
|
// screw holes
|
|
translate([-pololu_width/2+pololu_hole_spacing, pololu_depth/2-pololu_hole_spacing, -pcb_thickness/2-2]) cylinder(h=2, r=pololu_holes_radius);
|
|
translate([pololu_width/2-pololu_hole_spacing, pololu_depth/2-pololu_hole_spacing, -pcb_thickness/2-2]) cylinder(h=2, r=pololu_holes_radius);
|
|
}
|
|
|
|
// screw holes for upper case
|
|
translate([-case_thickness, -case_thickness, 0]) cylinder(h=2, d=4);
|
|
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=2, d=4);
|
|
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=2, d=4);
|
|
translate([pcb_width-2*pcb_radius+case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=2, d=4);
|
|
|
|
translate([-case_thickness, -case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, d=2);
|
|
translate([pcb_width-2*pcb_radius+case_thickness, -case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, d=2);
|
|
translate([-case_thickness, pcb_depth-2*pcb_radius+case_thickness, 0]) cylinder(h=case_thickness+standoff_height+pcb_thickness+5, d=2);
|
|
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, d=2);
|
|
}
|
|
|
|
// mounting standoffs
|
|
color("SaddleBrown") for(i = [0 : len(mounting_holes)-1]) {
|
|
translate([mounting_holes[i][0] - pcb_radius, mounting_holes[i][1] - pcb_radius, case_bottom_thickness]) difference() {
|
|
cylinder(h=standoff_height, d=4);
|
|
cylinder(h=standoff_height, d=2);
|
|
}
|
|
}
|