diff --git a/mount.scad b/mount.scad new file mode 100644 index 0000000..cca6da8 --- /dev/null +++ b/mount.scad @@ -0,0 +1,75 @@ +// unit: mm +// cannot be used standalone +// create a new .scad file, defined the following variables and include this file: + +/* +pcb_width=85; +pcb_length=36; +pcb_hole_left=2.5; +pcb_hole_top=2.5; +plate_pcb_left=6; +plate_pcb_top=6; +plate_height=3; +standoff_height=30; +standoff_hole=2.5; +standoff_wall=1.5; +mounting_hole_left=25; +mounting_hole_top=10; +mounting_hole_dia=3; +mounting_hole_depth=1.5; +mounting_hole_angle=45; +*/ + +epsilon=.1; + +standoff_radius=standoff_hole/2+standoff_wall; +standoff_hole_radius=standoff_hole/2; +plate_width=pcb_width+2*plate_pcb_left; +plate_length=pcb_length+2*plate_pcb_top; +standoff_xpos=pcb_width/2-pcb_hole_left; +standoff_ypos=pcb_length/2-pcb_hole_top; +mounting_hole_xpos=plate_width/2-mounting_hole_left; +mounting_hole_ypos=plate_length/2-mounting_hole_top; +mounting_hole_offset=tan(mounting_hole_angle)*mounting_hole_dia/2; +mounting_hole_aperture=tan(mounting_hole_angle)*(plate_height-mounting_hole_depth+mounting_hole_offset); +mounting_hole_radius=mounting_hole_dia/2; + +echo(str( + "standoff_radius: ", standoff_radius, "\n", + "standoff_hole_radius: ", standoff_hole_radius, "\n", + "plate_width: ", plate_width, "\n", + "plate_length: ", plate_length, "\n", + "standoff_xpos: ", standoff_xpos, "\n", + "standoff_ypos: ", standoff_ypos, "\n", + "mounting_hole_xpos: ", mounting_hole_xpos, "\n", + "mounting_hole_ypos: ", mounting_hole_ypos, "\n", + "mounting_hole_offset: ", mounting_hole_offset, "\n", + "mounting_hole_aperture: ", mounting_hole_aperture, "\n", + "mounting_hole_radius: ", mounting_hole_radius +)); + +union() { + for (x = [-1, 1], y = [-1, 1]) { + translate([standoff_xpos*x, standoff_ypos*y, plate_height]) { + difference() { + cylinder(standoff_height, standoff_radius, standoff_radius); + translate([0,0,-epsilon]) { + cylinder(standoff_height+2*epsilon, standoff_hole_radius, standoff_hole_radius); + } + } + } + } + difference() { + translate([-plate_width/2,-plate_length/2,0]) { + cube([plate_width,plate_length,plate_height]); + } + for (xy = [-1, 1]) { + translate([mounting_hole_xpos*xy, mounting_hole_ypos*xy, -epsilon]) { + cylinder(plate_height+epsilon, mounting_hole_radius, mounting_hole_radius); + } + translate([mounting_hole_xpos*xy, mounting_hole_ypos*xy, mounting_hole_depth]) { + cylinder(plate_height-mounting_hole_depth+epsilon, mounting_hole_radius, mounting_hole_aperture); + } + } + } +}