2023-04-20 16:41:18 +01:00
|
|
|
// Parametric Expansion Card
|
|
|
|
|
// An OpenSCAD implementation of a basic enclosure of an Expansion Card for
|
|
|
|
|
// use with Framework products like the Framework Laptop.
|
|
|
|
|
//
|
|
|
|
|
// See https://frame.work for more information about Framework products and
|
|
|
|
|
// additional documentation around Expansion Cards.
|
|
|
|
|
|
|
|
|
|
// Parametric Expansion Card © 2021 by Nirav Patel at Framework Computer LLC
|
|
|
|
|
// is licensed under Attribution 4.0 International.
|
|
|
|
|
// To view a copy of this license, visit http://creativecommons.org/licenses/by/4.0/
|
|
|
|
|
|
|
|
|
|
// The basic dimensions of an Expansion Card
|
|
|
|
|
base = [30.0, 32.0, 6.8];
|
|
|
|
|
|
2023-07-19 14:25:53 +01:00
|
|
|
// The extension for the SMA connectors & EG95
|
|
|
|
|
base_ext = [40, 20.2, 16.5];
|
2023-04-20 16:41:18 +01:00
|
|
|
|
2023-07-26 19:03:01 +01:00
|
|
|
// The dimensions of the NSCCP sim holder
|
|
|
|
|
sim = [13.5, 13, 1.37];
|
|
|
|
|
|
|
|
|
|
bay = [12, 8.95, 0.8];
|
|
|
|
|
|
2023-04-20 16:41:18 +01:00
|
|
|
// The default wall thickness
|
|
|
|
|
side_wall = 1.5;
|
|
|
|
|
|
|
|
|
|
// Size and location of the typical PCB
|
|
|
|
|
pcb_gap = 0.5;
|
|
|
|
|
pcb = [26.0, 30.0, 0.8];
|
|
|
|
|
pcb_h = 3.05;
|
|
|
|
|
|
|
|
|
|
// USB-C plug dimensions
|
|
|
|
|
usb_c_r = 1.315;
|
|
|
|
|
usb_c_w = 5.86+usb_c_r*2;
|
|
|
|
|
usb_c_h = 2.2;
|
|
|
|
|
|
|
|
|
|
rail_h = 4.25; // to top of rail
|
|
|
|
|
|
|
|
|
|
// Boss locations matching the other Framework Expansion Cards
|
2023-07-19 14:25:53 +01:00
|
|
|
boss_inc_y = 10.5;
|
|
|
|
|
boss_inc_x = 4.2;
|
|
|
|
|
boss_r = 3;
|
|
|
|
|
|
|
|
|
|
boss_ext_y = 8.75;
|
|
|
|
|
boss_ext_x = 4;
|
|
|
|
|
|
|
|
|
|
boss_ext_top_y = 6;
|
|
|
|
|
|
|
|
|
|
lid_boss_depth = 3;
|
|
|
|
|
lid_wall_thickness = lid_boss_depth+side_wall;
|
|
|
|
|
|
|
|
|
|
gap = 0.25;
|
|
|
|
|
|
|
|
|
|
sma_height = 11.28;
|
|
|
|
|
sma = 10.035;
|
|
|
|
|
|
|
|
|
|
hollow_bottom_z = 0.7;
|
|
|
|
|
bottom_thickness = hollow_bottom_z+0.2;
|
|
|
|
|
|
|
|
|
|
ext_screw_hole = 2.5+side_wall;
|
|
|
|
|
|
|
|
|
|
ledge_cut = 0.6;
|
|
|
|
|
ledge_cut_d = 3.2;
|
2023-04-20 16:41:18 +01:00
|
|
|
|
|
|
|
|
// The rail cutout in the sides of the card
|
|
|
|
|
module rail(make_printable) {
|
|
|
|
|
rail_depth = 0.81;
|
|
|
|
|
rail_flat_h = 0.32;
|
|
|
|
|
|
|
|
|
|
mirror([0, 1, 0]) {
|
|
|
|
|
|
|
|
|
|
// The rail that holds the card
|
|
|
|
|
bottom_angle = 43.54;
|
|
|
|
|
difference() {
|
|
|
|
|
union() {
|
|
|
|
|
translate([rail_depth, 0, -rail_flat_h]) rotate([0, 180+bottom_angle, 0]) cube([2, base[1]-side_wall, 2]);
|
|
|
|
|
translate([-2+rail_depth, 0, -rail_flat_h]) cube([2, base[1]-side_wall, rail_flat_h]);
|
|
|
|
|
}
|
|
|
|
|
translate([-5+rail_depth, 0, 0]) cube([5, base[1]-side_wall, 5]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pyramid_b = 3.23*sqrt(2);
|
|
|
|
|
pyramid_t = 1.75*sqrt< |