cad/util.scad
2023-08-05 17:15:09 +02:00

117 lines
4.5 KiB
OpenSCAD

// This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
$fn=64;
pcb_width = 139.7;
pcb_depth = 82.55;
pcb_radius = 3.175;
pcb_thickness = 1.6;
plate_thickness = 1.5;
threaded_insert_height = 2.5;
case_thickness = 5;
case_bottom_thickness = 5; // TODO: doesn't respect height of PCB plus switches etc
case_height = 10;
upper_case_height = 5;
standoff_height = 3;
mx = 19.05;
mounting_holes = [
[36.5125, 23.0188],
[30.9563, 57.9438],
[116.6813, 14.2875],
[98.425, 69.0563]
];
pololu_width = 0.8*2.54*10;
pololu_depth = 0.5*2.54*10+1;
pololu_holes_radius = 1;
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_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_thickness, d=2.1); // M2
}
}
}
module mx_1x1_cutout() {
side_length = 14;
// central hole
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+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+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);
}
module mx_1x2_cutout() {
side_length = 14;
// central hole
translate([0, 0, pcb_thickness/2]) cube([side_length, side_length+2, 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+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+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, 8, pcb_thickness+0.1], center=true);
translate([-0.5, -11.9, 0]) cube([15, 8, pcb_thickness+0.1], center=true);
}
}
module mx_2x1_cutout() {
side_length = 14;
// central hole
translate([0, 0, pcb_thickness/2]) cube([side_length+2, 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+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+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([8, 15, pcb_thickness+0.1], center=true);
translate([-11.9, -0.5, 0]) cube([8, 15, pcb_thickness+0.1], center=true);
}
}